Лямбда-функции выполняются в роли выполнения. Вы можете сделать роль IAM клиента для своей лямбда-функции. См. Это
Затем вы можете использовать эту роль IAM для предоставления доступа к этому объекту 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,
Это 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
ролью.