Terraform:有可能定义一个基于空图像的lambda吗



定义package_type = Zip的lambda时,可以创建一个伪temp.zip文件并将其设置为lambda的文件名。

创建时,lambda基本上会有一个空的zip,稍后可以用类似于将工件推送给它的连续交付管道的东西来替换

我注意到工作中使用了这种模式。

然而,我使用lambda容器图像是为了一些私人的东西。

我将其设置为package_type = Image,并设置其他required参数(根据Terraform文档(。但是当我运行terraform apply时,我得到一个错误,说必须设置lambda的image_uri参数。

如果我还没有建立一个图像呢?是否有一些等效的技术来满足image_uri的要求;"空";lambda,我稍后计划通过CD管道进行更新?

一直在四处寻找,但还没有找到解决方案。

如果我还没有构建映像怎么办?

则无法创建容器lambda。你必须提供一些图片url。它可以是一个什么都不做的伪映像,但在创建这样的lambda函数之前,它必须预先存在。

然后,稍后可以使用其他内容更新伪图像。

是的,你可以!这个问题已经在这里得到了回答,我已经把它复制到下面

data "aws_ecr_authorization_token" "token" {}
resource "aws_ecr_repository" "repository" {
name                 = "lambda-${local.name}-${local.environment}"
image_tag_mutability = "MUTABLE"
tags = local.common_tags
image_scanning_configuration {
scan_on_push = true
}
lifecycle {
ignore_changes = all
}
provisioner "local-exec" {
# This is a 1-time execution to put a dummy image into the ECR repo, so 
#    terraform provisioning works on the lambda function. Otherwise there is
#    a chicken-egg scenario where the lambda can't be provisioned because no
#    image exists in the ECR
command     = <<EOF
docker login ${data.aws_ecr_authorization_token.token.proxy_endpoint} -u AWS -p ${data.aws_ecr_authorization_token.token.password}
docker pull alpine
docker tag alpine ${aws_ecr_repository.repository.repository_url}:SOME_TAG
docker push ${aws_ecr_repository.repository.repository_url}:SOME_TAG
EOF
}
}

相关内容

  • 没有找到相关文章

最新更新