AWS CloudFormation - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CloudFormation

AWS CloudFormation スタックでオペレーションを実行します。スタックは、単一のユニットとして管理できる AWS リソースのコレクションです。スタック内のすべてのリソースは、スタックの AWS CloudFormation テンプレートで定義されます。変更セットにより、元のスタックを変更せずに表示できる比較が作成されます。スタックおよび変更セットで実行できる AWS CloudFormation アクションのタイプについては、ActionMode パラメータを参照してください。

スタック操作が失敗した AWS CloudFormation アクションのエラーメッセージを作成するために、CodePipeline は AWS CloudFormation DescribeStackEvents API を呼び出します。アクション IAM ロールにその API にアクセスするアクセス許可がある場合、最初に失敗したリソースの詳細が CodePipeline エラーメッセージに含まれます。そうでなく、ロールポリシーに適切なアクセス許可がない場合、CodePipeline は API へのアクセスを無視し、代わりに一般的なエラーメッセージを表示します。そのためには、パイプラインのサービスロールまたは他の IAM ロールに cloudformation:DescribeStackEvents アクセス許可を追加する必要があります。

リソースの詳細がパイプラインのエラーメッセージに表示されないようにするには、cloudformation:DescribeStackEvents アクセス許可を削除することによって、アクション IAM ロールに対するこのアクセス許可を取り消すことができます。

アクションタイプ

  • カテゴリ:Deploy

  • 所有者: AWS

  • プロバイダー: CloudFormation

  • バージョン: 1

設定パラメータ

ActionMode

必須: はい

ActionMode は、AWS CloudFormation がスタックまたは変更セットで実行するアクションの名前です。以下のアクティベーションモードを使用できます。

  • CHANGE_SET_EXECUTE は、指定された一連のリソース更新に基づくリソーススタックの変更セットを実行します。このアクションでは、AWS CloudFormation はスタックの変更を開始します。

  • CHANGE_SET_REPLACE は、変更セットが存在しない場合、指定されたスタック名とテンプレートに基づいて変更セットを作成します。変更セットがある場合は、AWS CloudFormation それを削除して新しいものを作成します。

  • スタックが存在しない場合は、CREATE_UPDATE がスタックを作成します スタックが存在する場合、AWS CloudFormation はそのスタックを更新します。既存のスタックを更新するには、このアクションを使用します。REPLACE_ON_FAILURE とは異なり、スタックが存在し、失敗した状態の場合、CodePipeline はスタックを削除して置き換えることはありません。

  • DELETE_ONLY は、スタックを削除します。存在しないスタックを指定した場合は、アクションはスタックを削除せずに正常に終了します。

  • スタックが存在しない場合は、REPLACE_ON_FAILURE がスタックを作成します。スタックが存在しており失敗状態の場合、AWS CloudFormation はそのスタックを削除して新しいスタックを作成します。スタックが失敗状態ではない場合は、AWS CloudFormation はそれを更新します。

    AWS CloudFormation に次のいずれかのステータスタイプが表示されている場合、スタックは失敗状態になります。

    • ROLLBACK_FAILED

    • CREATE_FAILED

    • DELETE_FAILED

    • UPDATE_ROLLBACK_FAILED

    失敗したスタックをリカバリーまたはトラブルシューティングせずに自動的に置き換えるには、このアクションを使用します。

    重要

    REPLACE_ON_FAILURE は、スタックが削除される可能性があるため、テスト目的でのみ使用することをお勧めします。

StackName

必須: はい

StackName は、既存のスタックの名前、または作成するスタックの名前です。

機能

必須: 条件による

Capabilities を使用すると、テンプレートに一部のリソースを単独で作成および更新する機能があり、これらの機能はテンプレート内のリソースのタイプに基づいて決定されることが確認されます。

このプロパティは、スタックテンプレートに IAM リソースがある場合、またはマクロを含むテンプレートから直接スタックを作成する場合に必要です。AWS CloudFormation アクションがこの方法で正常に動作するためには、以下のいずれかの機能を使用して実行することを明示的に認識する必要があります。

  • CAPABILITY_IAM

  • CAPABILITY_NAMED_IAM

  • CAPABILITY_AUTO_EXPAND

機能間にカンマ(スペースなし)を使用して、複数の機能を指定できます。アクションの宣言 の例は、CAPABILITY_IAM プロパティと CAPABILITY_AUTO_EXPAND プロパティの両方を持つエントリを示しています。

Capabilities の詳細については、[AWS CloudFormation API リファレンス]の [UpdateStack] のプロパティを参照してください。

ChangeSetName

必須: 条件による

ChangeSetName は、既存の変更セットの名前、または指定されたスタック用に作成する新しい変更セットの名前です。

このプロパティは、次のアクションモードに必要です。CHANGE_SET_REPLACE および CHANGE_SET_EXECUTE。他のすべてのアクションモードでは、このプロパティは無視されます。

RoleArn

必須: 条件による

RoleArn は、指定されたスタックのリソースを操作するときに AWS CloudFormation が引き受ける IAM サービスロールの ARNです。RoleArn は、変更セットを実行するときには適用されません。変更セットの作成に CodePipeline を使用しない場合は、変更セットまたはスタックにロールが関連付けられていることを確認します。

注記

このロールは、アクション宣言 RoleArn で設定された、実行中のアクションのロールと同じアカウントである必要があります。

このプロパティは、以下のアクションモードでは必須です。

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

  • DELETE_ONLY

  • CHANGE_SET_REPLACE

注記

AWS CloudFormation にはテンプレートへ S 3 署名付きの URL が与えられるため、この RoleArn にはアーティファクト バケットへのアクセス許可は必要ありません。ただし、アクション RoleArn は、署名付き URL を生成するために、アーティファクト バケットへアクセスする許可を必要と [します]。

TemplatePath

必須: 条件による

TemplatePath は AWS CloudFormation テンプレートファイルを表します。このアクションへの入力アーティファクトにファイルを含めます。ファイル名の形式は次のとおりです:

Artifactname::TemplateFileName

Artifactname は、CodePipeline に表示される入力アーティファクト名です。たとえば、アーティファクト名 SourceArtifacttemplate-export.json ファイル名を持つソースステージでは、次の例に示すような TemplatePath の名前が作成されます。

"TemplatePath": "SourceArtifact::template-export.json"

このプロパティは、以下のアクションモードでは必須です。

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

  • CHANGE_SET_REPLACE

他のすべてのアクションモードでは、このプロパティは無視されます。

注記

テンプレート本文を含む AWS CloudFormation テンプレートファイルの最小長は 1 バイト、最大長は 1 MB です。CodePipeline の AWS CloudFormation デプロイアクションでは、最大入力アーティファクト サイズは常に 256 MBです。詳細については、AWS CodePipeline のクォータ および [AWS CloudFormation の制限] を参照してください。

OutputFileName

必須: いいえ

OutputFileName を使用して、CodePipeline がこのアクションのパイプライン出力アーティファクトに追加する CreateStackOutput.json などの出力ファイル名を指定します。JSON ファイルには、AWS CloudFormation スタックの Outputs セクションのコンテンツが含まれています。

名前を指定しない場合、CodePipeline は出力ファイルやアーティファクトを生成しません。

ParameterOverrides

必須: いいえ

パラメータはスタックテンプレートで定義され、スタックの作成時または更新時にそれらの値を指定できます。JSON オブジェクトを使用して、テンプレートにパラメータ値を設定できます。(これらの値は、テンプレート設定ファイルに設定された値を上書きします。) パラメータオーバーライドの使用の詳細については、設定プロパティ(JSON オブジェクト)を参照してください。

パラメータ値のほとんどは、テンプレート設定ファイルを使用して指定することをお勧めします。パラメータの上書きは、パイプラインが実行されるまで不明な値にのみ使用します。詳細については、[AWS CloudFormation ユーザーガイド] の [CodePipeline パイプラインでのパラメータオーバーライド関数の使用] を参照してください。

注記

すべてのパラメータ名がスタックテンプレートに存在する必要があります。

TemplateConfiguration

必須: いいえ

TemplateConfiguration はテンプレート構成ファイルです。このアクションへの入力アーティファクトにファイルを含めます。テンプレート設定ファイルには、テンプレートのパラメータ値およびスタックポリシーを含めることができます。テンプレート設定ファイル形式の詳細については、「AWS CloudFormation アーティファクト」を参照してください。

テンプレート構成ファイル名は以下の形式に従います。

Artifactname::TemplateConfigurationFileName

Artifactname は、CodePipeline に表示される入力アーティファクト名です。たとえば、アーティファクト名 SourceArtifacttest-configuration.json ファイル名を持つソースステージでは、次の例に示すような TemplateConfiguration の名前が作成されます。

"TemplateConfiguration": "SourceArtifact::test-configuration.json"

入力アーティファクト

  • アーティファクトの数: 0 to 10

  • 説明: 入力として、AWS CloudFormation アクションはオプションでこれらの目的でアーティファクトを受け入れます。

    • 実行するスタックテンプレートファイルを提供するため。(TemplatePath パラメータを参照。)

    • 使用するテンプレート設定ファイルを提供するため。(TemplateConfiguration パラメータを参照。) テンプレート設定ファイル形式の詳細については、「AWS CloudFormation アーティファクト」を参照してください。

    • AWS CloudFormation スタックの一部としてデプロイされる Lambda 関数のアーティファクトを提供するため。

出力アーティファクト

  • アーティファクトの数: 0 to 1

  • [説明:]OutputFileName パラメータが指定された場合、このアクションによって生成される出力アーティファクトには、指定された名前の JSON ファイルが含まれます。JSON ファイルには、AWS CloudFormation スタックの「出力」セクションの内容が含まれています。

    AWS CloudFormation アクション用に作成できる出力セクションの詳細については、出力を参照してください。

出力変数

このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。

AWS CloudFormation アクションの場合、変数はスタックテンプレートの Outputs セクションに指定した値から生成されます。CloudFormation アクションモードのうち、出力を生成するのは、スタックの作成、スタックの更新、変更セットの実行など、スタックの作成や更新を伴うアクションモードのみです。変数を生成するアクションモードは次のとおりです。

  • CHANGE_SET_EXECUTE

  • CHANGE_SET_REPLACE

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

詳細については、「可変」を参照してください。CloudFormation 出力変数を使用するパイプラインを CloudFormation デプロイアクションで作成するためのチュートリアルについては、「チュートリアル: AWS CloudFormation デプロイアクションの変数を使用するパイプラインを作成する」を参照してください。

アクションの宣言

YAML
Name: ExecuteChangeSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' RunOrder: 2 Configuration: ActionMode: CHANGE_SET_EXECUTE Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}' RoleArn: CloudFormation_Role_ARN StackName: my-project--lambda TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json' TemplatePath: 'my-project--BuildArtifact::template-export.yml' OutputArtifacts: [] InputArtifacts: - Name: my-project-BuildArtifact
JSON
{ "Name": "ExecuteChangeSet", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormation", "Version": "1" }, "RunOrder": 2, "Configuration": { "ActionMode": "CHANGE_SET_EXECUTE", "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-project--lambda", "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json", "TemplatePath": "my-project--BuildArtifact::template-export.yml" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "my-project-BuildArtifact" } ] },

このアクションを利用する際に役立つ関連リソースは以下の通りです。