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

时间:2019-09-20 19:31:44

标签: 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"
  }

}

2 个答案:

答案 0 :(得分:1)

创建后,您可以使用local-exec provisioner来使用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}"
  }
}

只有在创建搜寻器时才会触发此操作,而在其他任何时候都不会触发,例如您更改了s3_target.path或其他任何操作。

如果您希望在更改s3_target.path时能够触发此操作,则需要使用null_resource with 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 ${self.name}"
  }
}

答案 1 :(得分:0)

如果terraform是ci / cd的一部分,则可以编写shell / python脚本以在爬网程序部署后运行它