Я создаю кластер EMR из terraform и вызываю пользовательский сценарий в качестве действия начальной загрузки, а моему пользовательскому сценарию требуется только что созданный идентификатор кластера. Я вижу, что есть опция для передачи аргумента в пользовательское действие, но оно мне не подходит. Я передаю идентификатор кластера как Cluster.Id
Когда я проверил его в журнале, он не получает его значение.
startExec '/ emr / instance-controller / lib / bootstrap-actions / 1 /Updated_bootstrap_unix.sh Cluster.Id '
У кого-нибудь есть идея, как это сделать?
provider "aws" {
access_key="${var.aws_access_key}"
secret_key="${var.aws_secret_key}"
region="${var.region}"
}
resource "aws_emr_cluster" "cluster" {
name = "${var.environment}-emr"
release_label = "emr-5.27.0"
applications = ["Hadoop"]
additional_info = <<EOF
{
"instanceAwsClientConfiguration": {
"proxyPort": 8099,
"proxyHost": "myproxy.example.com"
}
}
EOF
termination_protection = false
keep_job_flow_alive_when_no_steps = true
ec2_attributes {
subnet_id = "${var.sub_net_id}"
emr_managed_master_security_group ="${var.master_security_group}"
emr_managed_slave_security_group = "${var.slave_security_group}"
instance_profile = "EMR_EC2_DefaultRole"
key_name = "${var.keypair}"
}
master_instance_group {
instance_type = "m4.large"
instance_count = 3
}
bootstrap_action {
path = "${var.bootstrap_action_script}"
name = "createfolder"
args = ["instance.isMaster=false","clusterid=instance.Id"]
}
core_instance_group {
instance_type = "c4.large"
instance_count = 3
ebs_config {
size = "10"
type = "gp2"
volumes_per_instance = 1
}
}
ebs_root_volume_size = 10
tags = {
role = "rolename"
env = "dev"
}
service_role = "EMR_DefaultRole"
}
Пример сценария настраиваемого действия:
#!/bin/bash
whoami
sudo su
echo "I got the cluster id "$1
clusterid=$1
Спасибо