当前,我的应用程序配置为通过帐户 AWS Payments 使用AWS。
我们有一个新要求,即将文件上传到S3中的其他帐户 AWS订单。
我已经在AWS Orders帐户中创建了一个S3存储桶,并添加了另一个AWS使用规范帐户 AWS Payments 。
使用我的应用程序,我可以将文件上传到 AWS订单。
使用 AWS订单登录控制台时,我无法下载或查看文件。因为它是由帐户创建的付款?我们需要添加存储桶策略吗?
答案 0 :(得分:1)
啊,原来的交叉帐户S3在没有将权限授予存储桶所有者的情况下放了。简而言之,您可以拥有存储桶,但没有文件权限。要在跨对象放置对象时解决此问题,需要授予存储桶所有者访问权限。
您可以确保存储区所有者始终具有访问权限,可以为交叉帐户放置权创建拒绝对所有者没有完全控制权的声明。
要修复已放置的对象,请放置对象的用户
aws s3api put-object-acl --acle bucket-owner-full-control --bucket BUCKET --key KEY
答案 1 :(得分:0)
要解决此问题,您需要在AWS Orders中创建一个可以访问AWS Payments S3存储桶的IAM用户。然后,复制S3存储桶并运行S3同步。
IAM权限-
{
"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 Orders的存储桶策略中
{
"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 Payments存储桶策略,然后进行更改。
希望这会有所帮助! :)