我有两个单独的AWS帐户,我们称它们为Prod和Staging。在暂存帐户中,我尝试使用在生产中的S3存储桶上找到的备份文件来设置Elasticache(redis)集群。
使用boto函数elasticache.create_replication_group
,我像这样传递SnapshotsArns:
SnapshotArns:[
'arn:aws:s3:::bucket/backup_file_name.rdb',
'arn:aws:s3:::bucket/backup_file_name2.rdb',
'arn:aws:s3:::bucket/backup_file_name3.rdb',
]
elasticache.create_replication_group
调用失败,并显示错误
An error occurred (InvalidParameterValue) when calling the CreateReplicationGroup operation: No permission to
access S3 object: bucket/backup_file_name.rdb
过去我曾使用角色假设来通过Boto S3客户端访问S3对象,但这有很大的不同。我需要让Elasticache自己访问该存储桶,该存储桶存在于另一个帐户中。有人对这个有经验么?我该怎么办?
我应该补充一下,该存储桶的策略如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::staging_account_id:root"
},
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
]
}
执行此操作的说明可以在AWS documentation中,特别是此步骤:步骤4:授予ElastiCache对.rdb文件的读取权限