如何在资源更新/创建后运行 AWS Glue Crawler?

Fil*_*ers 2 amazon-web-services terraform aws-glue terraform-provider-aws

我在 Terraform 中定义了一个资源来创建我不想安排的 Glue Crawler。但我希望它在创建和更新后运行。我在文档中找不到有关如何触发此操作的任何内容。

resource "aws_glue_crawler" "my_crawler" {
  database_name = "my_db"
  name          = "my_crawler"
  role          = "arn:aws:iam::111111111111:role/service-role/someRole"

  s3_target {
    path = "s3://my_bucket/key/prefix"
  }

}
Run Code Online (Sandbox Code Playgroud)

yda*_*coR 8

您可以使用local-exec预配置程序来使用 AWS CLI 在创建 Glue 爬网程序后触发它:

resource "aws_glue_crawler" "my_crawler" {
  database_name = "my_db"
  name          = "my_crawler"
  role          = "arn:aws:iam::111111111111:role/service-role/someRole"

  s3_target {
    path = "s3://my_bucket/key/prefix"
  }

  provisioner "local-exec" {
    command = "aws glue start-crawler --name ${self.name}"
  }
}
Run Code Online (Sandbox Code Playgroud)

这只会在创建爬网程序时触发,而不会在任何其他时刻触发,例如您更改了s3_target.path或其他任何内容。

如果您希望在更改时能够触发此操作,s3_target.path您需要将 anull_resource与 a 一起trigger使用:

resource "aws_glue_crawler" "my_crawler" {
  database_name = "my_db"
  name          = "my_crawler"
  role          = "arn:aws:iam::111111111111:role/service-role/someRole"

  s3_target {
    path = "s3://my_bucket/key/prefix"
  }
}

resource "null_resource" "run_crawler" {
  # Changes to the crawler's S3 path requires re-running
  triggers = {
    s3_path = "${aws_glue_crawler.my_crawler.s3_target.0.path}"
  }

  provisioner "local-exec" {
    command = "aws glue start-crawler --name ${aws_glue_crawler.my_crawler.name}"
  }
}
Run Code Online (Sandbox Code Playgroud)