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