即使从其他AWS帐户上传图像,我也希望将其公开显示。我有当前的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucketname/*"
}
]
}
当我使用主要帐户中的凭据进行上传时,此方法非常有用,但是当我使用ACL添加的其他帐户进行上传时,该方法不适用。在我阅读时,我发现可以添加bucket-owner-full-control
或public-read
,但不能同时添加两者。我的最终目标是允许两个AWS帐户都可以完全访问该对象,并在上载时具有公共读取权限。这可能吗(理想情况下,没有两个请求)?
答案 0 :(得分:1)
上面接受的答案是错误的,因为从另一个帐户发布的对象将忽略S3存储桶策略。
在交叉帐户发布上应用多个ACL的正确方法如下:
aws s3 cp --recursive blahdir s3://bucketname/blahdir/ --cache-control public,max-age=31536000 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=id=S3_ACCOUNT_CANONICAL_ID
答案 1 :(得分:0)
否,似乎您只能在Amazon S3中创建对象时指定一个ACL。
有关每个罐头ACL含义的详细信息,请参见:Canned ACL
有关所有权如何工作的详细信息,请参见:Amazon S3 Bucket and Object Ownership
就个人而言,我不建议使用ACL来控制访问。它们是Amazon S3早期的遗留物。这些天,如果您希望公开大量对象,特别是如果它们在同一存储桶/路径中,则建议使用存储桶策略。
因此,可以使用bucket-owner-full-access
上传对象,并且存储桶策略可以使对象公开访问。