[S3]

2016-10-14 2 views
0

特定のラムダからのみファイルへのアクセスを許可するS3バケット(静的なウェブホスティング)特定のファイルに関するすべての人へのアクセスを拒否し、特定のポリシーを持っています。[S3]

にはどうすればいいだけ特定ラムダ関数がアクセスできるようにすることができますか? (のみバケットポリシーを使用して)

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Authentication", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "NotResource": "arn:aws:s3:::web/auth.html" 
     } 
    ] 
} 

UPDATE:この1つで以前のポリシーの変更は、所望の結果実行の役割で実行

{ 
    "Version": "2012-10-17", 
    "Id": "Policy1477651215159", 
    "Statement": [ 
     { 
      "Sid": "Console administration", 
      "Effect": "Allow", 
      "NotPrincipal": { 
       "AWS": "arn:aws:iam::XXXX:role/role_lambda" 
      }, 
      "Action": "s3:GetObject", 
      "NotResource": "arn:aws:s3:::web/auth.html" 
     } 
    ] 
} 

答えて

2

ラムダ関数を与えます。ラムダ機能の顧客IAMロールを作成することができます。そして、あなたがそのS3オブジェクトへのアクセス権を付与することIAMロールを使用することができますthis

を参照してください。続く手順については、articleを参照してください。

+0

このソリューションのおかげで、私はあなたにもバケットポリシーでこれを行うことができるはず – dooms

+0

のみバケットポリシーを使用します。あなたのバケットポリシーにLambda Role:ARN:aws:iam :: xxxxxxxxx:role/example_role_for_lambda'のARNをポストするだけです。 'Principal'ノードに入ります。 –

1

これはCloudFormationスニペットです。あなたは、次のIAMポリシーステートメントを使用してS3にごLambda役割へのアクセスを許可することができます。

"LambdaRolePolicy" : { 
    "Type": "AWS::IAM::Policy", 
    "Properties": { 
     "PolicyName": "Lambda", 
     "PolicyDocument": { 
      "Statement" : [ { 
       "Action" : [ 
        "s3:PutObject", 
        "s3:PutObjectAcl" 
       ], 
       "Effect" : "Allow", 
       "Resource" : { 
        "Fn::Join": [ "", [ 
         "arn:aws:s3:::", 
         { "Ref": "S3Bucket" }, 
         "/*" 
        ] ] 
       } 
      } ] 
     }, 
     "Roles" : [ { "Ref": "RootRole" } ] 
    } 
} 

S3Bucketリソースは、あなたのS3バケツであるとRootRoleLambda役割です。