仅允许从特定的 Lambda [s3] 访问文件
Allow access to file only from specific Lambda [s3]
一个 s3 存储桶(静态网络托管)有一个特定的策略,拒绝每个人访问某个文件。
如何才能只允许特定的 lambda 函数访问它? (仅使用存储桶策略)
{
"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"
}
]
}
Lambda 在执行角色中运行 运行。您可以为您的 lambda 函数创建一个客户 IAM 角色。参见 this
然后您可以使用该 IAM 角色授予对该 S3 对象的访问权限。请参阅此 article 以了解要遵循的步骤。
这是一个 CloudFormation
片段。您可以使用以下 IAM
政策声明允许您的 Lambda
角色访问 S3
:
"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 存储桶(静态网络托管)有一个特定的策略,拒绝每个人访问某个文件。
如何才能只允许特定的 lambda 函数访问它? (仅使用存储桶策略)
{
"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"
}
]
}
Lambda 在执行角色中运行 运行。您可以为您的 lambda 函数创建一个客户 IAM 角色。参见 this
然后您可以使用该 IAM 角色授予对该 S3 对象的访问权限。请参阅此 article 以了解要遵循的步骤。
这是一个 CloudFormation
片段。您可以使用以下 IAM
政策声明允许您的 Lambda
角色访问 S3
:
"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
角色。