如何解决Terraform 0.12 Lambda和Beanstalk软件包部署
在部署lambda代码之前,我们告诉terraform代码在lambda基础结构上查找和部署哪个s3存储桶。 如今,开发人员可以通过简单地提供本地存储代码的绝对路径来通过terraform部署lambda代码。
terraform还能在部署beantalk应用程序捆绑包时使用这种方法吗?
我正在以这种方式部署我的lambda代码(下面的示例),这在部署elasticbeanstalk应用程序捆绑包中也可行吗?
data "archive_file" "my_lambda" {
type = "zip"
source_dir = "../../my_lambda"
output_path = "../../my_lambda.zip"
}
resource "aws_lambda_function" "my_lambda" {
function_name = "my_lambda"
filename = data.archive_file.my_lambda.output_path
source_code_hash = data.archive_file.my_lambda.output_base64sha256
handler = "src/my_lambda.handler"
role = aws_iam_role.my_lambda.arn
runtime = "nodejs12.x"
memory_size = "128"
timeout = "60"
environment {
variables = {
VAR1 = var.VAR1
VAR2 = var.VAR2
VAR3 = var.VAR3
}
}
}
解决方法
不确定您的确切意思是什么,但是您可以准备terraform zip格式的部署程序包,将其上传到S3,并使用EB应用程序版本进行部署。
您可以使用archive_file来压缩应用程序的文件夹:
data "archive_file" "ebzip" {
type = "zip"
source_dir = "/path/to/my-eb-app"
output_path = "/tmp/my-eb-app.zip"
}
然后,您可以使用aws_s3_bucket_object将其上传到部署存储桶:
resource "aws_s3_bucket_object" "ebapp" {
bucket = "your_bucket_name"
key = "new_object_key"
source = archive_file.ebzip.output_path
}
最后,您可以在aws_elastic_beanstalk_application_version中使用它:
resource "aws_elastic_beanstalk_application_version" "default" {
name = "tf-test-version-label"
application = "tf-test-name"
description = "application version created by terraform"
bucket = "your_bucket_name"
key = aws_s3_bucket_object.ebapp.id
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。