如何在Terraform中导入现有的AWS Glue Job



到目前为止,我通过Console和/或boto3库部署了Glue作业。

我想使用Terraform转到基础设施即代码,并使用此工具管理所有Glue资源。现在要导入已经存在的资源,我知道命令terraform import ADDR ID,但我不确定它是如何工作的。

有人可以向我解释导入是如何使用AWS Glue的吗?

引用https://www.terraform.io/docs/cli/import/usage.html在导入AWS Glue Job之前,有必要在CLI的当前工作目录中创建一个.tf文件。

因此,让我们创建一个main.tf文件,如下所示:

terraform {
required_providers {
aws = {
source  = "hashicorp/aws"
version = "~> 3.27"
}
}
}
provider "aws" {
region = "my-region-1"
assume_role {
role_arn = "arn:aws:iam::012345678901:role/MyRole"
}
}
resource "aws_glue_job" "my_job_resource" {
name     = "my-glue-job"
role_arn = "arn:aws:iam::012345678901:role/MyGlueJobRole"
command {
name            = "glueetl"
script_location = "s3://my-bucket/my-script.py"
python_version  = "3"
}
}

其中:

  • my-region-1是运行的AWS区域
  • arn:aws:iam::012345678901:role/MyRole是运行Terraform命令时承担的AWS角色(这将访问/与AWS资源交互(
  • my-glue-job是现有粘合作业的名称
  • arn:aws:iam::012345678901:role/MyGlueJobRole是现有粘合作业的AWS角色
  • s3://my-bucket/my-script.py是粘合作业脚本的S3位置

command字段是粘合作业导入的特定字段,被视为强制字段,用于其他字段引用和/或变体:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/glue_job

main.tf文件准备就绪后,从包含该文件的同一文件夹中的CLI运行以下命令:

terraform init
terraform import aws_glue_job.my_job_resource my-glue-job
terraform show

关于这些命令的一些细节:

  1. 它将为文件夹提供与AWS交互所需的Terraform插件
  2. my_job_resource是标识AWS资源的块的名称,而my-glue-job是实际的粘合作业名称(在这两种情况下都参考main.tf文件(
  3. 它将提示Glue Job导入的整个结构

将上一步生成的输出复制并替换到main.tf文件中,替换块resource "aws_glue_job" "my_job_resource"

它现在以Terraform脚本导入。

同样的原理可以重复用于任何其他Glue资源,只需参考文档页面https://registry.terraform.io/providers/hashicorp/aws/latest/docs

相关内容

  • 没有找到相关文章

最新更新