Ori*_*Eye 7 permissions synchronization amazon-s3 aws-cli
我正在尝试在不同 AWS 账户上的两个存储桶之间设置同步。
我开始cp
工作:
@ubuntu:~$ s3cmd cp -v s3://src/dir/ s3://dest/folder --recursive
Run Code Online (Sandbox Code Playgroud)
我是拥有的用户,/src/dir
我添加了:
{
"Version": "2012-10-17",
"Id": "Policy1477299702471",
"Statement": [
{
"Sid": "Stmt1477299696163",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::awsid:user/name"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*"
}
]}
Run Code Online (Sandbox Code Playgroud)
测试存储桶上的存储桶权限策略。
现在我要aws sync
下班了,因为s3 cp
不建议与 cron 一起使用。
我试过
user@ubuntu:~$ aws s3 sync --dryrun s3://src/ s3://dest/ --region eu-central-1
Run Code Online (Sandbox Code Playgroud)
但我访问被拒绝:
致命错误:调用 ListObjects 操作时发生错误 (AccessDenied):拒绝访问
如果这是拥有存储桶的用户,我如何拒绝访问并运行同步?
Joh*_*ein 14
ListObjects
错误的原因是您分配了访问存储桶内容的权限( arn:aws:s3:::bucket/*
),但您没有授予存储桶本身的权限( arn:aws:s3:::bucket
)。该ListObjects
命令需要访问存储桶。
为了测试这一点,我做了以下事情:
bucket-a
在账户 A 中创建bucket-b
在账户 B 中创建user-a
在账户 A 中创建了一个具有访问权限的 IAM 用户bucket-a
将存储桶策略添加到bucket-b
:
{
"Id": "CopyBuckets",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-b",
"arn:aws:s3:::bucket-b/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::<account-a-id>:user/user-a"
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)然后我user-a
在账户 A 中使用触发同步:
aws s3 sync s3://bucket-a s3://bucket-b --profile user-a
Run Code Online (Sandbox Code Playgroud)
它工作成功。
归档时间: |
|
查看次数: |
13037 次 |
最近记录: |