我已将EMR群集添加到堆栈中。成功更新堆栈(CloudFormation)后,我可以看到EC2控制台中的主节点和从节点,我可以通过SSH连接到主节点。但AWS控制台不显示新群集。即使aws emr list-clusters
也没有显示群集。我对该地区进行了三次检查,我确信我正在查看正确的地区。
相关的CloudFormation JSON:
"Spark01EmrCluster": {
"Type": "AWS::EMR::Cluster",
"Properties": {
"Name": "Spark01EmrCluster",
"Applications": [
{
"Name": "Spark"
},
{
"Name": "Ganglia"
},
{
"Name": "Zeppelin"
}
],
"Instances": {
"Ec2KeyName": {"Ref": "KeyName"},
"Ec2SubnetId": {"Ref": "PublicSubnetId"},
"MasterInstanceGroup": {
"InstanceCount": 1,
"InstanceType": "m4.large",
"Name": "Master"
},
"CoreInstanceGroup": {
"InstanceCount": 1,
"InstanceType": "m4.large",
"Name": "Core"
}
},
"Configurations": [
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"ConfigurationProperties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
]
}
],
"BootstrapActions": [
{
"Name": "InstallPipPackages",
"ScriptBootstrapAction": {
"Path": "[S3 PATH]"
}
}
],
"JobFlowRole": {"Ref": "Spark01InstanceProfile"},
"ServiceRole": "MyStackEmrDefaultRole",
"ReleaseLabel": "emr-5.13.0"
}
}
答案 0 :(得分:1)
原因是缺少VisibleToAllUsers
属性,默认为false
。由于我使用的是AWS Vault(即使用STS AssumeRole API进行身份验证),我每次都基本上是一个不同的用户,因此我无法看到群集。当我得到VisibleToAllUsers
时,我无法更新堆栈以添加Job flow ID does not exist
。
解决方案是以root用户身份登录并从那里修复内容(我必须手动删除集群,但是如果我没有弄乱事物,那么将其从堆栈模板JSON中删除并更新堆栈可能会有效已经)。
然后我将群集添加回模板(VisibleToAllUsers
设置为true
)并像往常一样更新堆栈(AWS Vault)。