

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

# CloudFormation デプロイアクションリファレンス
<a name="action-reference-CloudFormation"></a>

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

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

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

**Topics**
+ [アクションタイプ](#action-reference-CloudFormation-type)
+ [設定パラメータ](#action-reference-CloudFormation-config)
+ [入力アーティファクト](#action-reference-CloudFormation-input)
+ [出力アーティファクト](#action-reference-CloudFormation-output)
+ [出力変数](#action-reference-CloudFormation-variables)
+ [サービスロールのアクセス許可: CloudFormation アクション](#edit-role-cloudformation)
+ [アクションの宣言](#action-reference-CloudFormation-example)
+ [関連情報](#action-reference-CloudFormation-links)

## アクションタイプ
<a name="action-reference-CloudFormation-type"></a>
+ カテゴリ:`Deploy`
+ 所有者: `AWS`
+ プロバイダー: `CloudFormation`
+ バージョン: `1`

## 設定パラメータ
<a name="action-reference-CloudFormation-config"></a>

**ActionMode**  
必須: はい  
`ActionMode` は、スタックまたは変更セットで CloudFormation 実行されるアクションの名前です。以下のアクティベーションモードを使用できます。  
+ `CHANGE_SET_EXECUTE` は、指定された一連のリソース更新に基づくリソーススタックの変更セットを実行します。このアクションにより、 はスタックの変更 CloudFormation を開始します。
+ `CHANGE_SET_REPLACE` は、変更セットが存在しない場合、指定されたスタック名とテンプレートに基づいて変更セットを作成します。変更セットが存在する場合、 はそれ CloudFormation を削除し、新しい変更セットを作成します。
+ スタックが存在しない場合は、`CREATE_UPDATE` がスタックを作成します スタックが存在する場合、 はスタック CloudFormation を更新します。既存のスタックを更新するには、このアクションを使用します。`REPLACE_ON_FAILURE` とは異なり、スタックが存在し、失敗した状態の場合、CodePipeline はスタックを削除して置き換えることはありません。
+ `DELETE_ONLY` は、スタックを削除します。存在しないスタックを指定した場合は、アクションはスタックを削除せずに正常に終了します。
+ スタックが存在しない場合は、`REPLACE_ON_FAILURE` がスタックを作成します。スタックが存在し、障害状態にある場合、 はスタック CloudFormation を削除し、新しいスタックを作成します。スタックが失敗状態でない場合、 はスタック CloudFormation を更新します。

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

  失敗したスタックをリカバリーまたはトラブルシューティングせずに自動的に置き換えるには、このアクションを使用します。
**重要**  
`REPLACE_ON_FAILURE` は、スタックが削除される可能性があるため、テスト目的でのみ使用することをお勧めします。

**StackName**  
必須: はい  
`StackName` は、既存のスタックの名前、または作成するスタックの名前です。

**機能**  
必須: 条件による  
`Capabilities` を使用すると、テンプレートに一部のリソースを単独で作成および更新する機能があり、これらの機能はテンプレート内のリソースのタイプに基づいて決定されることが確認されます。  
このプロパティは、スタックテンプレートに IAM リソースがある場合、またはマクロを含むテンプレートから直接スタックを作成する場合に必要です。 CloudFormation アクションをこの方法で正常に動作させるには、次のいずれかの機能を使用してアクションが正常に動作することを明示的に承認する必要があります。  
+ `CAPABILITY_IAM` 
+ `CAPABILITY_NAMED_IAM` 
+ `CAPABILITY_AUTO_EXPAND` 
 機能間にカンマ（スペースなし）を使用して、複数の機能を指定できます。[アクションの宣言](#action-reference-CloudFormation-example) の例は、CAPABILITY\$1IAM プロパティと CAPABILITY\$1AUTO\$1EXPAND プロパティの両方を持つエントリを示しています。  
`Capabilities` の詳細については、[*AWS CloudFormation API リファレンス*]の [[UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)] のプロパティを参照してください。

**ChangeSetName**  
必須: 条件による  
`ChangeSetName` は、既存の変更セットの名前、または指定されたスタック用に作成する新しい変更セットの名前です。  
 このプロパティは、次のアクションモードに必要です。CHANGE\$1SET\$1REPLACE および CHANGE\$1SET\$1EXECUTE。他のすべてのアクションモードでは、このプロパティは無視されます。

**RoleArn**  
必須: 条件による  
`RoleArn` は、指定されたスタックのリソースを操作するときに CloudFormation が引き受ける IAM サービスロールの ARNです。`RoleArn` は、変更セットを実行するときには適用されません。変更セットの作成に CodePipeline を使用しない場合は、変更セットまたはスタックにロールが関連付けられていることを確認します。  
このロールは、アクション宣言 `RoleArn` で設定された、実行中のアクションのロールと同じアカウントである必要があります。
このプロパティは、以下のアクションモードでは必須です。  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ DELETE\$1ONLY
+ CHANGE\$1SET\$1REPLACE
CloudFormation にはテンプレートへの S3-signed付き URL が付与されるため、アーティファクトバケットにアクセスするためのアクセス許可`RoleArn`は必要ありません。ただし、アクション `RoleArn` は、署名付き URL を生成するために、アーティファクト バケットへアクセスする許可を必要と [*します*]。

**TemplatePath**  
必須: 条件による  
`TemplatePath` は CloudFormation テンプレートファイルを表します。このアクションへの入力アーティファクトにファイルを含めます。ファイル名の形式は次のとおりです:   
`Artifactname::TemplateFileName`  
`Artifactname` は、CodePipeline に表示される入力アーティファクト名です。たとえば、アーティファクト名 `SourceArtifact` と `template-export.json` ファイル名を持つソースステージでは、次の例に示すような `TemplatePath` の名前が作成されます。  

```
"TemplatePath": "SourceArtifact::template-export.json"
```
このプロパティは、以下のアクションモードでは必須です。  
+ CREATE\$1UPDATE
+ REPLACE\$1ON\$1FAILURE
+ CHANGE\$1SET\$1REPLACE
他のすべてのアクションモードでは、このプロパティは無視されます。  
 CloudFormation テンプレート本文を含むテンプレートファイルの最小長は 1 バイト、最大長は 1 MB です。CodePipeline の CloudFormation デプロイアクションの場合、入力アーティファクトの最大サイズは常に 256 MB です。詳細については、[AWS の CodePipeline 中のクォータ](limits.md) および [[CloudFormation の制限](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html)] を参照してください。

**OutputFileName**  
必須: いいえ  
`OutputFileName` を使用して、CodePipeline がこのアクションのパイプライン出力アーティファクトに追加する `CreateStackOutput.json` などの出力ファイル名を指定します。JSON ファイルには、 CloudFormation スタックの `Outputs`セクションの内容が含まれています。  
名前を指定しない場合、CodePipeline は出力ファイルやアーティファクトを生成しません。

**ParameterOverrides**  
必須: いいえ  
パラメータはスタックテンプレートで定義され、スタックの作成時または更新時にそれらの値を指定できます。JSON オブジェクトを使用して、テンプレートにパラメータ値を設定できます。（これらの値は、テンプレート設定ファイルに設定された値を上書きします。） パラメータオーバーライドの使用の詳細については、[設定プロパティ（JSON オブジェクト）](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w4363ab1c13c13b9)を参照してください。  
パラメータ値のほとんどは、テンプレート設定ファイルを使用して指定することをお勧めします。パラメータの上書きは、パイプラインが実行されるまで不明な値にのみ使用します。詳細については、[*AWS CloudFormation ユーザーガイド*] の [[CodePipeline パイプラインでのパラメータオーバーライド関数の使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html)] を参照してください。  
すべてのパラメータ名がスタックテンプレートに存在する必要があります。

**TemplateConfiguration**  
必須: いいえ  
`TemplateConfiguration` はテンプレート構成ファイルです。このアクションへの入力アーティファクトにファイルを含めます。テンプレート設定ファイルには、テンプレートのパラメータ値およびスタックポリシーを含めることができます。テンプレート設定ファイル形式の詳細については、「[AWS CloudFormation アーティファクト](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)」を参照してください。  
テンプレート構成ファイル名は以下の形式に従います。  
`Artifactname::TemplateConfigurationFileName`  
`Artifactname` は、CodePipeline に表示される入力アーティファクト名です。たとえば、アーティファクト名 `SourceArtifact` と `test-configuration.json` ファイル名を持つソースステージでは、次の例に示すような `TemplateConfiguration` の名前が作成されます。  

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

## 入力アーティファクト
<a name="action-reference-CloudFormation-input"></a>
+ **アーティファクトの数:** `0 to 10`
+ **説明:** 入力として、 CloudFormation アクションはオプションで以下の目的でアーティファクトを受け入れます。
  + 実行するスタックテンプレートファイルを提供するため。（`TemplatePath` パラメータを参照。）
  + 使用するテンプレート設定ファイルを提供するため。（`TemplateConfiguration` パラメータを参照。） テンプレート設定ファイル形式の詳細については、「[AWS CloudFormation アーティファクト](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html)」を参照してください。
  +  CloudFormation スタックの一部としてデプロイする Lambda 関数のアーティファクトを提供します。

## 出力アーティファクト
<a name="action-reference-CloudFormation-output"></a>
+ **アーティファクトの数:** `0 to 1` 
+ **説明:** `OutputFileName` パラメータが指定された場合、このアクションによって生成される出力アーティファクトには、指定された名前の JSON ファイルが含まれます。JSON ファイルには、 CloudFormation スタックの「出力」セクションの内容が含まれています。

   CloudFormation アクション用に作成できる出力セクションの詳細については、[出力](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)を参照してください。

## 出力変数
<a name="action-reference-CloudFormation-variables"></a>

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

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

詳細については、「[変数リファレンス](reference-variables.md)」を参照してください。CloudFormation 出力変数を使用するパイプラインを CloudFormation デプロイアクションで作成するためのチュートリアルについては、「[チュートリアル: AWS CloudFormation デプロイアクションの変数を使用するパイプラインを作成する](tutorials-cloudformation-action.md)」を参照してください。

## サービスロールのアクセス許可: CloudFormation アクション
<a name="edit-role-cloudformation"></a>

CodePipeline がアクションを実行する際、CodePipeline サービスロールポリシーには、最小特権でアクセスを維持するために、パイプラインリソース ARN に適切にスコープダウンされた次のアクセス許可が必要です。例えば、以下をポリシーステートメントに追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCFNStackAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/[[cfnDeployStackNames]]/*"
            ]
        },
        {
            "Sid": "ValidateTemplate",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIAMPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/[[cfnExecutionRoles]]"
            ],
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

`cloudformation:DescribeStackEvents` アクセス許可はオプションであることに注意してください。これにより、 CloudFormation アクションはより詳細なエラーメッセージを表示できます。パイプラインのエラーメッセージにリソースの詳細を表示したくない場合は、このアクセス許可を IAM ロールから取り消すことができます。

## アクションの宣言
<a name="action-reference-CloudFormation-example"></a>

------
#### [ 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"
        }
    ]
},
```

------

## 関連情報
<a name="action-reference-CloudFormation-links"></a>

このアクションを利用する際に役立つ関連リソースは以下の通りです。
+ [[設定プロパティ リファレンス](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html)] - [*AWS CloudFormation ユーザーガイド*] のリファレンスの章では、これらの CodePipeline パラメータの詳細な説明と例をご覧いただけます。
+ [AWS CloudFormation API リファレンス](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/) – *AWS CloudFormation API リファレンス*の [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) パラメータは、 テンプレートの CloudFormation スタックパラメータを記述します。