Terraform脚本中是否可以获取非自有维护的Lambda层最新版本?
解决方案
可以通过Terraform的AWS数据源aws_lambda_layer_version自动获取指定Lambda层的最新可用版本,无需手动维护版本号,具体实现步骤如下:
步骤1:添加Lambda层数据源
在你的Terraform配置中新增如下数据源块,配置为自动拉取目标层的最新版本:
data "aws_lambda_layer_version" "shared_layer" { # 目标Lambda层的名称 layer_name = "my-layer-name" # 层所属的AWS账号ID,避免拉取到同区域其他账号的同名层 owner = "587522145896" # 筛选匹配你函数运行时的层版本,避免拉取到不兼容的版本 compatible_runtimes = ["python3.8"] # 开启自动获取最新版本 most_recent = true }
步骤2:修改Lambda模块的层配置
把原来写死版本号的层ARN,替换为上面数据源返回的ARN即可:
module "lambda_function" { source = "terraform-aws-modules/lambda/aws" function_name = "my-lambda1" description = "My awesome lambda function" handler = "index.lambda_handler" runtime = "python3.8" source_path = "../src/lambda-function1" tags = { Name = "my-lambda1" } layers = [ # 引用数据源返回的最新版本层ARN data.aws_lambda_layer_version.shared_layer.arn ] }
注意事项
- 每次执行
terraform plan或terraform apply时,Terraform都会主动查询当前最新的层版本,只要层发布了新版本,下一次apply就会自动把你的Lambda函数绑定到最新版本。 - 如果后续需要锁定到某个固定版本,只需要把数据源的
most_recent参数改为false,再新增version = 固定版本号参数即可,无需修改其他配置。 - 执行Terraform的账号需要持有
lambda:GetLayerVersion权限,否则无法正常拉取层的版本信息。
内容的提问来源于stack exchange,提问作者sliders_alpha
相关产品推荐
相关产品推荐

