首页 > 解决方案 > Terrafrom EMR Bootstrap Shell 文件

问题描述

我希望在 AWS EMR 的 Terrafrom 模块中执行一个 shell 文件,将文件传递给引导操作。但是文件没有加载。

调用该文件的代码块位于此处看到的 main.tf 文件中 -

bootstrap_action {
  path = "${file("files/emr_bootstrap.sh")}"
  name = "emr_bootstrap"
}

并且 main.tf 与“文件”目录处于同一级别。

错误消息是 -

ValidationException: Invalid bootstrap action path, must be a location in Amazon S3 or a local path starting with 'file:'.

任何想法/指针将不胜感激。

回复答案 1

谢谢亨利TK。我也试过这个没有成功,所以我认为问题是文件实际上并不存在于目标中。为了在 bootstrap_action 块之前克服这个问题,添加了一个文件复制块,如此处所示 -

provisioner "file" {
  source = "files/emr_bootstrap.sh"
  destination = "/tmp/emr_bootstrap.sh"
}

即使使用此文件配置器,shell 脚本也不会被执行,这意味着 bootstrap_action 没有找到 shell 脚本。

标签: terraformamazon-emr

解决方案


所以使用 s3 你可以这样做:

  bootstrap_action {
path = "s3://${var.bucket_name}/bootstrap/configure-system.sh"
name = "configure_system"

}

我猜在本地你会想要它:

  bootstrap_action {
path = "file://<path>"
name = "configure_system"

}

让我知道这是否有帮助


推荐阅读