

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

# CodeDeploy との製品とサービスの統合
<a name="integrations"></a>

デフォルトでは、CodeDeploy は多数の AWS サービスおよびパートナー製品およびサービスと統合されます。以下の情報は、使用する製品やサービスを統合するための CodeDeploy の設定に役立ちます。
+ [他の AWS サービスとの統合](integrations-aws.md)
+  [パートナーの製品とサービスとの統合](integrations-partners.md)
+ [コミュニティから統合の例](integrations-community.md)

# 他の AWS サービスとの統合
<a name="integrations-aws"></a>

CodeDeploy は、次の AWS サービスと統合されています。


|  |  | 
| --- |--- |
| Amazon CloudWatch |  [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/) は、 AWS クラウドリソースと、 AWSで実行するアプリケーションのモニタリングサービスです。Amazon CloudWatch を使用してメトリクスの収集と追跡、ログファイルの収集とモニタリング、アラームの設定ができます。CodeDeploy は、次の CloudWatch ツールをサポートしています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  CodeDeploy は、[Amazon EC2 Auto Scaling (Amazon EC2 オートスケーリング)](https://aws.amazon.com/autoscaling) をサポートします。この AWS サービスは、指定した条件に基づいて Amazon EC2 インスタンスを自動的に起動できます。次に例を示します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html) 必要に応じて Amazon EC2 インスタンスグループをスケールアウトできます。さらに CodeDeploy を使用してアプリケーションリビジョンを自動的にデプロイできます。Amazon EC2 Auto Scaling は、Amazon EC2 インスタンスが不要になったときに、それを終了します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon Elastic Container Service |   CodeDeploy を使用して、Amazon ECSにコンテナ化されたアプリケーションをタスクセットとしてデプロイできます。CodeDeploy は、アプリケーションの更新バージョンを新しい置き換えタスクセットとしてインストールすることで、Blue/Green のデプロイを実行します。CodeDeploy は、元のアプリケーションタスクセットからの本稼働トラフィックを置き換えタスクセットに再ルーティングします。デプロイが正常に完了すると、元のタスクセットは終了します。Amazon ECS の詳細については、「[Amazon Elastic Container Service](https://aws.amazon.com/ecs/)」を参照してください。  Canary 設定、線形設定、または一度にすべての設定を選択して、デプロイ時に更新済みタスクセットにトラフィックを移行する方法を管理できます。Amazon ECS デプロイの詳細については、「[Amazon ECS コンピューティングプラットフォームでのデプロイ](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/deployment-steps-ecs.html)」を参照してください。  | 
| AWS CloudTrail |  CodeDeploy は [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) と統合します。このサービスでは、 AWS アカウントで CodeDeploy によって、または CodeDeploy の代わりに行われた API コールをキャプチャし、指定した Amazon S3 バケットにログファイルを配信します。CloudTrail は、CodeDeploy コンソール、 AWS CLIを通した CodeDeploy コマンド、または CodeDeploy API からの API 呼び出しを直接キャプチャします。CloudTrail によって収集されたデータを使用して、以下の情報を判断できます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html) 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Cloud9 |  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/) は、インターネットに接続されたマシンからブラウザのみを使用してコードを記述、実行、デバッグ、デプロイするために使用できるクラウドベースのオンライン統合開発環境 (IDE) です。 AWS Cloud9 には、コードエディタ、デバッガー、ターミナル、 AWS CLI や Git などの重要なツールが含まれています。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html) 詳細については AWS Cloud9、[「 とは AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcom.html)」および[「 の開始方法 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/get-started.html)」を参照してください。  | 
| AWS CodePipeline |  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) は、継続的な配信プロセスでソフトウェアをリリースするために必要な手順のモデル化、可視化、および自動化に使用できる継続的な配信サービスです。 AWS CodePipeline を使用して、コード変更のたびにサービスが構築、テスト、デプロイを行うよう独自のプロセスを定義できます。例えば、ベータ、ガンマ、本番の 3 つのアプリケーションのデプロイグループがあるとします。ソースコードが変更されるたびに、各デプロイグループに 1 つずつ更新をデプロイするようにパイプラインを設定できます。 CodeDeploy を使用してデプロイ AWS CodePipeline するように を設定できます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  パイプラインを作成する前または [**パイプラインの作成**] ウィザードの段階のデプロイアクションで使用できるように、CodeDeploy アプリケーション、デプロイおよびデプロイグループを作成できます。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS サーバーレスアプリケーションモデル |  AWS サーバーレスアプリケーションモデル (AWS SAM) は、サーバーレスアプリケーションを定義するモデルです。を拡張 CloudFormation して、サーバーレスアプリケーションに必要な関数、Amazon API Gateway APIs、Amazon DynamoDB テーブルを簡単に AWS Lambda 定義できます。 AWS SAM を既に使用している場合は、デプロイ設定を追加して CodeDeploy の使用を開始し、 AWS Lambda アプリケーションのデプロイ中にトラフィックを移行する方法を管理できます。 詳細については、「[AWS サーバーレスアプリケーションモデル](https://github.com/awslabs/serverless-application-model)」を参照してください。  | 
| エラスティックロードバランシング |  CodeDeploy は、[Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html) をサポートしています。このサービスでは、着信アプリケーションを複数の Amazon EC2 インスタンス間に分散します。 また、CodeDeploy のデプロイ中、インスタンスが準備完了ではない、現在デプロイ中、または環境の一部として不要になった場合は、ロードバランサーはそのインスタンスへのインターネットトラフィックのルーティングを防止します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-aws.html)  | 

**Topics**
+ [Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md)
+ [Integrating CodeDeploy with Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)

# CodeDeploy と Amazon EC2 Auto Scaling の統合
<a name="integrations-aws-auto-scaling"></a>

CodeDeploy は、定義した条件に従って Amazon EC2 インスタンスを自動的に起動する AWS サービスである Amazon EC2 Auto Scaling をサポートしています。これらの条件には、指定された時間間隔にわたる CPU 使用率やディスクの読み取りまたは書き込み、インバウンド/アウトバウンドのネットワークトラフィックの制限の超過が含まれます。Amazon EC2 Auto Scaling は、インスタンスが不要になったときに、それを終了します。詳細については、「[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html)」の「*Amazon EC2 Auto Scaling とは*」を参照してください。

Amazon EC2 Auto Scaling グループの一部として新しい Amazon EC2 インスタンスが起動されると、CodeDeploy ではリビジョンを新しいインスタンスに自動的にデプロイできます。また、Elastic Load Balancing ロードバランサーに登録された Amazon EC2 Auto Scaling インスタンスを使用して、CodeDeploy でのデプロイを調整できます。詳細については、「[CodeDeploy と Elastic Load Balancing の統合](integrations-aws-elastic-load-balancing.md)」および「[CodeDeploy Amazon EC2 デプロイ用の Elastic Load Balancing でロードバランサーをセットアップする](deployment-groups-create-load-balancer.md)」を参照してください。

**注記**  
複数のデプロイグループを 1 つの Amazon EC2 Auto Scaling グループに関連付けると、問題が発生する可能性があります。例えば、1 つのデプロイが失敗すると、インスタンスはシャットダウンを開始しますが、実行中の他のデプロイはタイムアウトに 1 時間かかる可能性があります。詳細については、「[複数のデプロイグループを 1 つの Amazon EC2 Auto Scaling グループに関連付けることは避ける](troubleshooting-auto-scaling.md#troubleshooting-multiple-depgroups)」そして「[内部構造: CodeDeploy と Amazon EC2 Auto Scaling の統合](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/)」を参照してください。

**Topics**
+ [CodeDeploy アプリケーションを Amazon EC2 Auto Scaling グループにデプロイする](#integrations-aws-auto-scaling-deploy)
+ [Auto Scaling スケールインイベント中の終了デプロイの有効化](#integrations-aws-auto-scaling-behaviors-hook-enable)
+ [Amazon EC2 Auto Scaling と CodeDeploy の連携](#integrations-aws-auto-scaling-behaviors)
+ [CodeDeploy と Amazon EC2 Auto Scaling でのカスタム AMI の使用](#integrations-aws-auto-scaling-custom-ami)

## CodeDeploy アプリケーションを Amazon EC2 Auto Scaling グループにデプロイする
<a name="integrations-aws-auto-scaling-deploy"></a>

Amazon EC2 Auto Scaling グループに CodeDeploy アプリケーションリビジョンをデプロイするには、次の手順を実行します。

1. Amazon EC2 Auto Scaling グループが Amazon S3 での作業を許可する IAM インスタンスプロファイルを作成または検索します。詳細については、「[ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する](getting-started-create-iam-instance-profile.md)」を参照してください。
**注記**  
また、CodeDeploy を使用して GitHub リポジトリから Amazon EC2 Auto Scaling グループにリビジョンをデプロイすることもできます。Amazon EC2 インスタンスで依然として IAM インスタンスプロファイルが必要な場合でも、GitHub リポジトリからデプロイするときは、プロファイルに追加のアクセス許可は不要です。

1. Amazon EC2 Auto Scaling グループを作成または使用し、起動設定またはテンプレートで、IAM インスタンスプロファイルを指定します。詳細については、「[Amazon EC2 インスタンスで実行されるアプリケーションに対する IAM ロール](https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html)」を参照してください。

1. Amazon EC2 Auto Scaling グループを含むデプロイグループの作成を CodeDeploy に許可するサービスロールを作成または検索します。

1. CodeDeploy でデプロイグループを作成し、Amazon EC2 Auto Scaling グループ名、サービスロール、その他いくつかのオプションを指定します。詳細については、[インプレースデプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-in-place.md)または[インプレースデプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-in-place.md)を参照してください。

1. CodeDeploy を使用して、Amazon EC2 Auto Scaling グループを含むデプロイグループにリビジョンをデプロイします。

詳細については、「[チュートリアル: CodeDeploy を使用して、Auto Scaling グループにアプリケーションをデプロイします。](tutorials-auto-scaling-group.md)」を参照してください。

## Auto Scaling スケールインイベント中の終了デプロイの有効化
<a name="integrations-aws-auto-scaling-behaviors-hook-enable"></a>

*終了デプロイ*は、CodeDeploy デプロイの一種で、Auto Scaling [スケールインイベント](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)が発生すると、自動的にアクティブ化されます。CodeDeploy は、Auto Scaling サービスがインスタンスを終了する直前に終了デプロイを実行します。終了デプロイ中は、CodeDeploy は何もデプロイしません。代わりに、ライフサイクルイベントを生成します。これを独自のスクリプトにフックしてカスタムのシャットダウン機能を有効にすることができます。例えば、`ApplicationStop` ライフサイクルイベントを、インスタンスの終了前にアプリケーションを正常にシャットダウンするスクリプトにフックできます。

CodeDeploy が終了デプロイ中に生成するライフサイクルイベントのリストについては、「[ライフサイクルイベントフックの可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)」を参照してください。

終了デプロイが何らかの理由で失敗した場合、CodeDeploy はインスタンスの終了を続行できるようにします。つまり、CodeDeploy がライフサイクルイベントの完全なセット (または一部) を最後まで実行しなかった場合でも、インスタンスはシャットダウンされます。

終了デプロイを有効にしない場合でも、スケールインイベントが発生すると、Auto Scaling サービスは Amazon EC2 インスタンスを終了しますが、CodeDeploy はライフサイクルイベントを生成しません。

**注記**  
終了デプロイを有効にするかどうかにかかわらず、CodeDeploy のデプロイ中に Auto Scaling サービスが Amazon EC2 インスタンスを終了すると、Auto Scaling サービスと CodeDeploy サービスによって生成されたライフサイクルイベント間に競合状態が発生する可能性があります。例えば、Auto Scaling サービスで生成した `Terminating` ライフサイクルイベントは、CodeDeploy デプロイで生成した `ApplicationStart` イベントをオーバーライドする場合があります。このシナリオでは、Amazon EC2 インスタンスの終了または CodeDeploy のデプロイのいずれかで障害が発生する可能性があります。

**CodeDeploy で終了デプロイを実行できるようにするには**
+ デプロイグループを作成または更新するときに、**[Auto Scaling グループに終了フックを追加]** チェックボックスをオンにします。手順については、「[インプレースデプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-in-place.md)」または「[EC2/オンプレミス Blue/Green デプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-blue-green.md)」を参照してください。

  このチェックボックスを有効にすると、CodeDeploy は、CodeDeploy デプロイグループの作成時または更新時に指定した Auto Scaling グループに [Auto Scaling ライフサイクルフック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)をインストールします。このフックは終了フックと呼ばれ、終了デプロイを有効にします。**

**終了フックをインストールすると、次のようにスケールイン (終了) イベントが展開されます。**

1. Auto Scaling サービス (または単に Auto Scaling) は、スケールアウトイベントが発生する必要があると判断すると、EC2 サービスに連絡して EC2 インスタンスを終了します。

1. EC2 サービスが EC2 インスタンスの終了を開始します。インスタンスは、`Terminating` 状態へ、その後 `Terminating:Wait` 状態へと移行します。

1. `Terminating:Wait` 中、Auto Scaling は、CodeDeploy によってインストールされた終了フックを含め、Auto Scaling グループにアタッチされたすべてのライフサイクルフックを実行します。

1. 終了フックは、CodeDeploy がポーリングする [Amazon SQS キュー](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)に通知を送信します。

1. 通知を受信すると、CodeDeploy はメッセージを解析し、いくつかの検証を実行して、[終了デプロイ](#integrations-aws-auto-scaling-behaviors-hook-enable)を実行します。

1. 終了デプロイの実行中、CodeDeploy は 5 分ごとに Auto Scaling にハートビートを送信し、インスタンスがまだ処理中であることを知らせます。

1. これまでのところ、EC2 インスタンスは `Terminating:Wait` 状態 ([Auto Scaling グループのウォームプール](https://docs.aws.amazon.com/autoscaling/ec2/userguide/warm-pool-instance-lifecycle.html)を有効にしている場合は、`Warmed:Pending:Wait` 状態) のままです。

1. デプロイが完了すると、デプロイの成否にかかわらず、CodeDeploy は Auto Scaling に対して EC2 終了プロセスを `CONTINUE` するよう指示します。

## Amazon EC2 Auto Scaling と CodeDeploy の連携
<a name="integrations-aws-auto-scaling-behaviors"></a>

Auto Scaling グループを含むように CodeDeploy デプロイグループを作成または更新すると、CodeDeploy は CodeDeploy サービスロールを使用して Auto Scaling グループにアクセスし、[Auto Scaling ライフサイクルフック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)を Auto Scaling グループにインストールします。

**注記**  
Auto Scaling ライフサイクルフックは、このガイドの「[AppSpec の「hooks」セクション](reference-appspec-file-structure-hooks.md)」で説明している、CodeDeploy によって生成されるライフサイクルイベント (ライフサイクルイベントフックとも呼ばれます) とは異なります。******

CodeDeploy がインストールする Auto Scaling ライフサイクルフックは次のとおりです。
+ **起動フック** — このフックは、Auto Scaling [スケールアウトイベント](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-out)が進行中であり、起動デプロイを開始する必要があることを CodeDeploy に通知します。

  起動デプロイ中、CodeDeploy は、次のことを行います。**
  + アプリケーションのリビジョンを、スケールアウトされたインスタンスにデプロイします。
  + デプロイの進行状況を示すライフサイクルイベントを生成します。これらのライフサイクルイベントを独自のスクリプトにフックして、カスタム起動機能を有効にすることができます。詳細については、「[ライフサイクルイベントフックの可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)」の表を参照してください。

  起動フックおよび関連する起動デプロイは常に有効になっており、無効にすることはできません。
+ **終了フック** — このオプションのフックは、Auto Scaling [スケールインイベント](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)が進行中であり、終了デプロイを開始する必要があることを CodeDeploy に通知します。

  終了デプロイ中、CodeDeploy はインスタンスのシャットダウンの進行状況を示すライフサイクルイベントを生成します。**詳細については、「[Auto Scaling スケールインイベント中の終了デプロイの有効化](#integrations-aws-auto-scaling-behaviors-hook-enable)」を参照してください。

**Topics**
+ [CodeDeploy でインストールしたライフサイクルフックは、どのように使用されますか?](#integrations-aws-auto-scaling-behaviors-hook-usage)
+ [CodeDeploy による Amazon EC2 Auto Scaling グループの名前の設定方法](#integrations-aws-auto-scaling-behaviors-naming)
+ [カスタムライフサイクルフックイベントの実行順序](#integrations-aws-auto-scaling-behaviors-hook-order)
+ [デプロイ中のスケールアップイベント](#integrations-aws-auto-scaling-behaviors-mixed-environment)
+ [デプロイ中のスケールインイベント](#integrations-aws-auto-scaling-behaviors-scale-in)
+ [cfn-init AWS CloudFormation スクリプトのイベントの順序](#integrations-aws-auto-scaling-behaviors-event-order)

### CodeDeploy でインストールしたライフサイクルフックは、どのように使用されますか?
<a name="integrations-aws-auto-scaling-behaviors-hook-usage"></a>

起動ライフサイクルフックと終了ライフサイクルフックをインストールすると、CodeDeploy の Auto Scaling グループのスケールアウトイベントとスケールインイベントでそれぞれ使用されます。

**スケールアウト (起動) イベントは次のように展開されます。**

1. Auto Scaling サービス (または単に Auto Scaling) は、スケールアウトイベントが発生する必要があると判断し、EC2 サービスに連絡して新しい EC2 インスタンスを起動します。

1. EC2 サービスが、新しい EC2 インスタンスを起動します。インスタンスは、`Pending` 状態へ、その後 `Pending:Wait` 状態へと移行します。

1. `Pending:Wait` 中である場合、Auto Scaling は、Auto Scaling グループにアタッチされたすべてのライフサイクルフック (CodeDeploy によってインストールされた起動フックを含む) を実行します。

1. 起動フックは、CodeDeploy がポーリングする [Amazon SQS キュー](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)に通知を送信します。

1. 通知を受信すると、CodeDeploy はメッセージを解析し、いくつかの検証を実行して、[起動デプロイ](#launch-deployment)を開始します。

1. 起動デプロイの実行中、CodeDeploy は 5 分ごとに Auto Scaling にハートビートを送信し、インスタンスがまだ処理中であることを知らせます。

1. 今までのところ、EC2 インスタンスはなお `Pending:Wait` の状態です。

1. デプロイが完了すると、デプロイが成功したか失敗したかによって、CodeDeploy は Auto Scaling に EC2 起動プロセスを `CONTINUE` または `ABANDON` するよう指示を出します。
   + CodeDeploy が `CONTINUE` を指示する場合、Auto Scaling は他のフックの完了を待機するか、インスタンスを `Pending:Proceed` 状態に、その後 `InService` 状態にします。
   + CodeDeploy が `ABANDON` を指示する場合、Auto Scaling は EC2 インスタンスを終了し、また必要な数のインスタンスを満たす必要がある場合には、[Auto Scaling の **希望容量** の設定] で定義されているように、起動手順を再開します。

**スケールイン (終了) イベントは次のように展開されます。**

「[Auto Scaling スケールインイベント中の終了デプロイの有効化](#integrations-aws-auto-scaling-behaviors-hook-enable)」を参照してください。

### CodeDeploy による Amazon EC2 Auto Scaling グループの名前の設定方法
<a name="integrations-aws-auto-scaling-behaviors-naming"></a>

 

EC2/オンプレミスコンピューティングプラットフォームでの Blue/Green のデプロイ中に代替 (Green) 環境にインスタンスを追加するには 2 つの方法があります。
+  既存のインスタンス、または手動で作成したインスタンスを使用します。
+  指定した Amazon EC2 Auto Scaling グループの設定を使用して、新しい Amazon EC2 Auto Scaling グループにインスタンスを定義および作成します。

 2 番目のオプションを選択した場合は、CodeDeploy によって Amazon EC2 Auto Scaling グループがプロビジョンされます。以下の規則を使用して、グループに名前を付けます。

```
CodeDeploy_deployment_group_name_deployment_id
```

例えば、ID が「`10`」のデプロイによって「`alpha-deployments`」というデプロイグループがデプロイされる場合、 プロビジョンされる Amazon EC2 Auto Scaling グループの名前は `CodeDeploy_alpha-deployments_10` になります。詳細については、[EC2/オンプレミス Blue/Green デプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-blue-green.md) および「[GreenFleetProvisioningOption](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GreenFleetProvisioningOption.html)」を参照してください。

### カスタムライフサイクルフックイベントの実行順序
<a name="integrations-aws-auto-scaling-behaviors-hook-order"></a>

CodeDeploy がデプロイする先の Amazon EC2 Auto Scaling グループに独自のライフサイクルフックを追加できます。ただし、カスタムライフサイクルフックイベントが実行される順序は、デフォルトの CodeDeploy デプロイライフサイクルイベントに対して事前に決定できません。例えば、Amazon EC2 Auto Scaling グループに `ReadyForSoftwareInstall` というカスタムライフサイクルフックを追加すると、それが実行されるのが CodeDeploy のデフォルトデプロイライフサイクルの最初のイベントの前であるか、最後のイベントの後であるか、事前に知ることはできません。

Amazon EC2 Auto Scaling グループにカスタムライフサイクルフックを追加する方法については、[[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks)] の「*ライフサイクルフックの追加*」を参照してください。

### デプロイ中のスケールアップイベント
<a name="integrations-aws-auto-scaling-behaviors-mixed-environment"></a>

デプロイ中に Auto Scaling スケールアウトイベントが発生すると、新しいインスタンスが更新されて、最新のアプリケーションリビジョンではなく、前回デプロイしたアプリケーションリビジョンが反映されます。デプロイが成功すると、古いインスタンスと新しくスケールアウトされたインスタンスは異なるアプリケーションリビジョンを反映します。古いリビジョンを持つインスタンスを最新の状態にするために、CodeDeploy は (最初のデプロイの直後に) 追加のデプロイを自動的に開始し、古いインスタンスを更新します。このデフォルトの動作を変更して、古い EC2 インスタンスが古いリビジョンに残るようにする場合は、「[Automatic updates to outdated instances](deployment-groups-configure-advanced-options.md#auto-updates-outdated-instances)」を参照してください。

デプロイの実行中に Amazon EC2 Auto Scaling スケールアウトプロセスを中断する場合は、CodeDeploy でのロードバランシングに使用される `common_functions.sh` スクリプトの設定を通して行うことができます。`HANDLE_PROCS=true` の場合、デプロイ中は以下の Auto Scaling イベントが自動的に中断されます。
+ AZRebalance
+ AlarmNotification
+ ScheduledActions
+ ReplaceUnhealthy

**重要**  
この機能をサポートするのは、CodeDeployDefault.OneAtATime のデプロイ設定のみです。

`HANDLE_PROCS=true` を使用して Amazon EC2 Auto Scaling 使用時のデプロイ問題を避ける方法の詳細については、GitHub の「[aws-codedeploy](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb#important-notice-about-handling-autoscaling-processes)」で「[Important notice about handling AutoScaling processes](https://github.com/awslabs/aws-codedeploy-samples)」を参照してください。

### デプロイ中のスケールインイベント
<a name="integrations-aws-auto-scaling-behaviors-scale-in"></a>

Auto Scaling グループで CodeDeploy デプロイの進行中に Auto Scaling グループがスケールインを開始すると、終了プロセス (CodeDeploy 終了デプロイライフサイクルイベントを含む) と終了インスタンスの他の CodeDeploy ライフサイクルイベントとの間で競合状態が発生する可能性があります。すべての CodeDeploy ライフサイクルイベントが完了する前にインスタンスを終了すると、この特定のインスタンスへのデプロイが失敗する場合があります。また、デプロイ設定で **[正常なホストの最小数]** をどのように設定したかによって、CodeDeploy デプロイ全体が失敗する場合と失敗しない場合があります。

### cfn-init AWS CloudFormation スクリプトのイベントの順序
<a name="integrations-aws-auto-scaling-behaviors-event-order"></a>

`cfn-init` (または `cloud-init`) を使用して新しくプロビジョニングした Linux ベースのインスタンスでスクリプトを実行する場合、インスタンスの開始後に発生するイベントの順序を厳密に制御しないと、デプロイは失敗することがあります。

次の順序に従う必要があります。

1. 新しくプロビジョニングしたインスタンスが開始する。

1. すべての `cfn-init` ブートストラップスクリプトが最後まで実行する。

1. CodeDeploy エージェントが開始します。

1. 最新のアプリケーションリビジョンがインスタンスにデプロイされる。

イベントの順序を慎重に制御しないと、CodeDeploy エージェントはすべてのスクリプトの実行が終了する前にデプロイを開始する可能性があります。

イベントの順序を制御するには、以下のベストプラクティスのいずれかを使用します。
+ `cfn-init` スクリプトを通じて CodeDeploy エージェントをインストールし、他のすべてのスクリプトの後に配置します。
+ CodeDeploy エージェントをカスタム AMI に含め、`cfn-init` スクリプトを使用して起動します。エージェントは、他のすべてのスクリプトの後に配置します。

`cfn-init` の使用方法については、[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html) の「*cfn-init*」を参照してください。

## CodeDeploy と Amazon EC2 Auto Scaling でのカスタム AMI の使用
<a name="integrations-aws-auto-scaling-custom-ami"></a>

Amazon EC2 Auto Scaling グループで新しい Amazon EC2 インスタンスを起動するとき、基本 AMI を指定するには 2 つのオプションがあります。
+ CodeDeploy エージェントがインストールされている基本カスタム AMI を 指定できます。エージェントが既にインストールされているため、このオプションはほかのオプションよりも迅速に新しい Amazon EC2 インスタンスを起動します。ただし、このオプションでは (特に CodeDeploy エージェントが古い場合)、Amazon EC2 インスタンスの初回デプロイが失敗する可能性が大きくなります。このオプションを選択した場合は、基本カスタム AMI の CodeDeploy エージェントを定期的に更新することをお勧めします。
+ CodeDeploy エージェントがインストールされていない基本 AMI を指定できます。また、 Amazon EC2 Auto Scaling グループ内で新しいインスタンスが起動されるたびにエージェントをインストールすることもできます。このオプションでは、ほかのオプションよりも新しい Amazon EC2 インスタンスの起動が遅くなりますが、インスタンスの最初のデプロイが成功する可能性は大きくなります。このオプションは、CodeDeploy エージェントの最新バージョンを使用します。

# CodeDeploy と Elastic Load Balancing の統合
<a name="integrations-aws-elastic-load-balancing"></a>

CodeDeploy のデプロイ中、インスタンスが準備完了ではない、現在デプロイ中、または環境の一部として不要になった場合は、ロードバランサーはそのインスタンスへのインターネットトラフィックのルーティングを防止します。ただし、ロードバランサーの正確な役割は、Blue/Green デプロイで使用されるかインプレースデプロイで使用されるかによって異なります。

**注記**  
Elastic Load Balancing ロードバランサーの使用は Blue/Green デプロイでは必須、インプレースデプロイでは任意です。

## Elastic Load Balancing のタイプ
<a name="integrations-aws-elastic-load-balancing-types"></a>

Elastic Load Balancing は、CodeDeploy デプロイで使用可能な、Classic Load Balancer、Application Load Balancer、Network Load Balancer の 3 つのタイプのロードバランサーを提供します。

Classic Load Balancer  
ルーティングおよび負荷分散を、トランスポートレイヤー (TCP/SSL) またはアプリケーションレイヤー (HTTP/HTTPS) のいずれかで行います。VPC がサポートされています。  
Classic Load Balancer は Amazon ECS デプロイではサポートされていません。

Application Load Balancer  
ルーティングと負荷分散をアプリケーションレイヤー (HTTP/HTTPS) で行い、パスベースのルーティングをサポートしています。Virtual Private Cloud (VPC) 内の EC2 の各インスタンスまたはコンテナインスタンスのポートにリクエストをルーティングできます。  
 Application Load Balancer のターゲットグループには、EC2 インスタンスでのデプロイの場合は `instance`、および Fargate デプロイの場合は `IP` のターゲットタイプがなければなりません。詳細については、「[ターゲットタイプ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-type)」を参照してください。

Network Load Balancer  
パケットのコンテンツからではなく、TCP パケットヘッダーから抽出されたアドレス情報に基づいて、トランスポートレイヤー (TCP/UDP Layer-4) でルーティングと負荷分散を行います。Network Load Balancer は、ロードバランサーの有効期間中、トラフィックバーストを処理し、クライアントの出典 IP を保持して、固定 IP を使用します。

Elastic Load Balancing ロードバランサーの詳細は、以下のトピックを参照してください。
+ [Elastic Load Balancing とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ 「[Classic Load Balancer とは？](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)」
+ [Application Load Balancer とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [Network Load Balancer とは?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)

## Blue/Green デプロイ
<a name="integrations-aws-elastic-load-balancing-blue-green"></a>

Elastic Load Balancing ロードバランサーの背後でインスタンストラフィックを再ルーティングすることは CodeDeploy Blue/Green デプロイの基本です。

Blue/Green デプロイの場合、ロードバランサーは、最新のアプリケーションリビジョンのデプロイ先であるデプロイグループの新しいインスタンス (置き換え先環境) に対しては、指定したルールに基づくトラフィックのルーティングを許可し、前回のアプリケーションリビジョンの実行元である古いインスタンス (元の環境) からはトラフィックをブロックします。

置き換え先環境のインスタンスが 1 つ以上のロードバランサーに登録されると、置き換え元環境のインスタンスは登録解除され、終了可能になります。

ブルー/グリーンデプロイでは、デプロイグループで 1 つ以上の Classic Load Balancer、Application Load Balancer ターゲットグループ、または Network Load Balancer ターゲットグループを指定できます。CodeDeploy コンソールまたは を使用して AWS CLI 、ロードバランサーをデプロイグループに追加します。

Blue/Green デプロイにおけるロードバランサーの使用に関する詳細については、以下のトピックを参照してください。
+ [CodeDeploy Amazon EC2 デプロイ用の Elastic Load Balancing でロードバランサーをセットアップする](deployment-groups-create-load-balancer.md)
+ [Blue/Green デプロイ (コンソール) のアプリケーションを作成します。](applications-create-blue-green.md)
+ [EC2/オンプレミス Blue/Green デプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-blue-green.md)

## インプレースデプロイ
<a name="integrations-aws-elastic-load-balancing-in-place"></a>

インプレースデプロイ中は、ロードバランサーにより、デプロイ先のインスタンスに対するインターネットトラフィックのルーティングがブロックされ、そのインスタンスへのデプロイが完了した時点でインスタンスに対するトラフィックのルーティングが再開されます。

インプレースデプロイ中にロードバランサーが使用されないと、インターネットトラフィックはデプロイプロセス中に依然としてインスタンスにルーティングされる場合があります。その結果、お客様に表示されるウェブアプリケーションが破損していたり、不完全であったり、古いものであったりする可能性があります。インプレースデプロイで Elastic Load Balancing ロードバランサーを使用する場合、デプロイグループのインスタンスはロードバランサーから登録解除され、最新のアプリケーションリビジョンに更新されてから、デプロイが成功した後で同じデプロイグループの一部としてロードバランサーに再登録されます。CodeDeploy は、ロードバランサーのバックグラウンドでインスタンスが正常になるまで最大 1 時間待機します。待機期間中にロードバランサーによってインスタンスが正常とマークされていない場合、CodeDeploy はデプロイ設定に基づいて、次のインスタンスに移動するか、デプロイに失敗します。

インプレースデプロイでは、1 つ以上の Classic Load Balancer、Application Load Balancer ターゲットグループ、または Network Load Balancer ターゲットグループを指定できます。ロードバランサーをデプロイグループの設定の一部として指定できます。または CodeDeploy が提供するスクリプトを使用してロードバランサーを実装できます。

### デプロイグループを使用してインプレースデプロイのロードバランサーを指定する
<a name="integrations-aws-elastic-load-balancing-in-place-deployment-group"></a>

デプロイグループにロードバランサーを追加するには、CodeDeploy コンソールまたは を使用します AWS CLI。インプレースデプロイでロードバランサーをデプロイグループで指定する詳細については、次のトピックを参照してください。
+ [インプレースデプロイ (コンソール) 用のアプリケーションを作成](applications-create-in-place.md)
+ [インプレースデプロイ用のデプロイグループを作成する (コンソール)](deployment-groups-create-in-place.md)
+ [CodeDeploy Amazon EC2 デプロイ用の Elastic Load Balancing でロードバランサーをセットアップする](deployment-groups-create-load-balancer.md)

### スクリプトを使用してインプレースデプロイのロードバランサーを指定する
<a name="integrations-aws-elastic-load-balancing-in-place-script"></a>

次の手順のステップに従ってデプロイライフサイクルスクリプトを使用し、インプレースデプロイのロードバランシングをセットアップします。
**注記**  
CodeDeployDefault.OneAtATime 設定は、スクリプトを使用してインプレイスデプロイ用のロードバランサーを設定するときのみ使用します。同時実行はサポートされておらず、CodeDeployDefault.OneAtATime 設定によりスクリプトの直列実行が確実になります。デプロイ設定の詳細については、[CodeDeploy でデプロイ設定を使用する](deployment-configurations.md) を参照してください。

GitHub の CodeDeploy サンプルリポジトリでは、CodeDeployElastic Load Balancing ロードバランサーの使用に対応できる手順とサンプルを提供します。これらのレポジトリには、開始するのに必要なすべてのコードを提供する 3 つのサンプルスクリプト、`register_with_elb.sh`、`deregister_from_elb.sh`、および `common_functions.sh` が含まれます。これらの 3 つのスクリプトのプレースホルダーを編集して、`appspec.yml` ファイルからこれらのスクリプトを参照します。

Elastic Load Balancing ロードバランサーに登録された Amazon EC2 インスタンスを使用して CodeDeploy でインプレースデプロイをセットアップするには、以下を実行します。

1. インプレースデプロイで使用するロードバランサーのタイプのサンプルをダウンロードします。
   + [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)
   + [Application Load Balancer [または Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) (同じスクリプトをいずれのタイプにも使用可能)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)

1. ターゲットの各 Amazon EC2 インスタンスに AWS CLI がインストールされていることを確認します。

1. ターゲットの各 Amazon EC2 インスタンスで、IAM インスタンスプロファイルに少なくとも elasticloadbalancing:\$1 および autoscaling:\$1 アクセス許可がアタッチされていることを確認します。

1. アプリケーションのソースコードディレクトリにデプロイライフサイクルイベントのスクリプト (`register_with_elb.sh`、`deregister_from_elb.sh`、および `common_functions.sh`) を含めます。

1. アプリケーションリビジョンの `appspec.yml` で、**ApplicationStart** イベント時に `register_with_elb.sh` スクリプトを、および **ApplicationStop** イベント時に `deregister_from_elb.sh` スクリプトを実行する CodeDeploy の説明を提供します。

1. インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、このステップは省略できます。

   `common_functions.sh` スクリプトで:
   + [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb) を使用している場合、`ELB_LIST=""` で Elastic Load Balancing ロードバランサーの名前を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。
   + [Application Load Balancer [または Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) を使用している場合は、`TARGET_GROUP_LIST=""` で Elastic Load Balancing ターゲットグループ名を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。

1. アプリケーションのソースコード `appspec.yml` およびデプロイライフサイクルイベントのスクリプトをアプリケーションリビジョンにバンドルしてから、リビジョンをアップロードします。Amazon EC2 インスタンスにリビジョンをデプロイします。デプロイの間に、デプロイライフサイクルイベントのスクリプトは、Amazon EC2 インスタンスをロードバランサーから登録解除して、接続がドレインするまで待機し、デプロイが完了してから Amazon EC2 インスタンスをロードバランサーに再登録します。

# パートナーの製品とサービスとの統合
<a name="integrations-partners"></a>

CodeDeploy には、次のパートナー製品とサービスとの統合が組み込まれています。


|  |  | 
| --- |--- |
| Ansible |  すでに一連の [Ansible](http://www.ansible.com) プレイブックがあり、実行する場所が必要なだけの場合、Ansible と CodeDeploy のテンプレートは、いくつかのシンプルなデプロイフックによって Ansible をローカルデプロイインスタンスで使用し、プレイブックを実行できることを示します。すでにインベントリを構築して維持するためのプロセスが存在する場合、CodeDeploy エージェントのインストールと実行に使用できる Ansible モジュールもあります。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Atlassian - Bamboo と Bitbucket |  [Bamboo](https://www.atlassian.com/software/bamboo/) の CodeDeploy タスクは AppSpec ファイルを含むディレクトリを.zip ファイルに圧縮、ファイルを Amazon S3 にアップロードし、CodeDeploy アプリケーションで提供されている設定に従ってデプロイを開始します。 Atlassian Bitbucket での CodeDeploy のサポートにより、Bitbucket UI からコードを直接 Amazon EC2 インスタンスにプッシュしたり、オンデマンドで任意のデプロイグループにプッシュしたりできます。これは、Bitbucket リポジトリのコードを更新した後、手動でのデプロイプロセスを実行するために、継続的インテグレーション (CI) プラットフォーム、または Amazon EC2 インスタンスにサインインする必要がないことを意味します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Chef |  AWS には、[Chef](https://www.chef.io/) と CodeDeploy を統合するための 2 つのテンプレートサンプルが用意されています。1 つは CodeDeploy エージェントをインストールして起動する Chef クックブックです。これにより CodeDeploy を使用中に Chef でのホストインフラストラクチャの管理を継続することができます。2 番目のサンプルテンプレートでは、CodeDeploy を使用して、各ノードで chef-solo を使用してクックブックとレシピの実行を調整する方法を示します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| CircleCI |  [CircleCI](https://circleci.com/) では、自動化テスト、継続的な統合、およびデプロイのツールセットを提供します。CircleCI AWS で使用する IAM ロールを で作成し、circle.yml ファイルでデプロイパラメータを設定したら、CodeDeploy で CircleCI を使用してアプリケーションリビジョンを作成し、Amazon S3 バケットにアップロードしてから、デプロイを開始してモニタリングできます。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| CloudBees |  ビルド後のアクションとして、[CloudBees](https://www.cloudbees.com/) DEV@cloud で利用可能な CodeDeploy Jenkins プラグインを使用できます。例えば、継続的な配信パイプラインの終了時に、サーバー群にアプリケーションリビジョンをデプロイするために使用できます。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Codeship |  [Codeship](https://codeship.com/) を使用して、CodeDeploy 経由でアプリケーションリビジョンをデプロイできます。Codeship UI を使用して、ブランチのデプロイパイプラインに CodeDeploy を追加できます。 詳細はこちら:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| GitHub |  CodeDeploy を使用して、[GitHub](http://www.github.com) リポジトリからアプリケーションリビジョンをデプロイできます。そのリポジトリのソースコードが変更されるたびに、GitHub リポジトリからデプロイをトリガーすることもできます。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **HashiCorp Consul**  |  オープンソースの HashiCorp Consul ツールを使用して、CodeDeploy でアプリケーションをデプロイする時のアプリケーション環境の状態と安定性を確実にします。Consul を使用して、デプロイ中に検出されるアプリケーションを登録し、アプリケーションおよびノードをメンテナンスモードでデプロイから除外し、ターゲットのインスタンスに異常が生じた場合はデプロイを停止します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Jenkins |  CodeDeploy [Jenkins](http://jenkins-ci.org/) プラグインでは、Jenkins プロジェクトのビルド後のステップを示します。ビルドに成功すると、ワークスペースが圧縮されて Amazon S3 にアップロードされ、新しいデプロイが開始されます。 詳細はこちら:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Puppet Labs |  AWS には、[Puppet](https://puppetlabs.com/) と CodeDeploy のサンプルテンプレートが用意されています。最初のテンプレートは CodeDeploy エージェントをインストールして起動する Puppet モジュールです。これにより CodeDeploy を使用中に Puppet でのホストインフラストラクチャの管理を継続することができます。2 番目のサンプルテンプレートでは、CodeDeploy を使用してモジュールとマニフェストの実行を、各ノードのマスターレス puppet で調整する方法を示します。 詳細はこちら:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| SaltStack |  [SaltStack](https://saltproject.io/index.html) のインフラストラクチャを CodeDeploy と統合できます。CodeDeploy モジュールを使用して、ミニオンズに CodeDeploy エージェントをインストールして実行できます。または、いくつかのシンプルなデプロイフックを使用して、CodeDeploy で Salt States の実行を調整できます。 詳細はこちら:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **TeamCity**  |  CodeDeploy Runner プラグインを使用して、TeamCity からアプリケーションを直接デプロイできます。このプラグインは、アプリケーションリビジョンを準備して Amazon S3 バケットにアップロードし、CodeDeploy アプリケーションでリビジョンを登録し、CodeDeploy のデプロイを作成します。必要に応じて、デプロイが完了するまで待つ TeamCity のビルドステップを追加します。 詳細はこちら: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 
| Travis CI |  [Travis CI](https://travis-ci.com/) を設定して、ビルドが成功した後、CodeDeploy でデプロイメントをトリガーできます。 詳細はこちら:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [GitHub](integrations-partners-github.md)

# GitHub と CodeDeploy との統合
<a name="integrations-partners-github"></a>

CodeDeploy は、ウェブベースのコードホストおよび共有サービスである [GitHub](https://github.com/about) をサポートします。CodeDeploy は、GitHub リポジトリまたは Amazon S3 バケットに格納されているアプリケーションリビジョンをインスタンスにデプロイできます。CodeDeploy では、EC2 およびオンプレミスデプロイのみ GitHub がサポートされています。

**Topics**
+ [GitHub からの CodeDeploy リビジョンのデプロイ](#github-deployment-steps)
+ [CodeDeploy を使用した GitHub 動作](#github-behaviors)

## GitHub からの CodeDeploy リビジョンのデプロイ
<a name="github-deployment-steps"></a>

GitHub リポジトリからインスタンスへアプリケーションリビジョンをデプロイするには。

1. CodeDeploy およびデプロイする Amazon EC2 インスタンスタイプと互換性があるリビジョンを作成します。

   互換性のあるリビジョンを作成するには、[CodeDeploy のリビジョンを計画する](application-revisions-plan.md) および [CodeDeploy 用のアプリケーション仕様ファイルをリビジョンに追加](application-revisions-appspec-file.md) の手順に従います。

1. GitHub のアカウントを使用して、GitHub リポジトリにリビジョンを追加します。

   GitHub のアカウントを作成するには、「[GitHub への参加](https://github.com/join)」を参照してください。GitHub リポジトリを作成するには、「[Repo の作成](https://help.github.com/articles/create-a-repo/)」を参照してください。

1. CodeDeploy コンソールの**デプロイの作成**ページまたは AWS CLI **create-deployment** コマンドを使用して、GitHub リポジトリから CodeDeploy デプロイ用に設定されたターゲットインスタンスにリビジョンをデプロイします。

   **create-deployment** コマンドを呼び出す場合、最初にコンソールの [**デプロイの作成**] ページを使用して、指定したアプリケーションの推奨 GitHub アカウントの代わりに GitHub を操作するためのアクセス許可を CodeDeploy に付与します。これを行う必要があるのは、アプリケーションごとに 1 度だけです。

   [**Create deployment**] ページを使用して、GitHub レポジトリからデプロイする方法については、「[CodeDeploy でデプロイを作成する](deployments-create.md)」を参照してください。

   **create-deployment** コマンドを呼び出して GitHub レポジトリからデプロイする方法については、「[EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)」を参照してください。

   CodeDeploy デプロイで使用するためインスタンスを準備する方法については、「[CodeDeploy のためにインスタンスを用いた操作](instances.md)」を参照してください。

詳細については、「[チュートリアル: CodeDeploy を使用して、GitHub からアプリケーションをデプロイします。](tutorials-github.md)」を参照してください。

## CodeDeploy を使用した GitHub 動作
<a name="github-behaviors"></a>

**Topics**
+ [CodeDeploy のアプリケーションを使用した GitHub の認証](#behaviors-authentication)
+ [プライベートおよびパブリックな GitHub リポジトリとの CodeDeploy のやり取り](#behaviors-interactions-private-and-public)
+ [CodeDeploy と組織マネージド型の GitHub リポジトリのやり取り](#behaviors-interactions-organization-managed)
+ [CodeDeploy を使用して CodePipeline から自動的にデプロイする](#behaviors-deploy-automatically)

### CodeDeploy のアプリケーションを使用した GitHub の認証
<a name="behaviors-authentication"></a>

GitHub を操作するためのアクセス許可を CodeDeploy に付与すると、GitHub アカウントとアプリケーションの間の関連付けが CodeDeploy に格納されます。GitHub の他のアカウントにアプリケーションをリンクできます。また、GitHub を操作するための CodeDeploy に対するアクセス許可を取り消すこともできます。

**GitHub アカウントを CodeDeploy のアプリケーションにリンクするには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) で CodeDeploy コンソールを開きます。
**注記**  
「[CodeDeploy の開始方法](getting-started-codedeploy.md)」で設定したのと同じユーザーでサインインします。

1. ナビゲーションペインで [**デプロイ**] を展開し、[**アプリケーション**] を選択します。

1. 別の GitHub アカウントにリンクするアプリケーションを選択します。

1. アプリケーションにデプロイグループがない場合は、[**デプロイグループの作成**] を選択してグループを作成します。詳細については、「[CodeDeploy でデプロイグループを作成する](deployment-groups-create.md)」を参照してください。次のステップで [**デプロイの作成**] を選択するには、デプロイグループが必要です。

1.  [**デプロイ**] から、[**デプロイの作成**] を選択します。
**注記**  
新しいデプロイを作成する必要はありません。これは現在 GitHub の他のアカウントをアプリケーションにリンクする唯一の方法です。

1.  [**デプロイ設定**] の [**リビジョンタイプ**] で、[**アプリケーションは GitHub に格納されています**] を選択します。

1. 次のいずれかを行います。
   + GitHub アカウントへの AWS CodeDeploy アプリケーションの接続を作成するには、別のウェブブラウザタブで GitHub からサインアウトします。[**GitHub token name (GitHub トークン名)**] に、この接続を識別する名前を入力し、[**GitHub に接続**] を選択します。アプリケーションの GitHub を操作することを CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 10 に進みます。
   + 作成済みの接続を使用するには、その名前を [**GitHub token name (GitHub トークン名)**] で選択してから [**GitHub に接続**] を選択します。ステップ 8 に進みます。
   + 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[**GitHub token name (GitHub トークン名)**] に、接続を識別する名前を入力し、[**GitHub に接続**] を選択します。アプリケーションの GitHub を操作することを CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 10 に進みます。

1. GitHub にまだサインインしていない場合は、[**Sign in**] ページの手順に従い、アプリケーションをリンクする GitHub アカウントにサインインします。

1. [**Authorize application**] を選択します。GitHub は指定したアプリケーションの署名 GitHub アカウントの代わりに、CodeDeploy に GitHub を操作するアクセス許可を付与します。

1. デプロイを作成しない場合は、[**Cancel**] を選択します。

**CodeDeploy が GitHub を操作するためのアクセス許可を取り消すには**

1.  AWS CodeDeploy アクセス許可を取り消したい GitHub アカウントの認証情報を使用して、[GitHub](https://github.com/dashboard) にサインインします。

1. GitHub の [[Applications](https://github.com/settings/applications)] ページを開いて、承認されたアプリケーションのリストで [**CodeDeploy**] を見つけ、アプリケーションの承認取り消しの GitHub の手順に従います。

### プライベートおよびパブリックな GitHub リポジトリとの CodeDeploy のやり取り
<a name="behaviors-interactions-private-and-public"></a>

CodeDeploy は、プライベートおよびパブリックの GitHub リポジトリからのアプリケーションのデプロイをサポートします。ユーザーに代わって GitHub にアクセスするアクセス許可を CodeDeploy に付与した場合、CodeDeploy は、そのユーザーの GitHub アカウントがアクセス権を持つすべてのプライベート GitHub リポジトリに対して読み取り/書き込みアクセス権を持ちます。ただし、CodeDeploy は、GitHub リポジトリからのみ読み込みます。プライベート GitHub のリポジトリに書き込むことはありません。

### CodeDeploy と組織マネージド型の GitHub リポジトリのやり取り
<a name="behaviors-interactions-organization-managed"></a>

デフォルトでは、組織によって管理される GitHub リポジトリ (アカウントのプライベートまたはパブリックリポジトリとは対照的に) は、CodeDeploy を含め、サードパーティアプリケーションへのアクセスを許可しません。デプロイは、組織によるサードパーティアプリケーション制限が GitHub で有効化され、GitHub リポジトリからコードをデプロイしようとすると失敗します。この問題を解決する 2 つの方法があります。
+ 組織のメンバーとして、組織の所有者に CodeDeploy へのアクセスを承認するように要求できます。このアクセスをリクエストする手順は、個々のアカウントに対して、すでに CodeDeploy を認証済みかどうかによって異なります。
  + ユーザーのアカウントに CodeDeploy への認証済みアクセス権がある場合は、「[組織への認証済みアプリケーションの承認リクエスト](https://help.github.com/articles/requesting-organization-approval-for-your-authorized-applications/)」を参照してください。
  + ユーザーのアカウントに CodeDeploy への承認済みアクセス権がまだない場合は、「[組織へのサードパーティアプリケーションの承認リクエスト](https://help.github.com/articles/requesting-organization-approval-for-third-party-applications/)」を参照してください。
+ 組織の所有者は、組織に対するサードパーティアプリケーションの制限を無効にできます。詳細については、「[組織に対するサードパーティアプリケーションの制限の無効化](https://help.github.com/articles/disabling-third-party-application-restrictions-for-your-organization/)」を参照してください。

詳細については、「[サードパーティアプリケーションの制限について](https://help.github.com/articles/about-third-party-application-restrictions/)」を参照してください。

### CodeDeploy を使用して CodePipeline から自動的にデプロイする
<a name="behaviors-deploy-automatically"></a>

ソースコードが変わるたびに CodePipeline からデプロイをトリガーできます。詳細については、「[CodePipeline](https://aws.amazon.com/codepipeline/)」を参照してください。

# コミュニティから統合の例
<a name="integrations-community"></a>

以下のセクションは、ブログの投稿や記事、およびコミュニティで提供されている例へのリンクです。

**注記**  
これらのリンクは、情報提供のみを目的として提供されており、包括的なリストまたはコンテンツの例の内容を推奨するものではありません。 AWS は、外部コンテンツの内容または正確性について責任を負いません。

## ブログ記事
<a name="integrations-community-blogposts"></a>
+ [での CodeDeploy プロビジョニングの自動化 CloudFormation](http://www.stelligent.com/cloud/automating-aws-codedeploy-provisioning-in-cloudformation/)

   CloudFormationを使用して、CodeDeploy でアプリケーションのデプロイをプロビジョニングする方法について説明します。

  *2016 年 1 月投稿*
+ [AWS Toolkit for Eclipse CodeDeploy との統合 (パート 1)](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-1/)

  [AWS Toolkit for Eclipse CodeDeploy との統合 (パート 2)](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-2/)

  [AWS Toolkit for Eclipse CodeDeploy との統合 (パート 3)](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-3/)

  Java 開発者が CodeDeploy plugin for Eclipse を使用して、ウェブアプリケーションを Eclipse 開発環境 AWS から直接 にデプロイする方法について説明します。

  *2015 年 2 月投稿*
+ [CodeDeploy を使用した GitHub からの自動的なデプロイ](https://aws.amazon.com/blogs/devops/automatically-deploy-from-github-using-aws-codedeploy/)

  GitHub から CodeDeploy への自動デプロイを使用して、ソース管理からテストまたは本番環境に至るまでのエンドツーエンドのパイプラインを作成する方法をご覧ください。

  * 2014 年 12 月投稿*