Systems Manager Parameter Store を利用しつつ CloudFormation スタックを更新する方法について教えてください

2023.02.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Systems Manager Parameter Store の値を参照する CloudFormation スタックを管理しています。
Parameter Store の値を変更したのでコンソール上で CloudFormation スタックを更新しようとしましたが、以下のエラーが発生しました。

The submitted information didn't contain changes. Submit different information to create a change set.

上記エラーはテンプレートに変更がないために発生するエラーであると思われますが、Systems Manager Parameter Store を利用しつつ CloudFormation スタックを更新する方法があれば教えてください。

どう対応すればいいの?

AWS CLI による更新またはテンプレートにバージョン情報を付与する方法をご検討ください。

AWS CLI による更新

AWS CLI の update-stack コマンドを使用することで、Parameter Store を利用しつつ、CloudFormation スタックを更新することが可能です。

同様の方法については以下の弊社ブログでも記載されていますので、併せてご覧ください。

テンプレートにバージョン情報を付与する方法

CloudFormation テンプレート内で Parameter Store を参照する部分に Parameter Store のバージョン情報を付与する方法もあります。
例えば、CloudFormation の Parameters にて Parameter Store のバージョン情報を指定し、Parameter Store から AMI の ID を参照する場合には以下のような記載ができます。

Parameters: 
  Version: 
    Type: String
ImageId: !Sub 
  - "{{resolve:ssm:/sample/ami/uws-as-proto:${Version}}}" 
  - { Version: !Ref Version }

バージョン情報を付与することで、冒頭のエラーを回避することができるので、特定のバージョンを指定した更新が必要な場合にはバージョン情報を付与することをご検討ください。

参考資料