You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建从Parameter Store拉取参数的AWS SSM复合文档

单SSM复合文档实现EC2标签匹配自动安装软件方案

核心实现逻辑

把「标签组合-对应安装命令」的映射规则存在Parameter Store,用1个SSM Automation复合文档完成全流程:自动拉取目标实例的指定标签、从Parameter Store读取映射规则、自动匹配对应安装命令并执行,仅需创建1个State Manager关联即可覆盖所有场景,无需为每类标签单独建关联。

具体操作步骤

1. 预配置Parameter Store映射参数

在Parameter Store创建自定义参数,用于存储标签和安装逻辑的对应关系:

  • 参数名建议设为/ec2/software-install-mapping
  • 参数类型选String,如果安装命令包含敏感信息(比如软件授权密钥、私有源凭证)就选SecureString
  • 参数值填JSON格式的映射规则,示例如下:
{
  "Env=Prod;App=Web": {
    "install_cmd": "yum update -y && yum install -y nginx"
  },
  "Env=Dev;App=DB": {
    "install_cmd": "yum update -y && yum install -y mysql-server"
  },
  "default": {
    "install_cmd": "yum update -y && yum install -y amazon-cloudwatch-agent"
  }
}

说明:JSON的键是标签拼接后的匹配串,格式为标签键1=标签值1;标签键2=标签值2,default字段为标签未匹配到任何规则时执行的默认安装逻辑。后续新增标签对应的软件规则,优先更新这个参数即可。

提前给两类角色配置对应权限:

  • 给EC2实例绑定的托管实例角色,添加ssm:GetParameter权限(允许拉取上述参数)、ssm:SendCommand权限
  • 给SSM Automation使用的服务角色,添加ec2:DescribeTags(允许读实例标签)、ssm:GetParameter、ssm:SendCommand权限

2. 创建SSM Automation复合文档

新建类型为Automation的SSM文档,按顺序配置4个核心执行步骤,全程不需要拆分多个文档或关联:

  • 步骤1:拉取目标实例标签
    用aws:executeAwsApi动作,调用EC2的DescribeTags接口,传入上下文自动带入的实例ID{{INSTANCE_ID}},过滤出你需要匹配的标签键(比如示例里的Env、App),再通过内置的value selector把返回的标签拼接成和Parameter Store映射键格式一致的字符串(比如Env=Prod;App=Web),作为输出变量保存。
  • 步骤2:拉取Parameter Store映射规则
    用aws:ssm:GetParameter动作,传入之前创建的参数名/ec2/software-install-mapping,开启解密(如果是SecureString类型),把返回的JSON解析为字典对象作为输出变量。
  • 步骤3:匹配对应安装命令
    用aws:executeScript动作,选择Python/PowerShell运行时,传入步骤1生成的标签匹配串、步骤2拉取的映射JSON,用简单脚本完成匹配,直接返回当前实例需要执行的安装命令,示例脚本:
    def handler(events, context):
        tag_match_str = events['TagMatchString']
        install_mapping = events['InstallMapping']
        # 优先匹配对应标签规则,匹配不到走default
        selected_cmd = install_mapping.get(tag_match_str, install_mapping['default'])['install_cmd']
        return {"FinalInstallCommand": selected_cmd}
    

    用脚本匹配替代硬编码的分支判断,后续新增规则时不需要修改文档逻辑,只需要更新Parameter Store的参数即可。

  • 步骤4:执行安装命令
    用aws:runCommand动作,选择适配实例操作系统的命令执行文档(Linux用AWS-RunShellScript,Windows用AWS-RunPowerShellScript),目标实例传入{{INSTANCE_ID}},命令参数直接传入步骤3返回的FinalInstallCommand变量即可。

文档核心结构参考:

schemaVersion: '0.3'
assumeRole: '{{AutomationAssumeRole}}'
parameters:
  AutomationAssumeRole:
    type: String
    description: 执行Automation所需权限的角色ARN
mainSteps:
  # 上述4个步骤按顺序填入即可

3. 配置单个State Manager关联

不需要创建多个关联,仅需新建1个State Manager关联:

  • 目标文档选择你刚创建的Automation复合文档
  • 目标实例选择需要覆盖的全部EC2托管实例(可以按资源组、实例ID或者实例标签筛选范围)
  • 调度规则设置为「实例启动时触发」,同时配置每日定时巡检(比如每24小时执行一次),避免实例启动时SSM代理未就绪导致安装失败漏执行

优化说明

如果后续需要调整不同标签对应的安装软件,直接修改Parameter Store里的JSON映射值即可,不需要修改SSM文档、不需要调整State Manager关联,配置生效后下次关联执行时会自动拉取最新规则。


内容的提问来源于stack exchange,提问作者Taylor Hendricks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:27:20