使用自定义AMI时AWS EMR设置失败

时间:2019-02-07 17:55:55

标签: amazon-web-services amazon-ec2 amazon-emr ami

问题: 我在cloudformation模板中定义了一个EMR集群(以及许多其他资源)。我使用AWS rest api来配置堆栈。它可以正常工作,我可以成功配置堆栈。

然后,我做了一个更改:我为我的EMR集群指定了一个自定义AMI。现在,当我配置堆栈时,EMR设置失败。

现在,由于EMR设置失败,我的堆栈创建失败。我能找到的唯一信息是控制台上的错误:null: Error provisioning instances.。深入研究每个实例,我发现主节点失败,错误为Status: Terminated. Last state change reason:Time out occurred during bootstrap

我为我的EMR群集配置了s3日志记录,但是s3存储桶中没有日志。

详细信息:

我更新了cloudformation脚本,如下所示: my_stack.cfn.yaml:

rMyEmrCluster:
  Type: AWS::EMR::Cluster
  ...
  Properties:
    ...
    CustomAmiId: "ami-xxxxxx" # <-- I added this

自定义AMI详细信息: 我要添加自定义AMI,因为我需要对所有节点上的根EBS卷进行加密。 (这是documentation所必需的)

创建自定义AMI所采取的步骤:

  1. 我启动了AWS用于EMR节点的基本AMI:emr 5.7.0-ami-roller-27 hvm ebs(ID:ami-8a5cb8f3
  2. 我从正在运行的实例中创建了一个图像
  3. 我创建了该映像的副本,并启用了EBS根卷加密。我使用默认的加密密钥。 (我必须从正在运行的实例中创建自己的基础映像,因为不允许您从您不拥有的AMI中创建加密副本)

我想知道这是否是权限问题,或者我的AMI是否以某种方式配置错误。但是,对于我来说,先查找一些日志以准确找出节点配置到底出了什么问题是明智的。

2 个答案:

答案 0 :(得分:0)

我觉得很愚蠢。我不小心使用了一个完全不相关的AMI(redhat 7图像)作为基础图像,而不是EMR默认将其节点使用的AMI:emr 5.7.0-ami-roller-27 hvm ebs(ami-8a5cb8f3)

如果有人犯同样的错误,我将留下这个问题并回答。

确保从正确的基础AMI创建您的自定义AMI:emr 5.7.0-ami-roller-27 hvm ebs(ami-8a5cb8f3)

答案 1 :(得分:0)

您提到您是基于EMR AMI创建自定义AMI的。但是,根据您链接的文档,您实际上应该将AMI基于“最新的EBS支持的Amazon Linux AMI”。您的自定义AMI不必基于EMR AMI,确实,我认为这样做可能会引起一些问题(尽管我自己还没有尝试过)。