我正在开发一系列使用Docker镜像的Lambda函数。第一步是创建它们并在AWS ECR中注册(不确定我所做的一切是否正确,欢迎任何建议 :-)):
terraform {
...
required_providers {
docker = {
source = "kreuzwerker/docker"
version = ">= 2.12"
}
}
}
resource aws_ecr_repository lambda_repo {
name = "lambda"
}
resource docker_registry_image lambda_image {
name = "<account_id>.dkr.ecr.<region>.amazonaws.com/lambda:latest"
build {
context = "./code/lambda"
}
depends_on = [
aws_ecr_repository.lambda_repo
]
keep_remotely = true
}
resource aws_lambda_function lambda {
...
image_uri = "<account_id>.dkr.ecr.<region>.amazonaws.com/lambda:latest"
source_code_hash = docker_registry_image.lambda_image.sha256_digest
...
}
使用以下代码:
- docker_registry_image > lambda_image:构建图像并将其上传到AWS
- aws_lambda_function > lambda:如果图像“lambda:latest”已更新,则更新Lambda中的新代码
我的问题是如何“强制”docker_registry_image > lambda_image重新构建图像并在Dockerfile或app.py(添加到文件中的主要代码)更改时更新“lambda:latest”。另外,我不确定这是否是构建图像的方法。
谢谢!