ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

【CloudFormation】変更セットが表示できない場合の対処法

この記事を共有する

目次

はじめに

こんにちは!パーソル&サーバーワークスの野間です。
先日 AWS CloudFormation(以下、CloudFormation)で変更セットを作成した際に、「(Truncated-Signature):xxxxxx」と表示され、変更内容が確認できない事象に遭遇しました。
この記事ではその原因と対処法を紹介します!

changeset-truncated01.png

いきなり結論

✅結論:プロパティ値のサイズが一定を超えると変更セットの表示が切り捨てられる仕様です。

原因は CloudFormation テンプレート内のプロパティ値が大きくなり、AWS の仕様により変更セットの差分がハッシュ(Truncated-Signature)で省略表示されたためです。。
なお、Service Quotas では当該上限を引き上げられません。

参考資料

対策

対策①:Git で CloudFormation テンプレートを管理する

コンソールの変更セットで差分が見えない場合は、テンプレートを Git で管理し、差分はレビュー(MR/PR)で確認します。
下の画像では GitLab でマージリクエストを作成して変更点を確認しています。

また、Git 同期機能(GitSync)と組み合わせれば、デプロイまで Git 上で一気通貫で管理できます。
詳しくは過去記事「GitLabからAWSへ自動反映!GitSyncの設定を試してみた」をご参照ください。

changeset-truncated02.png

対策②:Rain を使ってファイルの変更差分を確認する

Rain は CloudFormation 向け CLI で、rain diff によりテンプレートの差分を確認できます。
コンソールで省略表示されても、ローカルで変更点を把握できます。

rain diff <変更前ファイル名> <変更後ファイル名>

changeset-truncated03.png

対策③:リソースを分割する

大きなプロパティをもつ構成は、複数のリソースタイプに分割することで回避できる場合があります。
ただし、この方法は個別リソースとして記述できるタイプに限られます。

セキュリティグループの場合

  • 変更前:AWS::EC2::SecurityGroup にルールを内包して定義
  • 変更後:AWS::EC2::SecurityGroupIngress / AWS::EC2::SecurityGroupEgress を個別リソースとして定義

セキュリティグループルールを分割して定義したところ、変更セットの差分を確認できるようになりました。

changeset-truncated04.png

まとめ

個人的に変更セットの確認機会が多いため、今後プロパティ値のサイズ上限が引き上げられると助かると感じています。
同じようなエラーに遭遇した方の参考になればうれしいです!

この記事は私が書きました

野間 太一

記事一覧

猫とCloudFormationが好きです。

野間 太一

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。