我正在编写一个bash脚本来启动带有AWS cli的EMR集群,并希望在其上设置环境变量
我试图添加它,但它没有工作
--steps '[{"Args":["/bin/sh","-c","export MY_VARIABLE=xxx"],"Type":"CUSTOM_JAR","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Name":"Set Env Variables"}]
基本上我想做的是以下内容:
谢谢,
编辑:我也试过了: --configurations '[
{
"Classification": "spark-env",
"Properties": {},
"Configurations": [
{
"Classification": "export",
"Properties": {
"MY_VARIABLE": "MY_VARIABLE"
}
}
]
}
]'
我可以在spark-env.sh中看到我现在拥有这些价值,但如果我只是回应$ MY_VARIABLE'在bash中我无法看到它们。
答案 0 :(得分:0)
将环境变量作为参数传递给引导操作。
答案 1 :(得分:0)
使用MY_VARIABLE
找不到echo
的原因是因为MY_VARIABLE
仅可用于spark-env。
假设您正在使用pyspark,则如果打开pyspark外壳程序(同时将ssh'd进入群集的一个节点)并尝试键入os.getenv("MY_VARIABLE")
,则会看到分配给您的值到该变量。
针对您的用例的另一种解决方案是:代替使用凭据(通常不是首选方式),您可以使用一组密钥,使您可以使用SSH(而不是https)克隆存储库。您可以将这些密钥存储在aws ssm中,并在EMR引导脚本中检索它们。一个例子可能是:
bootstrap.sh
export SSM_VALUE=$(aws ssm get-parameter --name $REDSHIFT_DWH_PUBLIC_KEY --with-decryption --query 'Parameter.Value' --output text)
echo $SSM_VALUE >> $AUTHORIZED_KEYS
就我而言,我需要连接到Redshift实例,但这在您的用例中也可以很好地工作。
Alessio