Prz*_*ach 13 terraform amazon-ecr
我有一个模块,可以创建 lambda 所需的所有基础设施,包括存储图像的 ECR:
resource "aws_ecr_repository" "image_storage" {
name = "${var.project}/${var.environment}/lambda"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
resource "aws_lambda_function" "executable" {
function_name = var.function_name
image_uri = "${aws_ecr_repository.image_storage.repository_url}:latest"
package_type = "Image"
role = aws_iam_role.lambda.arn
}
Run Code Online (Sandbox Code Playgroud)
当然,这样做的问题是它会失败,因为当 aws_lambda_function 运行时,存储库在那里,但图像不在那里:图像是使用我的 CI/CD 上传的。
所以这是一个先有鸡还是先有蛋的问题。Terraform 应该仅用于基础设施,因此我不能/不应该使用它来上传图像(即使是虚拟图像),但我无法实例化基础设施,除非在存储库和 lambda 创建步骤之间上传图像。
我能想到的唯一解决方案是与 lambda 分开创建 ECR,然后以某种方式将其链接为我的 lambda 中的现有 aws 资源,但这似乎有点笨拙。
有什么建议么?
Prz*_*ach 11
我最终使用了以下解决方案,其中上传虚拟图像作为部分资源创建。
resource "aws_ecr_repository" "listing" {
name = "myLambda"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
provisioner "local-exec" {
command = <<-EOT
docker pull alpine
docker tag alpine dummy_container
docker push dummy_container
EOT
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7565 次 |
| 最近记录: |