【问题标题】:Terraform 0.12 Lambda and Beanstalk package deploymentTerraform 0.12 Lambda 和 Beanstalk 包部署
【发布时间】:2020-12-10 13:12:43
【问题描述】:

在部署 lambda 代码之前,我们会告诉 terraform 代码在 lambda 基础架构上查找和部署哪个 s3 存储桶。 如今,devops 人员可以通过 terraform 部署 lambda 代码,只需提供代码存储位置的绝对路径即可。

terraform 是否也能够使用这种方法来部署 beanstalk 应用程序包?

我正在以这种方式部署我的 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
    }
  }
}

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk terraform terraform-provider-aws terraform0.12+


    【解决方案1】:

    不确定你的确切意思,但你可以在 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
    }
    

    【讨论】:

    • 感谢您关注 Marcin,在 lambda 上部署代码时,我不再依赖 S3 bukcet。我修改了上面的问题并展示了我如何部署我的 lambda 代码。我想知道是否有人已经尝试过使用 terraform 在 beanstalk 中部署应用程序包的这种方法
    • @Lagot 我明白了。可悲的是,我不知道 EB 有这种可能性。我认为它仅限于 lambda。
    • 感谢@Marcin 的关注。似乎它真的只限于 lambda
    • @Lagot 没问题。如果您找到更好的方法,请告诉我。我也很好奇。
    猜你喜欢
    • 2022-01-04
    • 2021-04-18
    • 1970-01-01
    • 2021-01-28
    • 2019-04-12
    • 2022-12-21
    • 2023-02-21
    • 2017-06-19
    • 2012-11-13
    相关资源
    最近更新 更多