到目前为止,我通过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
关于这些命令的一些细节:
- 它将为文件夹提供与AWS交互所需的Terraform插件
my_job_resource
是标识AWS资源的块的名称,而my-glue-job
是实际的粘合作业名称(在这两种情况下都参考main.tf
文件(- 它将提示Glue Job导入的整个结构
将上一步生成的输出复制并替换到main.tf
文件中,替换块resource "aws_glue_job" "my_job_resource"
。
它现在以Terraform脚本导入。
同样的原理可以重复用于任何其他Glue资源,只需参考文档页面https://registry.terraform.io/providers/hashicorp/aws/latest/docs