我有两个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
您需要通过创建 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 版本出现集群故障。