根据我的研究,似乎S3存储桶通常是从API Key所源自的同一AWS账户下载的。
我已获得访问新AWS账户的权限,此帐户包含我需要每天下载的S3存储桶。问题是我的API密钥与另一个AWS账户相关联。有没有办法将新的S3存储桶导入我现有的AWS账户,或者尝试在已经拥有我需要的S3存储桶的AWS账户上创建新的API密钥更简单?
我正在使用python和boto3。谢谢!
答案 0 :(得分:0)
Amazon S3存储桶的所有者可以添加存储桶策略,该策略允许公开或特定AWS用户访问,包括来自其他AWS账户的用户。这样,您可以使用帐户A中的凭据访问帐户B中的存储桶。
例如,此Bucket Policy授予对其他帐户中用户的访问权限:
{
"Id": "S3Access",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadFiles",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/fred"
]
}
},
{
"Sid": "ListFiles",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/fred"
]
}
}
]
}
可以通过查看IAM管理控制台中的IAM用户来获取ARN。
我建议不要每次下载整个存储桶,而是使用AWS Command-Line Interface (CLI),它有一个方便的aws s3 sync
命令。这可以将文件与Amazon S3同步,并且只复制自上次同步以来添加或修改的文件。您可以定期运行它(例如每小时)以获得桶的本地副本,其概念与DropBox类似。