我有一个名为
x-temp-images
的 S3 存储桶和相应的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::x-temp-images-bucket/*",
"Condition": {
"StringNotEquals": {
"aws:SourceArn": <LAMBDA_ARN>
}
}
}
]
};
我有两个 Lambda 函数:
x-temp-images
和 x-temp-images
存储桶的 Lambda 函数。出于测试目的,我已向两个 Lambda 函数授予完整的 S3 访问权限,但我不想在每个 Lambda 函数角色中指定它们是否有权访问特定的 S3 存储桶。尽管如此,两个 Lambda 函数都可以访问此存储桶,尽管我只提到了 S3 存储桶策略中第一个 Lambda 函数的 ARN。
您在保单中指定的条件将不起作用。
如果您想授予 AWS Lambda 函数访问 Amazon S3 存储桶的权限,您应该 在与 Lambda 函数关联的 IAM 角色中授予权限。
默认情况下,IAM 角色没有权限。因此,对于您不想访问 S3 存储桶的 Lambda 函数上的 IAM 角色,无需执行任何操作。 对于您想要访问 S3 存储桶的 Lambda 函数,
为其 IAM 角色添加权限。