【发布时间】:2020-09-25 05:25:05
【问题描述】:
这可能是一个普遍的 AWS 问题,但在我看来,CDK 允许您使用它的方式仍然有意想不到的结果,我不确定为什么。
在下面的代码中,我应该向 lambda 服务主体授予读取权限。 但这不起作用,并且 lambdas 无法从此存储桶中读取。 我能让他们工作的唯一方法是更新他们的 lambda 策略,允许他们通过 arn 访问存储桶。
为什么这不起作用?并且由于它是允许的(该策略已设置为存储桶) 这是什么意思?
谢谢!
bucket = S3.Bucket(
scope=self,
id='MyBucket',
versioned=True,
block_public_access=S3.BlockPublicAccess.BLOCK_ALL,
encryption=BucketEncryption.KMS_MANAGED,
removal_policy=core.RemovalPolicy.DESTROY,
lifecycle_rules=[bucket_lifecycle_rules],
)
lambda_service_principal = iam.ServicePrincipal('lambda.amazonaws.com')
bucket.grant_read(lambda_service_principal)
【问题讨论】:
-
访问存储桶的不是 Lambda“服务”。访问存储桶的是 Lambda 函数使用的 IAM 角色。这就是为什么您需要使用授予 IAM 角色访问权限的存储桶策略,或者(更好地)向 IAM 角色添加访问存储桶的权限。
-
@JohnRotenstein 谢谢!如果你想。要写它作为答案,我会标记它。
标签: aws-cdk