Gar*_*day 8 amazon-s3 amazon-web-services amazon-iam aws-sdk
我目前有一个 lambda,它使用节点 sdk 调用listObjectVersions来列出特定文件的所有版本。但是,我无法弄清楚我的策略中的哪些权限会授予 lambda 权限来进行此调用。我搜索了 AWS 文档,但找不到任何信息。
以下是我的策略中的当前权限:
- PolicyName: S3Policy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- s3:PutObject
- s3:PutObjectAcl
- s3:GetObject
- s3:GetObjectVersion
- s3:ListObjectVersions
- s3:DeleteObject
- s3:ListBucket
Run Code Online (Sandbox Code Playgroud)
当我执行 lambda 时,我会Access Denied在拨打电话时得到一个。我已经更改了我的政策以允许该操作s3:*并且 lambda 可以工作。但是,我不想授予对 s3 的完全访问权限。
我需要添加什么操作才能允许?
Joh*_*ein 10
来自Amazon S3 的操作、资源和条件键 - AWS Identity and Access Management:
ListBucketVersions:使用版本子资源列出有关存储桶中所有对象版本的元数据。
我对此进行了如下测试:
aws s3api list-object-versions --bucket my-bucket它工作成功。
该政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucketVersions",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
因此,虽然命名看起来有点奇怪(列出对象版本与列出存储桶版本),但它是正确的使用权限。
您需要更新您的Resource政策。
s3:ListBucketVersions是您正在寻找的操作。
应该是这样的:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketVersions",
"s3:GetBucketVersioning"
],
"Resource":"arn:aws:s3:::examplebucket"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject",
"s3:GetObjectVersionTagging",
"s3:GetObjectVersionTorrent",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersion"
],
"Resource":"arn:aws:s3:::examplebucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
尝试相应地改变你的政策。
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |