メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

スタックテンプレートの変更

スタックテンプレートで宣言されたリソースやプロパティを変更するには、スタックのテンプレートを変更する必要があります。更新するリソースのみを確実に更新するには、既存のスタックのテンプレートを開始点として使用し、そのテンプレートを更新します。ソース管理システムでテンプレートを管理している場合は、開始点としてそのテンプレートのコピーを使用します。それ以外の場合は、AWS CloudFormation からスタックテンプレートのコピーを取得できます。

スタックのパラメーターや設定のみ (スタックの Amazon SNS トピックなど) を変更する場合は、既存のスタックテンプレートを再利用することができます。スタックテンプレートのコピーを取得したり、スタックテンプレートを変更する必要はありません。

注記

サポートされていない変更がテンプレートに含まれている場合は、その変更は許可されていないというメッセージが返されます。ただし、デフォルトで AWS CloudFormation によるリソースの作成と更新の順序は不確定であるため、このメッセージは非同期的に発生する可能性があります。

スタックのテンプレートの更新 (コンソール)

  1. AWS CloudFormation コンソールで、更新するスタックを選択して、[Actions] を選択し、[View in Designer] を選択します。

    AWS CloudFormation は、AWS CloudFormation デザイナー でスタックのテンプレートのコピーを開きます。

  2. テンプレートの変更。

    AWS CloudFormation デザイナー ドラッグアンドドロップインターフェイスまたは 統合された JSON および YAML エディタ を使用して、テンプレートを変更できます。AWS CloudFormation デザイナー の使用の詳細については、「AWS CloudFormation デザイナー とは」を参照してください。

    更新するリソースのみを変更してください。更新しないリソースやプロパティについては、現在のスタック設定と同じ値を使用します。次のアクションのいずれかを完了するとテンプレートを変更できます。

    • 新しいリソースを追加するか、既存のリソースを削除します。

      ほとんどのリソースの場合、リソースの論理名を変更することは、そのリソースを削除して新しいリソースと置き換えることと同等です。名前を変更したリソースに依存する他のリソースも更新する必要があり、場合によっては置き換えられます。その他のリソースは、更新をトリガーするために、 (論理名だけでなく) プロパティの更新が必要になります。

    • 既存のリソースのプロパティを追加、変更、または削除します。

      特定のリソースのプロパティを更新する効果の詳細については、「AWS リソースタイプのリファレンス」を参照してください。各プロパティについての更新の効果は、以下のいずれかになります。

    • リソースの属性 (MetadataDependsOnCreationPolicyUpdatePolicyDeletionPolicy) を追加、変更、または削除します。

      重要

      CreationPolicyDeletionPolicyUpdatePolicy を属性単独で更新することはできません。更新できるのは、リソースを追加、変更、または削除する変更を含める場合だけです。たとえば、リソースのメタデータ属性を追加または変更することはできます。

    • パラメーターの宣言を追加、変更、または削除します。ただし、更新をサポートしていないリソースで使用されているパラメーターを追加、変更、または削除することはできません。

    • マッピングの宣言を追加、変更、または削除します。

      重要

      マッピングの値がスタックで使用されていない場合は、マップ自体を更新することはできません。リソースを追加、変更、または削除する変更を含める必要があります。たとえば、リソースのメタデータ属性を追加または変更することはできます。スタックが使用しているマッピング値を更新する場合は、更新をトリガーするために他の変更を行う必要はありません。

    • 条件の宣言を追加、変更、または削除します。

      重要

      条件を単独で更新することはできません。条件を更新できるのは、リソースを追加、変更、または削除する変更を含める場合だけです。たとえば、リソースのメタデータ属性を追加または変更することはできます。

    • 出力値の宣言を追加、変更、または削除します。

    リソースまたはプロパティによっては、プロパティ値またはそれらの値の変更に制約がある場合があります。たとえば、AWS::RDS::DBInstance リソースのAllocatedStorage プロパティへの変更は、現在の設定よりも大きくなければなりません。更新に指定された値がこれらの制約を満たさない場合、そのリソースの更新は失敗します。AllocatedStorage 変更に関する特定の制約については、「ModifyDBInstance」を参照してください。

    リソースの更新が、他のリソースのプロパティに影響を与える可能性があります。Ref 関数または Fn::GetAtt 関数を使用して、更新されたリソースの属性をテンプレート内の他のリソースのプロパティ値の一部として指定すると、AWS CloudFormation も変更されたプロパティへの参照を含むリソースを更新します。たとえば、AWS::RDS::DBInstance リソースの MasterUsername プロパティを更新し、Ref 関数を使用して、DB インスタンス名への参照を含む UserData プロパティを持つ AWS::AutoScaling::LaunchConfiguration リソースがある場合、AWS CloudFormation は、新しい名前で DB インスタンスを再作成し、LaunchConfiguration リソースも更新します。

  3. テンプレートの構文エラーをチェックするには、[AWS CloudFormation デザイナー] ツールバーで、[Validate template] ( )をクリックします。

    [Messages] ペインでエラーを表示して修正し、テンプレートを再度検証します。エラーが表示されない場合、テンプレートの構文は有効です。

  4. AWS CloudFormation デザイナー ツールバーから、[File] メニュー ( ) を選択し、[Save] を選択して、テンプレートを S3 バケットまたはローカルに保存します。

スタックのテンプレートの取得と更新 (CLI)

  1. 更新するスタックのテンプレートを取得するには aws cloudformation get-template コマンドを使用します。

  2. テンプレートをコピーしてテキストファイルに貼り付け、変更して保存します。テンプレートのみをコピーします。コマンドではテンプレートを引用符で囲みますが、テンプレートを囲んでいる引用符はコピーしません。テンプレート自体は、左中括弧で開始され、右中括弧で終了します。このファイルで、スタックのリソースに対する変更を指定します。