Как запустить AWS Glue Crawler после обновления / создания ресурса? - PullRequest
0 голосов
/ 20 сентября 2019

Я определил ресурс в моей Terraform для создания сканера клея, который я не хочу планировать.Но я хочу, чтобы он запускался после создания и обновления.Я не смог найти ничего в документации о том, как это вызвать.

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 ]

1 голос
/ 22 сентября 2019

Вы можете использовать local-exec инициатора , чтобы использовать интерфейс командной строки AWS для запуска сканера 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 с 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}"
  }
}
0 голосов
/ 21 сентября 2019

Если terraform является частью ci / cd, вы можете написать скрипт shell / python для запуска сканера после его развертывания

...