如何在serverless.yaml中为部署时创建的ECR添加resourcePolicy?
如何在serverless.yaml中为部署时自动创建的ECR添加资源策略?
你可以直接在Serverless Framework的配置中,给自动创建的ECR镜像仓库指定repositoryPolicy字段,把需要的资源策略嵌入进去,这样执行sls deploy时,策略会自动应用到对应的ECR仓库上。
修改后的完整serverless.yaml配置如下:
service: lambda-hello frameworkVersion: '3' provider: name: aws region: us-east-1 ecr: images: appimage: path: . repositoryPolicy: | { "Version": "2008-10-17", "Statement": [ { "Sid": "LambdaECRImageRetrievalPolicy", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:DeleteRepositoryPolicy", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:SetRepositoryPolicy" ], "Condition": { "StringLike": { "aws:sourceArn": "arn:aws:lambda:${aws:region}:${aws:accountId}:function:base-${self:provider.stage}*" } } } ] } functions: hello: image: name: appimage
关键说明:
- 在
provider.ecr.images.appimage节点下新增repositoryPolicy字段,用多行字符串(|符号)包裹你的JSON格式策略。 - 策略中的变量
${aws:region}、${aws:accountId}、${self:provider.stage}会被Serverless Framework自动替换为当前部署的实际值,无需手动修改。 - 执行
sls deploy时,框架会自动将该策略附加到为appimage创建的ECR仓库上,让符合条件的Lambda服务正常访问仓库,绕开环境中的显式拒绝规则。
你的函数代码(app.js)无需修改,保持原样即可。
内容的提问来源于stack exchange,提问作者Jeff Ancel
相关产品推荐
相关产品推荐

