2016-10-14 1 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: Изменение прежней политики с этим один дает желаемый результат

{ 
    "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

функции Lambda работать в Execution роли. Вы можете сделать роль IAM клиента для своей лямбда-функции. См. this

Затем вы можете использовать эту роль IAM для предоставления доступа к этому объекту S3. Смотрите следующие шаги: article.

+0

спасибо за это решение, но я хочу использовать только политику ведра – dooms

+0

Вы также должны сделать это с помощью политики ведра. Просто отправьте ARN роли Лямбды: 'arn: aws: iam :: xxxxxxxxx: role/example_role_for_lambda' в вашу политику ведра. Он входит в узел «Principal». –

1

Это фрагмент CloudFormation. Вы можете разрешить доступ Lambda роль в S3 с помощью следующего оператора IAM политики:

"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 ведра и RootRole является Lambda роль.

Смежные вопросы