我有一个s3 bucket,它保存了我正在创建的代理的一些配置文件。通过terraform,我创建了一个ec2实例,它将运行代理,在该实例的启动脚本中,我试图访问s3 bucket并复制所需的文件。
在启动脚本中,我使用此命令复制文件aws s3 cp s3://test-bucket/ . --recursive
目前,在我为实例创建的iam角色中,我授予它以下权限:
service_policy_document = {
SID = "LaunchScriptPermissions"
actions = [
"s3:GetObject",
"s3:ListObjects",
"s3:ListAllMyBuckets",
"s3:ListBuckets",
]
resources = ["*"]
}
我使用的是一个模块,这就是为什么权限在service_policy_document
下,但操作下的东西是实例所获得的权限
当我尝试运行脚本时,它失败了,并出现错误[ 113.369327] cloud-init[1581]: fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
你知道还需要添加什么来解决这个问题吗?
谢谢!:(
尝试用s3:ListBucket
替换s3:ListBuckets
。只需删除单词末尾的s
即可。