AWS CDK:如何从 ECR 存储库上的现有 Docker 映像创建 Lambda 函数?

Yas*_*sen 5 python aws-lambda aws-cdk

我已经在 ECR 上推送了一个 Docker 镜像。我还使用它通过 AWS 控制台从容器映像创建 lambda 函数,并且运行成功。

现在,我想通过 AWS CDK 创建该函数。

__init__lambda stack 类的函数中,我添加了:

repo = aws_ecr.Repository.from_repository_name(scope, "Repository", repository_name="my-repo-name")
lambdaFn = aws_lambda.DockerImageFunction(
    self, "Test Function",
    code=aws_lambda.DockerImageCode.from_ecr(repo),
    timeout=core.Duration.seconds(600),
    memory_size=8192,
    environment=dict(PATH="/opt"),
    role = role
)
Run Code Online (Sandbox Code Playgroud)

我在从 ECR 上的现有存储库定义变量时遇到问题repo

Yas*_*sen 8

解决了!

代码显示错误:jsii.errors.JSIIError: Import at 'Repository' should be created in the scope of a Stack, but no Stack found

object的第一个属性Repository应该是self引用堆栈的相同范围。

解决方案:

repo = aws_ecr.Repository.from_repository_name(self, "Repository", repository_name="my-repo-name")
lambdaFn = aws_lambda.DockerImageFunction(
    self, "Test Function",
    code=aws_lambda.DockerImageCode.from_ecr(
        repository=repo,
        tag="latest"
    ),
    timeout=core.Duration.seconds(600),
    memory_size=8192,
    environment=dict(PATH="/opt"),
    role = role
)
Run Code Online (Sandbox Code Playgroud)

tag或者,我还根据 Miguel 的回答明确指定了参数。