目前,我的应用程序被配置为与帐户、AWS支付一起使用AWS。
我们有一个新的要求,上传文件到S3,是在不同的帐户,,AWS订单。
我在another帐户中创建了一个S3桶,并添加了另一个AWS使用规范帐户AWS支付。
使用我的应用程序,我能够将文件上传到AWS Orders。
当我用AWS Orders登录到控制台时,我无法下载或查看该文件。因为它是由帐户付款创建的?我们需要添加桶策略吗?
发布于 2019-09-24 12:19:01
啊,旧的交叉帐户S3放置,没有给予权限返回桶所有者。简而言之,您可以拥有存储桶,但没有对文件的权限。要解决这个问题,当您将对象放置在帐户上时,您需要授予桶所有者访问权限。
关于授予跨帐户权限放置对象,同时确保桶所有者仍然拥有完全控制。的文档
您可以确保桶所有者始终具有访问权限,正在为不授予所有者完全控制权的交叉帐户put创建一个拒绝语句。
要修复已放置的对象,请从放置对象的用户处修复
aws s3api put-object-acl --acle bucket-owner-full-control --bucket BUCKET --key KEY 发布于 2019-09-24 07:15:37
要解决这个问题,您需要在AWS订单中创建一个IAM用户,该用户可以访问AWS支付S3桶。然后,复制S3桶并运行S3同步。
我有这样的权限-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:ListBucket",
"s3:GetObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::bucket-name/*",
"arn:aws:s3:::bucket-name"
]
}
]
}然后,将其添加到AWS订单的桶策略中。
{
"Sid": "Permissions for AWS Payments account",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWS-Payments-Account-ID:root"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*"
]
}S3交叉帐户复制- https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-walkthrough-2.html
S3同步- https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
要记住--如果父桶没有读/写权限,子桶将复制包括权限在内的所有内容。因此,在尝试之前,请确保AWS支付桶政策,然后作出更改。
希望这会有帮助!)
https://stackoverflow.com/questions/58071685
复制相似问题