Разрешить доступ к файлу только из определенных Лямбда [s3]

Ведро s3 (статический веб-хостинг) имеет определенную политику, которая запрещает доступ всем пользователям к определенному файлу.

Как я могу разрешить доступ к нему только для конкретной лямбда-функции ? (используя только политику ведра)

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

ОБНОВЛЕНИЕ : изменение предыдущей политики с помощью этого дает желаемый результат

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

java,android,android-wifi,android-permissions,android-networking,

0

Ответов: 2


2 принят

Лямбда-функции выполняются в роли выполнения. Вы можете сделать роль IAM клиента для своей лямбда-функции. См. Это

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


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ролью.

амазонки-веб-сервисы, амазонка-s3, AWS-лямбда,
Похожие вопросы