通过Terraform创建资源

时间:2020-07-17 10:54:04

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

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

此后,某些资源由控制台(SES,SNS,LAMBDA)创建,而TERRAFORM未提供这些资源。

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

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

或者甚至在这种情况下我该如何进行?

1 个答案:

答案 0 :(得分:1)

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

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

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

例如:

要导入现有的非地形托管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导入,以导入现有的lambda:

terraform import aws_lambda_function.test_lambda my_test_lambda_function