如何修改EMR集群CloudFormation模板使其实例启用IMDSv2?
EMR集群CloudFormation模板配置IMDSv2的正确方法
错误原因
你之前的尝试报错「遇到不支持的属性LaunchTemplate」,是因为EMR的InstanceGroup资源属性中不支持直接配置LaunchTemplate,不能照搬EC2实例的配置方式。
正确配置方案
EMR集群的每个实例组(Master、Core、Task)本身支持MetadataOptions属性,直接在实例组内配置IMDSv2参数即可,无需单独创建LaunchTemplate。修改后的模板片段如下:
Resources: EMRCluster: Type: AWS::EMR::Cluster Properties: Name: my-cluster Instances: MasterInstanceGroup: InstanceCount: 1 InstanceType: m5.4xlarge Name: Master # 配置IMDSv2 MetadataOptions: HttpEndpoint: enabled HttpTokens: required CoreInstanceGroup: InstanceCount: 2 # 按实际需求调整实例数 InstanceType: m5.4xlarge Name: Core # 配置IMDSv2 MetadataOptions: HttpEndpoint: enabled HttpTokens: required # 若有Task实例组,同样添加MetadataOptions配置 # TaskInstanceGroup: # InstanceCount: 1 # InstanceType: m5.4xlarge # Name: Task # MetadataOptions: # HttpEndpoint: enabled # HttpTokens: required # 保留原有的其他EMR配置(如ReleaseLabel、Applications、ServiceRole等)
关键参数说明
HttpTokens: required:强制实例使用IMDSv2,拒绝所有IMDSv1的请求;HttpEndpoint: enabled:确保实例元数据端点处于启用状态(默认值为enabled,显式配置更稳妥);- 无需额外创建LaunchTemplate或添加
DependsOn依赖,直接在实例组内配置即可生效。
内容的提问来源于stack exchange,提问作者HP_DEV
相关产品推荐
相关产品推荐

