スタックの直接更新 - AWS CloudFormation

スタックの直接更新

更新をスタックにすばやくデプロイするには、直接更新を実行します。直接更新では、テンプレートを送信するか、スタック内のリソースに対して更新を指定する入力パラメータを送信すると、AWS CloudFormation によりすぐにデプロイされます。テンプレートを使用して更新する場合、現在のテンプレートを変更し、ローカルまたは S3 バケットに保存できます。

更新がサポートされていないリソースプロパティの場合、現在の値を保持する必要があります。更新前に AWS CloudFormation がスタックに加える変更を確認するには、変更セットを使用します。詳細については、「変更セットを使用したスタックの更新」を参照してください。

注記

スタックを更新する際に、更新するプロパティによっては、AWS CloudFormation によってリソースが中断されたり、更新されたリソースに置き換えられる場合があります。リソースの更新動作の詳細については、スタックのリソースの更新動作を参照してください。

AWS CloudFormation スタックを更新するには (コンソール)

  1. AWS CloudFormation コンソールに表示されるスタックのリストから、更新対象となる実行中のスタックを選択します。

  2. スタックの詳細ペインで、[更新] を選択します。

  3. スタックテンプレートを変更していない場合は、[Use current template] (現在のテンプレートの使用) を選択し、[Next] (次へ) を選択します。

    テンプレートを変更した場合は、[Replace current template (現在のテンプレートを置換)] を選択し、[Specify template (テンプレートの指定)] セクションで更新されたテンプレートの場所を指定します。

    • ローカルコンピュータに保存されているテンプレートの場合は、[テンプレートファイルをアップロード] を選択します。[Choose file] (ファイルの選択) を選択してファイルの場所に移動し、ファイルを選択して、[Next] (次へ) を選択します。

      注記

      ローカルテンプレートファイルをアップロードすると、AWS CloudFormation によって AWS アカウントの Amazon Simple Storage Service (Amazon S3) バケットにアップロードされます。AWS CloudFormation によって作成された S3 バケットがない場合は、テンプレートファイルをアップロードしたリージョンごとに一意のバケットが作成されます。AWS アカウントに、AWS CloudFormation によって作成された S3 バケットが既にある場合、AWS CloudFormation によってそのバケットにテンプレートが追加されます。

      AWS CloudFormation によって作成された S3 バケットについて覚えておくべき考慮事項

      • AWS アカウントの Amazon S3 アクセス権限があれば誰でもこのバケットにアクセスできます。

      • AWS CloudFormation は、デフォルトで有効になっているサーバー側の暗号化を使用してバケットを作成し、バケットに保存されているすべてのオブジェクトを暗号化します。

        AWS CloudFormation が作成したバケットの暗号化オプションを直接管理できます。例えば、https://console.aws.amazon.com/s3/ の Amazon S3 コンソール、または AWS CLI を使用します。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「S3 バケットの Amazon S3 デフォルト暗号化」を参照してください。

      • 手動でテンプレートを Amazon S3 にアップロードすることで、独自のバケットを使用してアクセス権限を管理できます。スタックを作成または更新する場合は、テンプレートファイルの Amazon S3 の URL を指定します。

    • Amazon S3 バケットに保存されているテンプレートの場合は、[Amazon S3 URL] を選択します。テンプレートの URL を入力するか貼り付けて、[次へ] を選択します。

      バージョニングが有効なバケットにテンプレートがある場合、https://s3.amazonaws.com/templates/myTemplate.template?versionId=123ab1cdeKdOW5IH4GAcYbEngcpTJTDW のようにテンプレートの特定バージョンを指定することもできます。詳細については、『Amazon Simple Storage Service コンソールユーザーガイド』の「バージョニングが有効なバケット内のオブジェクトを管理する」を参照してください。

  4. テンプレートにパラメータが含まれている場合、[Specify stack details] (スタックの詳細を指定) ページで、パラメータ値を入力または変更し、[Next] (次へ) を選択します。

    AWS CloudFormation により、各パラメータには、NoEcho 属性で宣言されたパラメータを除いて、スタックに現在設定されている値が入力されますが、[Use existing value] (既存の値の使用) をオンにすることで、現在の値をそのまま使用することもできます。

    動的なパラメータを使用してシークレットを管理する方法の詳細に加えて、NoEcho を使用して機密情報をマスクする方法については、「テンプレートに認証情報を埋め込まない」のベストプラクティスをご参照ください。

    
          [既存の値の使用] オプションがオンになっているパラメータフィールド。
  5. [Configure stack options] (スタックオプションの設定) ページで、スタックに適用されるタグとアクセス権限を更新したり、スタックポリシー、ロールバック設定などの高度なオプションを変更したり、Amazon SNS 通知トピックを更新したりすることができます。

    これらのパラメータの詳細については、「AWS CloudFormation スタックオプションの設定」を参照してください。

    [次へ] をクリックします。

  6. 送信したスタック情報と変更を確認します。

    パラメータ値やテンプレートの URL が適切かなど、正しい情報を送信したことを確認します。テンプレートに IAM リソースが含まれる場合は、[I acknowledge that this template may create IAM resources (このテンプレートが IAM リソースを作成する可能性を認識しています)] を選択して、テンプレート内の IAM リソースを使用することを指定します。テンプレート内の IAM リソースの使用の詳細については、「AWS Identity and Access Management によるアクセスの制御」を参照してください。

    [Change set preview (変更セットのプレビュー)] セクションで、必要な変更がすべて AWS CloudFormation により加えられることを確認します。たとえば、追加、削除、または変更しようとしているリソースが AWS CloudFormation によって追加、削除、変更されることを確認することができます。AWS CloudFormation は、スタックの変更セットを作成することによりこのプレビューを生成します。詳細については、「変更セットを使用したスタックの更新」を参照してください。

  7. 変更内容が適切であることを確認できたら、[Update stack] (スタックの更新) を選択します。

    注記

    この時点で、変更セットを表示するオプションを使用すると、提案された更新をより徹底的に確認することもできます。これを行うには、[Update stack] (スタックの更新) ではなく [View change set] (変更セットを表示) を選択します。CloudFormation により、更新に基づいて生成された変更セットが表示されます。スタックの更新を実行する準備ができたら、[Execute] (実行) を選択します。

    CloudFormation によりスタックの詳細ページが表示され、[イベント] ペインが選択された状態になっています。スタックの状況が UPDATE_IN_PROGRESS になっていることを確認できます。CloudFormation によるスタックの更新が正常に完了したら、スタックの状況が UPDATE_COMPLETE に設定されます。

    スタックの更新が失敗した場合、CloudFormation によって変更が自動的にロールバックされ、スタックの状況が UPDATE_ROLLBACK_COMPLETE に設定されます。

    注記

    更新が [UPDATE_IN_PROGRESS] 状態のときはキャンセルできます。詳細については、「スタック更新のキャンセル」を参照してください。

AWS CloudFormation スタックを更新するには (AWS CLI)

  • aws cloudformation update-stack コマンドを使用して、スタックを直接更新します。更新するスタック、パラメータ値、機能を指定し、更新されたテンプレートを使用する場合はテンプレートの名前も指定します。

    次の例は、mystack スタックのテンプレートと入力パラメータを更新します。

    PROMPT> aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=VPCID,ParameterValue=SampleVPCID ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

    次の例は、SubnetIDs スタックの mystack パラメータ値のみを更新します。

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --parameters ParameterKey=VPCID,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2

    次の例は、2 つのスタック通知トピックを mystack スタックに追加します。

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:us-east-1:12345678912:mytopic" "arn:aws:sns:us-east-1:12345678912:mytopic2"

    次の例は、mystack スタックからすべてのスタック通知トピックを削除します。

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns []