gpt4 book ai didi

amazon-web-services - Lambda 无权访问 ECR 镜像

转载 作者:行者123 更新时间:2023-12-04 00:52:50 24 4
gpt4 key购买 nike

随着最近发布的用于 Lambda 函数的 Docker 镜像,我决定使用 CloudFormation 尝试此功能。

因此,下面的 lambda 考虑存储在 Elastic Container Registry 中的 docker 镜像,并具有按照 documentation 中的示例访问该镜像的权限。 .

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: lambda-docker-image

Globals:
Function:
Timeout: 180

Resources:
DockerAsImage:
Type: AWS::Serverless::Function
Properties:
FunctionName: DockerAsImage
ImageUri: ??????????????.dkr.ecr.us-west-2.amazonaws.com/????:latest
PackageType: Image
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- ecr:*
- ecr-public:*
- sts:GetServiceBearerToken
Resource: "*"
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: post

我正在使用 samus-west-2 中部署模板

sam deploy -t template.yaml --capabilities "CAPABILITY_NAMED_IAM" --region "us-west-2" --stack-name "lambda-docker-example" --s3-bucket "my-bucket" --s3-prefix "sam_templates/lambda-docker-example" --force-upload  --no-confirm-changeset

但是,在成功创建 IAM 角色后,Lambda 函数创建失败,并出现以下错误

Lambda does not have permission to access the ECR image. Check the ECR permissions. (Service: AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException;

即使该角色有权访问任何 ecs 资源。我尝试过的另一种方法是创建一个单独的角色并通过 Role: !GetAtt Role.Arn 将其分配给 lambda,这种方法也不起作用。

最佳答案

基于评论。

要使用基于图像的 lambda,需要 ECR 权限的是 IAM 用户/角色,而不是函数本身。来自 docs :

Make sure that the permissions for the AWS Identity and Access Management (IAM) user or role that creates the function contain the AWS managed policies GetRepositoryPolicy and SetRepositoryPolicy.

除了上面列出的两个权限外,还需要ecr: InitiateLayerUpload

关于amazon-web-services - Lambda 无权访问 ECR 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65137639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com