用于使用 imdsv2 创建 emr 集群的 Cloudformation 模板

问题描述 投票:0回答:1

我有两个cloudformation模板: (1) - 用于使用 imdsv2 创建 ec2 实例 (2) - 用于创建 emr 集群 (imdsv1)。

我希望更新 emr 集群的模板,以便其实例使用 imdsv2 而不是 imdsv1。通常,当未提供有关 imds 的信息时,默认使用 imdsv1。但是,我一直在努力在(2)中找到正确的位置来添加与 imdsv2 相关的信息,以及要添加的内容。我尝试将 imdsv2 部分从 (1) 带到 (2),但在创建过程中验证失败。

如果有人可以指导我添加使 emr 集群的实例使用 imdsv2 所需的内容,我将不胜感激。

下面是 (1) 中使用 imdsv2 创建单个 ec2 实例的相关部分:(三个点...表示与 imdsv2 不相关的其他属性,所以我暂时跳过了它们)

Resources:
    IMDSv2LaunchTemplate:
      Type: AWS::EC2::LaunchTemplate
        Properties:
          LaunchTemplateName: IMDSV2
          LaunchTemplateData:
            MetadataOptions:
              HttpEndpoint: enabled
              HttpTokens: required
    my_instance:
      Type: AWS::EC2::Instance
      DependsOn: IMDSv2LaunchTemplate
      Properties: 
        LaunchTemplate:
          LaunchTemplateName: IMDSV2
          Version: 2
        InstanceType: t2.micro 

下面是(2)中的相关部分

Parameters:
Mappings:
Resources:
  EMRCluster:
    Type: AWS::EMR::Cluster
    Properties:
      Name: my-cluster
      Instances:
        MasterInstanceGroup:
          InstanceCount: 1
          InstanceType: m5.4xlarge
          Name: Master 
             ...
         CoreInstanceGroup:
             ...
   ...

尝试将 IMDSv2LaunchTemplate 从 (1) 转移到 (2) 中的

Resources
,并将
DependsOn: IMDSv2LaunchTemplate
添加到资源下的 (2),但它显示
Template format error: Unresolved resource dependencies [IMDSv2LaunchTemplate,] in the Resources block of the template

基本上我尝试过的如下所示:

Parameters:
Mappings:
Resources:
  IMDSv2LaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateName: IMDSV2
      LaunchTemplateData:
        MetadataOptions:
          HttpEndpoint: enabled
          HttpTokens: required
  EMRCluster:
    Type: AWS::EMR::Cluster
    DependsOn: IMDSv2LaunchTemplate
    Properties:
      Name: my-cluster
      Instances:
        MasterInstanceGroup:
          InstanceCount: 1
          LaunchTemplate:
            LaunchTemplateName: IMDSV2
            Version: 1
          InstanceType: m5.4xlarge
          Name: Master 
             ...
         CoreInstanceGroup:
             ...
   ...

我得到的错误是:

Encountered unsupported property LaunchTemplate

amazon-web-services aws-cloudformation amazon-emr
1个回答
0
投票

您需要通过创建 AWS::EMR::SecurityConfiguration

 来为集群创建 
安全配置

类似这样的:

Parameters:
Mappings:
Resources:
  EMRCluster:
    Type: AWS::EMR::Cluster
    Properties:
      Name: my-cluster
      Instances:
        MasterInstanceGroup:
          InstanceCount: 1
          InstanceType: m5.4xlarge
          Name: Master 
             ...
         CoreInstanceGroup:
             ...
      SecurityConfiguration: !Ref securityConfiguration
  EMRSecurityConfiguration:
    Type: 'AWS::EMR::SecurityConfiguration'
    Properties:
      SecurityConfiguration:
      InstanceMetadataServiceConfiguration:
          MinimumInstanceMetadataServiceVersion: 2
          HttpPutResponseHopLimit: 1

请记住,文档提到 IMDSv1 将导致 Amazon EMR 5.x 或 6.x 版本出现集群故障。

© www.soinside.com 2019 - 2024. All rights reserved.