通过地形创建资源



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

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

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

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

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

欢迎来到IaC的世界,您将享受美食。:(

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

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

例如:

为了导入现有的非地形托管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"
}
}
}

然后您可以执行地形导入,以便导入现有的lambda:

terraform import aws_lambda_function.test_lambda my_test_lambda_function

相关内容

  • 没有找到相关文章

最新更新