【问题标题】:How do I use terraform and AWS to run a script and then terminate or destroy the resources?如何使用 terraform 和 AWS 运行脚本,然后终止或销毁资源?
【发布时间】:2017-09-22 16:02:40
【问题描述】:

我有一个 terraform 脚本,在 terraform apply 之后,它成功启动了一个 AWS 现场实例,然后运行了一个 bash 脚本。在脚本运行完成并创建完成后,我一直在使用terraform destroy 手动销毁 Spot 实例。这很不方便,因为我要么必须查看我的电子邮件以获取 CloudWatch 警报,要么定期检查脚本的进度。理想情况下,我将能够自动销毁我自动创建的 AWS 资源。有谁知道我应该怎么做?我是否使用了错误的 AWS 资源,即我应该使用 ECS 吗?

【问题讨论】:

  • 我猜 AWS ECS Run Task 或者 AWS Batch 好像比较合适。
  • aws lambda 怎么样,如果您可以将 bash 脚本转换为 python 或其他支持的语言。
  • @minamijoyo 我知道 AWS Batch 尚未在 Terraform github.com/hashicorp/terraform/issues/12187 中实现,我不确定 ECS 运行任务。我更愿意将 Terraform 用于基础设施作为代码优势。
  • @BMW 我想我需要 bash。
  • ECS 运行任务 API 使用 docker 容器运行一次性任务。但是,您需要管理 ECS 容器实例。 Terraform 静态定义资源。所以如果你想破坏资源,无论如何都需要一些作业控制。

标签: bash amazon-web-services terraform


【解决方案1】:

我找到的解决方案是创建一个空资源,然后在运行我的脚本后包含以下配置器。

  provisioner "remote-exec" {
     inline = [
        "sudo shutdown -h now",
     ]
  }

【讨论】:

    【解决方案2】:

    您可以创建一个 lambda 函数,然后使用 in lambda 调用您的 shell 脚本。

    您可以在 cloudwatch 的帮助下安排它,在完成时终止它并可以对其应用监控。

    如何:Can bash script be written inside a AWS Lambda function

    【讨论】:

      猜你喜欢
      • 2020-12-27
      • 2022-07-13
      • 1970-01-01
      • 2020-08-15
      • 2019-11-14
      • 2020-10-24
      • 2021-02-15
      • 2021-09-01
      • 1970-01-01
      相关资源
      最近更新 更多