能否直接绑定Lambda Layer到静态ARN?Terraform绑定AWS官方Layer最佳方式
在Terraform中绑定AWS官方Lambda Layer的最佳实践
1. 首选绑定方式
直接引用官方Layer的静态ARN是首选方案,因为官方Layer由AWS维护和更新,不需要你手动创建或管理Layer资源,简洁且不易出错。
2. 是否可以跳过定义Layer资源直接绑定ARN?
完全可以,而且这是推荐的做法。你不需要通过aws_lambda_layer_version资源来“导入”官方Layer,直接将ARN字符串填入Lambda模块的layers属性列表即可。
你提供的代码里试图给aws_lambda_layer_version(注意你写错了资源名,正确的是aws_lambda_layer_version而非aws_lambdas_layer)指定arn参数是错误的——这个资源的作用是创建你自己的自定义Layer,而非引用已存在的Layer。
3. 能否直接绑定静态ARN而非zip文件?
当然可以。静态ARN对应AWS官方(或其他第三方)已经创建好的Layer,这类Layer不需要你提供zip包;zip文件仅在你需要创建自己的自定义Layer时才需要指定。
修正后的示例代码
去掉错误的Layer资源定义,直接在Lambda模块中使用ARN:
module "lambda_test" { source = "git::https://git.my-custom-aws-lambda.git" application = var.application service = "${var.service}-test" file_path = "lambda_function.zip" publicly_accessible = false data_classification = "confidential" handler = "lambda_function.lambda_handler" runtime = "python3.8" tfs_releasedefinitionname = "" tfs_releasename = "0" vpc_enabled = true vpc_application_tag = "aws-infra" promote = true rollback = false create_cwl_group = true cwl_prefix = "my-project" create_cwl_subscription = false # 直接使用官方Layer的静态ARN layers = ["arn:aws:lambda:us-east-1:xxxxxx:AWSSDKPandas-Python38:1"] timeout = 600 # 10分钟 memory_size = 1024 # 1GB environment = { variables = { destination_bucket_name = "us-east-1-my-sbx-${terraform.workspace}" } } }
内容的提问来源于stack exchange,提问作者Ross Bush
相关产品推荐
相关产品推荐

