You need to enable JavaScript to run this app. 执行cdk deploy报错SSM参数上次修改日期不匹配如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

执行cdk deploy报错SSM参数上次修改日期不匹配如何解决?

错误根本原因

该报错是CloudFormation变更集校验失败导致的:你首次本地部署时,CDK会将解析到的SSM公共AMI参数/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2的最后修改时间、版本号等元数据缓存到本地上下文。更换EC2环境、切换IAM身份后,CDK重新拉取的该SSM参数元数据(AWS会定期更新公共AMI,对应SSM参数的元数据也会同步更新)和变更集里记录的旧元数据不一致,校验不通过就抛出该错误。

可按以下顺序尝试解决方案:

  • 清理CDK上下文缓存后重新部署
    先在项目根目录执行命令清除旧缓存:
    cdk context --clear
    之后重新执行合成和部署命令即可:
    cdk synth && cdk deploy
  • 补全EC2 IAM角色的权限
    确认EC2绑定的IAM角色已添加以下权限,避免因权限不足拉取到不完整的SSM参数元数据:
    {
      "Effect": "Allow",
      "Action": [
          "ssm:GetParameter",
          "ssm:GetParameters",
          "ec2:DescribeImages"
      ],
      "Resource": [
          "arn:aws:ssm:*::parameter/aws/service/ami-amazon-linux-latest/*",
          "*"
      ]
    }
    
  • 修改CDK代码禁用AMI参数缓存
    如果你使用CDK内置的AmazonLinuxImage接口获取AMI,可添加cachedInContext: false参数,强制每次部署都拉取最新的AMI信息,示例(TypeScript):
    const amzn2Ami = new ec2.AmazonLinuxImage({
      generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
      cpuType: ec2.AmazonLinuxCpuType.X86_64,
      cachedInContext: false
    });
    
  • 手动指定固定AMI ID/SSM参数版本
    若上述方案都不生效,可先执行命令查询当前有效AMI对应的SSM参数版本:
    aws ssm get-parameter --name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
    拿到返回结果中的Version字段后,在代码中直接指定带版本号的SSM参数路径,或直接硬编码返回的AMI ID值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:45:08