【问题标题】:Create Resources via terraform通过 terraform 创建资源
【发布时间】:2020-11-07 04:10:24
【问题描述】:

我使用 TERRAFORM 创建了一个 AWS 环境。

之后,一些资源是由控制台(SES、SNS、LAMBDA)创建的,而不是由 TERRAFORM 提供的。

我正在为控制台创建的这些资源(SES、SNS、LAMBDA)编写 TERRAFORM 代码。

如果我已经在我的帐户中运行了这些资源,是否可以通过 TERRAFORM 为这些资源生成此代码而不删除它们?

甚至,在这种情况下我必须如何处理?

【问题讨论】:

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

欢迎来到 IaC 的世界,您将大饱眼福。 :)

您可以将所有在没有 terraform 的情况下创建的资源(使用 CLI 或手动配置 - 不属于 tf 状态的资源)导入到您的 terraform 状态。导入这些资源后,您就可以开始使用 terraform 管理它们的生命周期。

  1. 在 .tf 文件中定义资源
  2. Import现有资源

举个例子:

为了导入现有的非 terraform 托管 lambda,您首先在 .tf 文件中为其定义资源:

main.tf:

resource "aws_lambda_function" "test_lambda" {
  filename      = "lambda_function_payload.zip"
  function_name = "lambda_function_name"
  role          = "${aws_iam_role.iam_for_lambda.arn}"
  handler       = "exports.test"

  # The filebase64sha256() function is available in Terraform 0.11.12 and later
  # For Terraform 0.11.11 and earlier, use the base64sha256() function and the file() function:
  # source_code_hash = "${base64sha256(file("lambda_function_payload.zip"))}"
  source_code_hash = "${filebase64sha256("lambda_function_payload.zip")}"

  runtime = "nodejs12.x"

  environment {
    variables = {
      foo = "bar"
    }
  }
}

然后你可以执行 terraform import,以导入现有的 lambda:

terraform import aws_lambda_function.test_lambda my_test_lambda_function

【讨论】:

  • 嗨,pijemcolu,非常感谢,我会尽快尝试这种方法。
猜你喜欢
  • 1970-01-01
  • 2015-05-18
  • 2021-01-21
  • 1970-01-01
  • 2020-11-18
  • 2019-05-19
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多