Terraform中如何通过aws_lambda_function引用S3并上传Node.js源码包
从S3部署Node.js Lambda的Terraform配置优化
你的现有配置已经实现了从S3加载Lambda源码包的核心功能,这里给出优化建议和关键注意点:
优化后的配置代码
resource "aws_lambda_function" "terraform_lambda_func" { s3_bucket = var.bucket_name s3_key = "${var.zip_file_name}.zip" function_name = var.lambdaFunctionName role = aws_iam_role.okta-iam-v1.arn handler = "index.handler" runtime = "nodejs16.x" # 可选配置:根据业务需求调整 memory_size = 256 # 内存默认128MB,按需调高 timeout = 10 # 超时默认3秒,按需延长 }
重要注意事项
- 确保S3桶与Lambda函数处于同一AWS区域,跨区域会导致源码加载失败
- 验证
aws_iam_role.okta-iam-v1已附加Lambda执行必需的权限策略,比如AWSLambdaBasicExecutionRole(用于日志输出) - 若需源码更新时自动触发Lambda重新部署,可添加
source_code_hash参数:# 本地文件哈希(若本地有源码包副本) source_code_hash = filebase64sha256("${path.module}/${var.zip_file_name}.zip") # 或直接引用S3对象的ETag(需先定义aws_s3_bucket_object资源) # source_code_hash = aws_s3_bucket_object.lambda_source.etag
内容的提问来源于stack exchange,提问作者Madhawa
相关产品推荐
相关产品推荐

