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

AWS CDK中如何配置SSM CfnAssociation的parameters属性?

解决AWS CDK配置SSM State Manager定时关闭RDS实例的参数问题

核心问题分析

你遇到的解析错误,是因为直接将Construct对象(而非解析后的ARN字符串)传入parameters属性,CDK无法正确解析这种嵌套的Construct引用。

正确配置步骤及代码示例

1. 准备具备权限的IAM角色

确保StopStartRebootRDS角色拥有SSM自动化执行所需权限(如rds:StopDBInstance、ssm:StartAutomationExecution),且信任关系允许SSM服务(ssm.amazonaws.com)扮演该角色。如果是新建角色,可通过CDK直接定义;如果是已有角色,用Role.fromRoleArn引用。

2. 配置CfnAssociation参数

无需通过SSM参数中转,直接将角色ARN传入parameters的automationAssumeRole字段,注意参数值需为数组类型:

import { Stack, StackProps, CfnAssociation } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Role, ServicePrincipal, ManagedPolicy } from 'aws-cdk-lib/aws-iam';

export class RdsStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // 方式1:新建IAM角色
    const ssmAutomationRole = new Role(this, 'StopStartRebootRDS', {
      assumedBy: new ServicePrincipal('ssm.amazonaws.com'),
      managedPolicies: [
        ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMAutomationRole'),
        // 按需添加RDS停止权限的自定义策略或托管策略
      ],
    });

    // 方式2:引用已有角色(替换为你的角色ARN)
    // const ssmAutomationRole = Role.fromRoleArn(this, 'ExistingStopStartRole', 
    //   'arn:aws:iam::12345678999:role/StopStartRebootRDS');

    // 创建SSM State Manager关联
    new CfnAssociation(this, 'StopRdsInstanceAssociation', {
      name: 'AWS-StopRDSInstance', // 使用AWS官方自动化文档
      scheduleExpression: 'cron(0 21 * * ? *)', // 每天UTC时间21:00执行,注意时区转换
      parameters: {
        automationAssumeRole: [ssmAutomationRole.roleArn], // 直接传入ARN数组
        DBInstanceIdentifier: ['your-target-rds-instance-id'], // 指定要停止的RDS实例ID
      },
    });
  }
}

3. 关键注意事项

  • parameters的每个参数值必须是数组类型,即使单个值也要用数组包裹,这是SSM Association参数的要求。
  • 时区转换:scheduleExpression采用UTC时间,若需北京时间21:00执行,要转换为UTC时间13:00,对应表达式为cron(0 13 * * ? *)。
  • 权限验证:确认角色权限覆盖RDS实例停止操作及SSM自动化执行的必要权限,避免执行失败。

错误原因复盘

之前尝试用SSM参数传递角色ARN时,错误地将Construct对象而非解析后的ARN字符串传入参数,导致CDK在Token解析阶段失败。直接使用角色的roleArn属性,CDK会自动生成正确的CloudFormation ARN引用,避免解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:30:39