0
我目前的S3存储桶策略全局启用s3:getObject
和s3:putObject
,我试图通过指定存储桶策略来限制它。允许Lambda函数将对象专门放入S3存储桶
虽然s3:getObject
是安全的,但我想限制只能访问s3:putObject
到特定的AWS Lambda函数。
该功能通过对CloudFront的HTTP请求进行匿名触发,因此不涉及AWS用户。
如何通过Lambda的ARN标识符限制访问?
目前的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:getObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
},
{
"Sid": "LambdaPutObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:putObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
}
]
}
如果我正确地读出你原来的问题,您无法仅通过为您的Lambda函数创建IAM角色来限制写入该S3存储桶的人员/内容。所做的只是限制Lambda函数的功能。如果您希望Lambda函数以及只有Lambda函数能够写入该存储桶,那么您需要更多(例如,在VPC中启动Lambda并修改S3存储桶策略以限制对该VPC的访问)。 – jarmod
从桶策略中删除'“Action”:“s3:putObject”,'Statement I后,我无法匿名写入存储区(仅在以所有者身份登录时)。在Lambda的IAM策略中添加'“Action”:“s3:PutObject”,允许它写入存储桶。这就是我最初想要的,为什么我需要更多? –
听起来不错。你应该接受你的答案。 – jarmod