0
私の現在のS3バケットポリシーはs3:getObject
とs3:putObject
をグローバルに有効にしています。バケットポリシーを指定することで制限しようとしています。ラムダ関数がオブジェクトを排他的にS3バケットに入れることを許可する
s3:getObject
は安全ですが、s3:putObject
へのアクセスを特定のAWSラムダ機能に限定したいと思います。
この関数は、CloudFrontに対するHTTPリクエストを介して匿名でトリガされるため、AWSユーザは含まれません。
ラムダの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関数だけをそのバケットに書きたい場合は、さらに何かが必要です(たとえば、VPCでLambdaを起動し、S3バケットポリシーを変更してそのVPCへのアクセスを制限します)。 – jarmod
「アクション」:「s3:putObject」、「ステートメントIをバケットポリシーから削除した後、私はバケットに匿名で書き込むことはできません(オーナーとしてログに記録した場合のみ)。 '' Action ":" s3:PutObject "、'をラムダのIAMポリシーに追加することで、バケットに書き込むことができます。それは私が元々望んでいたものです。なぜもっと必要なのでしょうか? –
いいですね。あなたはあなたの答えを受け入れるべきです。 – jarmod