403
AWS CodeDeploy ユーザーガイド API バージョン 2014-10-06

AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

Embed Size (px)

Citation preview

Page 1: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeployユーザーガイド

API バージョン 2014-10-06

Page 2: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

AWS CodeDeploy: ユーザーガイドCopyright © 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

Page 3: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

Table of ContentsAWS CodeDeploy とは ....................................................................................................................... 1

AWS CodeDeploy の概要のビデオ ................................................................................................ 1AWS CodeDeploy の利点 ............................................................................................................ 1AWS CodeDeploy コンピューティングプラットフォームを選択します。 の概要 .................................. 2AWS CodeDeploy デプロイタイプの概要 ....................................................................................... 3

インプレースデプロイの概要 ................................................................................................ 4Blue/Green デプロイの概要 .................................................................................................. 5

ご意見をお待ちしております ........................................................................................................ 7プライマリコンポーネント ........................................................................................................... 8デプロイ .................................................................................................................................. 10

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイ ........................ 10EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ .................. 13

アプリケーション仕様ファイル ................................................................................................... 18AWS Lambda コンピューティングプラットフォームの AppSpec ファイル ................................ 18EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイル ........................... 18AWS CodeDeploy エージェントが AppSpec ファイルを使用する方法 ...................................... 19

ご利用開始にあたって ....................................................................................................................... 20ステップ 1: IAM ユーザーをプロビジョニングする ......................................................................... 20ステップ 2: インストールまたはアップグレードしてから、AWS CLI を設定する ................................ 21ステップ 3: サービスロールを作成する ........................................................................................ 22

サービスロールの作成 (コンソール) ..................................................................................... 22サービスロールの作成 (CLI) ............................................................................................... 24サービスロール ARN の取得 (コンソール) ............................................................................ 26サービスロール ARN の取得 (CLI) ....................................................................................... 26

ステップ 4: IAM インスタンスプロファイルを作成する ................................................................... 26Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI) ............................. 27Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (コンソール) ................... 29

ステップ 5: サンプルデプロイウィザードを試す ............................................................................ 30前提条件 .......................................................................................................................... 31AWS CodeDeploy でサンプル Blue/Green デプロイを試す ...................................................... 33AWS CodeDeploy でサンプルインプレースデプロイを試す ..................................................... 36

製品とサービスの統合 ....................................................................................................................... 42他の AWS のサービスとの統合 ................................................................................................... 42

Auto Scaling ..................................................................................................................... 46Elastic Load Balancing ...................................................................................................... 49

パートナーの製品とサービスとの統合 .......................................................................................... 51GitHub ............................................................................................................................. 55

コミュニティから統合の例 ......................................................................................................... 58ブログ投稿 ....................................................................................................................... 58動画 ................................................................................................................................ 59

チュートリアル ................................................................................................................................. 60チュートリアル: WordPress を Windows 以外のインスタンスへデプロイする .................................... 60

ステップ 1: Amazon EC2 インスタンスを起動する ................................................................ 61ステップ 2: ソース コンテンツを設定する ............................................................................ 63ステップ 3: Amazon S3 にアプリケーションをアップロードする ............................................. 67手順 4: アプリケーションをデプロイする ............................................................................. 70ステップ 5: アプリケーションを更新して再デプロイする ........................................................ 75ステップ 6: クリーンアップ ............................................................................................... 77

チュートリアル: Windows Server インスタンスへの HelloWorld アプリケーションのデプロイ .............. 80ステップ 1: Amazon EC2 インスタンスを起動する ................................................................ 80ステップ 2: ソース コンテンツを設定する ............................................................................ 81ステップ 3: Amazon S3 にアプリケーションをアップロードする ............................................. 84手順 4: アプリケーションをデプロイする ............................................................................. 87ステップ 5: アプリケーションを更新して再デプロイする ........................................................ 91

API バージョン 2014-10-06iii

Page 4: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

ステップ 6: クリーンアップ ............................................................................................... 93チュートリアル: オンプレミスインスタンスへのアプリケーションのデプロイ .................................... 95

前提条件 .......................................................................................................................... 96ステップ 1: オンプレミスインスタンスを設定する ................................................................. 96ステップ 2: サンプルのアプリケーションリビジョンを作成する ............................................... 96ステップ 3: アプリケーションリビジョンをバンドルし、Amazon S3 にアップロードする .......... 100ステップ 4: アプリケーションリビジョンをデプロイする ...................................................... 100ステップ 5: デプロイを確認する ........................................................................................ 100ステップ 6: リソースをクリーンアップする ........................................................................ 100

チュートリアル: Auto Scaling グループへのデプロイ .................................................................... 102前提条件 ........................................................................................................................ 102ステップ 1: Auto Scaling グループを作成して設定する ......................................................... 102ステップ 2: Auto Scaling グループにアプリケーションをデプロイする .................................... 108ステップ 3: 結果の確認 .................................................................................................... 113ステップ 4: Auto Scaling グループで Amazon EC2 インスタンスの数を増やす ......................... 115ステップ 5: 結果を再度確認します ..................................................................................... 116ステップ 6: クリーンアップ .............................................................................................. 117

チュートリアル: GitHub からアプリケーションをデプロイする ...................................................... 118前提条件 ........................................................................................................................ 119ステップ 1: GitHub アカウントを設定する .......................................................................... 119ステップ 2: GitHub リポジトリを作成する .......................................................................... 119ステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする ...................... 121ステップ 4: インスタンスをプロビジョニングする ............................................................... 124ステップ 5: アプリケーションおよびデプロイグループの作成 ................................................ 124ステップ 6: アプリケーションをインスタンスにデプロイする ................................................ 126ステップ 7: デプロイをモニタリングおよび確認する ............................................................ 128ステップ 8: クリーンアップ .............................................................................................. 129

AWS CodeDeploy エージェントの使用 ............................................................................................... 132AWS CodeDeploy エージェントでサポートされているオペレーティングシステム ............................. 132

サポートされる Amazon EC2 AMI オペレーティングシステム ............................................... 132サポートされているオンプレミスオペレーティングシステム .................................................. 133

AWS CodeDeploy エージェントの通信プロトコルとポート ........................................................... 133AWS CodeDeploy エージェントに対する AWS SDK for Ruby (aws-sdk-core) のサポート ................... 133サポートされているバージョンの AWS CodeDeploy エージェント ................................................. 133アプリケーションリビジョンとログファイルのクリーンアップ ....................................................... 136AWS CodeDeploy エージェントがインストールしたファイル ........................................................ 137AWS CodeDeploy エージェントのオペレーションの管理 .............................................................. 139

AWS CodeDeploy エージェントの実行の確認 ...................................................................... 139AWS CodeDeploy エージェントのバージョンの特定 ............................................................ 141AWS CodeDeploy エージェントのインストールまたは再インストール .................................... 142AWS CodeDeploy エージェントの更新 ............................................................................... 148AWS CodeDeploy エージェントのアンインストール ............................................................ 153

インスタンスの使用 ......................................................................................................................... 154Amazon EC2 インスタンスとオンプレミスインスタンスの比較 ...................................................... 154AWS CodeDeploy のインスタンスタスク .................................................................................... 155AWS CodeDeploy デプロイのインスタンスにタグを付ける ........................................................... 156

例 1: 単一タググループ、単一タグ ..................................................................................... 157例 2: 単一タググループ、複数タグ ..................................................................................... 157例 3: 複数タググループ、複数タグ ..................................................................................... 158例 4: 複数タググループ、複数タグ ..................................................................................... 160

Amazon EC2 インスタンスの使用 ............................................................................................. 163Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソール) ......................... 163Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレート) .................................. 169Amazon EC2 インスタンスの設定 ..................................................................................... 176

オンプレミスインスタンスの使用 .............................................................................................. 179オンプレミスインスタンスを設定するための前提条件 ........................................................... 180オンプレミスインスタンスの登録 ...................................................................................... 181

API バージョン 2014-10-06iv

Page 5: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

オンプレミスインスタンスのオペレーションの管理 .............................................................. 201インスタンスの詳細の表示 ........................................................................................................ 206

インスタンスの詳細の表示 (コンソール) ............................................................................. 207インスタンスの詳細の表示 (CLI) ........................................................................................ 207

インスタンスの状態 ................................................................................................................. 208ヘルスステータス ............................................................................................................ 209正常なインスタンスとデプロイの最小数 ............................................................................. 210

デプロイ設定の使用 ......................................................................................................................... 212EC2/オンプレミスコンピューティングプラットフォームのデプロイ設定 ......................................... 212

事前定義されたデプロイ設定 ............................................................................................. 212AWS Lambda コンピューティングプラットフォームのデプロイ設定 .............................................. 214

事前定義されたデプロイ設定 ........................................................................................... 215............................................................................................................................................ 215

デプロイ設定を作成する ........................................................................................................... 216デプロイ設定の詳細の表示 ........................................................................................................ 216

デプロイ設定の詳細の表示 (コンソール) ............................................................................. 217デプロイ設定の表示 (CLI) ................................................................................................. 217

デプロイ設定を削除する ........................................................................................................... 217アプリケーションの使用 ................................................................................................................... 218

アプリケーションを作成します。 .............................................................................................. 218インプレースデプロイ (コンソール) 用のアプリケーションを作成 ........................................... 220Blue/Green デプロイ (コンソール) のアプリケーションを作成します。 ................................... 221AWS Lambda 関数デプロイ用のアプリケーションを作成 (コンソール) ................................... 224アプリケーションの作成 (CLI) ........................................................................................... 225

アプリケーションの詳細を表示する ........................................................................................... 226アプリケーションの詳細を表示する (コンソール) ................................................................. 226アプリケーションの詳細を表示する (CLI) ........................................................................... 226

アプリケーションの名前を変更する ........................................................................................... 227アプリケーションの削除 ........................................................................................................... 227

アプリケーションの削除 (コンソール) ................................................................................ 227アプリケーション (AWS CLI) の削除 .................................................................................. 228

デプロイグループの使用 ................................................................................................................... 229AWS Lambda コンピューティングプラットフォームのデプロイでのデプロイグループ ...................... 229EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイでのデプロイグループ ................................................................................................................................... 229............................................................................................................................................ 230

デプロイグループの作成 ........................................................................................................... 230インプレースデプロイ用のデプロイグループを作成する (コンソール) ..................................... 230Blue/Green デプロイ用のデプロイグループを作成する (コンソール) ....................................... 232AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する ............... 234デプロイグループの作成 (CLI) ........................................................................................... 235

デプロイグループの詳細の表示 ................................................................................................. 236デプロイグループの詳細の表示 (コンソール) ....................................................................... 236デプロイグループの詳細の表示 (CLI) .................................................................................. 236

デプロイグループの設定を変更する ........................................................................................... 237デプロイグループの設定 (コンソール) を変更する ................................................................ 237デプロイグループの設定 (CLI) を変更する .......................................................................... 238

デプロイグループの詳細オプションの設定 .................................................................................. 239デプロイグループの削除 ........................................................................................................... 240

デプロイグループ (コンソール) を削除する ......................................................................... 240デプロイグループ (CLI) の削除 .......................................................................................... 241

アプリケーションリビジョンの操作 ................................................................................................... 242リビジョンの計画を立てる ........................................................................................................ 242AppSpec File の追加 ............................................................................................................... 243

AWS Lambda デプロイ向けに AppSpec ファイルを追加する ................................................. 243EC2/オンプレミス デプロイ用に AppSpec ファイルを追加する .............................................. 244

レポジトリタイプの選択 ........................................................................................................... 247

API バージョン 2014-10-06v

Page 6: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

リビジョンをプッシュする ........................................................................................................ 248AWS CLI を使用してリビジョンをプッシュする .................................................................. 250

アプリケーションリビジョンの詳細の表示 .................................................................................. 251アプリケーションリビジョンの詳細の表示 (コンソール) ........................................................ 251アプリケーションリビジョンの詳細の表示 (CLI) .................................................................. 252

アプリケーションリビジョンの登録 ........................................................................................... 253Amazon S3 での AWS CodeDeploy によるリビジョンの登録 (CLI) ......................................... 253AWS CodeDeploy による GitHub でのリビジョンの登録 (CLI) ............................................... 254

デプロイでの作業 ............................................................................................................................ 255デプロイの作成 ....................................................................................................................... 256

デプロイの前提条件 ......................................................................................................... 256AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) .......................................................................................................................... 258EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) ....................................................................................................................... 260AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI) ..... 263EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成(CLI) .............................................................................................................................. 264

デプロイの詳細の表示 .............................................................................................................. 266デプロイの詳細の表示 (コンソール) ................................................................................... 266デプロイの詳細の表示 (CLI) .............................................................................................. 267

デプロイのログデータの表示 ..................................................................................................... 267Amazon CloudWatch コンソールでのログファイルデータの表示 ............................................ 267インスタンスでのログファイルの表示 ................................................................................ 268

デプロイの停止 ....................................................................................................................... 270デプロイ (コンソール) の停止 ........................................................................................... 270デプロイ (CLI) の停止 ...................................................................................................... 270

デプロイを使用した再デプロイおよびロールバック ...................................................................... 271自動ロールバック ............................................................................................................ 271手動ロールバック ............................................................................................................ 271ロールバックおよび再デプロイのワークフロー .................................................................... 271既存のコンテンツでのロールバック動作 ............................................................................. 272

異なる AWS アカウントでアプリケーションをデプロイする .......................................................... 274ステップ 1: どちらかのアカウントで S3 バケットを作成する ................................................ 275ステップ 2: Amazon S3 バケットのアクセス許可を Production アカウントの IAM インスタンスプロファイルに付与します。 ............................................................................................. 275ステップ 3: Production アカウントで、リソースやクロスアカウントのロールを作成します。 ..... 276ステップ 4: Amazon S3 バケットにアプリケーションリビジョンをアップロードする ................ 277ステップ 5: クロスアカウントロールを引き受け、アプリケーションをデプロイする .................. 277

ローカルマシン上のデプロイパッケージの検証 ............................................................................ 277前提条件 ........................................................................................................................ 278ローカルのデプロイを作成する。 ...................................................................................... 279例 ................................................................................................................................. 281

デプロイのモニタリング ................................................................................................................... 283自動化ツール .......................................................................................................................... 283手動ツール ............................................................................................................................. 284Amazon CloudWatch ツールを使用したデプロイのモニタリング .................................................... 285

CloudWatch アラームを使用してデプロイをモニタリングする ............................................... 285Amazon CloudWatch Events を使用したデプロイのモニタリング ........................................... 286

AWS CloudTrail を使用したデプロイのモニタリング .................................................................... 289CloudTrail での AWS CodeDeploy 情報 .............................................................................. 289AWS CodeDeploy ログファイルエントリの概要 ................................................................... 290

Amazon SNS イベント通知を使用したデプロイのモニタリング ..................................................... 291サービス ロールへの Amazon SNS アクセス許可の付与 ........................................................ 292AWS CodeDeploy イベントのトリガーを作成 ...................................................................... 293デプロイグループのトリガーの編集 ................................................................................... 297デプロイグループからトリガーを削除 ................................................................................ 299

API バージョン 2014-10-06vi

Page 7: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

トリガーの JSON データの形式 ........................................................................................ 300認証とアクセスコントロール ............................................................................................................. 302

認証 ...................................................................................................................................... 302アクセスコントロール .............................................................................................................. 303アクセス管理の概要 ................................................................................................................. 303

リソースおよびオペレーション ......................................................................................... 304リソース所有権について ................................................................................................... 305リソースへのアクセスの管理 ............................................................................................. 305ポリシー要素の指定 : アクション、効果、プリンシパル ........................................................ 307ポリシーでの条件の指定 ................................................................................................... 308

アイデンティティベースのポリシー (IAM ポリシー) を使用する ..................................................... 308AWS CodeDeploy コンソールを使用するために必要なアクセス権限 ....................................... 309AWS CodeDeploy の AWS 管理 (定義済み) ポリシー ............................................................ 309お客様が管理するポリシーの例 ......................................................................................... 310

AWS CodeDeploy のアクセス権限のリファレンス ....................................................................... 312AppSpec ファイルのリファレンス ..................................................................................................... 319

AWS Lambda コンピューティングプラットフォームの AppSpec ファイル ....................................... 319EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイル ................................. 319AppSpec File の構造 ............................................................................................................... 320

AWS Lambda のデプロイ向けの AppSpec ファイル構造 ....................................................... 320EC2/オンプレミス のデプロイ向けの AppSpec ファイル構造 ................................................. 321AppSpec の「files」セクション (EC2/オンプレミス のデプロイのみ) ...................................... 322AppSpec の「resources」セクション (AWS Lambda のデプロイのみ) ..................................... 325AppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ) ............................ 326AppSpec の「hooks」セクション ...................................................................................... 330

AppSpec File の例 .................................................................................................................. 339AWS Lambda のデプロイ向けの AppSpec File の例 ............................................................ 340EC2/オンプレミス のデプロイ向けの AppSpec File の例 ...................................................... 341

AppSpec File の間隔 ............................................................................................................... 342AppSpec File の検証とファイルの場所 ....................................................................................... 343

エージェント設定リファレンス ......................................................................................................... 344関連トピック .......................................................................................................................... 346

AWS CloudFormation テンプレートリファレンス ................................................................................. 347リソース キットのリファレンス ........................................................................................................ 349

リージョン別リソースキットバケット名 ..................................................................................... 349リソースキットの内容 .............................................................................................................. 350リソースキットのファイルのリストの表示 .................................................................................. 351リソースキットのファイルのダウンロード .................................................................................. 352

制限 .............................................................................................................................................. 354アプリケーション .................................................................................................................... 354アプリケーションリビジョン ..................................................................................................... 354デプロイ ................................................................................................................................ 355デプロイ設定 .......................................................................................................................... 356デプロイグループ .................................................................................................................... 356インスタンス .......................................................................................................................... 357

トラブルシューティング ................................................................................................................... 358一般的なトラブルシューティングの問題 ..................................................................................... 358

一般的なトラブルシューティングのチェックリスト .............................................................. 358AWS CodeDeploy デプロイリソースは、特定のリージョンでのみサポートされています。 ......... 359必要な IAM ロールを取得できない ..................................................................................... 360同じ Amazon EC2 インスタンスへの同時デプロイは避ける ................................................... 360何らかのテキストエディタを使用して AppSpec ファイルとシェルスクリプトを作成すると、デプロイが失敗する場合がある ............................................................................................. 361macOS の Finder を使用してアプリケーションリビジョンをバンドルすると、デプロイが失敗することがある .................................................................................................................. 361

EC2/オンプレミス のデプロイ問題のトラブルシューティング ........................................................ 362「PKCS7 署名メッセージの検証に失敗しました」というメッセージでデプロイが失敗する ........ 362

API バージョン 2014-10-06vii

Page 8: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

同じデプロイ先のインスタンスに対する同じファイルのデプロイや再デプロイは失敗し、「指定したファイルはこの場所に既に存在するため、デプロイに失敗しました」というエラーが返されます。 ........................................................................................................................... 362AllowTraffic ライフサイクルイベントが失敗し、デプロイログにエラーが報告されない場合のトラブルシューティング ...................................................................................................... 364失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング ................................................................................ 364「不明なエラー: 読み取り用に開いていません」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング .......................................................................... 365Windows PowerShell スクリプトで、デフォルトで 64 ビットバージョンの Windows PowerShellスクリプトを使用できない ................................................................................................ 366長時間実行されているプロセスにより、デプロイが失敗することがある .................................. 367

AWS Lambda のデプロイ問題のトラブルシューティング .............................................................. 368設定されたロールバックがない場合に Lambda デプロイを手動で停止すると、AWS Lambda デプロイは失敗します。 ...................................................................................................... 368

デプロイグループの問題のトラブルシューティング ...................................................................... 369デプロイグループの一部としてインスタンスにタグを付けても、アプリケーションが自動的に新しいインスタンスにデプロイされない ................................................................................ 369

インスタンスの問題のトラブルシューティング ............................................................................ 369タグは正しく設定する必要がある ...................................................................................... 369AWS CodeDeploy エージェントをインスタンスにインストールして実行する必要がある ............ 369デプロイ中にインスタンスを削除した場合、デプロイは最大 1 時間は失敗しません。 ............... 370ログファイルの分析によるインスタンスでのデプロイの失敗の調査 ........................................ 370誤って削除した場合は、新しい AWS CodeDeploy ログファイルを作成します。 ....................... 370「InvalidSignatureException – Signature expired: [time] is now earlier than [time]」デプロイエラーのトラブルシューティング ......................................................................................... 370

GitHub トークンの問題のトラブルシューティング ........................................................................ 371GitHub OAuth トークンが無効です .................................................................................... 371GitHub OAuth トークンの最大数を超えました ..................................................................... 371

Auto Scaling の問題のトラブルシューティング ............................................................................ 371一般的な Auto Scaling のトラブルシューティング ................................................................ 371Auto Scaling グループのインスタンスのプロビジョニングと終了が繰り返されてリビジョンをデプロイできない ............................................................................................................... 372Auto Scaling インスタンスの削除または再起動すると、デプロイが失敗する場合がある ............. 373複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける .................. 373Auto Scaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビートのタイムアウト」というエラーが表示される ................................................................................... 374不一致の Auto Scaling ライフサイクルフックにより、Auto Scaling グループへの自動デプロイが停止または失敗する場合がある ...................................................................................... 375

エラーコード .......................................................................................................................... 376関連トピック .................................................................................................................. 378

リソース ........................................................................................................................................ 379リファレンスガイドとサポートリソース ..................................................................................... 379サンプル ................................................................................................................................ 379ブログ ................................................................................................................................... 379AWS ソフトウェア開発キット、ツール ...................................................................................... 379

ドキュメント履歴 ............................................................................................................................ 381AWS の用語集 ................................................................................................................................ 395

API バージョン 2014-10-06viii

Page 9: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy の概要のビデオ

AWS CodeDeploy とはAWS CodeDeploy は、Amazon EC2 インスタンスやオンプレミスインスタンス、サーバーレス Lambda関数に対するアプリケーションのデプロイを自動化するデプロイメントサービスです。

コード、サーバーレス AWS Lambda 関数、ウェブファイル、設定ファイル、実行可能ファイル、パッケージ、スクリプト、マルチメディアファイルなど、ほぼ無制限の多様なアプリケーションコンテンツをデプロイできます。AWS CodeDeploy では、サーバーで実行され、Amazon S3 バケット、GitHub リポジトリ、または Bitbucket リポジトリに保存されているアプリケーションコンテンツをデプロイできます。AWS CodeDeploy では、サーバーレス Lambda 関数をデプロイすることもできます。既存のコードを変更することなく AWS CodeDeploy を使用できます。

AWS CodeDeploy を使用すると、以下を容易に行うことができます。

• 新機能の迅速なリリース。• AWS Lambda 関数のバージョンの更新。• アプリケーションのデプロイメント中のダウンタイム回避。• アプリケーションの更新に伴う繁雑さを処理。エラーの発生しやすい手動デプロイに伴うリスクの多く

を回避できます。

サービスはインフラストラクチャに合わせてスケールするため、1 つのインスタンスまたは数千のインスタンスに簡単にデプロイできます。

AWS CodeDeploy は、設定管理、ソース管理、継続的統合、継続的配信、継続的なデプロイのための様々なシステムで動作します。詳細については、製品の統合を参照してください。

トピック• AWS CodeDeploy の概要のビデオ (p. 1)• AWS CodeDeploy の利点 (p. 1)• AWS CodeDeploy コンピューティングプラットフォームを選択します。 の概要 (p. 2)• AWS CodeDeploy デプロイタイプの概要 (p. 3)• ご意見をお待ちしております (p. 7)• AWS CodeDeploy プライマリコンポーネント (p. 8)• AWS CodeDeploy デプロイ (p. 10)• AWS CodeDeploy アプリケーション仕様ファイル (p. 18)

AWS CodeDeploy の概要のビデオこの短い動画 (2:10) は、AWS CodeDeploy が Amazon EC2 インスタンスへのコードのデプロイを自動化し、新しい機能をより簡単かつ迅速にリリースし、デプロイ中のダウンタイムを排除し、エラーが発生しやすい手動操作の必要性を回避する方法について説明しています。

AWS CodeDeploy デプロイの動画チュートリアル。

AWS CodeDeploy の利点AWS CodeDeploy は、次の利点を提供します。

API バージョン 2014-10-061

Page 10: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy コンピューティング

プラットフォームを選択します。 の概要

• サーバーアプリケーションとサーバーレスアプリケーション。AWS CodeDeploy では、サーバーおよびアプリケーションの両方で従来のアプリケーションをデプロイし、サーバーレス AWS Lambda 関数のバージョンをデプロイすることができます。

• 自動デプロイ。AWS CodeDeploy は、開発、テスト、本稼働環境で、アプリケーションのデプロイを完全に自動化します。AWS CodeDeploy は、1 つのインスタンスまたは数千のインスタンスにデプロイできるようにインフラストラクチャをスケーリングします。

• ダウンタイムの最小化。AWS CodeDeploy は、アプリケーションの可用性を最大化します。インプレースデプロイの間に、AWS CodeDeploy は、Amazon EC2 インスタンスにまたがってローリング更新を実行します。更新のために、一度にオフラインにするインスタンスの数を指定できます。Blue/Green デプロイの間、最新アプリケーションのリビジョンは、置き換え先インスタンスにインストールされ、トラフィックは、選択するとすぐに、または新しい環境のテストが完了した時点で、これらのインスタンスに再ルーティングされます。どちらのデプロイタイプでも、AWS CodeDeploy は設定したルールに従ってアプリケーションの状態を追跡します。

• 停止してロールバック。エラーが発生した場合、自動または手動でデプロイを停止してロールバックできます。

• コントロールの一元化。AWS CodeDeploy コンソールまたは AWS CLI によって、デプロイのステータスを起動および追跡できます。各アプリケーションのリビジョンがいつデプロイされ、どの AmazonEC2 インスタンスがリストされているかを示すレポートを受け取ります。

• 導入が簡単。AWS CodeDeploy は、プラットフォームに依存せず、すべてのアプリケーションで動作します。セットアップコードを簡単に再利用できます。AWS CodeDeploy は、ソフトウェアリリースプロセスまたは継続的な配信ツールチェーンと統合できます。

AWS CodeDeploy コンピューティングプラットフォームを選択します。 の概要

AWS CodeDeploy では、アプリケーションを 2 つの コンピューティングプラットフォームを選択します。 にデプロイできます。

• EC2/オンプレミス: Amazon EC2 クラウドインスタンス、オンプレミスサーバー、またはその両方を指定することができる物理サーバーのインスタンスについて説明します。EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用して作成されたアプリケーションは、実行可能ファイル、設定ファイル、イメージなどで構成できます。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでは、インプレイスまたは Blue/Green デプロイタイプを使用して、トラフィックをインスタンスに振り分ける方法を管理できます。詳細については、「AWS CodeDeploy デプロイタイプの概要 (p. 3)」を参照してください。

• AWS Lambda: Lambda 関数の更新バージョンで構成されるアプリケーションのデプロイに使用されます。AWS Lambda は、高可用性コンピューティング構造で構成されるサーバーレスコンピューティング環境で Lambda 関数を管理します。コンピューティングリソースはすべて、AWS Lambda によって管理されます。詳細については、「サーバーレスコンピューティングとアプリケーション」を参照してください。AWS Lambda 関数および Lambda 関数の詳細については、「AWS Lambda」を参照してください。

AWS Lambda コンピューティングプラットフォームを選択します。 を使用して作成されるアプリケーションは、Canary 設定、線形設定、または一度にすべての設定を選択して、デプロイ中に更新されたLambda 関数のバージョンにトラフィックが振り分けられる方法を管理できます。

次の表に、AWS CodeDeploy コンポーネントが各 コンピューティングプラットフォームを選択します。で使用される様子を示します。

API バージョン 2014-10-062

Page 11: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy デプロイタイプの概要

AWS CodeDeploy コンポーネント

EC2/オンプレミス AWS Lambda

デプロイグループ 新しいリビジョンがデプロイされるインスタンスのセットをデプロイします。

可用性の高いコンピューティングインフラストラクチャで Lambda 関数のバージョンをデプロイします。

デプロイメント アプリケーションと AppSpec ファイルから構成される新しいリビジョンをデプロイします。AppSpec は、アプリケーションをデプロイグループのインスタンスにデプロイする方法を指定します。

AppSpec ファイルから構成される新しいリビジョンをデプロイします。AppSpec は、デプロイするLambda 関数のバージョンを指定します。

デプロイ設定 デプロイの速度と、デプロイ中にいつでも使用できる必要のある正常なインスタンスの最小数を決定する設定。

更新された Lambda 関数バージョンにトラフィックを移行する方法を決定する設定。

Revision AppSpec ファイルとアプリケーションファイルの組み合わせ (例: 実行ファイル、設定ファイル)。

デプロイして更新する Lambda 関数を指定する AppSpec ファイル。

アプリケーション デプロイグループおよびリビジョンのコレクション。EC2/オンプレミスアプリケーションでは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用します。

リビジョンのコレクション。Lambda アプリケーションでは、AWS Lambda コンピューティングプラットフォームを選択します。 を使用します。

AWS CodeDeploy デプロイタイプの概要AWS CodeDeploy には、2 つのデプロイタイプのオプションがあります。

• インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。インプレイスデプロイは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでのみ使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要 (p. 4)」を参照してください。

Note

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイでは、インプレイスデプロイタイプを使用できません。

• Blue/Green デプロイ: デプロイの動作は、使用する コンピューティングプラットフォームを選択します。 により異なります。• EC2/オンプレミス コンピューティングプラットフォームを選択します。 の Blue/Green: 以下のス

テップによって、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。• インスタンスは、置き換え先環境に対してプロビジョニングされます。• 最新のアプリケーションリビジョンが置き換え先インスタンスにインストールされます。• アプリケーションのテストやシステムの検証などのアクティビティでは、オプションの待機時間が

発生します。API バージョン 2014-10-06

3

Page 12: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインプレースデプロイの概要

• 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラフィックは、それらに再ルーティングされます。元の環境のインスタンスは登録解除されます。これらのインスタンスは削除するか、その他の用途のために引き続き実行できます。

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用する場合、Blue/Green デプロイは Amazon EC2 インスタンスでのみ動作します。

• AWS Lambda コンピューティングプラットフォームを選択します。 の Blue/Green: トラフィックは、現在のサーバーレス環境から、更新された Lambda 関数のバージョンの環境に移行されます。検証テストを実行する Lambda 関数を指定し、トラフィックの移行が発生する方法を選択できます。AWSLambda コンピューティングプラットフォームを選択します。 のデプロイはすべて、Blue/Green デプロイです。そのため、デプロイタイプを指定する必要はありません。

Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

Note

AWS CodeDeploy エージェントでは、アプリケーションやデプロイグループ、AWS アカウントを使用せずに、ログオンしているインスタンスでデプロイを行うことができます。詳細については、AWS CodeDeploy エージェントを使用してローカルマシン上のデプロイパッケージを検証する (p. 277) を参照してください。

トピック• インプレースデプロイの概要 (p. 4)• Blue/Green デプロイの概要 (p. 5)

インプレースデプロイの概要次の図は、一般的な AWS CodeDeploy インプレースデプロイのフローを示します。

Note

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイでは、インプレイスデプロイタイプを使用できません。

API バージョン 2014-10-064

Page 13: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイの概要

処理の流れ

1. 最初に、ローカルの開発用マシンまたは同様の環境にデプロイ可能なコンテンツを作成し、applicationspecification file (AppSpec file) を追加します。AppSpec file は、AWS CodeDeploy が実行するデプロイアクションを定義する AWS CodeDeploy 固有のファイルです。デプロイ可能なコンテンツおよびAppSpec file をアーカイブファイルにバンドルし、Amazon S3 バケットまたは GitHub リポジトリにアップロードします。このアーカイブファイルは、アプリケーションリビジョン (または単にリビジョン) と呼ばれます。

2. 次に、リビジョンを取得する Amazon S3 バケットまたは GitHub リポジトリ、コンテンツをデプロイする Amazon EC2 インスタンスのセットなど、デプロイに関する情報を AWS CodeDeploy に提供します。AWS CodeDeploy は、一連の Amazon EC2 インスタンスをデプロイグループと呼びます。デプロイグループには、個別にタグ付けされた Amazon EC2 インスタンス、Auto Scaling グループ内のAmazon EC2 インスタンス、またはその両方が含まれます。

デプロイグループにデプロイする新しいアプリケーションリビジョンを正常にアップロードするたびに、そのバンドルはデプロイグループのターゲットリビジョンとして設定されます。つまり、現在デプロイ対象となっているアプリケーションリビジョンがターゲットリビジョンです。これは、自動デプロイにプルされるリビジョンでもあります。

3. 次に、各インスタンスの AWS CodeDeploy エージェントが AWS CodeDeploy をポーリングして、指定された Amazon S3 バケットまたは GitHub リポジトリから何を、いつ取得するのかを決定します。

4. 最後に、各インスタンスの AWS CodeDeploy エージェントは、指定された Amazon S3 バケットまたはGitHub リポジトリからターゲットリビジョンを取得し、AppSpec file の手順を使用して、コンテンツをインスタンスにデプロイします。

AWS CodeDeploy は、デプロイステータス、デプロイ設定パラメータ、インスタンスの状態を取得できるように、デプロイのレコードを保持します。

Blue/Green デプロイの概要トラフィックが、あるセットのインスタンス (元の環境) から別のセット (置き換えられた環境) に再ルーティングされる Blue/Green デプロイには、インプレースデプロイと比べて多くのメリットがあります。

• アプリケーションは、新しいサーバーにトラフィックを切り替えるだけで、事前に新しいインスタンスにインストールしてテストし、本稼働環境にデプロイすることができます。

API バージョン 2014-10-065

Page 14: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイの概要

• アプリケーションが終了していない限り、トラフィックは元のインスタンスにルートバックできるため、アプリケーションの最新バージョンへの切り替えはより迅速で信頼性が高くなります。インプレースデプロイでは、以前のバージョンのアプリケーションを再デプロイすることによってバージョンをロールバックする必要があります。

• EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用している場合、新しいインスタンスは Blue/Green デプロイ向けにプロビジョニングされ、最新のサーバー設定が反映されます。これにより、長時間実行するインスタンスで発生する問題を回避できます。

• AWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合は、元の AWSLambda 関数のバージョンから新しい AWS Lambda 関数のバージョンにトラフィックを移行する方法を制御します。

Blue/Green デプロイを設定する方法は、使用するコンピューティングプラットフォームによって異なります。

AWS Lambda コンピューティングプラットフォームの Blue/Green デプロイAWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合は、以下のいずれかのデプロイ設定のタイプを選択して、元の AWS Lambda 関数のバージョンから新しい AWS Lambda関数のバージョンにトラフィックを移行する方法を指定する必要があります。

• Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合(%) を分単位で指定する、事前定義された Canary オプションから選択できます。

• 線形: トラフィックは、毎回同じ間隔 (分) の等しい増分で移行します。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。

• All-at-once: トラフィックはすべて、元の Lambda 関数から、更新された Lambda 関数のバージョンに一度に移行されます。

AWS Lambda デプロイ設定の詳細については、「AWS Lambda コンピューティングプラットフォームの事前定義されたデプロイ設定 (p. 215)」を参照してください。

EC2/オンプレミスコンピューティングプラットフォームの Blue/Green デプロイ

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 での Blue/Green デプロイには、Amazon EC2 インスタンスを使用する必要があります。オンプレミスインスタンスはBlue/Green デプロイタイプではサポートされません。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用している場合は、次が適用されます。

Amazon EC2 タグまたは Auto Scaling グループを識別する 1 つ以上の Amazon EC2 インスタンスが必要です。インスタンスは、以下の条件を満たす必要があります。

• 各 Amazon EC2 インスタンスには、適切な IAM インスタンスプロファイルがアタッチされている必要があります。

• 各インスタンスで AWS CodeDeploy エージェントをインストールして実行する必要があります。

API バージョン 2014-10-066

Page 15: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドご意見をお待ちしております

Note

通常は、元の環境のインスタンスでアプリケーションリビジョンも実行しますが、これは Blue/Green デプロイの要件ではありません。

Blue/Green デプロイで使用されるデプロイグループを作成するときは、置き換え先環境の指定方法を選択できます。

既存の Auto Scaling グループのコピー: Blue/Green デプロイでは、AWS CodeDeploy は、デプロイ中に自動的に置き換え先環境のインスタンスを作成します。このオプションを使用すると、AWS CodeDeployは、同じ数の実行インスタンスおよび他の多くの設定オプションを含む置き換え先環境のテンプレートとして、指定した Auto Scaling グループを使用します。

手動でインスタンスを選択: Amazon EC2 インスタンスタグ、Auto Scaling グループ名、またはその両方を使用して、置き換え先としてカウントされたインスタンスを指定できます。このオプションを選択した場合、デプロイを作成するまで置き換え先環境のインスタンスを指定する必要はありません。

処理の流れ

1. 元の環境として機能するインスタンスまたは Auto Scaling グループがすでにあります。Blue/Green デプロイを初めて実行するときは、通常インプレースデプロイで既に使用されているインスタンスを使用します。

2. 既存の AWS CodeDeploy アプリケーションでは、Blue/Green デプロイグループを作成し、インプレースデプロイに必要なオプションに加えて、次を指定します。• Blue/Green デプロイプロセス中に元の環境から置き換え先環境にトラフィックをルーティングする

ロードバランサー。• 置き換え先環境にトラフィックを直ちに再ルーティングするか、手動で再ルーティングするまで待つ

かどうか。• トラフィックが置き換え先インスタンスにルーティングされるレート。• 置き換え元インスタンスを削除するか引き続き実行するかどうか。

3. このデプロイグループのデプロイを作成するときには、次の処理が行われます。a. Auto Scaling グループをコピーすることを選択した場合、インスタンスは置き換え先環境にプロビ

ジョニングされます。b. デプロイに指定したアプリケーションリビジョンは、置き換え先インスタンスにインストールされま

す。c. デプロイグループの設定で待機時間を指定した場合、デプロイは一時停止します。これは置き換え

先環境のテストおよび確認を実行できる時間です。待機時間が終了する前にトラフィックを手動で再ルーティングしない場合、デプロイは停止します。

d. 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラフィックは、それらにルーティングを開始します。

e. 元の環境のインスタンスは、終了するか引き続き実行するか、デプロイグループの指定に従って登録が解除され、処理されます。

ご意見をお待ちしておりますご意見をお待ちしております。お問い合わせの場合には、AWS CodeDeploy フォーラムをご覧ください。

トピック

• Primary Components (p. 8)• Deployments (p. 10)• Application Specification Files (p. 18)

API バージョン 2014-10-067

Page 16: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドプライマリコンポーネント

AWS CodeDeploy プライマリコンポーネントサービスの使用を開始する前に、AWS CodeDeploy デプロイプロセスの主なコンポーネントを理解しておく必要があります。

Application: A name that uniquely identifies the application you want to deploy. AWS CodeDeploy usesthis name, which functions as a container, to ensure the correct combination of revision, deploymentconfiguration, and deployment group are referenced during a deployment.

コンピューティングプラットフォーム: AWS CodeDeploy によってアプリケーションがデプロイされるプラットフォーム。

• EC2/オンプレミス: Amazon EC2 クラウドインスタンス、オンプレミスサーバー、またはその両方を指定することができる物理サーバーのインスタンスについて説明します。EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用して作成されたアプリケーションは、実行可能ファイル、設定ファイル、イメージなどで構成できます。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでは、インプレイスまたは Blue/Green デプロイタイプを使用して、トラフィックをインスタンスに振り分ける方法を管理できます。詳細については、「AWS CodeDeploy デプロイタイプの概要 (p. 3)」を参照してください。

• AWS Lambda: Lambda 関数の更新バージョンで構成されるアプリケーションのデプロイに使用されます。AWS Lambda は、高可用性コンピューティング構造で構成されるサーバーレスコンピューティング環境で Lambda 関数を管理します。コンピューティングリソースはすべて、AWS Lambda によって管理されます。詳細については、「サーバーレスコンピューティングとアプリケーション」を参照してください。AWS Lambda 関数および Lambda 関数の詳細については、「AWS Lambda」を参照してください。

AWS Lambda コンピューティングプラットフォームを選択します。 を使用して作成されるアプリケーションは、Canary 設定、線形設定、または一度にすべての設定を選択して、デプロイ中に更新されたLambda 関数のバージョンにトラフィックが振り分けられる方法を管理できます。

デプロイ設定: デプロイ中に AWS CodeDeploy が使用する一連のデプロイのルール、デプロイの成功条件、デプロイの失敗条件です。デプロイで EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用している場合、デプロイの正常なインスタンスの最小数を指定できます。デプロイで AWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合、更新されたLambda 関数のバージョンにトラフィックがルーティングされる方法を指定できます。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用したデプロイに対する正常なホストの最小数の指定については、「正常なインスタンスとデプロイの最小数 (p. 210)」を参照してください。

以下は、AWS Lambda コンピューティングプラットフォームを選択します。 を使用するデプロイの間にトラフィックをルーティングする方法を指定するデプロイ設定です。

• Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合(%) を分単位で指定する、事前定義された Canary オプションから選択できます。

• 線形: トラフィックは、毎回同じ間隔 (分) の等しい増分で移行します。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。

• All-at-once: トラフィックはすべて、元の Lambda 関数から、更新された Lambda 関数のバージョンに一度に移行されます。

デプロイグループ: 個別のインスタンスのセット。デプロイグループには、個別にタグ付けされたインスタンス、Auto Scaling グループ内の Amazon EC2 インスタンス、またはその両方が含まれます。AmazonEC2 インスタンスタグの詳細については、「コンソールでのタグの処理」を参照してください。オンプレ

API バージョン 2014-10-068

Page 17: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドプライマリコンポーネント

ミスインスタンスの詳細については、「Working with On-Premises Instances (p. 179)」を参照してください。Auto Scaling の詳細については、「AWS CodeDeploy と Auto Scaling の統合 (p. 46)」を参照してください。

Deployment type: The method used to make the latest application revision available on instances in adeployment group.

• インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。インプレイスデプロイは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでのみ使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要 (p. 4)」を参照してください。

• Blue/Green デプロイ: デプロイの動作は、使用する コンピューティングプラットフォームを選択します。 により異なります。• EC2/オンプレミス コンピューティングプラットフォームを選択します。 の Blue/Green: 以下のス

テップによって、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。• インスタンスは、置き換え先環境に対してプロビジョニングされます。• 最新のアプリケーションリビジョンが置き換え先インスタンスにインストールされます。• アプリケーションのテストやシステムの検証などのアクティビティでは、オプションの待機時間が

発生します。• 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラ

フィックは、それらに再ルーティングされます。元の環境のインスタンスは登録解除されます。これらのインスタンスは削除するか、その他の用途のために引き続き実行できます。

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用する場合、Blue/Green デプロイは Amazon EC2 インスタンスでのみ動作します。

• AWS Lambda コンピューティングプラットフォームを選択します。 の Blue/Green: トラフィックは、現在のサーバーレス環境から、更新された Lambda 関数のバージョンの環境に移行されます。検証テストを実行する Lambda 関数を指定し、トラフィックの移行が発生する方法を選択できます。AWSLambda コンピューティングプラットフォームを選択します。 のデプロイはすべて、Blue/Green デプロイです。そのため、デプロイタイプを指定する必要はありません。

Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

IAM instance profile: An IAM role that you attach to your Amazon EC2 instances. This profile includes thepermissions required to access the Amazon S3 buckets or GitHub repositories where the applications thatwill be deployed by AWS CodeDeploy are stored. For more information, see ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26).

リビジョン: AWS Lambda リビジョンは、デプロイする Lambda 関数についての情報を指定する YAML 形式または JSON 形式のファイルです。EC2/オンプレミス のデプロイリビジョンは、ソースコード、ウェブページ、実行可能ファイル、デプロイスクリプトなどのソースコンテンツと、application specificationfile (AppSpec file) を含むアーカイブファイルです。AWS Lambda リビジョンは、Amazon S3 バケットに保存することができます。EC2/オンプレミス リビジョンは、Amazon S3 バケットまたは GitHub リポジトリに保存されます。Amazon S3 では、リビジョンの Amazon S3 オブジェクトキー、ETag、バージョン、またはその両方により、リビジョンが一意に識別されます。GitHub では、コミット ID により、リビジョンが一意に識別されます。

Service role: An IAM role that grants permissions to an AWS service so it can access AWS resources. Thepolicies you attach to the service role determine which AWS resources the service can access and theactions it can perform with those resources. For AWS CodeDeploy, a service role is used for the following:

API バージョン 2014-10-069

Page 18: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ

• To read either the tags applied to the instances or the Amazon EC2 Auto Scaling group namesassociated with the instances. This enables AWS CodeDeploy to identify instances to which it can deployapplications.

• To perform operations on instances, Auto Scaling groups, and Elastic Load Balancing load balancers.• To publish information to Amazon SNS topics so that notifications can be sent when specified

deployment or instance events occur.• To retrieve information about CloudWatch alarms in order to set up alarm monitoring for deployments.

For more information, see ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22).

Target revision: The most recent version of the application revision that you have uploaded to yourrepository and want to deploy to the instances in a deployment group. In other words, the applicationrevision currently targeted for deployment is the target revision. This is also the revision that will be pulledfor automatic deployments.

AWS CodeDeploy ワークフローの他の主要コンポーネントの詳細については、次のトピックを参照してください。

• AWS CodeDeploy リポジトリタイプの選択 (p. 247)• Deployments (p. 10)• Application Specification Files (p. 18)• Instance Health (p. 208)• AWS CodeDeploy エージェントの使用 (p. 132)• Working with On-Premises Instances (p. 179)

AWS CodeDeploy デプロイこのトピックでは、AWS CodeDeploy のデプロイのコンポーネントおよびワークフローについて説明します。デプロイプロセスは、デプロイに使用する コンピューティングプラットフォームを選択します。(EC2/オンプレミスまたは Lambda) によって異なります。

トピック• AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイ (p. 10)• EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ (p. 13)

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイこのトピックでは、AWS Lambda コンピューティングプラットフォームを選択します。 を使用する AWSCodeDeploy のデプロイのコンポーネントおよびワークフローについて説明します。

トピック• AWS Lambda コンピューティングプラットフォームのデプロイコンポーネント (p. 11)• AWS Lambda コンピューティングプラットフォームのデプロイワークフロー (p. 11)• アプリケーションリビジョンのアップロード (p. 12)• アプリケーションとデプロイグループの作成 (p. 12)• アプリケーションリビジョンのデプロイ (p. 12)• アプリケーションの更新 (p. 12)

API バージョン 2014-10-0610

Page 19: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラッ

トフォームを選択します。 のデプロイ

• 停止、失敗したデプロイ (p. 12)• デプロイと再デプロイのロールバック (p. 13)

AWS Lambda コンピューティングプラットフォームのデプロイコンポーネント以下の図は、AWS Lambda コンピューティングプラットフォームを選択します。 の AWS CodeDeploy デプロイのコンポーネントを示します。

AWS Lambda コンピューティングプラットフォームのデプロイワークフロー次の図は、新規および更新された AWS Lambda 関数のデプロイの主要なステップを示しています。

ステップには以下が含まれます。

1. デプロイするアプリケーションリビジョンを個別に表す名前を指定してアプリケーションを作成します。Lambda 関数をデプロイするには、アプリケーション作成時に AWS Lambda コンピューティングプラットフォームを選択します。 を指定します。AWS CodeDeploy はデプロイ中にこの名前を使用し

API バージョン 2014-10-0611

Page 20: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラッ

トフォームを選択します。 のデプロイ

て、デプロイグループ、デプロイ設定、アプリケーションリビジョンなど正しいデプロイコンポーネントを参照していることを確認します。詳細については、「AWS CodeDeploy でアプリケーションを作成 (p. 218)」を参照してください。

2. デプロイグループを設定するには、デプロイグループの名前を指定します。3. 元の AWS Lambda 関数のバージョンから新規の Lambda 関数のバージョンにトラフィックを移行する

方法を指定するには、デプロイ設定を選択します。詳細については、「View Deployment ConfigurationDetails (p. 216)」を参照してください。

4. application specification file (AppSpec file) を Amazon S3 にアップロードします。AppSpec file は、デプロイを検証するために使用される Lambda 関数のバージョンと Lambda 関数を指定します。AppSpecfile を作成しない場合は、YAML または JSON を使用して、コンソールで直接 Lambda 関数のバージョンと Lambda デプロイ検証の関数を指定できます。詳細については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

5. デプロイグループにアプリケーションリビジョンをデプロイします。AWS CodeDeploy は、指定した Lambda 関数リビジョンをデプロイします。トラフィックを Lambda 関数リビジョンに移行するには、アプリケーション作成時に選択した AppSpec デプロイファイルを使用します。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

6. デプロイの結果を確認します。詳細については、「AWS CodeDeploy のデプロイのモニタリング (p. 283)」を参照してください。

7. リビジョンを再デプロイします。デプロイの Lambda 関数のバグを修正するか、失敗したデプロイに対応する必要がある場合はこの操作を行います。同じ Lambda 関数のバージョンを再度デプロイする場合は、同じ AppSpec file を使用して、新しいデプロイを同じデプロイグループに実行するだけです。再デプロイする前に Lambda 関数の名前変更、追加、削除を行う場合は、AppSpec file を更新する必要があります。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

アプリケーションリビジョンのアップロードAmazon S3 に AppSpec file を配置するか、コンソールまたは AWS CLI に直接入力します。詳細については、「Application Specification Files (p. 18)」を参照してください。

アプリケーションとデプロイグループの作成AWS Lambda コンピューティングプラットフォームを選択します。 の AWS CodeDeploy デプロイグループは、1 つ以上の AppSpec file を識別します。1 つの AppSpec file で Lambda 関数のバージョンを 1 つデプロイできます。デプロイグループは、今後のデプロイのために、アラームおよびロールバックの設定などの設定オプションのセットを定義します。

アプリケーションリビジョンのデプロイこれで、AppSpec file で指定した関数リビジョンをデプロイグループにデプロイする準備ができました。AWS CodeDeploy コンソールまたは create-deployment コマンドを使用できます。リビジョン、デプロイグループ、およびデプロイ設定を含めて、デプロイを制御するために指定できるパラメーターがあります。

アプリケーションの更新アプリケーションを更新し、AWS CodeDeploy コンソールを使用するか、create-deployment コマンドを呼び出してリビジョンをプッシュできます。

停止、失敗したデプロイAWS CodeDeploy コンソールまたは stop-deployment コマンドを使用してデプロイを停止できます。デプロイを停止しようとする場合、次の 3 つのうち 1 つのことが発生します。

API バージョン 2014-10-0612

Page 21: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ

• デプロイは停止し、オペレーションは成功というステータスを返す。この場合、停止したデプロイに対してそれ以上デプロイライフサイクルイベントは実行されません。

• デプロイは即時に停止せず、オペレーションは保留中というステータスを返す。この場合、一部のデプロイライフサイクルイベントは、デプロイグループでまだ実行中である可能性があります。保留中のオペレーションが完了すると、デプロイを停止するためのそれ以降の呼び出しは、成功というステータスを返します。

• デプロイは停止できず、オペレーションはエラーを返す。詳細については、AWS CodeDeploy APIReferenceの「エラー情報」および「共通エラー」を参照してください。

失敗したデプロイでは、停止されたデプロイのように、一部のデプロイライフサイクルイベントが実行済みになる場合があります。デプロイが失敗した理由を調べるには、AWS CodeDeploy コンソールを使用するか、失敗したデプロイのログファイルデータを分析することができます。詳細については、「アプリケーションリビジョンとログファイルのクリーンアップ (p. 136)」および「AWS CodeDeploy デプロイのログデータの表示 (p. 267)」を参照してください。

デプロイと再デプロイのロールバックAWS CodeDeploy は新しいデプロイとして、以前にデプロイされたリビジョンを再デプロイすることによって、ロールバックを実装します。

デプロイが失敗した、アラームのモニタリングしきい値に一致したなど、特定の条件が満たされた場合に、自動的にデプロイをロールバックするようグループデプロイを設定できます。個別のデプロイで、デプロイグループに指定されたロールバック設定をオーバーライドすることもできます。

以前のデプロイされたバージョンを手動で再デプロイして、失敗したデプロイをロールバックすることもできます。

いずれの場合でも、新しいデプロイまたはロールバックされたデプロイには独自のデプロイ ID が割り当てられます。AWS CodeDeploy で表示できるデプロイの一覧には、どれが自動デプロイの結果であるかが示されます。

詳細については、「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」を参照してください。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイこのトピックでは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するAWS CodeDeploy のデプロイのコンポーネントおよびワークフローについて説明します。Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

トピック• EC2/オンプレミスコンピューティングプラットフォームのデプロイコンポーネント (p. 14)• EC2/オンプレミスコンピューティングプラットフォームのデプロイワークフロー (p. 14)• インスタンスの設定 (p. 16)• アプリケーションリビジョンのアップロード (p. 16)• アプリケーションとデプロイグループの作成 (p. 16)• アプリケーションリビジョンのデプロイ (p. 17)• アプリケーションの更新 (p. 17)• 停止、失敗したデプロイ (p. 17)• デプロイと再デプロイのロールバック (p. 17)

API バージョン 2014-10-0613

Page 22: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ

EC2/オンプレミスコンピューティングプラットフォームのデプロイコンポーネント以下の図は、EC2/オンプレミスコンピューティングプラットフォームの AWS CodeDeploy デプロイのコンポーネントを示します。

EC2/オンプレミスコンピューティングプラットフォームのデプロイワークフロー次の図は、アプリケーションリビジョンのデプロイの主要なステップを示しています。

ステップには以下が含まれます。

1. デプロイするアプリケーションリビジョンと、アプリケーションのコンピューティングプラットフォームを個別に表す名前を指定してアプリケーションを作成します。AWS CodeDeploy はデプロイ中にこの

API バージョン 2014-10-0614

Page 23: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ

名前を使用して、デプロイグループ、デプロイ設定、アプリケーションリビジョンなど正しいデプロイコンポーネントを参照していることを確認します。詳細については、「AWS CodeDeploy でアプリケーションを作成 (p. 218)」を参照してください。

2. アプリケーションリビジョンをデプロイするデプロイタイプとインスタンスを指定して、デプロイグループをセットアップします。インプレースデプロイでは、最新のアプリケーションリビジョンでインスタンスを更新します。Blue/Green デプロイはロードバランサーでデプロイグループ用の代替セットを登録し、元のインスタンスを登録解除します。

インスタンス、Auto Scaling グループ名、または両方に適用されるタグを指定できます。

デプロイグループのタグのグループを指定すると、AWS CodeDeploy は指定されたタグの少なくとも 1 つが適用されたインスタンスにデプロイします。2 つ以上のタググループを指定した場合、AWSCodeDeploy はそれぞれのタググループの条件を満たすインスタンスにのみデプロイします。詳細については、「Tagging Instances for AWS CodeDeploy Deployments (p. 156)」を参照してください。

いずれの場合も、インスタンスはデプロイで使用するよう設定し (つまり、タグを付けるか、AutoScaling グループに属するようにする)、AWS CodeDeploy エージェントをインストールして実行している必要があります。

当社は、Amazon Linux または Windows Server に基づいて Amazon EC2 インスタンスをすばやくセットアップするために使用できる AWS CloudFormation テンプレートを提供しています。また、AmazonLinux、Ubuntu Server、Red Hat Enterprise Linux (RHEL) または Windows Server インスタンスにインストールできるよう、スタンドアロン AWS CodeDeploy エージェントも提供しています。詳細については、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

また、以下のオプションを指定できます。• Amazon SNS 通知 — 成功イベントや失敗イベントなど、指定されたイベントがデプロイとインスタ

ンスで発生したときに、Amazon SNS トピックの受信者に通知を送信するトリガーを作成します。詳細については、「Monitoring Deployments with Amazon SNS Event Notifications (p. 291)」を参照してください。

• アラームベースのデプロイ管理 — CloudWatch で設定したしきい値を超えるか下回ったときに、デプロイを停止する Amazon CloudWatch アラームモニタリングを実装します。

• 自動デプロイロールバック — デプロイが失敗するか、アラームのしきい値に一致したときに、以前の既知の正常なリビジョンに自動的にロールバックするようデプロイを設定します。

3. 同時にアプリケーションリビジョンをデプロイするインスタンス数を示すにはデプロイ設定を指定し、デプロイの成功または失敗条件を示します。詳細については、「View Deployment ConfigurationDetails (p. 216)」を参照してください。

4. アプリケーションリビジョンを Amazon S3 または GitHub にアップロードします。デプロイするファイルおよびデプロイ中に実行するスクリプトに加えて、application specification file (AppSpec file) を含める必要があります。このファイルには、ファイルを各インスタンスにコピーする場所や、デプロイスクリプトを実行するタイミングなど、デプロイの手順が含まれています。詳細については、「AWSCodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

5. デプロイグループにアプリケーションリビジョンをデプロイします。デプロイグループの各インスタンスの AWS CodeDeploy エージェントは、Amazon S3 または GitHub からインスタンスにアプリケーションリビジョンをコピーします。次に、AWS CodeDeploy エージェントは、リビジョンをバンドル解除し、AppSpec file を使用してファイルを指定された場所にコピーして、デプロイスクリプトを実行します。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

6. デプロイの結果を確認します。詳細については、「AWS CodeDeploy のデプロイのモニタリング (p. 283)」を参照してください。

7. リビジョンを再デプロイします。ソースコンテンツのバグを修正する、別の順序でデプロイスクリプトを実行する、または失敗したデプロイに対応する必要がある場合に、この作業を行います。これを行うには、変更したソースコンテンツ、デプロイスクリプト、および AppSpec file を新しいリビジョンを再バンドルし、リビジョンを Amazon S3 バケットまたは GitHub リポジトリにアップロードします。

API バージョン 2014-10-0615

Page 24: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ

次に、新しいリビジョンで同じデプロイグループに新しいデプロイを実行します。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

インスタンスの設定アプリケーションリビジョンを初めてデプロイする前に、インスタンスを設定する必要があります。アプリケーションリビジョンで 3 つの本番稼働用サーバーと 2 つのバックアップサーバーが必要な場合、5 つのインスタンスを起動または使用します。

インスタンスを手動でプロビジョニングするには:

1. インスタンスに AWS CodeDeploy エージェントをインストールします。AWS CodeDeploy エージェントは、Amazon Linux、Ubuntu Server、RHEL、および Windows Server インスタンスにインストールできます。

2. タグを使用してデプロイグループのインスタンスを識別する場合は、タグ付けを有効にします。AWSCodeDeploy はタグによりインスタンスを識別し、AWS CodeDeploy デプロイグループにインスタンスをグループ化します。入門チュートリアルでは両方を使用しましたが、キーまたは値を使用して、デプロイグループのタグを定義できます。

3. IAM インスタンスプロファイルをアタッチして Amazon EC2 インスタンスを起動します。AWSCodeDeploy エージェントがインスタンスの ID を確認するために起動されるときに、IAM インスタンスプロファイルを Amazon EC2 インスタンスにアタッチする必要があります。

4. サービスロールを作成します。AWS CodeDeploy が AWS アカウントのタグを拡張できるよう、サービスアクセスを提供します。

初回のデプロイでは、AWS CloudFormation テンプレートによってこれらすべてが実行されます。これにより、Amazon Linux または Windows Server に基づき、AWS CodeDeploy エージェントが既にインストールされて、新しい単一の Amazon EC2 インスタンスが作成および設定されます。詳細については、「AWS CodeDeploy のインスタンスの使用 (p. 154)」を参照してください。

Note

Blue/Green デプロイでは、置き換え先環境用の既存のインスタンスを使用するか、デプロイプロセスの一部として AWS CodeDeploy で新しいインスタンスをプロビジョニングするか選択できます。

アプリケーションリビジョンのアップロードアプリケーションのソースコンテンツフォルダ構造で、ルートフォルダの下に AppSpec file を配置します。詳細については、「Application Specification Files (p. 18)」を参照してください。

zip、tar、または圧縮された tar などのアーカイブファイル形式にアプリケーションのソースコンテンツフォルダ構造をバンドルします。アーカイブファイル (リビジョン) を Amazon S3 バケットまたは GitHubリポジトリにアップロードします。

Note

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported for WindowsServer instances.

アプリケーションとデプロイグループの作成AWS CodeDeploy デプロイグループはタグ、Auto Scaling グループ名、または両方に基づいてインスタンスのコレクションを識別します。複数のアプリケーションリビジョンを同じインスタンスにデプロイし、アプリケーションリビジョンを複数のインスタンスにデプロイできます。

API バージョン 2014-10-0616

Page 25: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイ

たとえば、3 つの本番稼働用サーバーに「Prod」というタグを追加し、2 つのバックアップサーバーに「Backup」というタグを追加できます。これら 2 つのタグを使用して、AWS CodeDeploy アプリケーションで 2 つの異なるデプロイグループを作成し、デプロイにどちらのサーバーのセットを参加させるか(または両方を参加させるか) 選択することができます。

デプロイグループの複数のタググループを使用して、デプロイするインスタンスのセットを減らすことができます。詳細については、Tagging Instances for AWS CodeDeploy Deployments (p. 156) を参照してください。

アプリケーションリビジョンのデプロイこれで、Amazon S3 または GitHub からデプロイグループにアプリケーションリビジョンをデプロイできる状態になりました。AWS CodeDeploy コンソールまたは create-deployment コマンドを使用できます。リビジョン、デプロイグループ、およびデプロイ設定を含めて、デプロイを制御するために指定できるパラメーターがあります。

アプリケーションの更新アプリケーションを更新し、AWS CodeDeploy コンソールを使用するか、create-deployment コマンドを呼び出してリビジョンをプッシュできます。

停止、失敗したデプロイAWS CodeDeploy コンソールまたは stop-deployment コマンドを使用してデプロイを停止できます。デプロイを停止しようとする場合、次の 3 つのうち 1 つのことが発生します。

• デプロイは停止し、オペレーションは成功というステータスを返す。この場合、停止したデプロイに対してそれ以上デプロイライフサイクルイベントは実行されません。デプロイグループで一部のファイルは既にコピーされ、一部のスクリプトは実行され、1 つ以上のインスタンスが実行されている可能性があります。

• デプロイは即時に停止せず、オペレーションは保留中というステータスを返す。この場合、一部のデプロイライフサイクルイベントは、デプロイグループでまだ実行中である可能性があります。デプロイグループで一部のファイルは既にコピーされ、一部のスクリプトは実行され、1 つ以上のインスタンスが実行されている可能性があります。保留中のオペレーションが完了すると、デプロイを停止するためのそれ以降の呼び出しは、成功というステータスを返します。

• デプロイは停止できず、オペレーションはエラーを返す。詳細については、AWS CodeDeploy APIReferenceの「エラー情報」および「共通エラー」を参照してください。

失敗したデプロイでは、停止されたデプロイのように、デプロイグループの 1 つ以上のインスタンスで一部のデプロイライフサイクルイベントが実行済みになる場合があります。デプロイが失敗した理由を調べるには、AWS CodeDeploy コンソールを使用するか、get-deployment-instance コマンドを実行するか、失敗したデプロイのログファイルデータを分析することができます。詳細については、「アプリケーションリビジョンとログファイルのクリーンアップ (p. 136)」および「AWS CodeDeploy デプロイのログデータの表示 (p. 267)」を参照してください。

デプロイと再デプロイのロールバックAWS CodeDeploy は新しいデプロイとして、以前にデプロイされたリビジョンを再デプロイすることによって、ロールバックを実装します。

デプロイが失敗した、アラームのモニタリングしきい値に一致したなど、特定の条件が満たされた場合に、自動的にデプロイをロールバックするようグループデプロイを設定できます。個別のデプロイで、デプロイグループに指定されたロールバック設定をオーバーライドすることもできます。

以前のデプロイされたバージョンを手動で再デプロイして、失敗したデプロイをロールバックすることもできます。

API バージョン 2014-10-0617

Page 26: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーション仕様ファイル

いずれの場合でも、新しいデプロイまたはロールバックされたデプロイには独自のデプロイ ID が割り当てられます。AWS CodeDeploy で表示できるデプロイの一覧には、どれが自動デプロイの結果であるかが示されます。

詳細については、「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」を参照してください。

AWS CodeDeploy アプリケーション仕様ファイルAWS CodeDeploy に固有の application specification file (AppSpec file) は、YAML 形式、または JSON 形式のファイルです。AppSpec file は、ファイルで定義されている一連のライフサイクルイベントフックとして、各デプロイを管理するために使用されます。

正しい形式の AppSpec file を作成する方法については、「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」を参照してください。

トピック• AWS Lambda コンピューティングプラットフォームの AppSpec ファイル (p. 18)• EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイル (p. 18)• AWS CodeDeploy エージェントが AppSpec ファイルを使用する方法 (p. 19)

AWS Lambda コンピューティングプラットフォームの AppSpec ファイルアプリケーションで AWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合は AppSpec file を YAML 形式または JSON 形式にすることもできます。また、コンソールのエディタに直接入力することもできます。AppSpec file は、以下を指定するために使用されます。

• デプロイする AWS Lambda 関数のバージョン。• 検証テストとして使用される関数。

Lambda 関数は、デプロイライフサイクルイベント後に検証を実行できます。詳細については、「AWSLambda のデプロイ向けの AppSpec の「hooks」セクション (p. 330)」を参照してください。

EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイルアプリケーションで EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用している場合、AppSpec file は必ず YAML 形式になります。AppSpec file は、以下を目的としています。

• アプリケーションリビジョンのソースファイルを、インスタンスの宛先にマッピングする。• デプロイされたファイルのカスタムアクセス権限を指定する。• デプロイプロセスのさまざまなフェーズにおいて、各インスタンスで実行するスクリプトを指定する。

インスタンスのスクリプトは、多くのデプロイライフサイクルイベントの後で実行できます。AWSCodeDeploy はファイルで指定されているスクリプトのみを実行しますが、これらのスクリプトは、インスタンスの他のスクリプトを呼び出すことができます。インスタンスで実行しているオペレーティングシステムでサポートされている限り、任意のタイプのスクリプトを実行できます。詳細については、「EC2/オンプレミス のデプロイ向けの AppSpec の「hooks」セクション (p. 332)」を参照してください。

API バージョン 2014-10-0618

Page 27: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェント

が AppSpec ファイルを使用する方法

AWS CodeDeploy エージェントが AppSpec ファイルを使用する方法デプロイ中に、AWS CodeDeploy エージェントは AppSpec file の hooks セクションで現在のイベントの名前を検索します。イベントが見つからない場合、AWS CodeDeploy エージェントは次のステップに進みます。イベントが見つかった場合、AWS CodeDeploy エージェントは実行するスクリプトのリストを取得します。スクリプトはファイルに表示された順序で、順に実行されます。各スクリプトのステータスはインスタンスの AWS CodeDeploy エージェントのログファイルに記録されます。

スクリプトが正常に実行すると、終了コード 0 (ゼロ) を返します。

Note

AWS CodeDeploy エージェントは、AWS Lambda デプロイでは使用されません。

Install イベントで、AWS CodeDeploy エージェントは AppSpec file の files セクションに定義されているマッピングを使用して、リビジョンからインスタンスにコピーするフォルダまたはファイルを判断します。

オペレーティングシステムにインストールされた AWS CodeDeploy エージェントが、AppSpec file に記載されているものに一致しない場合、デプロイは失敗します。

AWS CodeDeploy エージェントログファイルの詳細については、「AWS CodeDeploy エージェントの使用 (p. 132)」を参照してください。

API バージョン 2014-10-0619

Page 28: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: IAM ユーザーをプロビジョニングする

AWS CodeDeploy の使用開始AWS CodeDeploy を初めて使用する場合は、セットアップステップを完了する必要があります。

開始するには、AWS アカウントにサインアップする必要があります。サインアップするには、https://aws.amazon.com/ に移動し、[AWS アカウントの作成] を選択します。

その後、このセクションの他の設定タスクを続行することができます。

トピック• ステップ 1: IAM ユーザーをプロビジョニングする (p. 20)• ステップ 2: インストールまたはアップグレードしてから、AWS CLI を設定する (p. 21)• ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)• ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)• ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30)

ステップ 1: IAM ユーザーをプロビジョニングする以下の手順に従って、AWS CodeDeploy を使用するよう IAM ユーザーを準備します。

1. IAM ユーザーを作成するか、AWS アカウントに関連付けられた既存のユーザーを使用します。詳細については、IAM ユーザーガイドの「IAM ユーザーの作成」を参照してください。

2. 次のポリシーをコピーして IAM ユーザーにアタッチすることで、IAM ユーザーに対して、AWSCodeDeploy (および AWS CodeDeploy が依存する AWS のサービスとアクション) へのアクセス権を付与します。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "autoscaling:*", "codedeploy:*", "ec2:*", "lambda:*", "elasticloadbalancing:*", "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:DeleteInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:GetInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfilesForRole", "iam:ListRolePolicies", "iam:ListRoles", "iam:PassRole", "iam:PutRolePolicy",

API バージョン 2014-10-0620

Page 29: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: インストールまたはアップ

グレードしてから、AWS CLI を設定する

"iam:RemoveRoleFromInstanceProfile", "s3:*" ], "Resource" : "*" } ]}

前述のポリシーにより、IAM ユーザーに AWS Lambda コンピューティングプラットフォームを選択します。 および EC2/オンプレミス コンピューティングプラットフォームを選択します。 の両方へのデプロイに必要なアクセス権が付与されます。

IAM ユーザーにポリシーをアタッチする方法については、「ポリシーの使用」を参照してください。AWS CodeDeploy アクションとリソースの制限されたセットにユーザーを制限する方法については、「AWS CodeDeploy に対する認証とアクセスコントロール (p. 302)」を参照してください。

このドキュメントに示されている AWS CloudFormation テンプレートを使用して、AWS CodeDeployと互換性がある Amazon EC2 インスタンスを起動できます。AWS CloudFormation テンプレートを使用して、アプリケーション、デプロイグループ、またはデプロイ設定を作成するには、次のようにして、IAM ユーザーに追加のポリシーをアタッチすることで、IAM ユーザーに AWS CloudFormationと、AWS CloudFormation が依存している AWS のサービスとアクションへのアクセス権を付与する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ]}

これらのステートメントに示されている他の AWS のサービスの詳細については、以下を参照してください。

• AWS IAM ポリシーの概要• ロードバランサーに対するユーザーアクセスの制御• Auto Scaling リソースに対するアクセスのコントロール• AWS Identity and Access Management による AWS CloudFormation アクセスの制御

ステップ 2: インストールまたはアップグレードしてから、AWS CLI を設定する

ローカル開発マシンで AWS CLI から AWS CodeDeploy コマンドを呼び出すには、AWS CLI をインストールする必要があります。AWS CodeDeploy コマンドは、最初に AWS CLI のバージョン 1.6.1 で使用できるようになりました。オンプレミスインスタンスを使用するための AWS CodeDeploy コマンドは、AWS CLI の 1.7.19 で使用できるようになりました。

古いバージョンの AWS CLI がインストールされている場合、それをアップグレードし、AWSCodeDeploy コマンドを使用できるようにする必要があります。aws --version を呼び出してバージョンを確認できます。

API バージョン 2014-10-0621

Page 30: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: サービスロールを作成する

AWS CLI をインストールまたはアップグレードするには:

1. 「AWS Command Line Interface のインストール」の手順に従って AWS CLI をインストールまたはアップグレードします。

2. AWS CLI を設定する方法については、「AWS Command Line Interface の設定」および「IAM ユーザーのアクセスキーの管理」を参照してください。

Important

AWS CLI を設定するときに、AWS リージョンを指定するよう求められます。AWS GeneralReferenceの「リージョンとエンドポイント」に記載の、サポートされているリージョンの 1つを指定します。

3. インストールまたはアップグレードを確認するには、次のコマンドを呼び出します。

aws deploy help

成功すると、このコマンドは、使用できる AWS CodeDeploy コマンドのリストを表示します。

ステップ 3: AWS CodeDeploy のサービスロールを作成する

AWS では、サービスロールは AWS のサービスにアクセス権限を付与するのに使用されるため、AWS リソースにアクセスできます。サービスロールにアタッチするポリシーによって、どの AWS リソースにサービスがアクセスできるか、およびそれらのリソースで何ができるかが決まります。

AWS CodeDeploy 用に作成するサービスロールは、アプリケーションをデプロイするインスタンスへのアクセス権限が付与されている必要があります。これらの権限は、インスタンスに適用されるタグまたはインスタンスに関連付けられている Auto Scaling グループ名を読み取るように AWS CodeDeploy を有効にします。

サービスロールに追加されるアクセス権限では、Amazon EC2 インスタンスおよび Auto Scaling グループへのアクセス時に AWS CodeDeploy が実行できるオペレーションを指定します。これらのアクセス権限を追加するには、AWS によって提供される AWSCodeDeployRole ポリシーをサービスロールにアタッチします。

また、サービスロールの設定の一環として、アクセス権限を付与するエンドポイントを指定するために信頼関係を更新します。

IAM コンソール、AWS CLI、IAM API を使用してサービスロールを作成できます。

トピック• サービスロールの作成 (コンソール) (p. 22)• サービスロールの作成 (CLI) (p. 24)• サービスロール ARN の取得 (コンソール) (p. 26)• サービスロール ARN の取得 (CLI) (p. 26)

サービスロールの作成 (コンソール)1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/

iam/)を開きます。API バージョン 2014-10-06

22

Page 31: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサービスロールの作成 (コンソール)

2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。3. [ロールの作成] ページで、[AWS サービス] を選択し、[このロールを使用するサービスを選択] リスト

から以下を選択します。 CodeDeploy.4. [ユースケースの選択] で、[CodeDeploy] を選択します。5. [Next: Permissions] を選択します。6. [Attached permissions policy] ページで、以下の横にボックスがある場合は次のようになります。

AWSCodeDeployRole 選択後、[Next: Review] を選択します。

この AWSCodeDeployRole ポリシーは、サービスロールに必要なアクセス権限を次の目的で提供します。

• インスタンスのタグを読み取る、または Auto Scaling グループ名により Amazon EC2 インスタンスを識別します。

• Amazon SNS トピックに情報を公開します。• CloudWatch アラームに関する情報を取得します。• Elastic Load Balancing に関する情報を取得します。

7. [Review] ページの [Role name] に、サービスロールの名前を入力します (例:CodeDeployServiceRole), and then choose Create role.

このサービスロールの説明を、[Role description] ボックスに入力することもできます。8. 現在サポートされているすべてのエンドポイントへのアクセス権限をサービスロールに付与する場合

は、この手順を終了します。

このサービスロールから一部のエンドポイントへのアクセスを制限する場合は、ロールのリストで、先ほど作成したロールを参照して選択し、次のステップに進みます。

9. [Trust relationships] タブで、[Edit trust relationship] を選択します。10. 次のポリシーでは、サポートされているすべてのエンドポイントにアクセスする権限をサービスロー

ルに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

サポートされているエンドポイントの一部にのみアクセスする権限をサービスロールに付与するには、[Policy Document] ボックスの内容を以下のポリシーで置き換え、アクセスをさせないエンドポイントの行を削除し、[Update Trust Policy] を選択します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [

API バージョン 2014-10-0623

Page 32: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサービスロールの作成 (CLI)

"codedeploy.us-east-2.amazonaws.com", "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

サービスロールの作成についての詳細は、IAM ユーザーガイドの「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

サービスロールの作成 (CLI)1. 開発マシンで、たとえば、CodeDeployDemo-Trust.json という名前のテキストファイルを作成し

ます。このファイルは、AWS CodeDeploy がユーザーの代理操作の実行を許可するのに使用されます。

次のいずれかを行ってください。

• サポートされているすべてのリージョンへのアクセス権限を付与するには、ファイルに次の内容を保存します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

• サポートされているリージョンの一部にのみアクセスする権限を付与するには、ファイルに次の内容を入力し、アクセスを除外するリージョンの行を削除します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow",

API バージョン 2014-10-0624

Page 33: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサービスロールの作成 (CLI)

"Principal": { "Service": [ "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

Note

リストにある最後のエンドポイントの後にコンマを使用しないでください。2. 同じディレクトリから、先ほど作成したテキストファイルの情報に基づく

CodeDeployServiceRole という名前のサービスロールを作成する create-role コマンドを呼び出します。

aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json

Important

Be sure to include file:// before the file name. It is required in this command.

コマンドの出力で、Role オブジェクトの下にある Arn エントリの値を書きとめておきます。これは、後でデプロイグループを作成する際に必要になります。値を忘れた場合は、サービスロール ARNの取得 (CLI) (p. 26) の手順に従います。

3. 使用する管理ポリシーは、コンピューティングプラットフォームを選択します。 によって異なります。

• EC2/オンプレミス コンピューティングプラットフォームを選択します。 にデプロイする場合は、以下を行います。

AWSCodeDeployRole という名前の IAM 管理ポリシーに基づいて、CodeDeployServiceRoleという名前のサービスロールにアクセス権限を付与する attach-role-policy コマンドを呼び出します。以下に例を示します。

aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole

• AWS Lambda コンピューティングプラットフォームを選択します。 にデプロイする場合は、以下を行います。

AWSCodeDeployRoleForLambda という名前の IAM 管理ポリシーに基づいて、CodeDeployServiceRole という名前のサービスロールにアクセス権限を付与する attach-role-policy コマンドを呼び出します。以下に例を示します。

API バージョン 2014-10-0625

Page 34: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサービスロール ARN の取得 (コンソール)

aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda

サービスロールの作成の詳細については、IAM ユーザーガイドの「AWS サービス用のロールを作成する」を参照してください。

サービスロール ARN の取得 (コンソール)IAM コンソールを使用してサービスロールの ARN を取得するには:

1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

2. ナビゲーションペインで [Roles (ロール) ] を選択します。3. [Filter] ボックスに、CodeDeployServiceRole を入力し、[Enter] を押します。4. [CodeDeployServiceRole] を選択します。5. [Role ARN] フィールドの値を書きとめておきます。

サービスロール ARN の取得 (CLI)AWS CLI を使用してサービスロールの ARN を取得するには、CodeDeployServiceRole という名前のサービスロールに対して get-role コマンドを呼び出します。

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

返される値はサービスロールの ARN です。

ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する

Note

AWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合は、このステップをスキップします。AWS Lambda のデプロイではサーバーレス Lambda 関数のバージョンをデプロイするため、Amazon EC2 インスタンスのインスタンスプロファイルは必要ありません。

Amazon EC2 インスタンスには、AWS CodeDeploy によってデプロイされるアプリケーションが保存される Amazon S3 バケットまたは GitHub レポジトリへのアクセス権限が必要です。AWS CodeDeploy と互換性のある Amazon EC2 インスタンスを起動するには、追加の IAM ロールであるインスタンスプロファイルを作成する必要があります。以下の手順では、Amazon EC2 インスタンスにアタッチする IAMインスタンスプロファイルを作成する方法を示します。このロールでは、アプリケーションが保存されるAmazon S3 バケットまたは GitHub リポジトリへのアクセス権限を AWS CodeDeploy に与えます。

IAM インスタンスプロファイルは、AWS CLI、IAM コンソール、または IAM API で作成できます。Note

IAM インスタンスプロファイルは、起動時の Amazon EC2 インスタンスまたは以前に起動したインスタンスにアタッチできます。詳細については、「インスタンスプロファイル」を参照してください。

API バージョン 2014-10-0626

Page 35: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI)

トピック• Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI) (p. 27)• Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (コンソール) (p. 29)

Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI)以下のステップでは、「AWS CodeDeploy の使用開始 (p. 20)」にある最初の 3 つの手順の指示に従っていることを前提としています。

1. 開発マシンで、CodeDeployDemo-EC2-Trust.json という名前のテキストファイルを作成します。Amazon EC2 によるユーザーの代理操作の実行を許可する、次の内容を貼り付けます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

2. 同じディレクトリで、CodeDeployDemo-EC2-Permissions.json という名前のテキストファイルを作成します。以下の内容を貼り付けます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ]}

Note

We recommend that you restrict this policy to only those Amazon S3 buckets your AmazonEC2 instances must access. Make sure to give access to the Amazon S3 buckets that containthe AWS CodeDeploy agent. Otherwise, an error may occur when the AWS CodeDeployagent is installed or updated on the instances. To grant the IAM instance profile access toonly some AWS CodeDeploy resource kit buckets in Amazon S3, use the following policy butremove the lines for buckets you want to prevent access to:

{ "Version": "2012-10-17", "Statement": [ {

API バージョン 2014-10-0627

Page 36: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI)

"Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

3. 同じディレクトリから、create-role コマンドを呼び出して、最初のファイルの情報に基づいてCodeDeployDemo-EC2-Instance-Profile という名前の IAM ロールを作成します。

Important

Be sure to include file:// before the file name. It is required in this command.

aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json

4. 同じディレクトリから、put-role-policy コマンドを呼び出して、2 番目のファイルの情報に基づいてCodeDeployDemo-EC2-Instance-Profile という名前のロールにアクセス権限を与えます。

Important

Be sure to include file:// before the file name. It is required in this command.

aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json

5. create-instance-profile コマンドに続いて add-role-to-instance-profile コマンドを呼び出し、CodeDeployDemo-EC2-Instance-Profile という名前の IAM インスタンスプロファイルを作成します。インスタンスプロファイルにより、Amazon EC2 は最初に起動されたときに、CodeDeployDemo-EC2-Instance-Profile という名前の IAM ロールを Amazon EC2 インスタンスに渡します。

aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profileaws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile

IAM インスタンスプロファイルの名前を取得する必要がある場合は、AWS CLI リファレンスの IAMセクションで「list-instance-profiles-for-role」を参照してください。

API バージョン 2014-10-0628

Page 37: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (コンソール)

これで、Amazon EC2 インスタンスにアタッチする IAM インスタンスプロファイルを作成しました。詳細については、Amazon EC2 ユーザーガイドの「Amazon EC2 の IAM ロール」を参照してください。

Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (コンソール)1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/

iam/)を開きます。2. IAM コンソールのナビゲーションペインで、[Policies]、[Create policy] の順に選択します。 ([Get

Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。3. [ポリシーの作成] ページで、[JSON] タブに以下を貼り付けます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ]}

Note

We recommend that you restrict this policy to only those Amazon S3 buckets your AmazonEC2 instances must access. Make sure to give access to the Amazon S3 buckets that containthe AWS CodeDeploy agent. Otherwise, an error may occur when the AWS CodeDeployagent is installed or updated on the instances. To grant the IAM instance profile access toonly some AWS CodeDeploy resource kit buckets in Amazon S3, use the following policy butremove the lines for buckets you want to prevent access to:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",

API バージョン 2014-10-0629

Page 38: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: サンプルデプロイウィザードを試す

"arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

4. [ポリシーの確認] を選択します。5. [ポリシーの作成] ページで、[ポポポポポ] ボックスに「CodeDeployDemo-EC2-Permissions」と入力しま

す。6. (オプション) [説明] に、ポリシーの説明を入力します。7. [Create Policy] を選択します。8. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。9. [ロールの作成] ページで、[AWS サービス] を選択し、[このロールを使用するサービスを選択] リスト

から以下を選択します。 EC210. [Select your use case] リストで、[EC2] を選択します。11. [Next: Permissions] を選択します。12. [Attached permissions policy] ページで、以下の横にボックスがある場合は次のようになります。

CodeDeployDemo-EC2-Permissions選択後、[Next: Review] を選択します。13. [Review] ページの [Role name] に、サービスロールの名前を入力します (例: CodeDeployDemo-EC2-

Instance-Profile), and then choose Create role.

このサービスロールの説明を、[Role description] ボックスに入力することもできます。

これで、Amazon EC2 インスタンスにアタッチする IAM インスタンスプロファイルを作成しました。詳細については、Amazon EC2 ユーザーガイドの「Amazon EC2 の IAM ロール」を参照してください。

ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す

Note

AWS CodeDeploy サンプルデプロイウィザードは現在、AWS Lambda コンピューティングプラットフォームを選択します。 を使用するデプロイには適用されません。

「AWS CodeDeploy の使用開始 (p. 20)」で最初の 4 つのステップが完了したら、Sample deploymentwizardを試します。このウィザードは、AWS CodeDeploy デプロイを作成するステップを案内します。Sample deployment wizardでは、インプレースデプロイおよび Blue/Green デプロイを試すことができます。

• インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。インプレイスデプロイは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでのみ使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要 (p. 4)」を参照してください。

• Blue/Green デプロイ: デプロイの動作は、使用する コンピューティングプラットフォームを選択します。 により異なります。• EC2/オンプレミス コンピューティングプラットフォームを選択します。 の Blue/Green: 以下のス

テップによって、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。

API バージョン 2014-10-0630

Page 39: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド前提条件

• インスタンスは、置き換え先環境に対してプロビジョニングされます。• 最新のアプリケーションリビジョンが置き換え先インスタンスにインストールされます。• アプリケーションのテストやシステムの検証などのアクティビティでは、オプションの待機時間が

発生します。• 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラ

フィックは、それらに再ルーティングされます。元の環境のインスタンスは登録解除されます。これらのインスタンスは削除するか、その他の用途のために引き続き実行できます。

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用する場合、Blue/Green デプロイは Amazon EC2 インスタンスでのみ動作します。

• AWS Lambda コンピューティングプラットフォームを選択します。 の Blue/Green: トラフィックは、現在のサーバーレス環境から、更新された Lambda 関数のバージョンの環境に移行されます。検証テストを実行する Lambda 関数を指定し、トラフィックの移行が発生する方法を選択できます。AWSLambda コンピューティングプラットフォームを選択します。 のデプロイはすべて、Blue/Green デプロイです。そのため、デプロイタイプを指定する必要はありません。

Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

両方のデプロイタイプサンプルでは、AWS CodeDeploy の経験がなく、AWS CodeDeploy のアプリケーション、アプリケーションリビジョン、デプロイグループなどのリソースを作成していないことを前提としています。

これらのトピックは、AWS CodeDeploy 固有のリソースと概念を示しています。開始する前にそれらに精通するには、「Primary Components (p. 8)」を参照してください。

前提条件AWS CodeDeploy でサンプル Amazon EC2 インスタンスを作成するには、Amazon EC2 インスタンスキーペアが必要です。Amazon EC2 インスタンスキーペアを作成するには、「Amazon EC2 を使用してキーペアを作成する」の手順に従います。必ず、AWS General Reference の「リージョンとエンドポイント」に示されているいずれかのリージョンで Amazon EC2 インスタンスキーペアを作成してください。ウィザードを開始する前に、Amazon EC2 インスタンスキーペアを作成する必要があります。そうしないと、サンプルデプロイウィザードの [Key pair name] ドロップダウンリストに表示されません。

AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する場合、呼び出し元の IAM ユーザーには、AWS CloudFormation および AWS サービスと、AWS CloudFormation が依存しているアクションへのアクセス権が必要です。「ステップ 1: IAM ユーザーをプロビジョニングする (p. 20)」のステップに従って呼び出し元の IAM ユーザーをプロビジョニングしていない場合、少なくとも以下のポリシーをアタッチする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "codedeploy:*", "ec2:*", "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:DeleteInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy",

API バージョン 2014-10-0631

Page 40: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド前提条件

"iam:GetRole", "iam:PassRole", "iam:PutRolePolicy", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "*" } ]}

ポリシーの以下の部分では、サービスロールの作成に必要な IAM アクションへの IAM ユーザーアクセスの呼び出しを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "*" } ]}

ポリシーの以下の部分では、アプリケーションとデプロイグループを作成し、アプリケーションをデプロイする IAM ユーザーアクセス権限の呼び出しを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:*" ], "Resource": "*" } ]}

お探しのものではありませんか。

• AWS CodeDeploy の既存のアプリケーション、リビジョン、デプロイグループ、またはカスタムデプロイ設定を使用するデプロイを作成するには、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」の手順に従います。

• Amazon EC2 インスタンスではなくオンプレミスインスタンスへのデプロイの演習を行う場合は、「チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (Windows Server、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95)」を参照してください。

トピック• AWS CodeDeploy でサンプル Blue/Green デプロイを試す (p. 33)• AWS CodeDeploy でサンプルインプレースデプロイを試す (p. 36)

API バージョン 2014-10-0632

Page 41: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプル Blue/Green デプロイを試す

AWS CodeDeploy でサンプル Blue/Green デプロイを試すこのセクションでは、Sample deployment wizardを使用して 1 つ以上の Amazon EC2 インスタンスにリビジョンをデプロイし、次に Blue/Green デプロイを実行して、元の環境であるデプロイグループのインスタンスの元のセットを、置き換え先環境であるインスタンスの別のセットに置き換えるために必要なステップについて説明します。

トピック• ウィザードの開始 (p. 33)• ステップ 1: 作業を開始する (p. 33)• ステップ 2: デプロイタイプを選択する (p. 33)• ステップ 3: Blue/Green デプロイを作成する (p. 33)• ステップ 4: Blue/Green デプロイをモニタリングする (p. 35)• ステップ 5: ウェブアプリケーションウィンドウを更新する (p. 35)• ステップ 6: サンプルリソースをクリーンアップする (p. 35)

ウィザードの開始To start the wizard:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. If an introductory page appears, choose Get Started Now. If the Applications page appears, in Moreinfo, choose Sample deployment wizard.

ステップ 1: 作業を開始する[Sample deployment] を選択し、[Next] を選択します。

ステップ 2: デプロイタイプを選択する[Blue/green deployment] を選択し、[Next] を選択します。

ステップ 3: Blue/Green デプロイを作成する[Step 3: Create blue/green deployment] ページには、Blue/Green デプロイに必要なほとんどのコンポーネントのデフォルト値が示されています。

1. 次のフィールドで、デフォルト名をそのまま使用するか、変更します。

Note

フィールドにはさまざまな検証要件があるため、時間を節約するために、サンプルデプロイのデフォルト名はそのままにしておくことをお勧めします。

API バージョン 2014-10-0633

Page 42: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプル Blue/Green デプロイを試す

フィールド 説明

アプリケーション名 デプロイオプションの適切な組み合わせを使用して正しいコンテンツがデプロイされるようにするためのコンテナとして機能する名前。

デプロイグループ名 デプロイ先のインスタンスのグループを表す名前。

Auto Scaling グループ名 デプロイ環境用に Amazon EC2 インスタンスをプロビジョンする Auto Scaling グループの名前。

Load balancer name デプロイ環境のインスタンスにトラフィックをルーティングする Elastic Load Balancing のClassic Load Balancer

サービスロール名 デプロイプロセス中に AWS の他のサービスにアクセスするために必要な権限を AWSCodeDeploy に付与するサービスロールの名前。

2. [Key pair name] ドロップダウンリストから、Amazon EC2 インスタンスに接続するために使用するAmazon EC2 インスタンスキーペアを選択します。

Note

Amazon EC2 インスタンスキーペアを作成するには、「Amazon EC2 を使用してキーペアを作成する」の手順に従います。AWS General Reference の「リージョンとエンドポイント」に一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。新しいAmazon EC2 インスタンスキーペアは、ウィザードを再起動するまで [Key pair name] ドロップダウンリストに表示されない場合があります。

3. [Launch environment] を選択します。4. 環境の準備ができたら、[Congratulations! Your environment is ready] の下の詳細を確認します。

Note

後で簡単に参照できるように、[Congratulations! Your environment is ready] エリアのテキスト全体をコンピュータのファイルにコピーしておくことをお勧めします。

• 作成済み Classic Load Balancer の名前。例: BlueGreenLoadBalancer-abcdefh。• 元の環境に対して作成された Auto Scaling グループの名前 (例: CodeDeployBGStack-abcdefh-BlueGreenAutoScalingGroup-1IJKLMN234O56)。

• 元の環境にデプロイされたアプリケーションのウェブアドレス (例: http://BlueGreenLoadBalancer-abcdefh-1234567890.us-east-2.elb.amazonaws.com)。

Important

ここでは、ウェブアプリケーションを別のブラウザウィンドウで開き、後で更新して Blue/Green デプロイ中に行われた背景色の変更を確認することをお勧めします。

• 環境の作成に使用された AWS CloudFormation スタックの名前 (例: BlueGreenLoadBalancer-abcdefh)。サンプルの Blue/Green デプロイからリソースのクリーンアップの準備ができたら、AWS CloudFormation コンソールを使用して、このスタックを削除します。

• 次のような、元の環境にインストールされるサンプルアプリケーションの場所。

https://s3.amazonaws.com/aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip

5. [Start blue/green deployment] を選択します。

API バージョン 2014-10-0634

Page 43: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプル Blue/Green デプロイを試す

ステップ 4: Blue/Green デプロイをモニタリングする[Deployment] ページで、ダッシュボード形式で Blue/Green デプロイの進行状況を表示できます。

[Deployment progress] エリアでは、デプロイの 4 つの主要なステップの進行状況がレポートされます。

• 置き換え先環境のインスタンスをプロビジョニングしています。• 置き換え先環境の新しいアプリケーションリビジョンをインストールしています。• 置き換え先環境にトラフィックを再ルーティングしています。• 元の環境でインスタンスを削除しています。

[Instances receiving traffic] エリアでは、現在ロードバランサーに登録されている、元の環境と置き換え先環境の両方のインスタンス数の両方がレポートされます。

[Deployment details] エリアには、置き換え先環境にインストールされたデプロイおよびアプリケーションリビジョンの両方に関する識別情報が表示されます。

[Instance activity] エリアには、元の環境および置き換え先環境の両方からの各インスタンスに関する詳細が表示されます。

ステップ 5: ウェブアプリケーションウィンドウを更新する元の環境にインストールされたアプリケーションのビューを以前に開いたブラウザウィンドウ (http://BlueGreenLoadBalancer-abcdefh-1234567890.us-east-2.elb.amazonaws.com など) で、ブラウザの [Refresh] ボタンを選択します。

ウェブページの背景色が青から緑に変わった場合、「ステップ 3: Blue/Green デプロイを作成する (p. 33)」で作成されたインスタンスから「ステップ 4: Blue/Green デプロイをモニタリングする (p. 35)」のプロセス中に作成された置き換え先インスタンスに、トラフィックは正常にルーティングされました。

ステップ 6: サンプルリソースをクリーンアップする以降に料金が発生しないようにするため、このウィザードで使用されたリソースをクリーンアップする必要があります。リソースは次の手順でクリーンアップします。

• 置き換え先環境のインスタンスが属する Auto Scaling グループ (元の環境のインスタンスに関連付けられた Auto Scaling グループは、AWS CloudFormation スタックを削除すると削除されます)。

• Blue/Green デプロイ用の元の環境を提供するために Sample deployment wizard で作成された AWSCloudFormation スタック。

• Sample deployment wizard によって作成された AWS CodeDeploy デプロイグループとアプリケーション。

置き換え先環境の Auto Scaling グループを削除するにはAmazon EC2 コンソールに、サンプルの Blue/Green デプロイに関連付けられた 2 つの Auto Scaling グループが表示されます。エラーを回避するため、このステップの置き換え先環境に関連付けられた AutoScaling グループは必ず削除してください。Auto Scaling グループは形式によって区別できます。

• 次の形式で Auto Scaling を削除します。

CodeDeploy_BlueGreenDemoFleet-9zyxwvut_d-ZY9XWVUTS8R

• 次の形式で Auto Scaling グループを削除するか、AWS CloudFormation スタックが削除されるときに削除するようにできます。

CodeDeployBGStack-abcdefh-BlueGreenAutoScalingGroup-1IJKLMN234O56

API バージョン 2014-10-0635

Page 44: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. ナビゲーションペインの Auto Scaling で、[Auto Scaling Groups] を選択します。3. [Auto Scaling] グループページで、置き換え先環境用に作成された Auto Scaling グループ別にボックス

を選択します。以下に例を示します。

CodeDeploy_BlueGreenDemoFleet-9zyxwvut_d-ZY9XWVUTS8R

[Actions] メニューから、[Delete] を選択します。4. 確認を求めるメッセージが表示されたら、[Yes, Delete] を選択します。

AWS CloudFormation スタックを削除するには

1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

2. Blue/Green デプロイ用に作成されたスタックの横にあるボックスを選択します。以下に例を示します。

CodeDeployBGStack-abcdefh-BlueGreenAutoScalingGroup-1IJKLMN234O56

[Actions] メニューから、[Delete Stack] を選択します。3. プロンプトが表示されたら、[Yes, Delete] を選択します。Amazon EC2、AWS Identity and Access

Management、Amazon VPC、および Elastic Load Balancing でこのデプロイ用に作成されたその他のリソースは削除されます。

AWS CodeDeploy の Blue/Green デプロイリソースレコードセットを削除するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. [Applications] ページで、削除するアプリケーションを選択します (例:BlueGreenDemoApplication)。

4. [Application details] ページの [Deployment groups] で、削除するデプロイグループの横のボタン (例:BlueGreenDemoFleet-1abcdef) を選択します。[Actions] メニューで、[Delete] を選択します。求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

5. [Application details] ページの下部で、[Delete application] を選択します。6. プロンプトが表示されたら、アプリケーションの名前を入力してから、[Delete] を選択します。

アプリケーションに関するすべてのレコードと関連するデプロイグループ、リビジョン、およびデプロイが削除されます。

AWS CodeDeploy でサンプルインプレースデプロイを試すこのセクションでは、Sample deployment wizardを使用して 1 つ以上の Amazon EC2 インスタンスにリビジョンをデプロイするのに必要なステップを案内します。

API バージョン 2014-10-0636

Page 45: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

トピック• サンプル AWS CodeDeploy インプレースデプロイのビデオ (p. 37)• ウィザードの開始 (p. 37)• ステップ 1: 作業を開始する (p. 37)• ステップ 2: デプロイタイプを選択する (p. 37)• ステップ 3: インスタンスを設定する (p. 37)• ステップ 4: アプリケーションに名前を付ける (p. 38)• ステップ 5: リビジョンを選択する (p. 38)• ステップ 6: デプロイグループを作成する (p. 38)• ステップ 7: サービスロールの選択 (p. 39)• ステップ 8: デプロイ設定を選択する (p. 39)• ステップ 9: デプロイの詳細を確認する (p. 40)• サンプルのインプレースデプロイリソースのクリーンアップ (p. 40)

サンプル AWS CodeDeploy インプレースデプロイのビデオこの短いビデオ (5:01) は、AWS CodeDeploy コンソールを使用したサンプル AWS CodeDeploy インプレースデプロイについて案内します。

AWS CodeDeploy インプレースデプロイのビデオ。

ウィザードの開始To start the wizard:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. If an introductory page appears, choose Get Started Now. If the Applications page appears, in Moreinfo, choose Sample deployment wizard.

ステップ 1: 作業を開始する[Sample deployment] を選択し、[Next] を選択します。

ステップ 2: デプロイタイプを選択する[In-place deployment] を選択し、[Next] を選択します。

ステップ 3: インスタンスを設定するAWS CodeDeploy デプロイで使用するよう設定済みの Amazon EC2 インスタンスがある場合は、[Skip] を選択し、手順に従ってから「ステップ 4: アプリケーションに名前を付ける (p. 38)」に進みます。

AWS CodeDeploy で Amazon EC2 インスタンスの新しいセットを起動する場合:

1. [Operating system] の横にある [Amazon Linux] または [Windows Server] を選択します。

API バージョン 2014-10-0637

Page 46: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

Important

AWS CodeDeploy によって起動された Amazon EC2 インスタンスに対して課金される場合があるため、ウィザードの完了後は必ず削除してください。このウィザードでは、これらのAmazon EC2 インスタンスを起動するために AWS CloudFormation テンプレートが使用されます。Amazon EC2 インスタンスを起動するために作成された AWS CloudFormation スタックを削除する方法については、「AWS CloudFormation コンソールでのスタックの削除」を参照してください。スタック名は CodeDeploySampleStack で始まります。

2. [Key pair name] ドロップダウンリストから、Amazon EC2 インスタンスに接続するために使用するAmazon EC2 インスタンスキーペアを選択します。

Note

Amazon EC2 インスタンスキーペアを作成するには、「Amazon EC2 を使用してキーペアを作成する」の手順に従います。AWS General Reference の「リージョンとエンドポイント」に一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。新しい Amazon EC2 インスタンスキーペアは、ウィザードを再起動するまで [Key pair name]ドロップダウンリストに表示されない場合があります。

3. [Tag key and value] のデフォルト値はそのまま使用します。AWS CodeDeploy はこのタグキーと値を使用して、デプロイ中にインスタンスを見つけます。

提案されたタグキーと値をオーバーライドする場合 (たとえば、以前に呼びだした Amazon EC2 インスタンスを削除せずに、このウィザードを複数回実行する場合)、[Key] ボックスのタグキー Name をそのまま使用し、[Value] ボックスに別のタグ値を入力することをお勧めします。Amazon EC2 インスタンスタグの詳細については、「Amazon EC2 リソースにタグを付ける」を参照してください。

4. [Launch instances] を選択します。

[See more details in AWS CloudFormation] を選択した場合、AWS CloudFormation コンソールが別のウェブブラウザタブで開きます。CodeDeploySampleStack で始まるスタックを探します。[CREATE_COMPLETE] が [Status] 列に表示される場合、Amazon EC2 インスタンスは起動しています (この処理には数分かかることがあります)。

5. 続行するには、[Next] を選択します。

ステップ 4: アプリケーションに名前を付ける[Application name] ボックスで、提案されたアプリケーション名をそのまま使用するか、必要に応じて別の名前を入力し、[Next] を選択します。

ステップ 5: リビジョンを選択するサンプルのアプリケーションリビジョンに関する情報を確認し、[Next] を選択します。

Note

サンプルリビジョンのコンテンツを調べる場合は、[Download sample bundle] を選択し、ウェブブラウザの手順に従ってコンテンツをダウンロードして表示します。

「ステップ 3: インスタンスを設定する (p. 37)」で [Skip] を選択した場合、[Revision type] ドロップダウンリストから、Amazon EC2 インスタンスタイプに対応するアプリケーションリビジョンのタイプ(Amazon Linux または Windows Server) を選択します。

ステップ 6: デプロイグループを作成する1. [Deployment group name] ボックスで、提案されたデプロイグループ名をそのまま使用するか、必要

に応じて別の名前を入力します。

API バージョン 2014-10-0638

Page 47: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

2. [Configure instances] ページで指定したキーと値のペアのキーと値 (例: Name およびCodeDeployDemo) が表示されます。

「ステップ 3: インスタンスを設定する (p. 37)」で [Skip] を選択した場合、[Add instances] で、[Key] および [Value] ボックスの値を、Amazon EC2 インスタンス用のキーと値のペアで上書きします。

オプションで、Amazon EC2 インスタンスに複数のキーと値のペアがある場合は、それらを空白の行に入力できます。新しい空白行が表示されるので、別のキーと値のペアを追加できます。最大 10 個のキーと値のペアを追加できます。リストからキーと値のペアを削除するには、削除のアイコンを選択します。

Note

AWS CodeDeploy はキーと値の各ペアに一致するインスタンス数を表示します。AmazonEC2 コンソールでインスタンスを表示するには、数値をクリックします。AWS CloudFormation テンプレートを使用して新しい Amazon EC2 インスタンスを起動し、その数が予想よりも大きい場合は、[Cancel] を選択し、最初からウィザードを開始して、「ステップ 3: インスタンスを設定する (p. 37)」でデフォルトとは異なるタグ値を指定します (必ず、AWS CloudFormation スタックを削除して Amazon EC2 インスタンスを削除してください)。独自の Amazon EC2 インスタンスを使用している場合は、新しいタグキーと値を AmazonEC2インスタンスに追加してから、[Add instances] でデフォルトとは異なるタグキーと値を指定します。

3. デプロイグループに追加する Auto Scaling グループがある場合は、[Search by Auto Scaling groupnames] を選択し、Auto Scaling グループ名を入力します。最大 10 個の Auto Scaling グループを追加できます。削除のアイコンを選択して、リストから Auto Scaling グループを削除します。

Note

AWS CodeDeploy は各 Auto Scaling グループ名に一致する Amazon EC2 インスタンスの数を表示します。Amazon EC2 コンソールでインスタンスを表示するには、数値をクリックします。

4. [次へ] を選択します。

ステップ 7: サービスロールの選択[Create a service role] または [Use an existing service role] を選択します。

このウィザードを初めて使用する場合、[Create a service role] を選択し、[Next] を選択してデフォルト名を受け入れてから、「ステップ 8: デプロイ設定を選択する (p. 39)」に進むことをお勧めします。

既にサービスロールがある場合は、[Use an existing service role] を選択し、[Role name] ドロップダウンリストからこれを選択して、[Next] を選択します。

ステップ 8: デプロイ設定を選択する1. このデプロイの組み込み設定を使用するには、[Use a default deployment configuration] を選択しま

す。このデプロイ用に独自の設定を作成するには、[Create a custom deployment configuration] を選択します。

2. [Use a default deployment configuration] を選択し、選択したものとは異なる設定を使用する場合は、目的の設定の横にある [Select] を選択します。[Next] を選択し、「ステップ 9: デプロイの詳細を確認する (p. 40)」に移動します。

3. [Create a custom deployment configuration] を選択した場合:

a. [Deployment configuration name] ボックスに、設定の一意の名前を入力します。API バージョン 2014-10-06

39

Page 48: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

b. [Number] または [Percentage] ボックスを使用して、デプロイ中に利用可能にする合計 AmazonEC2 インスタンス数の数値または割合 (%) を入力します。

c. [次へ] を選択します。

ステップ 9: デプロイの詳細を確認する1. 変更を加える必要がある場合は、いずれかの [Edit] リンクを選択します。変更を行った後は、[Review

deployment details] ページに戻るまで [Next] を選択し、[Deploy] を選択します。2. テーブルの横にある [Refresh] ボタンを選択して、デプロイの状態を取得します。デプロイの情報を取

得する場合は、「インスタンスの詳細の表示 (コンソール) (p. 207)」を参照してください。3. このサンプルリビジョンでは、各インスタンスに 1 つのウェブページをデプロイします。ウェブブ

ラウザを使用して、各インスタンスについて http://PublicDNS に移動することで (例: http://ec2-01-234-567-890.compute-1.amazonaws.com)、デプロイが成功したことを確認できます。ウェブページには、成功のメッセージが表示されます。

パブリック DNS 値を取得するには、Amazon EC2 コンソールで Amazon EC2 インスタンスを選択します。[Description] タブで、[Public DNS] の値を検索します。

サンプルのインプレースデプロイリソースのクリーンアップ以降に料金が発生しないようにするため、このウィザードで使用されたリソースをクリーンアップする必要があります。AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動した場合は、AWS CloudFormation スタックを削除します。これにより、インスタンスと関連リソースが終了されます。

このウィザードのためだけに独自の Amazon EC2 インスタンスを起動した場合、そのインスタンスは削除する必要があります。オプションで、このウィザードに関連付けられたデプロイコンポーネントレコードを、AWS CodeDeploy コンソールから削除できます。

AWS CloudFormation スタックを削除するには

1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

2. CodeDeploySampleStack で始まるスタックの横にあるボタンを選択します。[Actions] メニューで、[Delete Stack] を選択します。

3. プロンプトが表示されたら、[Yes, Delete] を選択します。Amazon EC2 インスタンスは終了します。関連する IAM インスタンスプロファイルとインスタンスロールは削除されます。

Amazon EC2 インスタンスを削除するには

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. ナビゲーションペインで、[Instances] の下にある [Instances] を選択します。3. 削除する各 Amazon EC2 インスタンスのチェックボックスをオンにします。4. [Actions] メニューで [Instance State] をポイントし、[Terminate] を選択します。5. プロンプトが表示されたら、[Yes, Terminate] を選択します。

AWS CodeDeploy デプロイコンポーネントレコードを削除するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

API バージョン 2014-10-0640

Page 49: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy でサンプルインプレースデプロイを試す

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. [Applications] ページで、削除するアプリケーションを選択します。4. [Application details] ページの [デプロイグループ] で、削除するデプロイグループの隣のボタンを選択

します。[Actions] メニューで、[Delete] を選択します。求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

5. [Application details] ページの下部で、[Delete application] を選択します。6. プロンプトが表示されたら、アプリケーションの名前を入力してから、[Delete] を選択します。

アプリケーションに関するすべてのレコードと関連するデプロイグループ、リビジョン、およびデプロイが削除されます。

API バージョン 2014-10-0641

Page 50: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド他の AWS のサービスとの統合

製品とサービスを AWS CodeDeployと統合する

デフォルトで、AWS CodeDeploy は多数の AWS のサービス、およびパートナーの製品やサービスと統合されています。以下の情報は、使用する製品やサービスを統合するための AWS CodeDeploy の設定に役立ちます。

• 他の AWS のサービスとの統合 (p. 42)• パートナーの製品とサービスとの統合 (p. 51)• コミュニティから統合の例 (p. 58)

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

Amazon CloudWatch Amazon CloudWatch は、AWS クラウドリソースと、AWS で実行するアプリケーションのモニタリングサービスです。Amazon CloudWatch を使用してメトリクスの収集と追跡、ログファイルの収集とモニタリングおよびアラームの設定ができます。AWS CodeDeploy は次の CloudWatch ツールをサポートしています。

• CloudWatch アラームは、指定したモニタリングメトリクスが CloudWatch アラームルールで指定したしきい値を超える、または下回った場合にデプロイをモニタリングして停止します。アラームモニタリングを使用するには、最初に CloudWatch でアラームを設定して、その後AWS CodeDeploy でアラームがアクティブになるとデプロイが停止する必要のあるアプリケーションまたはデプロイグループに追加します。

詳細はこちら:• CloudWatch Logs アラームの作成

• Amazon CloudWatch Events では、AWSCodeDeploy オペレーションでのインスタンスまたはデプロイの状態の変更を検出し、対応できます。次に、作成したルールに基づいてCloudWatch イベント はデプロイまたはインスタンスが、ルールで指定した状態になると、1 つ以上のターゲットアクションを呼び出します。

詳細はこちら:• Amazon CloudWatch Events を使用したデプ

ロイのモニタリング (p. 286)• Amazon CloudWatch Logs では、インスタンス

に個別にサインインせずに AWS CodeDeploy

API バージョン 2014-10-0642

Page 51: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド他の AWS のサービスとの統合

エージェントによって作成された 3 種類のログをモニタリングします。

詳細はこちら:• CloudWatch Logs コンソールでの AWS

CodeDeploy ログの表示

Auto Scaling AWS CodeDeploy では、指定した基準 (たとえば、指定された CPU 使用率、ディスクの読み込みや書き込み、または指定された時間間隔のインバウンドまたはアウトバウンドのネットワークトラフィックの上限の超過など) に基づいて AmazonEC2 インスタンスを自動的に起動する AWS のウェブサービスである Amazon EC2 Auto Scalingをサポートしています。これにより、必要とする時に Amazon EC2 インスタンスのグループを拡張することができ、AWS CodeDeploy を使用して追加の Amazon EC2 インスタンスにアプリケーションリビジョンを自動的にデプロイできます。AutoScaling は、不要となるとその Amazon EC2 インスタンスを終了します。

詳細はこちら:

• AWS CodeDeploy と Auto Scaling の統合 (p. 46)

• チュートリアル: AWS CodeDeploy を使用してAuto Scaling グループにアプリケーションをデプロイする (p. 102)

• Under the Hood: AWS CodeDeploy and AutoScaling Integration

AWS CloudTrail AWS CodeDeploy は AWS CloudTrail (AWS アカウントで AWS CodeDeploy によって、または、AWS CodeDeploy に代わって行われた API 呼び出しをキャプチャし、指定した Amazon S3 バケットにログファイルを渡すサービス) と統合されています。CloudTrail は、AWS CodeDeploy コンソール、AWS CLI を通した AWS CodeDeployコマンド、または AWS CodeDeploy API からのAPI 呼び出しを直接キャプチャします。CloudTrailによって収集された情報を使用して、AWSCodeDeploy に対してどのようなリクエストが行われたかを判断することができます。リクエストの作成元のソース IP アドレス、リクエストの実行者、リクエストの実行日時などです。

詳細はこちら:

• Monitoring Deployments with AWSCloudTrail (p. 289)

API バージョン 2014-10-0643

Page 52: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド他の AWS のサービスとの統合

AWS Cloud9 AWS Cloud9 はオンライン状態にあるクラウドベースの統合開発環境 (IDE) で、インターネットに接続したマシンからブラウザを使用してコードの記述、実行、デバッグ、デプロイを行うことができます。AWS Cloud9 には、コードエディタ、デバッガー、ターミナル、および AWS CLI や Gitなどの主要ツールが含まれています。

• AWS Cloud9 IDE を使用して、GitHub リポジトリにあるコードを実行、デバッグ、構築することができます。IDE Environment ウィンドウと [editor] タブを使用して、コードの表示、変更、保存を行うことができます。準備ができたら AWS Cloud9 ターミナルセッションの Git を使用して GitHub リポジトリにコードの変更をプッシュし、AWS CodeDeploy で更新をデプロイすることができます。AWS Cloud9 と GitHubを使用する場合の詳細情報については「AWSCloud9 の GitHub サンプル (GitHub Sample forAWS Cloud9)」をご覧ください。

• AWS Cloud9 IDE を使用して AWS Lambda 関数を更新できます。次に AWS CodeDeploy を使用して、トラフィックを AWS Lambda 関数の新しいバージョンにシフトするデプロイを作成します。詳しくは「AWS Cloud9 統合開発環境(IDE) で AWS Lambda 関数を使用する (Workingwith AWS Lambda Functions in the AWS Cloud9Integrated Development Environment (IDE))」をご覧ください。

AWS Cloud9 の詳細については「AWS Cloud9 とは? (What is AWS Cloud9)」と「AWS Cloud9 の開始方法 (Getting Started with AWS Cloud9)」をご覧ください。

API バージョン 2014-10-0644

Page 53: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド他の AWS のサービスとの統合

AWS CodePipeline AWS CodePipeline は、継続的な配信プロセスでソフトウェアをリリースするために必要な手順のモデル化、可視化、および自動化に使用できる継続的な配信サービスです。AWS CodePipeline を使用して、コード変更のたびにサービスが構築、テスト、デプロイを行うよう独自のプロセスを定義できます。たとえば、ベータ、ガンマ、本番の 3 つのアプリケーションのデプロイグループがあるとします。ソースコードが変更されるたびに、各デプロイグループに 1 つずつ更新をデプロイするようにパイプラインを設定できます。

AWS CodeDeploy を使用してデプロイするようにAWS CodePipeline を設定できます。

• Amazon EC2 インスタンス、オンプレミスインスタンス、または両方へのコード

• サーバーレス AWS Lambda 関数のバージョン。

パイプラインを作成する前または [Create Pipeline]ウィザードの段階のデプロイアクションで使用できるように、AWS CodeDeploy アプリケーション、デプロイおよびデプロイグループを作成できます。

詳細はこちら:

• AWS での DevOps 入門ガイド – AWSCodePipeline を AWS CodeDeploy と使用して、AWS CodeCommit リポジトリのソースコードを Amazon EC2 インスタンスに継続的に配信およびデプロイする方法を説明します。

• Simple Pipeline Walkthrough (Amazon S3Bucket)

• Simple Pipeline Walkthrough (AWS CodeCommitRepository)

• 4 ステージパイプラインのチュートリアル

AWS サーバーレスアプリケーションモデル AWS サーバーレスアプリケーションモデル (AWSSAM) は、サーバーレスアプリケーションを定義するモデルです。AWS CloudFormation を拡張し、サーバーレスアプリケーションで必要な AWSLambda 関数、Amazon API Gateway API、およびAmazon DynamoDB テーブルを定義するための簡略化された方法を提供します。すでに AWS SAMを使用している場合、デプロイの設定を追加してAWS CodeDeploy の使用を開始し、AWS Lambdaアプリケーションのデプロイ中にトラフィックが移行される方法を管理できます。

詳細については、「AWS サーバーレスアプリケーションモデル」を参照してください。

API バージョン 2014-10-0645

Page 54: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling

Elastic Load Balancing AWS CodeDeploy は、受信アプリケーショントラフィックを複数の Amazon EC2 インスタンス間に分散するサービスの Elastic Load Balancing をサポートしています。

また、AWS CodeDeploy のデプロイ中、インスタンスが準備完了ではない、現在デプロイ中、または環境の一部として不要になった場合は、ロードバランサーはそのインスタンスへのインターネットトラフィックのルーティングを防止します。

詳細はこちら:

• Integrating AWS CodeDeploy with Elastic LoadBalancing (p. 49)

トピック• AWS CodeDeploy と Auto Scaling の統合 (p. 46)• AWS CodeDeploy を Elastic Load Balancing に統合する (p. 49)

AWS CodeDeploy と Auto Scaling の統合AWS CodeDeploy は、Auto Scaling (定義された条件に従って自動的に Amazon EC2 インスタンスを起動できる AWS サービス) をサポートしています。これらの条件は、CPU 使用率、ディスク読み/書き、インバウンドまたはアウトバウンドのネットワークトラフィックに対して指定された時間の間隔を超過した制限を含めることができます。Auto Scaling は、不要となるとインスタンスを終了します。詳細については、「Auto Scaling とは」を参照してください。

Auto Scaling グループの一部として新しい Amazon EC2 インスタンスを起動すると、AWS CodeDeployではリビジョンを新しいインスタンスに自動的にデプロイできます。また、Elastic Load Balancing ロードバランサーに登録された Amazon EC2 インスタンスを使用して AWS CodeDeploy のデプロイを調整できます。詳細については、「Integrating AWS CodeDeploy with Elastic Load Balancing (p. 49)」および「AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する (p. 234)」を参照してください。

Note

複数のデプロイグループを 1 つ Auto Scaling グループと関連付ける場合、問題が発生することがありますので注意してください。たとえば、1 つのデプロイが失敗すると、インスタンスはシャットダウンを開始しますが、実行中の他のデプロイはタイムアウトに 1 時間かかる可能性があります。詳細については、「複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける (p. 373)」および「AWS CodeDeploy と Auto Scaling の統合の詳細」を参照してください。

トピック• AWS CodeDeploy アプリケーションを Auto Scaling グループにデプロイする (p. 47)• AWS CodeDeploy を使用した Auto Scaling 動作 (p. 47)• AWS CodeDeploy および Auto Scaling を使用したカスタム AMI の使用 (p. 48)

API バージョン 2014-10-0646

Page 55: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling

AWS CodeDeploy アプリケーションを Auto Scaling グループにデプロイするAWS CodeDeploy アプリケーションリビジョンを Amazon EC2 Auto Scaling グループにデプロイするには。

1. Auto Scaling グループが Amazon S3 を使用できるようにする IAM インスタンスプロファイルを作成または検索します。

Note

また、AWS CodeDeploy を使用して GitHub リポジトリからのリビジョンを Auto Scaling グループにデプロイできます。Amazon EC2 インスタンスが、IAM インスタンスプロファイルを必要としていても、プロファイルには、GitHub リポジトリからデプロイするための追加のアクセス許可は必要ありません。詳細については、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」を参照してください。

2. IAM インスタンスプロファイルを指定して Auto Scaling グループを作成、または使用します。3. AWS CodeDeploy が Auto Scaling グループを含むデプロイグループを作成できるようにするサービス

ロールを作成、または検索します。4. Auto Scaling グループ名およびサービスロールを指定し、AWS CodeDeploy を使用してデプロイグ

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

イします。

詳細については、「チュートリアル: AWS CodeDeploy を使用して Auto Scaling グループにアプリケーションをデプロイする (p. 102)」を参照してください。

AWS CodeDeploy を使用した Auto Scaling 動作カスタムライフサイクルのフックイベントの実行順序は事前に決定できません

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

Auto Scaling グループにカスタムライフサイクルフックを追加する方法については、「ライフサイクルフックの追加」を参照してください。

デプロイ中のスケールアップイベントは混合環境をもたらす

デプロイ中に Auto Scaling スケールアップイベントが発生すると、新しいインスタンスは、今回デプロイ中のアプリケーションリビジョンではなく、前回デプロイしたアプリケーションリビジョンで更新されます。デプロイが成功すると、古いインスタンスと新しくスケールアップされたインスタンスは異なるアプリケーションリビジョンを反映します。

この問題が発生したときに解決するには、新しいほうのアプリケーションリビジョンを該当するデプロイグループに再デプロイできます。

この問題を回避するには、デプロイの進行中は Auto Scaling スケールアッププロセスを中断することをお勧めします。これは、AWS CodeDeploy でロードバランシング用の common_functions.sh スクリプトの設定を通じて行うことができます。HANDLE_PROCS=true の場合、デプロイ中は後続の Auto Scaling イベントが自動的に中断されます。

API バージョン 2014-10-0647

Page 56: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling

• AZRebalance• AlarmNotification• ScheduledActions• ReplaceUnhealthy

Important

この機能をサポートするのは、CodeDeployDefault.OneAtATime デプロイ設定のみです。他のデプロイ設定を使用する場合は、デプロイグループのインスタンス間で適用されるアプリケーションリビジョンが異なる場合があります。

HANDLE_PROCS=true を使用して Auto Scaling 使用時のデプロイ問題を避ける方法の詳細については、GitHub の「aws-codedeploy」で「Important notice about handling AutoScaling processes」を参照してください。

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

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

1. 新しくプロビジョニングしたインスタンスが開始する。2. すべての cfn-init ブートストラップスクリプトが最後まで実行する。3. AWS CodeDeploy エージェントが開始する。4. 最新のアプリケーションリビジョンがインスタンスにデプロイされる。

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

イベントの順序を制御するには、以下のベストプラクティスのいずれかを使用します。

• cfn-init スクリプトを通じて AWS CodeDeploy エージェントをインストールし、他のすべてのスクリプトの後に配置します。

• AWS CodeDeploy エージェントをカスタム AMI に含め、cfn-init スクリプトを使用してエージェントを起動し、他のすべてのスクリプトの後に配置します。

cfn-init の使用方法については、AWS CloudFormation ユーザーガイド の「cfn-init」を参照してください。

AWS CodeDeploy および Auto Scaling を使用したカスタム AMIの使用Auto Scaling グループで新しい Amazon EC2 インスタンスが起動されるときに使用する基本 AMI を指定するための 2 つのオプションがあります。

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

API バージョン 2014-10-0648

Page 57: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドElastic Load Balancing

• AWS CodeDeploy エージェントがインストールされていない基本 AMI を指定できます。またエージェントを Auto Scaling グループ内で新しいインスタンスが起動されるごとにインストールするようにできます。このオプションでは、ほかのオプションよりも新しい Amazon EC2 インスタンスの起動が遅くなりますが、インスタンスの最初のデプロイが成功する可能性は大きくなります。このオプションは、AWS CodeDeploy エージェントの最新バージョンを使用します。

AWS CodeDeploy を Elastic Load Balancing に統合するElastic Load Balancing は Classic Load Balancer、Application Load Balancer、Network Load Balancer という 3 種類のロードバランサーを提供します。いずれも AWS CodeDeploy デプロイで使用できます。

Classic Load Balancer

ルーティングおよび負荷分散を、トランスポートレイヤー (TCP/SSL) またはアプリケーションレイヤー (HTTP/HTTPS) のいずれかで行います。これは、EC2-Classic または VPC をサポートします。

Application Load Balancer

ルーティングと負荷分散をアプリケーションレイヤー (HTTP/HTTPS) で行い、パスベースのルーティングをサポートしています。Virtual Private Cloud (VPC) 内の EC2 の各インスタンスまたはコンテナインスタンスのポートにリクエストをルーティングできます。

Network Load Balancer

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

Elastic Load Balancing ロードバランサーの詳細については、以下のトピックを参照してください。

• Elastic Load Balancing とは• Classic Load Balancer とは• Application Load Balancer とは• Network Load Balancer とは

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

Note

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

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

Blue/Green デプロイの場合、ロードバランサーは、最新のアプリケーションリビジョンのデプロイ先であるデプロイグループの新しいインスタンス (置き換え先環境) に対しては、指定したルールに基づくトラ

API バージョン 2014-10-0649

Page 58: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドElastic Load Balancing

フィックのルーティングを許可し、前回のアプリケーションリビジョンの実行元である古いインスタンス(元の環境) からはトラフィックをブロックします。

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

Blue/Green デプロイの場合は、デプロイグループで Classic Load Balancer、Application Load Balancer、または Network Load Balancer を指定できます。AWS CodeDeploy コンソールまたは AWS CLI を使用してロードバランサーをデプロイグループに追加します。

Blue/Green デプロイにおけるロードバランサーの使用に関する詳細については、以下のトピックを参照してください。

• AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する (p. 234)• Blue/Green デプロイ (コンソール) のアプリケーションを作成します。 (p. 221)• Blue/Green デプロイ用のデプロイグループを作成する (コンソール) (p. 232)

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

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

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

ロードバランサーをデプロイグループに追加するには、AWS CodeDeploy コンソールまたは AWS CLI を使用します。インプレースデプロイでロードバランサーをデプロイグループで指定する詳細については、次のトピックを参照してください。

• インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)• インプレースデプロイ用のデプロイグループを作成する (コンソール) (p. 230)• AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する (p. 234)

スクリプトを使用したロードバランサーのインプレースデプロイでの指定の詳細については、次のトピックを参照してください。

• スクリプトを使用してインプレースデプロイのロードバランサーをセットアップする (p. 50)

スクリプトを使用してインプレースデプロイのロードバランサーをセットアップする

次の手順のステップに従ってデプロイライフサイクルスクリプトを使用し、インプレースデプロイのロードバランシングをセットアップします。

Note

CodeDeployDefault.OneAtATime 設定は、スクリプトを使用してインプレイスデプロイ用のロードバランサーを設定するときのみ使用します。同時実行はサポートされておら

API バージョン 2014-10-0650

Page 59: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドパートナーの製品とサービスとの統合

ず、CodeDeployDefault.OneAtATime 設定によりスクリプトの直列実行が確実になります。デプロイ設定の詳細については、AWS CodeDeploy でデプロイ設定を使用する (p. 212) を参照してください。

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

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

1. インプレースデプロイで使用するロードバランサーのタイプのサンプルをダウンロードします。

• Classic Load Balancer• Application Load Balancer または Network Load Balancer (同じスクリプトをいずれのタイプにも使

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

す。3. ターゲットの各 Amazon EC2 インスタンスで、IAM インスタンスプロファイルに少なくとも

elasticloadbalancing:* および autoscaling:* アクセス許可がアタッチされていることを確認します。4. アプリケーションのソースコードディレクトリにデプロイライフサイクルイベントのスクリプト

(register_with_elb.sh、deregister_from_elb.sh、および common_functions.sh) を含めます。

5. アプリケーションリビジョンの appspec.yml で、ApplicationStart イベントの間 register_with_elb.sh スクリプトを、および ApplicationStop イベントの間deregister_from_elb.sh スクリプトを実行する AWS CodeDeploy の手順を提供します。

6. インスタンスが Auto Scaling グループの一部である場合、この手順は省略できます。

common_functions.sh スクリプトで:

• Classic Load Balancer を使用している場合、ELB_LIST="" で Elastic Load Balancing ロードバランサーの名前を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。

• Application Load Balancer または Network Load Balancer を使用している場合、TARGET_GROUP_LIST="" で Elastic Load Balancing ターゲットグループ名を指定し、ファイルの他のデプロイ設定に必要な変更を加えます。

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

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

Ansible すでに一連の Ansible のプレイブックがあり、実行する場所が必要なだけの場合、Ansible と AWSCodeDeploy のテンプレートは、いくつかのシンプルなデプロイフックによって Ansible がローカルデプロイインスタンスで使用でき、プレイブック

API バージョン 2014-10-0651

Page 60: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドパートナーの製品とサービスとの統合

を実行する方法を示します。すでにインベントリを構築して維持するためのプロセスが存在する場合、AWS CodeDeploy エージェントのインストールと実行に使用できる Ansible モジュールもあります。

詳細はこちら:

• Ansible and AWS CodeDeploy

Atlassian – Bamboo and Bitbucket Bamboo での AWS CodeDeploy タスクは、anAppSpec file を含むディレクトリを .zip 形式で圧縮してファイルを Amazon S3 にアップロードします。そして、AWS CodeDeploy アプリケーションで提供されている設定に応じてデプロイを開始します。

Atlassian Bitbucket での AWS CodeDeploy のサポートにより、どのデプロイグループにもBitbucket UI から、オンデマンドで Amazon EC2インスタンスに直接コードをプッシュできます。これは、Bitbucket リポジトリのコードを更新した後、手動でのデプロイプロセスを実行するために、継続的インテグレーション (CI) プラットフォーム、または Amazon EC2 インスタンスにサインインする必要がないことを意味します。

詳細はこちら:

• Using the AWS CodeDeploy Task for Bamboo• Announcing Atlassian Bitbucket Support for AWS

CodeDeploy

Chef AWS では、Chef と AWS CodeDeploy を統合するための 2 つのテンプレートのサンプルを提供しています。1 番目は AWS CodeDeploy エージェントをインストールして開始する Chef のクックブックです。これにより AWS CodeDeploy を使用中に Chef でのホストインフラストラクチャの管理を継続することができます。2 番目のサンプルテンプレートでは、AWS CodeDeploy を使用して、各ノードで chef-solo を使用してクックブックとレシピの実行を調整する方法を示します。

詳細はこちら:

• Chef and AWS CodeDeploy

API バージョン 2014-10-0652

Page 61: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドパートナーの製品とサービスとの統合

CircleCI CircleCI では、自動化テスト、継続的な統合、およびデプロイのツールセットを提供します。CircleCI を使用して AWS で IAM ロールを作成し、circle.yml ファイルでデプロイパラメータを設定した後、AWS CodeDeploy を CircleCI と共に使用してアプリケーションリビジョンを作成し、Amazon S3 バケットへアップロードしてからデプロイを開始およびモニタリングできます。

詳細はこちら:

• Continuous Deployment with AWS CodeDeploy

CloudBees ビルド後のアクションとして、CloudBeesDEV@cloud で利用可能な AWS CodeDeployJenkins プラグインを使用できます。たとえば、継続的な配信パイプラインの終了時に、サーバー群にアプリケーションリビジョンをデプロイするために使用できます。

詳細はこちら:

• AWS CodeDeploy Jenkins Plugin Now Availableon DEV@cloud

Codeship Codeship を使用して、AWS CodeDeploy を通してアプリケーションリビジョンをデプロイできます。Codeship UI を使用して、ブランチのデプロイパイプラインに AWS CodeDeploy を追加できます。

詳細はこちら:

• AWS CodeDeploy へのデプロイ• AWS CodeDeploy Integration on Codeship

GitHub AWS CodeDeploy を使用して、GitHub リポジトリからアプリケーションリビジョンをデプロイできます。そのリポジトリのソースコードが変更されるたびに、GitHub リポジトリからデプロイをトリガーすることもできます。

詳細はこちら:

• AWS CodeDeploy と GitHub の統合 (p. 55)• チュートリアル: AWS CodeDeploy を使用し

て GitHub からアプリケーションをデプロイする (p. 118)

• Automatically Deploy from GitHub Using AWSCodeDeploy

API バージョン 2014-10-0653

Page 62: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドパートナーの製品とサービスとの統合

HashiCorp Consul オープンソースの HashiCorp Consul ツールを使用して、AWS CodeDeploy でアプリケーションをデプロイする時のアプリケーション環境の状態と安定性を確実にします。Consul を使用して、デプロイ中に検出されるアプリケーションを登録し、アプリケーションおよびノードをメンテナンスモードでデプロイから除外し、ターゲットのインスタンスに異常が生じた場合はデプロイを停止します。

詳細はこちら:

• AWS CodeDeploy Deployments with HashiCorpConsul

Jenkins AWS CodeDeploy Jenkins プラグインでは、Jenkins プロジェクトのビルド後のステップを示します。ビルドに成功すると、ワークスペースが圧縮されて Amazon S3 へアップロードし、新しいデプロイが開始されます。

詳細はこちら:

• AWS CodeDeploy Jenkins Plugin• Setting Up the Jenkins Plugin for AWS

CodeDeploy

Puppet Labs AWS では、Puppet と AWS CodeDeploy のサンプルテンプレートを提供しています。1 番目は AWSCodeDeploy エージェントをインストールして開始する Puppet のモジュールです。これにより AWSCodeDeploy を使用中に Puppet でのホストインフラストラクチャの管理を継続することができます。2 番目のサンプルテンプレートでは、AWSCodeDeploy を使用してモジュールとマニフェストの実行を、各ノードのマスターレス puppet で調整する方法を示します。

詳細はこちら:

• Puppet and AWS CodeDeploy

SaltStack SaltStack のインフラストラクチャを AWSCodeDeploy と統合することができます。AWSCodeDeploy モジュールを使用して、ミニオンズでAWS CodeDeploy エージェントをインストールして実行できます。またはいくつかのシンプルなデプロイのフックを使用して、Salt States の実行を調整できます。

詳細はこちら:

• SaltStack and AWS CodeDeploy

API バージョン 2014-10-0654

Page 63: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドGitHub

Solano Labs ビルドが Solano CI のテストに合格すると、アプリケーションをリリースする準備のためにスクリプトが実行されます。aws deploy push コマンドでは AWS CodeDeploy を使用してアプリケーションをパッケージングしてプッシュし、オプションでアプリケーションリビジョンをデプロイグループにデプロイし、デプロイされたことを確認します。また CI ビルドから自動の AWSCodeDeploy デプロイを設定することもできます。

詳細はこちら:

• AWS CodeDeploy Deployments from Solano CIBuilds

TeamCity AWS CodeDeploy Runner プラグインを使用して、TeamCity からアプリケーションを直接デプロイできます。このプラグインで追加されるTeamCity のビルドステップでは、アプリケーションリビジョンを準備して Amazon S3 バケットにアップロードし、AWS CodeDeploy アプリケーションでリビジョンを登録して、AWSCodeDeploy のデプロイを作成します。さらに、必要に応じて、デプロイが完了するまで待機します。

詳細はこちら:

• AWS CodeDeploy Runner (ダウンロード)• AWS CodeDeploy Runner プラグイン (ドキュメ

ント)

Travis CI ビルドが成功した後に AWS CodeDeploy でデプロイをトリガーするように Travis CI を設定できます。

詳細はこちら:

• Travis CI and AWS CodeDeploy Deployments

トピック• AWS CodeDeploy と GitHub の統合 (p. 55)

AWS CodeDeploy と GitHub の統合AWS CodeDeploy は、GitHub (ウェブベースのコードホスティングおよび共有サービス) をサポートします。AWS CodeDeploy は、GitHub リポジトリまたは Amazon S3 バケットに格納されているアプリケーションリビジョンをインスタンスへデプロイできます。

トピック• AWS CodeDeploy と GitHub の統合の紹介ビデオ (p. 56)• GitHub から AWS CodeDeploy リビジョンをデプロイする (p. 56)• AWS CodeDeploy を使用した GitHub の動作 (p. 56)

API バージョン 2014-10-0655

Page 64: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドGitHub

AWS CodeDeploy と GitHub の統合の紹介ビデオこの短い動画 (5:20) は既存の GitHub のワークフローから AWS CodeDeploy を使用して、アプリケーションのデプロイを自動化する方法を示しています。

AWS CodeDeploy と GitHub の統合の紹介ビデオ。

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

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

互換性のあるリビジョンを作成するには、AWS CodeDeploy のリビジョンの計画を立てる (p. 242)および AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243) の手順に従います。

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

GitHub のアカウントを作成するには、「GitHub への参加」を参照してください。GitHub リポジトリを作成するには、「Repo の作成」を参照してください。

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

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

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

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

AWS CodeDeploy デプロイで使用するためにインスタンスを準備する方法については、「AWSCodeDeploy のインスタンスの使用 (p. 154)」を参照してください。

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

AWS CodeDeploy を使用した GitHub の動作トピック

• AWS CodeDeploy のアプリケーションを使用した GitHub の認証 (p. 56)• プライベートおよびパブリックな GitHub リポジトリとの AWS CodeDeploy のやり取り (p. 57)• AWS CodeDeploy と組織マネージド型の GitHub リポジトリのやり取り (p. 58)• AWS CodeDeploy を使用して、GitHub から自動的にデプロイする (p. 58)

AWS CodeDeploy のアプリケーションを使用した GitHub の認証GitHub を操作するために AWS CodeDeploy にアクセス許可を付与したら、GitHub アカウントとアプリケーション間の関連付けは AWS CodeDeploy に格納されます。GitHub の他のアカウントにアプリケー

API バージョン 2014-10-0656

Page 65: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドGitHub

ションをリンクできます。また、GitHub を操作するための AWS CodeDeploy に対するアクセス許可を取り消すこともできます。

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

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。3. [Create deployment] を選択します。

Note

新しいデプロイを作成する必要はありません。これは現在 GitHub の他のアカウントをアプリケーションにリンクする唯一の方法です。

4. [Application] ドロップダウンリストから、GitHub の他のアカウントにリンクするアプリケーションを選択します。

5. [Repository type] の横の [My application is stored in GitHub] を選択します。6. [Connect to GitHub] で、次のいずれかを実行します。

• GitHub アカウントに対する AWS CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[GitHub account] に、この接続を識別する名前を入力し、[Connect to GitHub] を選択します。アプリケーションの GitHub を操作することをAWS CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 2 に進みます。

• 作成済みの接続を使用するには、その名前を [GitHub account] で選択してから [Connect to GitHub]を選択します。ステップ 4 に進みます。

• 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[Connect to a different GitHub account] を選択し、[Connect to GitHub] を選択します。ステップ 2 に進みます。

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

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

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

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

1. AWS CodeDeploy アクセス許可を取り消す GitHub アカウントの認証情報を使用して、[GitHub] にサインインします。

2. GitHub の [Applications] ページを開いて、承認されたアプリケーションのリストで AWS CodeDeployを見つけ、アプリケーションの承認取り消しの GitHub の手順に従います。

プライベートおよびパブリックな GitHub リポジトリとの AWS CodeDeploy のやり取り

AWS CodeDeploy は、プライベートおよびパブリックの GitHub リポジトリからのアプリケーションのデプロイをサポートします。ユーザーに代わって、GitHub にアクセスするアクセス許可を付与する場合、AWS CodeDeploy には GitHub アカウントがアクセス権限を持つプライベートの GitHub リポジトリ

API バージョン 2014-10-0657

Page 66: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドコミュニティから統合の例

すべてへの読み取り/書き込みアクセスがあります。ただし、AWS CodeDeploy は、GitHub リポジトリからのみ読み込みます。プライベート GitHub のリポジトリに書き込むことはありません。

AWS CodeDeploy と組織マネージド型の GitHub リポジトリのやり取り

デフォルトでは、組織によって管理される GitHub リポジトリ (アカウントのプライベートまたはパブリックリポジトリとは対照的に) は、AWS CodeDeploy を含め、サードパーティアプリケーションへのアクセスを許可しません。デプロイは、組織によるサードパーティアプリケーション制限が GitHub で有効化され、GitHub リポジトリからコードをデプロイしようとすると失敗します。この問題を解決する 2 つの方法があります。

• 組織のメンバーとして、組織の所有者に AWS CodeDeploy へのアクセスを承認するように要求できます。このアクセスをリクエストする手順は、個々のアカウントに対して、すでに AWS CodeDeploy を認証済みかどうかによって異なります。• アカウントの AWS CodeDeploy へのアクセスが認証済みの場合は、「組織への認証済みアプリケー

ションの承認リクエスト」を参照してください。• まだアカウントの AWS CodeDeploy へのアクセスを認証していない場合は、「組織へのサードパー

ティアプリケーションの承認リクエスト」を参照してください。• 組織の所有者は、組織に対するサードパーティアプリケーションの制限を無効にできます。詳細につい

ては、「組織に対するサードパーティアプリケーションの制限の無効化」を参照してください。

詳細については、「サードパーティアプリケーションの制限について」を参照してください。

AWS CodeDeploy を使用して、GitHub から自動的にデプロイする

ソースコードが変化するたびに GitHub リポジトリからデプロイをトリガーできます。手順については、「AWS CodeDeploy を使用した GitHub からの自動的なデプロイ」を参照してください。

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

Note

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

ブログ投稿• Automating AWS CodeDeploy Provisioning in AWS CloudFormation

AWS CloudFormation を使用して、AWS CodeDeploy でアプリケーションのデプロイをプロビジョニングする方法をご覧ください。

2016 年 1 月投稿• AWS Toolkit for Eclipse Integration with AWS CodeDeploy (Part 1)

AWS Toolkit for Eclipse Integration with AWS CodeDeploy (Part 2)

AWS Toolkit for Eclipse Integration with AWS CodeDeploy (Part 3)

Java 開発者が Eclipse 用 AWS CodeDeploy プラグインを使用して、Eclipse 開発環境から AWS にウェブアプリケーションを直接デプロイする方法をご覧ください。

API バージョン 2014-10-0658

Page 67: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド動画

2015 年 2 月投稿• Automatically Deploy from GitHub Using AWS CodeDeploy

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

発行日:2014年12月

動画• Hosting ASP.NET 5 Apps in AWS with Docker and AWS CodeDeploy

Microsoft Windows オペレーティングシステムで、Internet Information Services (IIS) サーバーにASP.NET 5 アプリケーションをデプロイするために AWS CodeDeploy を使用する方法をご覧ください。

Hosting ASP.NET 5 Apps in AWS with Docker and AWS CodeDeploy

2015 年 10 月投稿

所要時間: 47:37• Mastering AWS CodeDeploy with Jenkins and Puppet

オープンソースツールの Jenkins と Puppet を AWS CodeDeploy で使用する方法をご覧ください。

Mastering AWS CodeDeploy with Jenkins and Puppet

2015 年 5 月投稿

所要時間: 49:31

API バージョン 2014-10-0659

Page 68: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドチュートリアル: WordPress を Windows

以外のインスタンスへデプロイする

AWS CodeDeploy のチュートリアルこのセクションには、AWS CodeDeploy の使用方法の学習に役立ついくつかのチュートリアルが含まれています。

これをまだ完了していない場合は、「ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30)」から始めることをお勧めします。AWS CodeDeploy の使用経験はなくてもかまいません。Amazon EC2 インスタンスにいずれかのサンプルのアプリケーションリビジョンをデプロイするために必要なステップを案内します。

Important

開始する前に、「AWS CodeDeploy の使用開始 (p. 20)」の前提条件を完了します。

以下のチュートリアルの手順では、ファイルの保存場所 (例: c:\temp)、およびバケット、サブフォルダ、またはファイルに付ける名前 (例: それぞれ、codedeploydemobucket、HelloWorldApp、CodeDeployDemo-EC2-Trust.json) の提案を示していますが、それらを必ず使用する必要はありません。手順を実行する際に、ファイルの場所と名前は必ず置き換えてください。

トピック• チュートリアル: WordPress を Amazon EC2 インスタンス (Amazon Linux または Red Hat Enterprise

Linux および Linux, macOS, or Unix) にデプロイする (p. 60)• チュートリアル: 「Hello, World!」アプリケーションの AWS CodeDeploy によるデプロイ (Windows

Server) (p. 80)• チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロ

イ (Windows Server、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95)• チュートリアル: AWS CodeDeploy を使用して Auto Scaling グループにアプリケーションをデプロイ

する (p. 102)• チュートリアル: AWS CodeDeploy を使用して GitHub からアプリケーションをデプロイす

る (p. 118)

チュートリアル: WordPress を Amazon EC2 インスタンス (Amazon Linux または Red Hat EnterpriseLinux および Linux, macOS, or Unix) にデプロイする

このチュートリアルでは、オープンソースのブログツールであり PHP および MySQL に基づいたコンテンツ管理システムである WordPress を、Amazon Linux または Red Hat Enterprise Linux (RHEL) を実行している 1 つの Amazon EC2 インスタンスにデプロイします。

お探しのものではありませんか。

• 代わりに、Windows Server を実行する Amazon EC2 インスタンスへのデプロイの演習を行う場合は、「チュートリアル: 「Hello, World!」アプリケーションの AWS CodeDeploy によるデプロイ (WindowsServer) (p. 80)」を参照してください。

API バージョン 2014-10-0660

Page 69: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Amazon EC2 インスタンスを起動する

• Amazon EC2 インスタンスではなくオンプレミスインスタンスへのデプロイの演習を行う場合は、「チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (Windows Server、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95)」を参照してください。

このチュートリアルは、ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30) で説明した概念に基づいています。そのチュートリアルをまだ完了していない場合は、まずそこから始めることをお勧めします。

このチュートリアルのステップは、Linux, macOS, or Unix を実行しているローカルの開発用マシンの観点から説明されています。Windows を実行しているローカルマシンでこれらのステップのほとんどを完了できますが、chmod および wget などのコマンドや、sed のようなアプリケーション、/tmp のようなディレクトリパスを扱うステップの調整が必要になります。

このチュートリアルを開始する前に、「AWS CodeDeploy の使用開始 (p. 20)」の前提条件を完了している必要があります。これらは IAM ユーザーアカウントの設定、AWS CLI のインストールまたはアップグレード、IAM インスタンスプロファイルおよびサービスロールの作成を含みます。

トピック• ステップ 1: Amazon Linux または Red Hat Enterprise Linux Amazon EC2 インスタンスを起動して設

定する (p. 61)• ステップ 2: Amazon Linux または Red Hat Enterprise Linux Amazon EC2 インスタンスにデプロイす

るようソースコンテンツを設定する (p. 63)• ステップ 3: Amazon S3 に WordPress アプリケーションをアップロードします。 (p. 67)• ステップ 4: WordPress アプリケーションをデプロイする (p. 70)• ステップ 5: WordPress アプリケーションを更新して再デプロイする (p. 75)• ステップ 6: WordPress のアプリケーションと関連リソースのクリーンアップ (p. 77)

ステップ 1: Amazon Linux または Red Hat EnterpriseLinux Amazon EC2 インスタンスを起動して設定するAWS CodeDeploy を使用して WordPress アプリケーションをデプロイするには、Amazon Linux またはRed Hat Enterprise Linux (RHEL) を実行する Amazon EC2 インスタンスが必要です。Amazon EC2 インスタンスでは、HTTP 接続を許可する新しいインバウンドセキュリティルールが必要です。このルールは、正しくデプロイした後で WordPress ページをブラウザで表示するために必要です。

AWS CodeDeploy のインスタンスの使用 (p. 154)の手順に従います。インスタンスの Amazon EC2インスタンスタグの割り当てに関するこれらの指示の一部を実行する際には、必ず Name のタグキーと、CodeDeployDemo のタグ値を指定します。(別のタグキーまたはタグ値を指定した場合、ステップ 4:WordPress アプリケーションをデプロイする (p. 70) の手順で予期しない結果が生成される場合があります)。

Amazon EC2 インスタンスを起動する手順に従った後、このページに戻り、次のセクションに進みます。次のステップとして、AWS CodeDeploy でアプリケーションを作成 (p. 218) には進まないでください。

Amazon Linux または RHEL Amazon EC2 インスタンスに接続する新しい Amazon EC2 インスタンスが起動した後、手順に従ってインスタンスに接続する演習をします。

1. ssh コマンド (または SSH 対応の PuTTY などのターミナルエミュレータ) を使用して Amazon Linuxまたは RHEL Amazon EC2 インスタンスに接続します。Amazon EC2 インスタンスを開始した時に使

API バージョン 2014-10-0661

Page 70: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Amazon EC2 インスタンスを起動する

用したインスタンスのパブリック DNS アドレスとキーペアのプライベートキーが必要になります。詳細については、インスタンスへの接続を参照してください。

たとえば、パブリック DNS アドレスが ec2-01-234-567-890.compute-1.amazonaws.comで、SSH アクセスの Amazon EC2 インスタンスキーペアが codedeploydemo.pem という名前の場合、以下のように入力します。

ssh -i /path/to/codedeploydemo.pem [email protected]

/path/to/codedeploydemo.pem を .pem ファイルのパスと、例の DNS アドレスを AmazonLinux または RHEL Amazon EC2 インスタンスのアドレスと置き換えます。

Note

キーファイルのアクセス権限がオープンすぎるというエラーを受信した場合は、現在のユーザー (お客様) だけにアクセス権限を与えるように限定する必要があります。たとえば、Linux, macOS, or Unix タイプでは chmod コマンドを使用します。

chmod 400 /path/to/codedeploydemo.pem

2. サインインしたら、Amazon EC2 インスタンスについては、AMI のバナーを参照してください。Amazon Linux については次のように表示されます。

__| __|_ ) _| ( / Amazon Linux AMI ___|\___|___|

3. 次のように入力して、Amazon EC2 インスタンスをセットアップするときに AWS CodeDeploy エージェントが正しくインストールされたことを確認します。

sudo service codedeploy-agent status

AWS CodeDeploy のステータスの確認について詳しくは、「AWS CodeDeploy エージェントの実行の確認 (p. 139)」を参照してください。

AWS CodeDeploy エージェントがインストールされていない場合は、「Amazon Linux または RHELの AWS CodeDeploy エージェントをインストールまたは再インストールします。 (p. 142)」の手順に従います。

4. 実行中の Amazon EC2 インスタンスからサインアウトできます。

Warning

Amazon EC2 インスタンスは停止または終了しないでください。そうしないと、AWSCodeDeploy がインスタンスにデプロイできません。

HTTP トラフィックを許可するインバウンドルールの AmazonLinux または RHEL Amazon EC2 インスタンスへの追加次のステップでは、デプロイされた WordPress アプリケーションのホームページがブラウザに表示されるように、Amazon EC2 インスタンスに開いている HTTP ポートがあることを確認します。

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. [インスタンス] を選択し、該当するインスタンスを選択します。

API バージョン 2014-10-0662

Page 71: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

3. [セキュリティグループ] で [インバウンドルールの表示] を選択します。

セキュリティグループのルールの一覧は、次のように表示されます。

Security Groups associated with i-1234567890abcdef0 Ports Protocol Source launch-wizard-N 22 tcp 0.0.0.0/0 ✔

4. [セキュリティグループ] で、Amazon EC2 インスタンスのセキュリティグループを選択します。このグループは launch-wizard-N と呼ばれる場合があります。N は、インスタンスの作成時にセキュリティグループに割り当てられた名前です。

[インバウンド] タブを選択します。次の値を持つルールが表示された場合、インスタンスのセキュリティグループは適切に設定されています。

• [Type]: HTTP• [Protocol]: TCP• [Port Range]: 80• [Source]: Custom

5. 前のステップで示した値を持つルールが表示されない場合は、セキュリティグループへのルールの追加の手順を使用して、新しいセキュリティルールに追加します。

ステップ 2: Amazon Linux または Red Hat EnterpriseLinux Amazon EC2 インスタンスにデプロイするようソースコンテンツを設定するここでは、アプリケーションのソースコンテンツを設定し、インスタンスにデプロイできるものを用意します。

トピック• ソースコードの入手 (p. 63)• アプリケーションを実行するスクリプトの作成 (p. 64)• アプリケーション仕様ファイルの追加 (p. 66)

ソースコードの入手このチュートリアルでは、開発マシンからターゲット Amazon EC2 インスタンスに WordPress コンテンツ発行プラットフォームをデプロイします。WordPress のソースコードを入手するには、組み込みのコマンドラインの呼び出しを使用できます。または、開発マシンに Git をインストールしている場合は、代わりにそれを使用します。

これらのステップでは、WordPress ソースコードのコピーを開発マシンの /tmp ディレクトリにダウンロードすることを前提としています (任意のディレクトリを選択できますが、ステップで /tmp が指定されている場合は、その場所に必ず置き換えてください)。

次の 2 つのオプションのいずれかを選択して、開発マシンに WordPress ソースファイルをコピーします。最初のオプションでは、組み込みのコマンドラインの呼び出しを使用します。2 番目のオプションでは、Git を使用します。

トピック• WordPress のソースコード (組み込みのコマンドライン呼び出し) のコピーを入手するには (p. 64)

API バージョン 2014-10-0663

Page 72: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

• WordPress ソースコード (Git) のコピーを入手するには (p. 64)

WordPress のソースコード (組み込みのコマンドライン呼び出し) のコピーを入手するには

1. wget コマンドを呼び出して、WordPress のソースコードのコピーを .zip ファイル形式で現在のディレクトリにダウンロードします。

wget https://github.com/WordPress/WordPress/archive/master.zip

2. unzip、mkdir、cp、および rm コマンドを呼び出して、以下の操作を行います。

• master.zip ファイルを /tmp/WordPress_Temp ディレクトリ (フォルダ) に解凍します。• 解凍された内容を、/tmp/WordPress 宛先フォルダにコピーします。• 一時的な /tmp/WordPress_Temp フォルダと master ファイルを削除します。

コマンドを一度に 1 つずつ実行します。

unzip master -d /tmp/WordPress_Temp

mkdir -p /tmp/WordPress

cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress

rm -rf /tmp/WordPress_Temp

rm -f master

これにより、/tmp/WordPress フォルダに WordPress ソースコードファイルのクリーンなセットが配置されます。

WordPress ソースコード (Git) のコピーを入手するには

1. 開発マシンで Git をダウンロードしてインストールします。2. /tmp/WordPress フォルダで、git init コマンドを呼び出します。3. git clone コマンドを呼び出してパブリック WordPress レポジトリのクローンを作成し、その独自のコ

ピーを /tmp/WordPress 宛先フォルダで作成します。

git clone https://github.com/WordPress/WordPress.git /tmp/WordPress

これにより、/tmp/WordPress フォルダに WordPress ソースコードファイルのクリーンなセットが配置されます。

アプリケーションを実行するスクリプトの作成次に、ディレクトリでフォルダとスクリプトを作成します。AWS CodeDeploy はこれらのスクリプトを使用して、ターゲット Amazon EC2 インスタンスでアプリケーションリビジョンをセットアップし、デプロイします。スクリプトの作成には任意のテキストエディタを使用できます。

API バージョン 2014-10-0664

Page 73: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

1. WordPress ソースコードのコピーでスクリプトディレクトリを作成します。

mkdir -p /tmp/WordPress/scripts

2. /tmp/WordPress/scripts に install_dependencies.sh ファイルを作成します。 ファイルに以下の行を追加します。この install_dependencies.sh スクリプトは Apache、MySQL、およびPHP をインストールします。また、PHP に MySQL のサポートを追加します。

✔!/bin/bashsudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

3. /tmp/WordPress/scripts に start_server.sh ファイルを作成します。 ファイルに以下の行を追加します。この start_server.sh スクリプトは Apache および MySQL を起動します。

✔!/bin/bashservice httpd startservice mysqld start

4. /tmp/WordPress/scripts に stop_server.sh ファイルを作成します。 ファイルに以下の行を追加します。この stop_server.sh スクリプトは Apache および MySQL を停止します。

✔!/bin/bashisExistApp=`pgrep httpd`if [[ -n $isExistApp ]]; then service httpd stopfiisExistApp=`pgrep mysqld`if [[ -n $isExistApp ]]; then service mysqld stopfi

5. /tmp/WordPress/scripts に create_test_db.sh ファイルを作成します。 ファイルに以下の行を追加します。この create_test_db.sh スクリプトは、MySQL を使用して、WordPress で使用するポポポデータベースを作成します。

✔!/bin/bashmysql -uroot <<CREATE_TEST_DBCREATE DATABASE test;CREATE_TEST_DB

6. 最後に、/tmp/WordPress/scripts に change_permissions.sh スクリプトファイルを作成します。これは Apache のフォルダのアクセス権限を変更するために使用されます。

Important

このスクリプトにより、誰でも書き込めるように、/tmp/WordPress フォルダのアクセス権限が更新されました。これは、「ステップ 5: WordPress アプリケーションを更新して再デプロイする (p. 75)」で WordPress がそのデータベースに書き込みを行うために必要です。WordPress アプリケーションがセットアップされたら、次のコマンドを実行して、アクセス権限をよりセキュアな設定に更新します。

chmod -R 755 /var/www/html/WordPress

✔!/bin/bash

API バージョン 2014-10-0665

Page 74: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

chmod -R 777 /var/www/html/WordPress

7. すべてのスクリプトに実行可能権限を付与します。コマンドラインで、次のように入力します。

chmod +x /tmp/WordPress/scripts/*

アプリケーション仕様ファイルの追加次に、以下を行うために AWS CodeDeploy によって使用される YAML 形式ファイルである applicationspecification file (AppSpec file) を追加します。

• アプリケーションリビジョンのソースファイルを、ターゲット Amazon EC2 インスタンスの宛先にマッピングする。

• デプロイされたファイルのカスタムアクセス権限を指定する。• デプロイ中にターゲット Amazon EC2 インスタンスで実行するスクリプトを指定する。

AppSpec file の名前は appspec.yml とし、アプリケーションソースコードのルートディレクトリに配置する必要があります。このチュートリアルでは、ルートディレクトリは /tmp/WordPress です。

テキストエディタで appspec.yml という名前のファイルを作成します。このファイルに次の行を追加します。

version: 0.0os: linuxfiles: - source: / destination: /var/www/html/WordPresshooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh - location: scripts/create_test_db.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root

AWS CodeDeploy はこの AppSpec file を使用して、開発マシンの /tmp/WordPress フォルダのすべてのファイルを、ターゲット Amazon EC2 インスタンスの /var/www/html/WordPress フォルダにコピーします。AWS CodeDeploy は、デプロイ中に指定されたスクリプトを、デプロイライフサイクル(BeforeInstall や AfterInstall など) 中の指定されたイベントで、ターゲット Amazon EC2 インスタンスの /var/www/html/WordPress/scripts フォルダで root として実行します。これらのスクリプトのいずれかで実行に 300 秒 (5 分) 以上かかる場合、AWS CodeDeploy はデプロイを停止し、デプロイを失敗としてマークします。

これらの設定の詳細については、「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」を参照してください。

API バージョン 2014-10-0666

Page 75: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

Important

このファイルの項目間のスペースの場所と数は重要です。間隔が正しくない場合、AWSCodeDeploy はデバッグが困難な可能性のあるエラーを発生させます。詳細については、「AppSpec File の間隔 (p. 342)」を参照してください。

ステップ 3: Amazon S3 に WordPress アプリケーションをアップロードします。ここでソースコンテンツを AWS CodeDeploy がデプロイできる場所に準備してアップロードします。次の手順では、Amazon S3 バケットをプロビジョニングしてバケット用のアプリケーションリビジョンのファイルを準備し、リビジョンのファイルをバンドルしてから、そのリビジョンをバケットにプッシュする方法を示します。

Note

このチュートリアルでは説明されていませんが、AWS CodeDeploy を使用して GitHub リポジトリからインスタンスにアプリケーションをデプロイできます。詳細については、「AWSCodeDeploy と GitHub の統合 (p. 55)」を参照してください。

トピック• Amazon S3 バケットをプロビジョニングする (p. 67)• バケットのアプリケーションファイルを準備する (p. 69)• アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッ

シュする (p. 69)

Amazon S3 バケットをプロビジョニングするAmazon S3 でストレージコンテナまたはバケットを作成するか、既存のバケットを使用します。バケットにリビジョンをアップロードできること、およびデプロイで使用する Amazon EC2 インスタンスがバケットからリビジョンをダウンロードできることを確認します。

AWS CLI、Amazon S3 コンソール、または Amazon S3 API を使用して Amazon S3 バケットを作成できます。バケットを作成したら、バケットとその IAM ユーザーにアクセス権限を付与します。

Note

バケットの名前はすべての AWS アカウントに対して Amazon S3 で一意である必要があります。codedeploydemobucket を使用できない場合、codedeploydemobucket の後にダッシュと自分の名前のイニシャル、または他の一意な識別子など別のバケット名を試してください。このチュートリアル全体で、バケット名を codedeploydemobucket に置き換えます。Amazon S3 バケットは、ターゲットの Amazon EC2 インスタンスが起動されるのと同じ AWSリージョンで作成する必要があります。たとえば、米国東部 (バージニア北部) リージョン にバケットを作成する場合、ターゲットの Amazon EC2 インスタンスを 米国東部 (バージニア北部)リージョン で起動する必要があります。

トピック• Amazon S3 バケット (CLI) を作成するには (p. 67)• Amazon S3 バケット (コンソール) を作成するには (p. 68)• Amazon S3 バケットと IAM ユーザーにアクセス許可を付与します。 (p. 68)

Amazon S3 バケット (CLI) を作成するにはmb コマンドを呼び出して、codedeploydemobucket という名前の Amazon S3 バケットを作成します。

API バージョン 2014-10-0667

Page 76: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

aws s3 mb s3://codedeploydemobucket

Amazon S3 バケット (コンソール) を作成するには

1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。2. Amazon S3 コンソールで [Create bucket] を選択します。3. [Bucket name] ボックスで、バケットの名前を入力します。4. [Region] リストで、ターゲットリージョンを選択し、[Create] を選択します。

Amazon S3 バケットと IAM ユーザーにアクセス許可を付与します。

Amazon S3 バケットに対するアップロードのアクセス許可が必要です。Amazon S3 バケットポリシーを通じてこれらのアクセス許可を指定できます。たとえば、次の Amazon S3 バケットポリシーでは、ワイルドカード (*) を使用することで、AWS アカウント 111122223333 が、codedeploydemobucket という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできます。

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ]}

To view your AWS account ID, see Finding Your AWS Account ID.

Now is a good time to verify the Amazon S3 bucket will allow download requests from each participatingAmazon EC2 instance. You can specify this through an Amazon S3 bucket policy. For example, in thefollowing Amazon S3 bucket policy, using the wildcard character (*) allows any Amazon EC2 instancewith an attached IAM instance profile containing the ARN arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo to download files from any directory in the Amazon S3 bucket namedcodedeploydemobucket:

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo" ] } } ]

API バージョン 2014-10-0668

Page 77: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

}

Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

アカウントに Amazon S3 バケットにリビジョンをアップロードするアクセス許可が必要です。これを指定する 1 つの方法は、IAM ポリシーの使用です。次のカスタム IAM ユーザーポリシーは、IAM ユーザーがcodedeploydemobucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["s3:PutObject"], "Resource":"arn:aws:s3:::codedeploydemobucket/*" } ]}

IAM ポリシーを作成しアタッチする方法については、ポリシーの使用を参照してください。

バケットのアプリケーションファイルを準備するWordPress アプリケーションファイル、AppSpec file およびスクリプトが、次のような開発用マシンで構成されることを確認します。

/tmp/ |--WordPress/ |-- appspec.yml |-- scripts/ | |-- change_permissions.sh | |-- create_test_db.sh | |-- install_dependencies.sh | |-- start_server.sh | |-- stop_server.sh |-- wp-admin/ | |-- (various files...) |-- wp-content/ | |-- (various files...) |-- wp-includes/ | |-- (various files...) |-- index.php |-- license.txt |-- readme.html |-- (various files ending with .php...)

アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュするWordPress アプリケーションファイルと AppSpec file をアーカイブファイル (アプリケーション revisionと呼ばれる) にバンドルします。

Note

バケットにオブジェクトを保存したり、バケットの内外にアプリケーションのリビジョンを転送したりする場合に課金されることがあります。詳細については、「Amazon S3 料金表」を参照してください。

API バージョン 2014-10-0669

Page 78: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

1. 開発マシンで、ファイルが保存されたフォルダに切り替えます。

cd /tmp/WordPress

Note

このフォルダに切替わらなければ、ファイルのバンドルは現在のフォルダで起動されます。たとえば、現在のフォルダが /tmp/WordPress ではなく /tmp である場合、バンドルは、WordPress サブフォルダ以上を含む可能性のある tmp フォルダ内のファイルとサブフォルダから開始します。

2. create-application コマンドを呼び出して、WordPress_App という名前の新しいアプリケーションを登録します。

aws deploy create-application --application-name WordPress_App

3. AWS CodeDeploy push コマンドを呼び出してファイルをまとめてバンドルし、Amazon S3 にリビジョンをアップロードし、アップロードされたリビジョンに関する情報を 1 つの操作で AWSCodeDeploy に登録します。

aws deploy push \ --application-name WordPress_App \ --s3-location s3://codedeploydemobucket/WordPressApp.zip \ --ignore-hidden-files

このコマンドは、現在のディレクトリ (隠しファイルを除く) から、WordPressApp.zip という名前の 1 つのアーカイブファイルにファイルをバンドルし、リビジョンを codedeploydemobucket バケットにアップロードし、AWS CodeDeploy により、アップロードしたリビジョンについての情報を登録します。

ステップ 4: WordPress アプリケーションをデプロイするここで、Amazon S3 にアップロードしたサンプルの WordPress アプリケーションリビジョンをデプロイします。AWS CLI または AWS CodeDeploy コンソールを使用して、デプロイの進捗状況をモニタリングするリビジョンをデプロイできます。アプリケーションリビジョンが正常にデプロイされた後に、その結果を確認します。

トピック• AWS CodeDeploy を使用して、アプリケーションリビジョンをデプロイします。 (p. 70)• デプロイをモニタリングおよびトラブルシューティングします。 (p. 73)• デプロイの確認 (p. 74)

AWS CodeDeploy を使用して、アプリケーションリビジョンをデプロイします。トピック

• アプリケーションリビジョン (CLI) をデプロイするには (p. 71)• アプリケーションリビジョン (コンソール) をデプロイするには (p. 71)

API バージョン 2014-10-0670

Page 79: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

アプリケーションリビジョン (CLI) をデプロイするには

1. デプロイにはデプロイグループが必要です。ただし、デプロイグループを作成する前に、サービスロール ARN が必要です。サービスロールは、ユーザーに代わってサービスアクセス権限を付与するIAM ロールです。この場合、サービスロールは、Amazon EC2 インスタンスにアクセスして AmazonEC2 インスタンスタグを拡張 (読み込み) するためのアクセス権限を AWS CodeDeploy に付与します。

すでに サービスロールの作成 (CLI) (p. 24) の手順に従ってサービスロールを作成している必要があります。サービスロールの ARN を取得するには、「サービスロール ARN の取得 (CLI) (p. 26)」を参照してください。

2. サービスロール ARN を取得したので、create-deployment-group コマンドを呼び出して、CodeDeployDemo という名前の Amazon EC2 タグと CodeDeployDefault.OneAtATime という名前のデプロイ設定を使用して WordPress_App というアプリケーションと関連付けられたWordPress_DepGroup というデプロイグループを作成します。

aws deploy create-deployment-group \ --application-name WordPress_App \ --deployment-group-name WordPress_DepGroup \ --deployment-config-name CodeDeployDefault.OneAtATime \ --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE \ --service-role-arn serviceRoleARN

Note

create-deployment-group コマンドは、デプロイおよびインスタンスで指定されたイベントに関する Amazon SNS 通知をトピックの受信者に送信するトリガーを作成するためのサポートを提供します。また、このコマンドは、Amazon CloudWatch アラームのしきい値が満たされていることをモニタリングするときに、デプロイの自動的なロールバックと、デプロイを停止するためのアラームの設定のオプションをサポートします。これらのアクションのコマンドは、このチュートリアルに含まれていません。

3. ここで create-deployment コマンドを呼び出して、codedeploydemobucket という名前のバケットで WordPressApp.zip というアプリケーションリビジョンを使用して、WordPress_App というアプリケーションと関連付けられたデプロイ、CodeDeployDefault.OneAtATime というデプロイ設定、および、WordPress_DepGroup というデプロイグループを作成します。

aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-name CodeDeployDefault.OneAtATime \ --deployment-group-name WordPress_DepGroup \ --s3-location bucket=codedeploydemobucket,bundleType=zip,key=WordPressApp.zip

アプリケーションリビジョン (コンソール) をデプロイするには

1. AWS CodeDeploy コンソールを使用してアプリケーションリビジョンをデプロイする前に、サービスロール ARN が必要になります。サービスロールは、ユーザーに代わってサービスアクセス権限を付与する IAM ロールです。この場合、サービスロールは、Amazon EC2 インスタンスにアクセスしてAmazon EC2 インスタンスタグを拡張 (読み込み) するためのアクセス権限を AWS CodeDeploy に付与します。

すでに サービスロールの作成 (コンソール) (p. 22) の手順に従ってサービスロールを作成している必要があります。サービスロールの ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

2. ARN があるので、AWS CodeDeploy コンソールを使用して、アプリケーションリビジョンをデプロイします。

API バージョン 2014-10-0671

Page 80: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

3. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

4. アプリケーションのリストで、WordPress_App を選択します。5. [Deployment groups] で、[Create deployment group] を選択します。6. [Deployment group name] で、WordPress_DepGroup と入力します。7. [Deployment type] で、[In-place deployment] を選択します。8. [Environment configuration] で [Amazon EC2 instances] タブを選択します。9. [Key] ボックスで [Name] を入力します。10. [Value] ボックスで「CodeDeployDemo」と入力します。

Note

「CodeDeployDemo」と入力すると、[1] が [Instances] の下に表示され、AWS CodeDeployが一致する Amazon EC2 インスタンスを 1 つ見つけたことを確認します。

11. [Deployment configuration] ドロップダウンリストで、[CodeDeployDefault.OneAtATime] を選択します。

12. [Service role ARN] ドロップダウンリストで、サービスロール ARN を選択してから、[Createdeployment group] を選択します。

13. [Application details] ページで、新しいデプロイグループの横のボタンを選択します。[Actions] メニューから、[Deploy new revision] を選択します。

14. [Application] ドロップダウンリストで、[WordPress_App] を選択します。15. [Deployment group] ドロップダウンリストで、[WordPress_DepGroup] を選択します。16. [Repository type] の隣で、[My application is stored in Amazon S3] を選択します。[Revision location]

で、Amazon S3 に以前にアップロードしたサンプルの WordPress アプリケーションリビジョンの場所を入力します。場所を取得するには。

a. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。b. バケットのリストで、[codedeploydemobucket] (または、アプリケーションリビジョンをアップ

ロードしたバケットの名前) を選択します。c. オブジェクトのリストで、[WordPressApp.zip] を選択します。d. [概要] タブで、[リンク] フィールドの値をクリップボードにコピーします。

次のように表示されます。

https://s3.amazonaws.com/codedeploydemobucket/WordPressApp.zip

e. AWS CodeDeploy コンソールに戻り、[Revision location] に [Link] フィールドの値を貼り付けます。

17. [ファイルタイプ] リストで、ファイルの種類を検出できないというメッセージが表示される場合は、[.zip] を選択します。

18. (オプション) [Deployment description] ボックスにコメントを入力します。19. [Deployment configuration] ドロップダウンリストから、[CodeDeployDefault.OneAtATime] を選択し

ます。20. [Deploy] を選択します。新しく作成されたデプロイに関する情報は [Deployments] ページに表示され

ます。

API バージョン 2014-10-0672

Page 81: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

Note

デプロイの現在のステータスを取得するには、テーブルの横にある [Refresh] ボタンを選択します。

デプロイをモニタリングおよびトラブルシューティングします。トピック

• デプロイ (CLI) をモニタリングおよびトラブルシューティングするには (p. 73)• デプロイ (コンソール) をモニタリングおよびトラブルシューティングするには (p. 73)

デプロイ (CLI) をモニタリングおよびトラブルシューティングするには

1. WordPress_App という名前のアプリケーションおよび WordPress_DepGroup という名前のデプロイグループに対して [list-deployments] コマンドを呼び出してデプロイ ID を取得します。

aws deploy list-deployments --application-name WordPress_App --deployment-group-name WordPress_DepGroup --query 'deployments' --output text

2. デプロイ ID を使用して、get-deployment コマンドを呼び出します。

aws deploy get-deployment --deployment-id deploymentID --query 'deploymentInfo.status' --output text

3. コマンドはデプロイの全体ステータスを返します。成功すると、値は Succeeded になります。

全体のステータスが Failed の場合、list-deployment-instances および get-deployment-instance などのコマンドを呼び出してトラブルシューティングできます。トラブルシューティングの他のオプションについては、「ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)」を参照してください。

デプロイ (コンソール) をモニタリングおよびトラブルシューティングするには

AWS CodeDeploy コンソールの [Deployments] ページの [Status] 列でデプロイのステータスをモニタリングできます。

Note

デプロイの現在のステータスを取得するには、テーブルの上にある [Refresh] ボタンを選択します。

特に [Status] 列の値が [Succeeded] 以外の値である場合にデプロイに関する詳細情報を取得するには。

1. [Deployments] テーブルで、デプロイ ID の横の矢印を選択します。デプロイが失敗したら、失敗の原因を説明するメッセージが [Details] に表示されます。

2. [Instances] で、[View all instances] を選択します。デプロイに関する詳細情報が表示されます。デプロイが失敗したら、デプロイが失敗した Amazon EC2 インスタンスおよびステップを特定できる場合があります。

Note

[Instances] が表示されない場合は、テーブルの上の [Refresh] ボタンを選択します。[Status]列が [In progress] から [Created] に変わったら、[Instances] が表示されます。

3. より多くのトラブルシューティングを行う場合、「View Instance Details (p. 206)」で説明されているような手法を使用できます。また、Amazon EC2 インスタンスでデプロイログファイルを分

API バージョン 2014-10-0673

Page 82: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

析できます。詳細については、「ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)」を参照してください。

デプロイの確認デプロイが成功したら、WordPress インストールが動作していることを確認します。Amazon EC2 インスタンスのパブリック DNS アドレスの後に /WordPress を使用して、ウェブブラウザのサイトを表示します。(Amazon EC2 コンソールでパブリック DNS 値を取得するために、Amazon EC2 インスタンスを選択し、[Description] タブで [Public DNS] の値を探します。)

たとえば、Amazon EC2 インスタンスのパブリック DNS アドレスがec2-01-234-567-890.compute-1.amazonaws.com である場合、次の URL を使用します。

http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress

ブラウザでサイトを表示すると、次のような WordPress のウェルカムページが表示されます。

Amazon EC2 インスタンスで、HTTP インバウンドルールがそのセキュリティグループに追加されていない場合、WordPress ウェルカムページは表示されません。リモートサーバーが応答していないというメッセージが表示された場合は、Amazon EC2 インスタンスのセキュリティグループにインバウンドルールがあることを確認します。詳細については、「 HTTP トラフィックを許可するインバウンドルールのAmazon Linux または RHEL Amazon EC2 インスタンスへの追加 (p. 62)」を参照してください。

API バージョン 2014-10-0674

Page 83: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: アプリケーションを更新して再デプロイする

ステップ 5: WordPress アプリケーションを更新して再デプロイする正常にアプリケーションリビジョンをデプロイしたので、開発用マシンで WordPress コードを更新し、AWS CodeDeploy を使用して、サイトを再デプロイします。後で、Amazon EC2 インスタンスのコード変更を確認する必要があります。

トピック• WordPress サイトの設定 (p. 75)• サイトの変更 (p. 75)• サイトの再デプロイ (p. 76)

WordPress サイトの設定コード変更の効果を表示するには、完全に機能するインストールができるように、WordPress サイトの設定を終了します。

1. ウェブブラウザにサイトの URL を入力します。URL は Amazon EC2 インスタンスと /WordPress 拡張子のパブリック DNS アドレスです。この例での WordPress サイト (および Amazon EC2 インスタンスのパブリック DNS アドレスの例) では、URL は http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress です。

2. サイトをまだ設定していない場合は、WordPress のデフォルトのウェルカムページが表示されます。[始めましょう] を選択します。

3. デフォルトの MySQL データベースを使用するため、データベース設定ページで、以下の値を入力します。

• データベースの名前: ポポポ• ユーザー名: ポポポ• パスワード: 空白のままにします。• データベースホスト: localhost• テーブルのプレフィックス wp_

[Submit] を選択して、データベースをセットアップします。4. サイト設定を続行します。[Welcome] ページで任意の値を入力して [Install WordPress] を選択しま

す。インストールが完了したら、ダッシュボードにサインインできます。

Important

WordPress アプリケーションのデプロイ中に、change_permissions.sh スクリプトにより /tmp/WordPress フォルダのアクセス権限が更新されたため、誰でもこのフォルダに書き込むことができます。ここで、次のコマンドを実行して、所有者のみが書き込めるようにアクセス権限を制限します。

chmod -R 755 /var/www/html/WordPress

サイトの変更WordPress サイトを変更するには、開発用マシンのアプリケーションのフォルダを参照してください。

API バージョン 2014-10-0675

Page 84: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: アプリケーションを更新して再デプロイする

cd /tmp/WordPress

サイトの色の一部を変更するには、wp-content/themes/twentyfifteen/style.css ファイルで、テキストエディターまたは、sed を使用して、✔fff を ✔768331 に変更します。

Linux または、GNU sed を持つほかのシステムで、以下を使用します。

sed -i 's/✔fff/✔768331/g' wp-content/themes/twentyfifteen/style.css

macOS、Unix、または BSD sed を持つ他のシステムで、以下を使用します。

sed -i '' 's/✔fff/✔768331/g' wp-content/themes/twentyfifteen/style.css

サイトの再デプロイサイトのコードを変更したので、Amazon S3 および AWS CodeDeploy を使用してサイトを再デプロイします。

「アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュする (p. 69)」に説明されているように、Amazon S3 への変更をバンドルおよびアップロードします。(これらの手順に従うときに、アプリケーションを作成する必要がないことに注意してください。) 新しいリビジョンに以前と同じキーを指定します (WordPressApp.zip)。それを先に作成した同じ AmazonS3 バケットにアップロードします (例: codedeploydemobucket)。

AWS CLI、AWS CodeDeploy コンソール、または AWS CodeDeploy API を使用して、サイトを再デプロイします。

トピック• サイト (CLI) に再デプロイするには (p. 76)• サイト (コンソール) を再デプロイするには (p. 76)

サイト (CLI) に再デプロイするにはcreate-deployment コマンドを呼び出して、新しくアップロードされたリビジョンに基づいたデプロイを作成します。codedeploydemobucket という名前のバケットの WordPress_App という名前のアプリケーション、CodeDeployDefault.OneAtATime という名前のデプロイ設定、WordPress_DepGroup という名前のデプロイグループ、WordPressApp.zip という名前のリビジョンを使用します。

aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-name CodeDeployDefault.OneAtATime \ --deployment-group-name WordPress_DepGroup \ --s3-location bucket=codedeploydemobucket,bundleType=zip,key=WordPressApp.zip

「デプロイをモニタリングおよびトラブルシューティングします。 (p. 73)」に説明されているように、デプロイのステータスを確認できます。

AWS CodeDeploy がサイトを再デプロイしたら、ウェブブラウザのサイトに再度アクセスして、色が変更されたことを確認します。(ブラウザを更新することが必要な場合があります。) 色が変更されていた場合は、サイトは正常に変更され、再デプロイされています。

サイト (コンソール) を再デプロイするには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

API バージョン 2014-10-0676

Page 85: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。3. [Create deployment] を選択します。4. [Create deployment] ページの

a. [Application] リストで、[WordPress_App] を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWSCodeDeploy は、これらのリージョンでのみサポートされます。

b. [Deployment group] リストで、[WordPress_DepGroup] を選択します。c. [Repository type] エリアで、[My application is stored in Amazon S3] を選択し、リビジョンの

Amazon S3 リンクを [Revision location] ボックスにコピーします。リンク値を確認するには。

i. 別のブラウザタブで

AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

codedeploydemobucket を参照して、開き、リビジョン WordPressApp.zip を選択します。

ii. [Properties] ペインが Amazon S3 コンソールで表示されていない場合、[Properties] ボタンを選択します。

iii. [Properties] ペインで、[Link] フィールドの値を AWS CodeDeploy コンソールの [Revisionlocation] ボックスにコピーします。

d. ファイルの種類を検出できないというメッセージが表示される場合は、[.zip] を選択します。e. [Deployment description] ボックスを空白のままにしておきます。f. [Deployment configuration] リストで、[CodeDeployDefault.OneAtATime] を選択してから、

[Deploy] を選択します。

デプロイのステータスを更新するには、テーブルの上の [Refresh] ボタンを選択します。

「デプロイをモニタリングおよびトラブルシューティングします。 (p. 73)」に説明されているように、デプロイのステータスを確認できます。

AWS CodeDeploy がサイトを再デプロイしたら、ウェブブラウザのサイトに再度アクセスして、色が変更されたことを確認します。(ブラウザを更新することが必要な場合があります。) 色が変更されていた場合は、サイトは正常に変更され、再デプロイされています。

ステップ 6: WordPress のアプリケーションと関連リソースのクリーンアップこれで、WordPress コードを正常に更新し、サイトを再デプロイしました。このチュートリアル用に作成したリソースの継続的な料金の発生を回避するため、以下を削除する必要があります。

• AWS CloudFormation スタック (または、AWS CloudFormation の外部で作成した場合、Amazon EC2インスタンスを終了します) API バージョン 2014-10-06

77

Page 86: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

• Amazon S3 バケット。• AWS CodeDeploy の WordPress_App アプリケーション。

AWS CLI、AWS CloudFormation、Amazon S3、Amazon EC2、AWS CodeDeploy コンソールまたは、AWS API を使用してクリーンアップを実行できます。

トピック• リソース (CLI) をクリーンアップするには (p. 78)• リソース (コンソール) をクリーンアップするには (p. 78)• 次のステップ (p. 79)

リソース (CLI) をクリーンアップするには1. このチュートリアルで AWS CloudFormation テンプレートを使用している場

合、CodeDeployDemoStack という名前のスタックに対して delete-stack コマンドを呼び出します。これにより、付随するすべての Amazon EC2 インスタンスが終了し、スタックが作成した付随するすべての IAM ロールが削除されます。

aws cloudformation delete-stack --stack-name CodeDeployDemoStack

2. Amazon S3 バケットを削除するには、--recursive スイッチを使用して codedeploydemobucket という名前のバケットに対して rm コマンドを呼び出します。これにより、バケットとバケット内のすべてのオブジェクトが削除されます。

aws s3 rm s3://codedeploydemobucket --recursive

3. WordPress_App アプリケーションを削除するには、delete-application コマンドを呼び出します。これにより、関連するすべてのデプロイグループレコードと、アプリケーションのデプロイレコードも削除されます。

aws deploy delete-application --application-name WordPress_App

このチュートリアルで AWS CloudFormation スタックを使用していない場合は、terminate-instances コマンドを呼び出して、手動で作成した任意の Amazon EC2 インスタンスを終了します。終了する AmazonEC2 インスタンスの ID を指定します。

aws ec2 terminate-instances --instance-ids instanceId

リソース (コンソール) をクリーンアップするにはこのチュートリアルで AWS CloudFormation テンプレートを使用した場合、関連付けられていた AWSCloudFormation スタックを削除します。

1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

2. [Filter] ボックスで、前に作成した AWS CloudFormation スタック名 (CodeDeployDemoStack など)を入力します。

3. スタック名の横のボックスをオンにします。[Actions] メニューで、[Delete Stack] を選択します。

AWS CloudFormation は、スタックを削除し、付随するすべての Amazon EC2 インスタンスを終了し、付随するすべての IAM ロールを削除します。

API バージョン 2014-10-0678

Page 87: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

AWS CloudFormation スタックの外部で作成した Amazon EC2 インスタンスを削除するには。

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. [INSTANCES] リストで、[Instances] を選択します。3. 検索ボックスで、終了する Amazon EC2 インスタンス名 (CodeDeployDemo など) を入力し、Enter

キーを押します。4. Amazon EC2 インスタンス名を選択します。5. [Actions] メニューで [Instance State] をポイントし、[Terminate] を選択します。プロンプトが表示さ

れたら、[Yes, Terminate] を選択します。

インスタンスごとにこれらの手順を繰り返します。

Amazon S3 バケットを削除するには。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

2. バケットのリストで、前に作成した Amazon S3 バケットの名前を参照して選択します (例:codedeploydemobucket)。

3. バケットを削除する前に、まず、そのコンテンツを削除する必要があります。WordPressApp.zipのようなバケット内のすべてのファイルを選択します。[Actions] メニューで、[Delete] を選択します。削除を確認するプロンプトが表示されたら、[OK] を選択します。

4. バケットが空になると、バケットを削除できます。バケットのリストで、バケットの行 (バケット名ではなく) を選択します。[Delete bucket] を選択し、確認が求められたら [OK] を選択します。

AWS CodeDeploy から WordPress_App アプリケーションを削除するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。3. アプリケーションのリストで、WordPress_App を選択します。4. [Application details] ページの [Deployment groups] で、デプロイグループの横にあるボタンを選択し

ます。[Actions] メニューで、[Delete] を選択します。求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

5. [Application details] ページの下部で、[Delete application] を選択します。6. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

次のステップここまでの作業で、AWS CodeDeploy デプロイが正常に完了し、サイトのコードが更新され、再デプロイされました。

API バージョン 2014-10-0679

Page 88: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドチュートリアル: Windows Server インスタンスへの HelloWorld アプリケーションのデプロイ

チュートリアル: 「Hello, World!」アプリケーションの AWS CodeDeploy によるデプロイ (WindowsServer)

このチュートリアルでは、ウェブサーバーとしてインターネットインフォメーションサービス (IIS) を実行している単一の Windows Server Amazon EC2 インスタンスに 1 つのウェブページをデプロイします。このウェブページには、シンプルな「Hello, World!」メッセージ.

お探しのものではありませんか。

• 代わりに Amazon Linux または Red Hat Enterprise Linux (RHEL) Amazon EC2 インスタンスへのデプロイの演習を行う場合は、「チュートリアル: WordPress を Amazon EC2 インスタンス (Amazon Linux または Red Hat Enterprise Linux および Linux, macOS, or Unix) にデプロイする (p. 60)」を参照してください。

• 代わりにオンプレミスインスタンスへのデプロイの演習を行う場合は、「チュートリアル: AWSCodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95)」を参照してください。

このチュートリアルは、「ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30)」で説明した概念に基づいています。そのウォークスルーをまだ完了していない場合は、先に完了することをお勧めします。

このチュートリアルのステップは、Windows の使用を前提としています。これらのステップのほとんどはLinux, macOS, or Unix を実行中のローカルマシンでも完了できますが、c:\temp などの Windows ベースのディレクトリパスに対応するパスを使用する必要があります。また、Amazon EC2 インスタンスに接続する場合は、Remote Desktop Protocol (RDP) 経由で、Windows Server を実行中の Amazon EC2 インスタンスに接続できるクライアントアプリケーションが必要です (Windows にはデフォルトで、RDP 接続クライアントアプリケーションが搭載されています)。

このチュートリアルを開始する前に、「AWS CodeDeploy の使用開始 (p. 20)」の前提条件を完了する必要があります。これには、IAM ユーザーの設定、AWS CLI のインストールまたはアップグレード、IAM インスタンスプロファイルとサービスロールの作成が含まれます。

トピック• ステップ 1: Windows Server Amazon EC2 インスタンスを起動する (p. 80)• ステップ 2: Windows Server Amazon EC2 インスタンスにデプロイするソースコンテンツを設定す

る (p. 81)• ステップ 3: 「Hello, World!」を Amazon S3 アプリケーションへアップロードする (p. 84)• ステップ 4: 「Hello, World!」をデプロイするアプリケーション (p. 87)• ステップ 5: 「Hello World!」を更新およびデプロイするアプリケーション (p. 91)• ステップ 6: 「Hello, World!」アプリケーションと関連リソースをクリーンアップする (p. 93)

ステップ 1: Windows Server Amazon EC2 インスタンスを起動する「Hello, World!」アプリケーションを AWS CodeDeploy でデプロイするには、Windows Server を実行している Amazon EC2 インスタンスが必要です。

AWS CodeDeploy のインスタンスの使用 (p. 154)の手順に従います。Amazon EC2 インスタンスタグをインスタンスに割り当てる準備ができたら、必ず Name のタグキーと、CodeDeployDemo のタグ値を指

API バージョン 2014-10-0680

Page 89: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

定します (別のタグキーまたはタグ値を指定した場合、「ステップ 4: 「Hello, World!」をデプロイするアプリケーション (p. 87)」の手順で予期しない結果が生成される場合があります)。

Amazon EC2 インスタンスを起動した後、このページに戻り、次のセクションに進みます。次のステップとして、AWS CodeDeploy でアプリケーションを作成 (p. 218) には進まないでください。

Amazon EC2 インスタンスへの接続Amazon EC2 インスタンスが起動した後、手順に従ってインスタンスに接続する演習をします。

Note

これらの手順では、Windows および Windows Desktop Connection クライアントアプリケーションを実行していることを前提としています。詳細については、「RDP を使用して Windows インスタンスに接続する」を参照してください。他のオペレーティングシステムまたは他の RDP 接続クライアントアプリケーションに、これらの手順を適用する必要が生じる場合もあります。

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. ナビゲーションペインで、[Instances] の下にある [Instances] を選択します。3. 一覧で Windows Server インスタンスを参照して選択します。4. 接続を選択します。5. [Get Password] を選択します。6. [Browse] を選択します。Windows Server Amazon EC2 インスタンスと関連付けられた Amazon EC2

キーペアファイルを参照して選択し、[Open] を選択します。7. [Decrypt Password] を選択します。表示されるパスワードをメモしておきます。これはステップ 10 で

必要になります。8. [Download Remote Desktop File] を選択し、ファイルを開きます。9. リモート接続の発行元を特定できなくても接続を求められる場合は、続行します。10. ステップ 7 でメモしておいたパスワードを入力し、次に進みます (RDP 接続クライアントアプリケー

ションでユーザー名が求められた場合は、「Administrator」と入力します)。11. リモートコンピュータの ID を確認できなくても接続を求められた場合は、続行します。12. 接続後、Windows Server を実行している Amazon EC2 インスタンスのデスクトップが表示されま

す。13. 実行中の Amazon EC2 インスタンスからサインアウトできます。

Warning

インスタンスを停止または削除しないでください。それ以外の場合は、AWS CodeDeploy をデプロイすることはできません。

ステップ 2: Windows Server Amazon EC2 インスタンスにデプロイするソースコンテンツを設定するここでは、アプリケーションのソースコンテンツを設定し、Amazon EC2 インスタンスにデプロイできるものを用意します。このチュートリアルでは、Windows Server を実行する Amazon EC2 インスタンスに1 つのウェブページをデプロイします。これはウェブサーバーとして Internet Information Services (IIS) を実行します。このウェブページには、シンプルな「Hello, World!」メッセージ.

トピック• ウェブページの作成 (p. 82)• アプリケーションを実行するスクリプトの作成 (p. 82)

API バージョン 2014-10-0681

Page 90: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

• アプリケーション仕様ファイルの追加 (p. 83)

ウェブページの作成1. HelloWorldApp フォルダで c:\temp というサブディレクトリ (サブフォルダ) を作成し、そのフォ

ルダに切り替えます。

mkdir c:\temp\HelloWorldAppcd c:\temp\HelloWorldApp

Note

c:\temp という場所、または HelloWorldApp というサブフォルダ名を必ず使用する必要はありません。別の場所またはサブフォルダ名を使用する場合は、必ずこのチュートリアル全体で使用してください。

2. テキストエディタを使用して、フォルダ内にファイルを作成します。ファイルを index.html と名付けます。

notepad index.html

3. 次の HTML コードをファイルに追加し、ファイルを保存します。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title>Hello, World!</title> <style> body { color: ✔ffffff; background-color: ✔0188cc; font-family: Arial, sans-serif; font-size:14px; } </style></head><body> <div align="center"><h1>Hello, World!</h1></div> <div align="center"><h2>You have successfully deployed an application using AWS CodeDeploy</h2></div> <div align="center"> <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">AWS CodeDeploy Documentation</a>.</p> </div></body></html>

アプリケーションを実行するスクリプトの作成次に、ターゲット Amazon EC2 インスタンスでウェブサーバーをセットアップするために AWSCodeDeploy が使用するスクリプトを作成します。

1. index.html ファイルが保存されているのと同じサブフォルダで、テキストエディタを使用して別のファイルを作成します。ファイルを before-install.bat と名付けます。

notepad before-install.bat

API バージョン 2014-10-0682

Page 91: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: ソース コンテンツを設定する

2. 次のバッチスクリプトコードをファイルに追加し、ファイルを保存します。

REM Install Internet Information Server (IIS).c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Import-Module -Name ServerManagerc:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Install-WindowsFeature Web-Server

アプリケーション仕様ファイルの追加次に、ウェブページとバッチスクリプトファイルに加えて、application specification file (AppSpec file) を追加します。AppSpec file は、以下を行うために AWS CodeDeploy によって使用される YAML 形式ファイルです。

• アプリケーションリビジョンのソースファイルを、インスタンスの宛先にマッピングする。• デプロイ中にインスタンスで実行するスクリプトを指定する。

AppSpec file の名前は appspec.yml とし、アプリケーションソースコードのルートフォルダに配置する必要があります。

1. index.html および before-install.bat ファイルが保存されているのと同じサブフォルダで、テキストエディタを使用して別のファイルを作成します。ファイルを appspec.yml と名付けます。

notepad appspec.yml

2. 次の YAML コードをファイルに追加し、ファイルを保存します。

version: 0.0os: windowsfiles: - source: \index.html destination: c:\inetpub\wwwroothooks: BeforeInstall: - location: \before-install.bat timeout: 900

AWS CodeDeploy は、この AppSpec file ファイルを使用してアプリケーションソースコードのルートフォルダにある index.html ファイルを、ターゲット Amazon EC2 インスタンスの c:\inetpub\wwwrootフォルダにコピーします。デプロイ中に、AWS CodeDeploy は before-install.batBeforeInstall ポポポポポポポポポポポポポポポポポポポポポポポ Amazon EC2 ポポポポポポポ バッチスクリプトを実行します。このスクリプトの実行に 900 秒 (15 分) 以上かかる場合、AWS CodeDeploy はデプロイを停止し、Amazon EC2 インスタンスへのデプロイを失敗とマークします。

これらの設定の詳細については、「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」を参照してください。

Important

このファイルの項目間のスペースの場所と数は重要です。間隔が正しくない場合、AWSCodeDeploy はデバッグが困難な可能性のあるエラーを発生させます。詳細については、「AppSpec File の間隔 (p. 342)」を参照してください。

API バージョン 2014-10-0683

Page 92: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

ステップ 3: 「Hello, World!」を Amazon S3 アプリケーションへアップロードするここでソースコンテンツを AWS CodeDeploy がデプロイできる場所に準備してアップロードします。次の手順では、Amazon S3 バケットをプロビジョニングしてバケット用のアプリケーションリビジョンのファイルを準備し、リビジョンのファイルをバンドルしてから、そのリビジョンをバケットにプッシュする方法を示します。

Note

このチュートリアルでは説明されていませんが、AWS CodeDeploy を使用して GitHub リポジトリからインスタンスにアプリケーションをデプロイできます。詳細については、「AWSCodeDeploy と GitHub の統合 (p. 55)」を参照してください。

トピック• Amazon S3 バケットをプロビジョニングする (p. 84)• バケットのアプリケーションファイルを準備する (p. 86)• アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッ

シュする (p. 86)

Amazon S3 バケットをプロビジョニングするAmazon S3 でストレージコンテナまたはバケットを作成するか、既存のバケットを使用します。バケットにリビジョンをアップロードできること、およびデプロイで使用する Amazon EC2 インスタンスがバケットからリビジョンをダウンロードできることを確認します。

AWS CLI、Amazon S3 コンソール、または Amazon S3 API を使用して Amazon S3 バケットを作成できます。バケットを作成したら、バケットとその IAM ユーザーにアクセス権限を付与します。

Note

バケットの名前はすべての AWS アカウントに対して Amazon S3 で一意である必要があります。codedeploydemobucket を使用できない場合、codedeploydemobucket の後にダッシュと自分の名前のイニシャル、または他の一意な識別子など別のバケット名を試してください。このチュートリアル全体で、バケット名を codedeploydemobucket に置き換えます。Amazon S3 バケットは、ターゲットの Amazon EC2 インスタンスが起動されるのと同じ AWSリージョンで作成する必要があります。たとえば、米国東部 (バージニア北部) リージョン にバケットを作成する場合、ターゲットの Amazon EC2 インスタンスを 米国東部 (バージニア北部)リージョン で起動する必要があります。

トピック• Amazon S3 バケット (CLI) を作成するには (p. 84)• Amazon S3 バケット (コンソール) を作成するには (p. 85)• Amazon S3 バケットと IAM ユーザーにアクセス許可を付与します。 (p. 85)

Amazon S3 バケット (CLI) を作成するには

mb コマンドを呼び出して、codedeploydemobucket という名前の Amazon S3 バケットを作成します。

aws s3 mb s3://codedeploydemobucket

API バージョン 2014-10-0684

Page 93: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

Amazon S3 バケット (コンソール) を作成するには

1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。2. Amazon S3 コンソールで [Create bucket] を選択します。3. [Bucket name] ボックスで、バケットの名前を入力します。4. [Region] リストで、ターゲットリージョンを選択し、[Create] を選択します。

Amazon S3 バケットと IAM ユーザーにアクセス許可を付与します。

Amazon S3 バケットに対するアップロードのアクセス許可が必要です。Amazon S3 バケットポリシーを通じてこれらのアクセス許可を指定できます。たとえば、次の Amazon S3 バケットポリシーでは、ワイルドカード (*) を使用することで、AWS アカウント 111122223333 が、codedeploydemobucket という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできます。

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ]}

To view your AWS account ID, see Finding Your AWS Account ID.

Now is a good time to verify the Amazon S3 bucket will allow download requests from each participatingAmazon EC2 instance. You can specify this through an Amazon S3 bucket policy. For example, in thefollowing Amazon S3 bucket policy, using the wildcard character (*) allows any Amazon EC2 instancewith an attached IAM instance profile containing the ARN arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo to download files from any directory in the Amazon S3 bucket namedcodedeploydemobucket:

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo" ] } } ]}

API バージョン 2014-10-0685

Page 94: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Amazon S3 にアプ

リケーションをアップロードする

Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

アカウントに Amazon S3 バケットにリビジョンをアップロードするアクセス許可が必要です。これを指定する 1 つの方法は、IAM ポリシーの使用です。次の IAM ポリシーでは、IAM ユーザーがcodedeploydemobucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["s3:PutObject"], "Resource":"arn:aws:s3:::codedeploydemobucket/*" } ]}

IAM ポリシーを作成しアタッチする方法については、ポリシーの使用を参照してください。

バケットのアプリケーションファイルを準備するウェブページ、AppSpec file、およびスクリプトが開発マシン上で次のように整理されていることを確認します。

c:\ |-- temp\ |--HelloWorldApp\ |-- appspec.yml |-- before-install.bat |-- index.html

アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュするファイルをアーカイブファイル (アプリケーションリビジョンとも呼ばれる) にバンドルします。

Note

バケットにオブジェクトを保存したり、バケットの内外にアプリケーションのリビジョンを転送したりする場合に課金されることがあります。詳細については、「Amazon S3 料金表」を参照してください。

1. 開発マシンで、ファイルが保存されたフォルダに切り替えます。

cd c:\temp\HelloWorldApp

Note

このフォルダに切替わらなければ、ファイルのバンドルは現在のフォルダで起動されます。たとえば、現在のフォルダが c:\temp\HelloWorldApp ではなく c:\temp である場合、バンドルは、HelloWorldApp サブフォルダ以上を含む可能性のある c:\temp フォルダ内のファイルとサブフォルダから開始します。

2. create-application コマンドを呼び出して、AWS CodeDeploy を使用して HelloWorld_App という名前の新しいアプリケーションを登録します。

API バージョン 2014-10-0686

Page 95: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

aws deploy create-application --application-name HelloWorld_App

3. AWS CodeDeploy push コマンドを呼び出してファイルをまとめてバンドルし、Amazon S3 にリビジョンをアップロードし、アップロードされたリビジョンに関する情報を 1 つの操作で AWSCodeDeploy に登録します。

aws deploy push --application-name HelloWorld_App --s3-location s3://codedeploydemobucket/HelloWorld_App.zip --ignore-hidden-files

このコマンドは、現在のディレクトリ (隠しファイルを除く) から、HelloWorld_App.zip という名前の 1 つのアーカイブファイルにファイルをバンドルし、リビジョンを codedeploydemobucketバケットにアップロードし、AWS CodeDeploy により、アップロードしたリビジョンについての情報を登録します。

ステップ 4: 「Hello, World!」をデプロイするアプリケーションここでサンプルの「Hello World!」をデプロイします。Amazon S3 にアップロードしたアプリケーションリビジョン。AWS CLI または AWS CodeDeploy コンソールを使用して、デプロイの進捗状況をモニタリングするリビジョンをデプロイします。アプリケーションリビジョンが正常にデプロイされた後に、その結果を確認します。

トピック• AWS CodeDeploy を使用して、アプリケーションリビジョンをデプロイします。 (p. 87)• デプロイをモニタリングおよびトラブルシューティングします。 (p. 89)• デプロイの確認 (p. 90)

AWS CodeDeploy を使用して、アプリケーションリビジョンをデプロイします。トピック

• アプリケーションリビジョン (CLI) をデプロイするには (p. 87)• アプリケーションリビジョン (コンソール) をデプロイするには (p. 88)

アプリケーションリビジョン (CLI) をデプロイするには

1. まず、デプロイにはデプロイグループが必要です。ただし、デプロイグループを作成する前に、サービスロール ARN が必要です。サービスロールは、ユーザーに代わってサービスアクセス権限を付与する IAM ロールです。この場合、サービスロールは、Amazon EC2 インスタンスにアクセスしてAmazon EC2 インスタンスタグを拡張 (読み込み) するためのアクセス権限を AWS CodeDeploy に付与します。

すでに サービスロールの作成 (CLI) (p. 24) の手順に従ってサービスロールを作成している必要があります。サービスロールの ARN を取得するには、「サービスロール ARN の取得 (CLI) (p. 26)」を参照してください。

2. ARN があるので、create-deployment-group コマンドを呼び出して、サービスロール ARN で CodeDeployDemo という Amazon EC2 インスタンスタグおよびCodeDeployDefault.OneAtATime というデプロイ設定を使用して、HelloWorld_App というア

API バージョン 2014-10-0687

Page 96: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

プリケーションに関連付けられた HelloWorld_DepGroup という名前のデプロイグループを作成します。

aws deploy create-deployment-group --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --deployment-config-name CodeDeployDefault.OneAtATime --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE --service-role-arn serviceRoleARN

Note

create-deployment-group コマンドは、デプロイおよびインスタンスで指定されたイベントに関する Amazon SNS 通知をトピックの受信者に送信するトリガーを作成するためのサポートを提供します。また、このコマンドは、Amazon CloudWatch アラームのしきい値が満たされていることをモニタリングするときに、デプロイの自動的なロールバックと、デプロイを停止するためのアラームの設定のオプションをサポートします。これらのアクションのコマンドは、このチュートリアルに含まれていません。

3. ここで create-deployment コマンドを呼び出して codedeploydemobucket というバケットで、HelloWorld_App.zip という名前のアプリケーションリビジョンを使用して、HelloWorld_App という名前のアプリケーションに関連付けられたデプロイ、CodeDeployDefault.OneAtATime というデプロイ設定、HelloWorld_DepGroup というデプロイグループを作成します。

aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=codedeploydemobucket,bundleType=zip,key=HelloWorld_App.zip

アプリケーションリビジョン (コンソール) をデプロイするには

1. AWS CodeDeploy コンソールを使用してアプリケーションリビジョンをデプロイする前に、サービスロール ARN が必要になります。サービスロールは、ユーザーに代わってサービスアクセス権限を付与する IAM ロールです。この場合、サービスロールは、Amazon EC2 インスタンスにアクセスしてAmazon EC2 インスタンスタグを拡張 (読み込み) するためのアクセス権限を AWS CodeDeploy に付与します。

すでに サービスロールの作成 (コンソール) (p. 22) の手順に従ってサービスロールを作成している必要があります。サービスロールの ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

2. ARN があるので、AWS CodeDeploy コンソールを使用して、アプリケーションリビジョンをデプロイできます。

Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

3. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

4. アプリケーションのリストで、HelloWorld_App を選択します。5. [Deployment groups] で、[Create deployment group] を選択します。6. [Deployment group name] で HelloWorld_DepGroup を入力します。7. [Environment configuration] で [Amazon EC2 instances] タブを選択します。8. [Key] ボックスで [Name] を入力します。

API バージョン 2014-10-0688

Page 97: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

9. [Value] で CodeDeployDemo と入力します。

Note

CodeDeployDemo と入力すると、[1] が [Matching instances] の下に表示され、AWSCodeDeploy が一致する Amazon EC2 インスタンスを 1 つ見つけたことを確認します。

10. [Deployment configuration] ドロップダウンリストで、[CodeDeployDefault.OneAtATime] を選択します。

11. [Service role ARN] ドロップダウンリストで、サービスロール ARN を選択してから、[Createdeployment group] を選択します。

12. AWS CodeDeploy メニューで [Deployments] を選択します。13. [Create deployment] を選択します。14. [Application] ドロップダウンリストで、[HelloWorld_App] を選択します。15. [Deployment group] ドロップダウンリストで、[HelloWorld_DepGroup] を選択します。16. [Repository type] で、[My application is stored in Amazon S3] を選択し、[Revision location] でサンプ

ルの「Hello, World!」の場所を入力します。Amazon S3 に以前にアップロードしたアプリケーションリビジョン。場所を取得するには。

1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。2. バケットのリストで、[codedeploydemobucket] (または、アプリケーションリビジョンをアップ

ロードしたバケットの名前) を選択します。3. オブジェクトのリストで、HelloWorld_App.zip を選択します。4. [Properties] ペインが表示されない場合、[Properties] ボタンを選択します。5. [Properties] ペインで、[Link] フィールドの値をクリップボードにコピーします。

次のように表示されます。

https://s3.amazonaws.com/codedeploydemobucket/HelloWorld_App.zip

6. AWS CodeDeploy コンソールに戻り、[Revision Location] に [Link] フィールドの値を貼り付けます。

17. ファイルの種類を検出できないというメッセージが [File type] 一覧に表示される場合は、ファイルの種類の一覧で、[.zip] を選択します。

18. (オプション) [Deployment description] にコメントを入力します。19. [Deployment configuration] ドロップダウンリストから、[CodeDeployDefault.OneAtATime] を選択し

ます。20. [Deploy] を選択します。新しく作成されたデプロイに関する情報は [Deployments] ページに表示され

ます。

Note

デプロイの現在のステータスを更新するには、テーブルの横にある [Refresh] ボタンを選択します。

デプロイをモニタリングおよびトラブルシューティングします。トピック

• デプロイ (CLI) をモニタリングおよびトラブルシューティングするには (p. 90)• デプロイ (コンソール) をモニタリングおよびトラブルシューティングするには (p. 90)

API バージョン 2014-10-0689

Page 98: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手順 4: アプリケーションをデプロイする

デプロイ (CLI) をモニタリングおよびトラブルシューティングするには

1. HelloWorld_App という名前のアプリケーションおよび HelloWorld_DepGroup という名前のデプロイグループに対して list-deployments コマンド を呼び出して、デプロイ ID を取得します。

aws deploy list-deployments --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --query "deployments" --output text

2. デプロイ ID を使用して、get-deployment コマンドを呼び出します。

aws deploy get-deployment --deployment-id deploymentID --query "deploymentInfo.status" --output text

3. コマンドはデプロイの全体ステータスを返します。成功すると、値は Succeeded になります。

全体のステータスが Failed の場合、list-deployment-instances および get-deployment-instance などのコマンドを呼び出してトラブルシューティングできます。トラブルシューティングの他のオプションについては、「ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)」を参照してください。

デプロイ (コンソール) をモニタリングおよびトラブルシューティングするには

AWS CodeDeploy コンソールの [Deployments] ページの [Status] 列でデプロイのステータスをモニタリングできます。

Note

デプロイの現在のステータスを更新するには、[Refresh] ボタンを選択します。

特に [Status] 列の値が [Succeeded] 以外の値である場合にデプロイに関する詳細情報を取得するには。

1. [Deployments] テーブルで、デプロイ ID の横の矢印を選択します。デプロイが失敗したら、失敗の原因を説明するメッセージが [Details] に表示されます。

2. [Instances] で、[View all instances] を選択します。デプロイに関する詳細情報が表示されます。デプロイが失敗したら、デプロイが失敗した Amazon EC2 インスタンスおよびステップを特定できる場合があります。

Note

[Instances] が表示されない場合は、テーブルの上の [Refresh] ボタンを選択します。[Status]列が [In progress] から [Created] に変わったら、[Instances] が表示されます。

3. より多くのトラブルシューティングを行う場合、View Instance Details (p. 206) のような手法を使用できます。また、Amazon EC2 インスタンスでデプロイログファイルを分析できます。詳細については、「ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)」を参照してください。

デプロイの確認デプロイが成功したら、インストールが動作していることを確認します。Amazon EC2 インスタンスのパブリック DNS アドレスを使用して、ウェブブラウザのウェブページを表示します。(Amazon EC2 コンソールでパブリック DNS 値を取得するために、Amazon EC2 インスタンスを選択し、[Description] タブの [Public DNS] で値を探します。)

たとえば、Amazon EC2 インスタンスのパブリック DNS アドレスがec2-01-234-567-890.compute-1.amazonaws.com である場合、次の URL を使用します。

API バージョン 2014-10-0690

Page 99: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: アプリケーションを更新して再デプロイする

http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress

成功すると、「Hello World!」が表示されます。の Web ページを参照してください。

ステップ 5: 「Hello World!」を更新およびデプロイするアプリケーション正常にアプリケーションリビジョンをデプロイしたので、ウェブページのコードに対して更新を行い、AWS CodeDeploy を使用して、サイトを再デプロイします。デプロイをしたら、Amazon EC2 インスタンスで変更を確認できます。

トピック• ウェブページの変更 (p. 91)• サイトの再デプロイ (p. 91)

ウェブページの変更1. c:\temp\HelloWorldApp サブフォルダに移動して、テキストエディタを使用して index.html

ファイルを変更します。

cd c:\temp\HelloWorldAppnotepad index.html

2. index.html ファイルのコンテンツを変更して、背景色およびウェブページのテキストの一部を変更してから、ファイルを保存します。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title>Hello Again, World!</title> <style> body { color: ✔ffffff; background-color: ✔66cc00; font-family: Arial, sans-serif; font-size:14px; } </style></head><body> <div align="center"><h1>Hello Again, World!</h1></div> <div align="center"><h2>You have successfully deployed a revision of an application using AWS CodeDeploy</h2></div> <div align="center"> <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">AWS CodeDeploy Documentation</a>.</p> </div></body></html>

サイトの再デプロイコードを変更したので、Amazon S3 および AWS CodeDeploy を使用して、ウェブページを再デプロイします。

API バージョン 2014-10-0691

Page 100: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: アプリケーションを更新して再デプロイする

「アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュする (p. 86)」に説明されているように、Amazon S3 への変更をバンドルおよびアップロードします。(これらの手順に従うときに、新しいアプリケーションを作成する必要はありません。)新しいリビジョンに以前と同じキーを指定します (HelloWorld_App.zip)。それを先に作成した同じ Amazon S3 バケットにアップロードします (例: codedeploydemobucket)。

AWS CLI または AWS CodeDeploy コンソールを使用してサイトを再デプロイします。

トピック• サイト (CLI) に再デプロイするには (p. 92)• サイト (コンソール) を再デプロイするには (p. 92)

サイト (CLI) に再デプロイするには

create-deployment コマンドを呼び出し、codedeploydemobucket というバケット内のHelloWorld_App というアプリケーション、CodeDeployDefault.OneAtATime というデプロイ設定、HelloWorld_DepGroup というデプロイグループ、 HelloWorld_App.zip というリビジョンを再度使用して、アップロードされたリビジョンに基づいたデプロイを作成します。

aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=codedeploydemobucket,bundleType=zip,key=HelloWorld_App.zip

「デプロイをモニタリングおよびトラブルシューティングします。 (p. 89)」に説明されているように、新しいデプロイのステータスを確認できます。

AWS CodeDeploy がサイトを再デプロイしたら、ウェブブラウザのサイトに再度アクセスし、ウェブページの背景色とテキストが変更されたことを確認します。(ブラウザを更新することが必要な場合があります。) 背景色とテキストが変更されていれば、これで、サイトは変更され、再デプロイされています。

サイト (コンソール) を再デプロイするには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。3. [Create deployment] を選択します。4. [Create deployment] ページの

1. [Application] リストで、[HelloWorld_App] を選択します。2. [Deployment group] リストで、[HelloWorld_DepGroup] を選択します。3. [Repository type] エリアで、[My application is stored in Amazon S3] を選択してから、リビジョン

の Amazon S3 リンクを [Revision location] ボックスにコピーします。

リンク値を確認するには。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

codedeploydemobucket を参照して、開き、Amazon S3 コンソールのリビジョン、HelloWorld_App.zip を選択します。

API バージョン 2014-10-0692

Page 101: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

2. [Properties] ペインが Amazon S3 コンソールで表示されていない場合、[Properties] ボタンを選択します。

3. [Properties] ペインで、[Link] フィールドの値を AWS CodeDeploy コンソールの [Revisionlocation] ボックスにコピーします。

4. [File type] リストで、ファイルの種類を検出できないというメッセージが表示される場合は、[.zip] を選択します。

5. [Deployment description] ボックスを空白のままにしておきます。6. [Deployment configuration] リストで、[CodeDeployDefault.OneAtATime] を選択してから、

[Deploy] を選択します。

テーブルの上の [Refresh] ボタンを選択して、デプロイのステータスを取得します。

「デプロイをモニタリングおよびトラブルシューティングします。 (p. 89)」に説明されているように、デプロイのステータスを確認できます。

AWS CodeDeploy がサイトを再デプロイしたら、ウェブブラウザのサイトに再度アクセスし、ウェブページの背景色とテキストが変更されたことを確認します。(ブラウザを更新することが必要な場合があります。) 背景色とテキストが変更されていれば、これで、サイトは変更され、再デプロイされています。

ステップ 6: 「Hello, World!」アプリケーションと関連リソースをクリーンアップするこれで、「Hello, World!」のコードを正常に作成および更新し、サイトを再デプロイしました。このチュートリアルを完了するために作成したリソースの継続的な料金が発生しないようにするため、AWSCloudFormation スタックを削除します (または、AWS CloudFormation 外部で Amazon EC2 インスタンスを手動で作成した場合は、それを削除します)。また、このチュートリアル専用に作成した Amazon S3 バケットと、AWS CodeDeploy の HelloWorld_App アプリケーションも削除する必要があります。

AWS CLI、AWS CloudFormation、Amazon S3、Amazon EC2、AWS CodeDeploy コンソール、またはAWS API を使用してリソースをクリーンアップできます。

トピック• クリーンアップリソースを使用するには (CLI) (p. 93)• リソース (コンソール) をクリーンアップするには (p. 94)• 次のステップ (p. 95)

クリーンアップリソースを使用するには (CLI)1. このチュートリアルで AWS CloudFormation スタックを使用した場合、CodeDeployDemoStack と

いう名前のスタックに対して delete-stack コマンドを呼び出して、スタックを削除します。これにより、すべての付随する Amazon EC2 インスタンスが削除され、もともとスタックによって作成されたすべての付随する IAM ロールが削除されます。

aws cloudformation delete-stack --stack-name CodeDeployDemoStack

2. Amazon S3 バケットを削除するには、--recursive スイッチを使用して codedeploydemobucket という名前のバケットに対して rm コマンドを呼び出します。これにより、バケットとバケット内のすべてのオブジェクトが削除されます。

aws s3 rm s3://codedeploydemobucket --recursive

API バージョン 2014-10-0693

Page 102: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

3. AWS CodeDeploy から HelloWorld_App アプリケーションを削除するには、delete-application コマンドを呼び出します。これにより、関連するすべてのデプロイグループレコードと、アプリケーションのデプロイレコードが削除されます。

aws deploy delete-application --application-name HelloWorld_App

4. このチュートリアルで AWS CloudFormation スタックを使用していない場合は、terminate-instancesコマンドを呼び出して、手動で作成した Amazon EC2 インスタンスを終了します。終了する AmazonEC2 インスタンスの ID を指定します。

aws ec2 terminate-instances --instance-ids instanceId

リソース (コンソール) をクリーンアップするにはこのチュートリアルで AWS CloudFormation テンプレートを使用した場合、関連付けられていた AWSCloudFormation スタックを削除します。

1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

2. 検索ボックスに、AWS CloudFormation スタック名 (例: CodeDeployDemoStack) を入力します。3. スタック名の横のチェックボックスをオンにします。4. [Actions] メニューで、[Delete Stack] を選択します。これにより、スタック、付随するすべての

Amazon EC2 インスタンス、および付随するすべての IAM ロールが削除されます。

AWS CloudFormation スタックの外部で作成した Amazon EC2 インスタンスを削除するには。

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. [Instances] エリアで、[Instances] を選択します。3. 検索ボックスで、削除する Amazon EC2 インスタンスの名前を入力し、Enter キーを押します。4. Amazon EC2 インスタンスを選択します。5. [Actions] を選択して [Instance State] をポイントし、[Terminate] を選択します。プロンプトが表示さ

れたら、[Yes, Terminate] を選択します。追加の Amazon EC2 インスタンスに対して、これらのステップを繰り返します。

Amazon S3 バケットを削除するには。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

2. バケットのリストで、Amazon S3 バケットの名前を参照して選択します (例:codedeploydemobucket)。

3. バケットを削除する前に、まず、そのコンテンツを削除する必要があります。HelloWorld_App.zip など、バケットのすべてのファイルを選択します。[Actions] メニューで、[Delete] を選択します。削除を確認するプロンプトが表示されたら、[OK] を選択します。

4. バケットが空になると、バケットを削除できます。バケットのリストで、バケットの行 (バケット名ではなく) を選択します。[Delete bucket] を選択し、確認が求められたら [OK] を選択します。

AWS CodeDeploy から HelloWorld_App アプリケーションを削除するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

API バージョン 2014-10-0694

Page 103: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドチュートリアル: オンプレミスインスタンスへのアプリケーションのデプロイ

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。3. [Application details] ページの [Deployment groups] で、デプロイグループの横にあるボタンを選択し

ます。[Actions] メニューで、[Delete] を選択します。求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

4. [Application details] ページの下部で、[Delete application] を選択します。5. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

次のステップここまでの作業で、AWS CodeDeploy を使って正常にデプロイを完了しました。おめでとうございます。

チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ(Windows Server、Ubuntu Server、または Red HatEnterprise Linux)

このチュートリアルでは、Windows Server、Ubuntu Server、または Red Hat Enterprise Linux (RHEL) を実行している単一のオンプレミスインスタンス (Amazon EC2 インスタンスではない物理デバイス) へのサンプルのアプリケーションリビジョンのデプロイを通じて、AWS CodeDeploy を体験することができます。オンプレミスインスタンス、および AWS CodeDeploy の使用方法の詳細については、「Working withOn-Premises Instances (p. 179)」を参照してください。

お探しのものではありませんか。

• Amazon Linux または RHEL を実行する Amazon EC2 インスタンスへのデプロイの演習を行う場合は、「チュートリアル: WordPress を Amazon EC2 インスタンス (Amazon Linux または Red Hat EnterpriseLinux および Linux, macOS, or Unix) にデプロイする (p. 60)」を参照してください。

• Windows Server を実行する Amazon EC2 インスタンスへのデプロイの演習を行う場合は、「チュートリアル: 「Hello, World!」アプリケーションの AWS CodeDeploy によるデプロイ (WindowsServer) (p. 80)」を参照してください。

このチュートリアルは、AWS CodeDeploy でサンプルインプレースデプロイを試す (p. 36) で説明した概念に基づいています。インプレースデプロイの Sample deployment wizard を完了していない場合は、最初に完了することをお勧めします。

トピック• 前提条件 (p. 96)• ステップ 1: オンプレミスインスタンスを設定する (p. 96)• ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96)• ステップ 3: アプリケーションリビジョンをバンドルし、Amazon S3 にアップロードする (p. 100)• ステップ 4: アプリケーションリビジョンをデプロイする (p. 100)• ステップ 5: デプロイを確認する (p. 100)

API バージョン 2014-10-0695

Page 104: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド前提条件

• ステップ 6: リソースをクリーンアップする (p. 100)

前提条件このチュートリアルを開始する前に、「AWS CodeDeploy の使用開始 (p. 20)」の前提条件を完了している必要があります。これには、IAM ユーザーの設定、AWS CLI のインストールまたはアップグレード、およびサービスロールの作成が含まれます。前提条件で説明したように、IAM インスタンスプロファイルを作成する必要はありません。オンプレミスインスタンスは、IAM インスタンスプロファイルを使用しません。

オンプレミスインスタンスとして設定する物理デバイスでは、「AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132)」に示したいずれかのオペレーティングシステムを実行している必要があります。

ステップ 1: オンプレミスインスタンスを設定するオンプレミスインスタンスにデプロイする前に、設定を行う必要があります。「Working with On-Premises Instances (p. 179)」の指示に従って、このページに戻ります。

ステップ 2: サンプルのアプリケーションリビジョンを作成するこのステップでは、オンプレミスインスタンスにデプロイするサンプルのアプリケーションリビジョンを作成します。

オンプレミスインスタンスに既にインストールされているソフトウェアと機能 (または組織のポリシーによってインストールが許可されているもの) を知ることは困難なため、ここで提供するサンプルのアプリケーションリビジョンでは、バッチスクリプト (Windows Server 用) またはシェルスクリプト (UbuntuServer および RHEL 用) を使用して、オンプレミスインスタンス上の場所にテキストファイルを書き込みます。1 つのファイルは、Install、AfterInstall、ApplicationStart、ValidateService を含む複数の AWSCodeDeploy デプロイライフサイクルイベント用に記述されます。BeforeInstall デプロイライフサイクルイベント中にスクリプトが実行され、このサンプルの前のデプロイ中に書き込まれた古いファイルを削除し、新しいファイルを書き込むオンプレミスインスタンス上に場所を作成します。

Note

以下のいずれも該当しない場合、このサンプルのアプリケーションリビジョンはデプロイに失敗することがあります。

• オンプレミスインスタンスで AWS CodeDeploy エージェントを起動するユーザーアカウントに、スクリプトを実行する権限がない。

• ユーザーアカウントに、スクリプトにリストされている場所でフォルダを作成または削除する権限がない。

• ユーザーアカウントに、スクリプトにリストされている場所でテキストファイルを作成する権限がない。

Note

Windows Server インスタンスを設定し、別のサンプルをデプロイする場合は、「チュートリアル: 「Hello, World!」アプリケーションの AWS CodeDeploy によるデプロイ (WindowsServer) (p. 80)」チュートリアルの「ステップ 2: Windows Server Amazon EC2 インスタンスにデプロイするソースコンテンツを設定する (p. 81)」のサンプルを使用することをお勧めします。

API バージョン 2014-10-0696

Page 105: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: サンプルのアプリ

ケーションリビジョンを作成する

RHEL インスタンスを設定し、別のサンプルをデプロイする場合は、「チュートリアル:WordPress を Amazon EC2 インスタンス (Amazon Linux または Red Hat Enterprise Linux および Linux, macOS, or Unix) にデプロイする (p. 60)」チュートリアルの「ステップ 2: AmazonLinux または Red Hat Enterprise Linux Amazon EC2 インスタンスにデプロイするようソースコンテンツを設定する (p. 63)」のサンプルを使用することをお勧めします。現在、Ubuntu Server 用の代替サンプルはありません。

1. 開発マシンで、サンプルのアプリケーションリビジョンのファイルを保存する、CodeDeployDemo-OnPrem という名前のサブディレクトリ (サブフォルダ) を作成し、そのサブフォルダに切り替えます。この例では、c:\temp フォルダを Windows Server のルートフォルダとして使用するか、/tmpフォルダを Ubuntu Server および RHEL のルートフォルダとして使用することを前提としています。別のフォルダを使用する場合は、このチュートリアル全体でそのフォルダに置き換えてください。

Windows の場合:

mkdir c:\temp\CodeDeployDemo-OnPremcd c:\temp\CodeDeployDemo-OnPrem

Linux, macOS, or Unix 用:

mkdir /tmp/CodeDeployDemo-OnPremcd /tmp/CodeDeployDemo-OnPrem

2. CodeDeployDemo-OnPrem サブフォルダのルートで、テキストエディタを使用して appspec.ymlおよび install.txt という 2 つのファイルを作成します。

Windows Server の場合は appspec.yml です。

version: 0.0os: windowsfiles: - source: .\install.txt destination: c:\temp\CodeDeployExamplehooks: BeforeInstall: - location: .\scripts\before-install.bat timeout: 900 AfterInstall: - location: .\scripts\after-install.bat timeout: 900 ApplicationStart: - location: .\scripts\application-start.bat timeout: 900 ValidateService: - location: .\scripts\validate-service.bat timeout: 900

Ubuntu Server および RHEL の場合は appspec.yml です。

version: 0.0os: linuxfiles: - source: ./install.txt destination: /tmp/CodeDeployExamplehooks: BeforeInstall: - location: ./scripts/before-install.sh timeout: 900 AfterInstall: - location: ./scripts/after-install.sh

API バージョン 2014-10-0697

Page 106: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: サンプルのアプリ

ケーションリビジョンを作成する

timeout: 900 ApplicationStart: - location: ./scripts/application-start.sh timeout: 900 ValidateService: - location: ./scripts/validate-service.sh timeout: 900

AppSpec ファイルの詳細については、「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」および「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」を参照してください。

install.txt:

The Install deployment lifecycle event successfully completed.

3. CodeDeployDemo-OnPrem サブフォルダのルートの下に、scripts サブフォルダを作成し、そのサブフォルダに切り替えます。

Windows の場合:

mkdir c:\temp\CodeDeployDemo-OnPrem\scriptscd c:\temp\CodeDeployDemo-OnPrem\scripts

Linux, macOS, or Unix 用:

mkdir -p /tmp/CodeDeployDemo-OnPrem/scriptscd /tmp/CodeDeployDemo-OnPrem/scripts

4. scripts サブフォルダのルートで、テキストエディタを使用して、Windows Server の場合はbefore-install.bat、after-install.bat、application-start.bat、および validate-service.bat という 4 つのファイルを作成します。Ubuntu Server および RHEL の場合は before-install.sh、after-install.sh、application-start.sh、および validate-service.shです。

Windows Server の場合:

before-install.bat:

set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample

if exist %FOLDER% ( rd /s /q "%FOLDER%")

mkdir %FOLDER%

after-install.bat:

cd %HOMEDRIVE%\temp\CodeDeployExample

echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt

application-start.bat:

cd %HOMEDRIVE%\temp\CodeDeployExample

API バージョン 2014-10-0698

Page 107: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: サンプルのアプリ

ケーションリビジョンを作成する

echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt

validate-service.bat:

cd %HOMEDRIVE%\temp\CodeDeployExample

echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt

Ubuntu Server および RHEL の場合:

before-install.sh:

✔!/bin/bashexport FOLDER=/tmp/CodeDeployExample

if [ -d $FOLDER ]then rm -rf $FOLDERfi

mkdir -p $FOLDER

after-install.sh:

✔!/bin/bashcd /tmp/CodeDeployExample

echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt

application-start.sh:

✔!/bin/bashcd /tmp/CodeDeployExample

echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt

validate-service.sh:

✔!/bin/bashcd /tmp/CodeDeployExample

echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt

unset FOLDER

5. Ubuntu Server および RHEL の場合のみ、4 つのシェルスクリプトに実行権限があることを確認します。

chmod +x ./scripts/*

API バージョン 2014-10-0699

Page 108: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: アプリケーションリビジョンを

バンドルし、Amazon S3 にアップロードする

ステップ 3: アプリケーションリビジョンをバンドルし、Amazon S3 にアップロードするアプリケーションリビジョンをデプロイするには、事前にファイルをバンドルし、ファイルバンドルを Amazon S3 バケットにアップロードしておく必要があります。「AWS CodeDeploy でアプリケーションを作成 (p. 218)」および「AWS CodeDeploy のリビジョンを Amazon S3 にプッシュします。 (p. 248)」の手順に従います (アプリケーションとデプロイグループには任意の名前を付けることができますが、アプリケーション名に「CodeDeploy-OnPrem-App」、デプロイグループ名に「CodeDeploy-OnPrem-DG」を使用することをお勧めします)。これらの手順を実行したら、このページに戻ります。

Note

または、GitHub リポジトリにファイルバンドルをアップロードし、そこからデプロイできます。詳細については、「AWS CodeDeploy と GitHub の統合 (p. 55)」を参照してください。

ステップ 4: アプリケーションリビジョンをデプロイするアプリケーションリビジョンを Amazon S3 バケットにアップロードしたら、オンプレミスインスタンスへのデプロイを試します。「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」の指示に従って、このページに戻ります。

ステップ 5: デプロイを確認するデプロイが成功したことを確認するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」の手順に従い、このページに戻ります。

デプロイが成功している場合は、c:\temp\CodeDeployExample フォルダ (Windows Server の場合) または /tmp/CodeDeployExample (Ubuntu Server および RHEL の場合) に 4 つのテキストフォルダが見つかります。

デプロイが失敗した場合は、「View Instance Details (p. 206)」および「インスタンスの問題のトラブルシューティング (p. 369)」のトラブルシューティングステップに従ってください。必要な修正を行い、アプリケーションリビジョンを再バンドルしてアップロードしてから、デプロイを再試行します。

ステップ 6: リソースをクリーンアップするこのチュートリアル用に作成したリソースの料金が継続的に発生しないようにするため、それ以上使用しない場合は Amazon S3 バケットを削除します。AWS CodeDeploy のアプリケーションとデプロイグループレコードや、オンプレミスインスタンスなどの関連リソースをクリーンアップすることもできます。

AWS CLI、または AWS CodeDeploy と Amazon S3 コンソールの組み合わせと AWS CLI を使用して、リソースをクリーンアップできます。

リソースのクリーンアップ (CLI)Amazon S3 バケットを削除するには

• バケット (例: codedeploydemobucket) に対して rm コマンドを --recursive スイッチを指定して呼び出します。バケットとバケット内のすべてのオブジェクトが削除されます。

aws s3 rm s3://your-bucket-name --recursive

API バージョン 2014-10-06100

Page 109: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: リソースをクリーンアップする

AWS CodeDeploy のアプリケーションとデプロイグループを削除するには

• アプリケーションに対して delete-application コマンドを呼び出します (例: CodeDeploy-OnPrem-App)。デプロイおよびデプロイグループのレコードが削除されます。

aws deploy delete-application --application-name your-application-name

オンプレミスインスタンスを登録解除し、IAM ユーザーを削除するには

• オンプレミスインスタンスとリージョンに対して deregister コマンドを呼び出します。

aws deploy deregister --instance-name your-instance-name --delete-iam-user --region your-region

Note

このオンプレミスインスタンスに関連付けられた IAM ユーザーを削除しない場合は、代わりに --no-delete-iam-user オプションを使用します。

AWS CodeDeploy エージェントをアンインストールし、オンプレミスインスタンスから設定ファイルを削除するには

• オンプレミスインスタンスから、uninstall コマンドを呼び出します:

aws deploy uninstall

これで、このチュートリアルで使用したリソースをクリーンアップするすべてのステップが完了しました。

リソースのクリーンアップ (コンソール)Amazon S3 バケットを削除するには

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

2. 削除するバケットの横にあるアイコン (例: codedeploydemobucket) を選択します。ただし、バケット自体を選択しないでください。

3. [ Actions] を選択して、[Delete] を選択します。4. バケットを削除するように求められたら、[OK] を選択します。

AWS CodeDeploy のアプリケーションとデプロイグループを削除するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. アプリケーションのリストが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. 削除するアプリケーションの名前 (例: CodeDeploy-OnPrem-App) を選択します。

API バージョン 2014-10-06101

Page 110: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドチュートリアル: Auto Scaling グループへのデプロイ

4. [Application details] ページの下部で、[Delete application] を選択します。5. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

AWS CodeDeploy コンソールを使用してオンプレミスインスタンスを登録解除したり、AWS CodeDeployエージェントをアンインストールすることはできません。オンプレミスインスタンスを登録解除し、IAMユーザーを削除するには (p. 101)の手順に従います。

チュートリアル: AWS CodeDeploy を使用してAuto Scaling グループにアプリケーションをデプロイする

このチュートリアルでは、AWS CodeDeploy を使用して Auto Scaling グループにアプリケーションリビジョンをデプロイします。Auto Scaling と AWS CodeDeploy の統合については、「AWS CodeDeploy とAuto Scaling の統合 (p. 46)」を参照してください。

トピック• 前提条件 (p. 102)• ステップ 1: Auto Scaling グループを作成して設定する (p. 102)• ステップ 2: Auto Scaling グループにアプリケーションをデプロイする (p. 108)• ステップ 3: 結果の確認 (p. 113)• ステップ 4: Auto Scaling グループで Amazon EC2 インスタンスの数を増やす (p. 115)• ステップ 5: 結果を再度確認します (p. 116)• ステップ 6: クリーンアップ (p. 117)

前提条件このチュートリアルでは、AWS CLI のセットアップと設定、および IAM インスタンスプロファイル(CodeDeployDemo-EC2-Instance-Profile) とサービスロール (CodeDeployDemo) の作成を含む、AWS CodeDeploy の使用開始 (p. 20) のすべての手順をすでに完了していることを前提としています。サービスロールは、お客様に代わってサービスアクセス権限を付与する、特別なタイプの IAM ロールです。

Ubuntu Server Amazon EC2 インスタンスの Auto Scaling グループにアプリケーションリビジョンをデプロイする場合、チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (Windows Server、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95) チュートリアルの ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96) にある、サンプルリビジョンを作成して使用できます。それ以外の場合は、Ubuntu Server インスタンスおよび AWSCodeDeploy と互換性のあるリビジョンを作成して、使用する必要があります。Amazon Linux、WindowsServer、および Red Hat Enterprise Linux (RHEL) Amazon EC2 インスタンス用のサンプルリビジョンも用意されています。リビジョンを独自に作成するには、AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242) を参照してください。

ステップ 1: Auto Scaling グループを作成して設定するこのステップでは、1 つの Amazon Linux、RHEL、または Windows Server Amazon EC2 インスタンスを含む Auto Scaling グループを作成します。後のステップで、もう 1 つの Amazon EC2 インスタンスを追加するように Auto Scaling に指示します。AWS CodeDeploy はそのインスタンスにリビジョンをデプロイします。

API バージョン 2014-10-06102

Page 111: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Auto Scaling グループを作成して設定する

トピック• Auto Scaling グループを作成して設定するには (CLI) (p. 103)• Auto Scaling グループを作成して設定するには (コンソール) (p. 106)

Auto Scaling グループを作成して設定するには (CLI)1. create-launch-configuration コマンドを呼び出して、Auto Scaling 起動設定を作成します。

このコマンドを呼び出す前に、プレースホルダー image-id で表される、このチュートリアルで使用する AMI の ID が必要です。プレースホルダー key-name で表される、Amazon EC2 インスタンスへのアクセスを有効にする Amazon EC2 インスタンスのキーペアの名前も必要です。最後に、AWSCodeDeploy エージェントの最新バージョンをインストールする手順が必要です。

AWS CodeDeploy このチュートリアルで使用する AMI の ID を取得するには:

1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. ナビゲーションペインで、[Instances] の下にある、[Instances] を選択して、[Launch Instance] を

選択します。3. [Choose an Amazon Machine Image] ページの、[Quick Start] タブで、[Amazon Linux AMI]、[Red

Hat Enterprise Linux 7.1]、[Ubuntu Server 14.04 LTS]、または [Microsoft Windows Server 2012R2] の横の AMI の ID を書き留めます。

Note

AWS CodeDeploy と互換性があるカスタムバージョンの AMI の場合、[Quick Start] タブを参照する代わりに、ここで選択します。AWS CodeDeploy および Auto Scaling でカスタム AMI を使用する方法についての詳細は、AWS CodeDeploy および Auto Scaling を使用したカスタム AMI の使用 (p. 48) を参照してください。

Amazon EC2 インスタンスのキーペアについては、Amazon EC2 インスタンスのキーペアの名前を使用します。

最新バージョンの AWS CodeDeploy エージェントを開発用マシンにインストールするには、以下の内容の、instance-setup.sh (Amazon Linux、Ubuntu Server、または RHEL Amazon EC2 インスタンス用) または instance-setup.txt (Windows Server Amazon EC2 インスタンス用) という名前のファイルを作成します。

Note

AWS CodeDeploy と互換性があるカスタムバージョンの AMI の場合、instance-setup.sh または instance-setup.txt ファイルを作成する必要はありません。

Amazon Linux および RHEL Amazon EC2 インスタンス

✔!/bin/bashyum -y updateyum install -y rubycd /home/ec2-usercurl -O https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。API バージョン 2014-10-06

103

Page 112: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Auto Scaling グループを作成して設定する

Ubuntu Server Amazon EC2 インスタンス

✔!/bin/bashapt-get -y updateapt-get -y install rubyapt-get -y install wgetcd /home/ubuntuwget https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Windows Server Amazon EC2 インスタンス

<powershell> New-Item -Path c:\temp -ItemType "directory" -Forcepowershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msiStart-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden</powershell>

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

create-launch-configuration コマンドを呼び出します。

ローカル Linux, macOS, or Unix マシンの場合

Important

Be sure to include file:// before the file name. It is required in this command.

aws autoscaling create-launch-configuration \ --launch-configuration-name CodeDeployDemo-AS-Configuration \ --image-id image-id \ --key-name key-name \ --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile \ --instance-type t1.micro \ --user-data file://path/to/instance-setup.sh

ローカル Windows マシンの場合

Important

Be sure to include file:// before the file name. It is required in this command.

aws autoscaling create-launch-configuration --launch-configuration-name CodeDeployDemo-AS-Configuration --image-id image-id --key-name key-name --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile --instance-type t1.micro --user-data file://path/to/instance-setup.txt

API バージョン 2014-10-06104

Page 113: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Auto Scaling グループを作成して設定する

Note

AWS CodeDeploy と互換性があるカスタムバージョンの AMI の場合、前のコマンドの --user-data オプションを省略します。

これらのコマンドは、指定したイメージ ID に基づいて、指定した IAM インスタンスプロファイルと Amazon EC2 インスタンスキーペアを適用して、最新バージョンの AWS CodeDeploy エージェントをインストールするコマンドを実行する、CodeDeployDemo-AS-Configuration という名前のAuto Scaling 起動設定を作成します。この起動設定は t1.micro Amazon EC2 インスタンスタイプに基づいています。

2. create-auto-scaling-group コマンドを呼び出して Auto Scaling グループを作成します。AWS GeneralReference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つで、プレースホルダー availability-zone で表される、1 つのアベイラビリティーゾーンの名前が必要になります。

Note

リージョンでアベイラビリティーゾーンのリストを表示するには、以下を呼び出します。

aws ec2 describe-availability-zones --region region-name

たとえば、米国西部 (オレゴン) リージョンのアベイラビリティーゾーンのリストを表示するには、次のように呼び出します。

aws ec2 describe-availability-zones --region us-west-2

リージョン名識別子のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

ローカル Linux, macOS, or Unix マシンの場合

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name CodeDeployDemo-AS-Group \ --launch-configuration-name CodeDeployDemo-AS-Configuration \ --min-size 1 \ --max-size 1 \ --desired-capacity 1 \ --availability-zones availability-zone

ローカル Windows マシンの場合

aws autoscaling create-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --launch-configuration-name CodeDeployDemo-AS-Configuration --min-size 1 --max-size 1 --desired-capacity 1 --availability-zones availability-zone

これらのコマンドは、CodeDeployDemo-AS-Configuration という名前の Auto Scaling 起動設定に基づいて、CodeDeployDemo-AS-Group という名前の Auto Scaling グループを作成します。このAuto Scaling グループには Amazon EC2 インスタンスが 1 つだけあり、指定したアベイラビリティーゾーンに作成されます。

3. CodeDeployDemo-AS-Group に対して、describe-auto-scaling-groups コマンドを呼び出します。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text

戻り値に、Healthy および InService と表示されるまで続行しないでください。API バージョン 2014-10-06105

Page 114: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Auto Scaling グループを作成して設定する

Auto Scaling グループを作成して設定するには (コンソール)1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. グローバルナビゲーションバーで、AWS General Reference のリージョンとエンドポイントで一覧表

示されているリージョンのいずれかが選択されていることを確認してください。Auto Scaling リソースは、指定したリージョンに関連付けられ、AWS CodeDeploy は選択されたリージョンでのみサポートされます。

3. ナビゲーションバーの [Auto Scaling] で、[Launch Configurations] を選択します。4. [Create launch configuration] を選択します。5. [Choose AMI] ページの、[Quick Start] タブで、[Amazon Linux AMI]、[Red Hat Enterprise Linux 7.2]、

[Ubuntu Server 14.04 LTS]、または [Microsoft Windows Server 2012 R2 Base] の横で [Select] を選択します。

Note

カスタムバージョンの AMI で インストールされた AWS CodeDeploy エージェントがすでにある場合は、ここで代わりに選択します。AWS CodeDeploy および Auto Scaling でカスタムAMI を使用する方法についての詳細は、AWS CodeDeploy および Auto Scaling を使用したカスタム AMI の使用 (p. 48) を参照してください。

6. [Choose Instance Type] ページでデフォルト値をそのままにして、[Next: Configure details] を選択します。

7. [Configure details] ページで、[Name] に、CodeDeployDemo-AS-Configuration を入力します。[IAM role] で、先に作成した IAM インスタンスプロファイルを選択します (CodeDeployDemo-EC2-Instance-Profile)。

[Advanced Details] を展開して、[User data] に次のように入力します。

Note

インストールされた AWS CodeDeploy エージェントがすでにあるカスタムバージョンの AMIを使用している場合は、この手順を省略できます。

Amazon Linux および RHEL Amazon EC2 インスタンスの場合

✔!/bin/bashyum -y updateyum install -y rubycd /home/ec2-usercurl -O https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Ubuntu Server Amazon EC2 インスタンスの場合

✔!/bin/bashapt-get -y updateapt-get -y install rubyapt-get -y install wgetcd /home/ubuntuwget https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

API バージョン 2014-10-06106

Page 115: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: Auto Scaling グループを作成して設定する

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Windows Server Amazon EC2 インスタンスの場合

<powershell> New-Item -Path c:\temp -ItemType "directory" -Forcepowershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msiStart-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden</powershell>

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

残りはデフォルトのままにして、[Skip to review] を選択します。8. [Review] ページで、[Create launch configuration] を選択します。

Note

本番環境では、Amazon EC2 インスタンスへのアクセスを制限することをお勧めします。詳細については、「EC2 インスタンスの保護のヒント」を参照してください。

9. [Select an existing key pair or create a new key pair] ダイアログボックスで、[Choose an existing keypair] を選択します。[Select a key pair] ドロップダウンリストで、前のステップで作成した AmazonEC2 インスタンスのキーペアを選択します。[I acknowledge that I have access to the selected privatekey file (key-file-name.pem), and that without this file, I won't be able to log into my instance] を選択し、[Create launch configuration] を選択します。

10. [Create an Auto Scaling group using this launch configuration] を選択します。11. [Configure Auto Scaling group details] ページで、[Group name] に、CodeDeployDemo-AS-Group を

入力します。[Group size] を、デフォルト値のままにします。[Availability Zone(s)] ボックスで、AWSGeneral Reference のリージョンとエンドポイントで一覧表示されているリージョンの 1 つからアベイラビリティーゾーンを選択します。残りはデフォルトのままにして、[Next: Configure scalingpolicies] を選択します。

Note

[Network] リストに、[Launch into EC2-Classic] が表示されず、デフォルトの仮想プライベートクラウド (VPC) が選択できない場合、VPC とサブネットを選択または作成します。詳細については、「VPC とサブネット」を参照してください。

12. [Configure scaling policies] ページで、[Keep this group at its initial size] を選択したままにして、[Next:Configure Notifications] を選択します。

13. 通知の設定の手順をスキップし、[Review] を選択します。14. [Create Auto Scaling group] を選択し、次に [Close] を選択します。15. ナビゲーションバーで、[Auto Scaling Groups] を選択し、[CodeDeployDemo-AS-Group] を選択

して、次に [Instances] タブを選択します。[Lifecycle] 列に、[InService] の値が表示されて、[HealthStatus] 列に、[Healthy] の値が表示されるまで進まないでください。

API バージョン 2014-10-06107

Page 116: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: Auto Scaling グループにアプリケーションをデプロイする

ステップ 2: Auto Scaling グループにアプリケーションをデプロイするこのステップでは、Auto Scaling グループの単一 Amazon EC2 インスタンスにリビジョンをデプロイします。

トピック• デプロイを作成するには (CLI) (p. 108)• デプロイを作成するには (コンソール) (p. 110)

デプロイを作成するには (CLI)1. create-application コマンドを呼び出して、SimpleDemoApp という名前のアプリケーションを作成し

ます。

aws deploy create-application --application-name SimpleDemoApp

2. ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) の手順に従ってサービスロールを作成している必要があります。サービスロールは、AWS CodeDeploy に Amazon EC2 インスタンスにアクセスしてタグを拡張 (読み込み) するアクセス許可を付与します。サービスロール ARN が必要になります。サービスロール ARN を取得するには、サービスロール ARN の取得 (CLI) (p. 26) の手順に従います。

3. これで、指定したサービスロール ARN で、create-deployment-group コマンドを呼び出してSimpleDemoDG という名前のデプロイグループを作成し、SimpleDemoApp という名前のアプリケーションと関連付けられた、CodeDeployDemo-AS-Group という名前の Auto Scaling グループおよびCodeDeployDefault.OneAtATime という名前のデプロイ設定を使用するサービスロール ARN が作成されました。

Note

create-deployment-group コマンドは、デプロイおよびインスタンスで指定されたイベントに関する Amazon SNS 通知をトピックの受信者に送信するトリガーを作成するためのサポートを提供します。また、このコマンドは、Amazon CloudWatch アラームのしきい値が満たされていることをモニタリングするときに、デプロイの自動的なロールバックと、デプロイを停止するためのアラームの設定のオプションをサポートします。これらのアクションのコマンドは、このチュートリアルに含まれていません。

ローカル Linux, macOS, or Unix マシンの場合

aws deploy create-deployment-group \ --application-name SimpleDemoApp \ --auto-scaling-groups CodeDeployDemo-AS-Group \ --deployment-group-name SimpleDemoDG \ --deployment-config-name CodeDeployDefault.OneAtATime \ --service-role-arn service-role-arn

ローカル Windows マシンの場合

aws deploy create-deployment-group --application-name SimpleDemoApp --auto-scaling-groups CodeDeployDemo-AS-Group --deployment-group-name SimpleDemoDG --deployment-config-name CodeDeployDefault.OneAtATime --service-role-arn service-role-arn

4. 指定された場所のリビジョンを使用して、SimpleDemoApp という名前のアプリケーションと関連付けられたデプロイ、CodeDeployDefault.OneAtATime という名前のデプロイ設

API バージョン 2014-10-06108

Page 117: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: Auto Scaling グループにアプリケーションをデプロイする

定、SimpleDemoDG という名前のデプロイグループを作成する create-deployment コマンドを呼び出します。

ローカル Linux, macOS, or Unix マシンから呼び出した Amazon Linux および RHEL Amazon EC2 インスタンスの場合

aws deploy create-deployment \ --application-name SimpleDemoApp \ --deployment-config-name CodeDeployDefault.OneAtATime \ --deployment-group-name SimpleDemoDG \ --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

ローカル Windows マシンから呼び出した Amazon Linux および RHEL Amazon EC2 インスタンスの場合

aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

ローカル Linux, macOS, or Unix マシンから呼び出した Windows Server Amazon EC2 インスタンスの場合

aws deploy create-deployment \ --application-name SimpleDemoApp \ --deployment-config-name CodeDeployDefault.OneAtATime \ --deployment-group-name SimpleDemoDG \ --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

ローカル Windows マシンから呼び出した Windows Server Amazon EC2 インスタンスの場合

aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

API バージョン 2014-10-06109

Page 118: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: Auto Scaling グループにアプリケーションをデプロイする

Note

現在のところ、AWS CodeDeploy は Ubuntu Server Amazon EC2 インスタンスにデプロイするサンプルリビジョンを提供していません。リビジョンを独自に作成するには、AWSCodeDeploy 用のアプリケーションリビジョンの操作 (p. 242) を参照してください。

5. get-deployment コマンドを呼び出して、デプロイが成功したことを確認します。

このコマンドを呼び出す前に、create-deployment コマンドの呼び出しで返された、デプロイの ID が必要になります。デプロイ ID を再取得する必要がある場合、SimpleDemoApp という名前のアプリケーション、および SimpleDemoDG という名前のデプロイグループに対して、list-deployments コマンドを呼び出します。

aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text

次に、デプロイ ID を使用して、get-deployment コマンドを呼び出します。

aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.status" --output text

Succeeded の値が返されるまで続けないでください。

デプロイを作成するには (コンソール)1. ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) の手順に従ってサービスロールを

作成している必要があります。サービスロールは、AWS CodeDeploy にインスタンスにアクセスしてタグを拡張 (読み込み) するアクセス許可を付与します。AWS CodeDeploy コンソールを使用してアプリケーションリビジョンをデプロイする前に、サービスロール ARN が必要になります。サービスロール ARN を取得するには、サービスロール ARN の取得 (コンソール) (p. 26) の手順に従います。

2. サービスロール ARN があるので、AWS CodeDeploy コンソールを使用して、アプリケーションリビジョンをデプロイできます。

Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

3. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

4. [Create application] を選択します。5. [Application name] ボックスに、SimpleDemoApp を入力します。6. [Deployment group name] ボックスに、SimpleDemoDG を入力します。7. [Environment configuration] の [Auto Scaling groups] タブで、CodeDeployDemo-AS-Group を入力し

ます。8. [Deployment configuration] ドロップダウンリストから、[CodeDeployDefault.OneAtATime] を選択し

ます。9. [Service role ARN] ドロップダウンリストから、サービスロール ARN を選択します。10. [Create application] を選択します。11. [Application details] ページの、[Deployment groups] エリアで、[SimpleDemoDG] の横にある矢印を選

択して、デプロイグループの詳細を表示します。

API バージョン 2014-10-06110

Page 119: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: Auto Scaling グループにアプリケーションをデプロイする

12. [SimpleDemoDG] の横にあるボタンを選択します。[Actions] メニューで、[Deploy new revision] を選択します。

13. [Repository type] エリアで、[My application is stored in Amazon S3] を選択し、[Revision location]ボックスで、ご使用のオペレーティングシステムとリージョン用のサンプルアプリケーションの場所を入力します。

Amazon Linux および RHEL Amazon EC2 インスタンスの場合

リージョン サンプルアプリケーションの場所

米国東部 (オハイオ) リージョン http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip

米国東部 (バージニア北部) リージョン http://s3.amazonaws.com/aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip

米国西部 (北カリフォルニア) リージョン http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip

米国西部 (オレゴン) リージョン http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip

カナダ (中部) リージョン http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip

欧州 (アイルランド) リージョン http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip

欧州 (ロンドン) リージョン http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip

  http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip

欧州 (フランクフルト) リージョン http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip

アジアパシフィック (東京) リージョン http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip

アジアパシフィック (ソウル) リージョン http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip

API バージョン 2014-10-06111

Page 120: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: Auto Scaling グループにアプリケーションをデプロイする

リージョン サンプルアプリケーションの場所

アジアパシフィック (シンガポール) リージョン http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip

アジアパシフィック (シドニー) リージョン http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip

アジアパシフィック (ムンバイ) リージョン http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip

南米 (サンパウロ) リージョン http://s3-sa-east-1.amazonaws.com/aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip

Windows Server Amazon EC2 インスタンスの場合

リージョン サンプルアプリケーションの場所

米国東部 (オハイオ) リージョン http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/samples/latest/SampleApp_Windows.zip

米国東部 (バージニア北部) リージョン http://s3.amazonaws.com/aws-codedeploy-us-east-1/samples/latest/SampleApp_Windows.zip

米国西部 (北カリフォルニア) リージョン http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/samples/latest/SampleApp_Windows.zip

米国西部 (オレゴン) リージョン http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/samples/latest/SampleApp_Windows.zip

カナダ (中部) リージョン http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/samples/latest/SampleApp_Windows.zip

欧州 (アイルランド) リージョン http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/samples/latest/SampleApp_Windows.zip

欧州 (ロンドン) リージョン http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/samples/latest/SampleApp_Windows.zip

  http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/samples/latest/SampleApp_Windows.zip

API バージョン 2014-10-06112

Page 121: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: 結果の確認

リージョン サンプルアプリケーションの場所

欧州 (フランクフルト) リージョン http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/samples/latest/SampleApp_Windows.zip

アジアパシフィック (東京) リージョン http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Windows.zip

アジアパシフィック (ソウル) リージョン http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Windows.zip

アジアパシフィック (シンガポール) リージョン http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Windows.zip

アジアパシフィック (シドニー) リージョン http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Windows.zip

アジアパシフィック (ムンバイ) リージョン http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/samples/latest/SampleApp_Windows.zip

南米 (サンパウロ) リージョン http://s3-sa-east-1.amazonaws.com/aws-codedeploy-sa-east-1/samples/latest/SampleApp_Windows.zip

Ubuntu Server Amazon EC2 インスタンスの場合

Amazon S3 に格納されるカスタムアプリケーションリビジョンの場所を入力します。14. [Deployment description] ボックスを空白のままにしておきます。15. [Deployment configuration] ドロップダウンリストで [CodeDeployDefault.OneAtATime] を選択した状

態にして、[Deploy] を選択します。

Note

デプロイの現在のステータスを更新するには、ブラウザのページを更新します。[Succeeded] の代わりに、[Failed] が表示された場合、デプロイをモニタリングおよびトラブルシューティングします。 (p. 73) にある手法の一部を試してみることもできます(SimpleDemoApp のアプリケーション名、および SimpleDemoDG のデプロイグループ名を使用する)。

ステップ 3: 結果の確認このステップでは、AWS CodeDeploy が Auto Scaling グループの単一 Amazon EC2 インスタンスのSimpleDemoApp リビジョンをインストールしたかどうかを確認します。

トピック

API バージョン 2014-10-06113

Page 122: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: 結果の確認

• 結果を確認するには (CLI) (p. 114)• 結果を確認するには (コンソール) (p. 114)

結果を確認するには (CLI)まず、Amazon EC2 インスタンスのパブリック DNS が必要です。

describe-instances コマンドを呼び出して、AWS CLI を使用して、Auto Scaling グループの Amazon EC2インスタンスのパブリック DNS を取得します。

このコマンドを呼び出す前に、Amazon EC2 インスタンスの ID が必要です。この ID を取得するには、前と同じように CodeDeployDemo-AS-Group に対して describe-auto-scaling-groups を呼び出します。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text

ここで describe-instances コマンドを呼び出します。

aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text

返される値は Amazon EC2 インスタンスのパブリック DNS です。

ウェブブラウザを使用して、次のような URL を使用して Amazon EC2 インスタンスにデプロイしたSimpleDemoApp リビジョンを表示します。

http://ec2-01-234-567-890.compute-1.amazonaws.com

「おめでとうございます」のページが表示されれば、リビジョンは Auto Scaling グループの単一のAmazon EC2 インスタンスに AWS CodeDeploy を正しく使用してデプロイされています。

次に、Auto Scaling グループに Amazon EC2 インスタンスを追加します。Auto Scaling が Amazon EC2インスタンスを追加すると、AWS CodeDeploy は新しいインスタンスにリビジョンをデプロイします。

結果を確認するには (コンソール)まず、Amazon EC2 インスタンスのパブリック DNS が必要です。

https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

In the Amazon EC2 navigation pane, under Auto Scaling, choose Auto Scaling Groups, and then choosethe CodeDeployDemo-AS-Group entry.

[Instances] タブで、リスト内の Amazon EC2 インスタンス ID を選択します。

[Instances] ページの、[Description] タブで、[Public DNS] 値をメモします。ec2-01-234-567-890.compute-1.amazonaws.com のようになります。

ウェブブラウザを使用して、次のような URL を使用して Amazon EC2 インスタンスにデプロイしたSimpleDemoApp リビジョンを表示します。

http://ec2-01-234-567-890.compute-1.amazonaws.com

「おめでとうございます」のページが表示されれば、リビジョンは Auto Scaling グループの単一のAmazon EC2 インスタンスに AWS CodeDeploy を正しく使用してデプロイされています。

API バージョン 2014-10-06114

Page 123: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 4: Auto Scaling グループで

Amazon EC2 インスタンスの数を増やす

次に、Auto Scaling グループに Amazon EC2 インスタンスを追加します。Auto Scaling が Amazon EC2インスタンスを追加すると、AWS CodeDeploy は新しい Amazon EC2 インスタンスにリビジョンをデプロイします。

ステップ 4: Auto Scaling グループで Amazon EC2 インスタンスの数を増やすこのステップでは、Auto Scaling グループに追加の Amazon EC2 インスタンスを作成するように指示します。Auto Scaling がインスタンスを作成すると、AWS CodeDeploy はそのインスタンスにリビジョンをデプロイします。

トピック• Auto Scaling グループで Amazon EC2 インスタンスの数をスケールアップするには (CLI) (p. 115)• デプロイグループで Amazon EC2 インスタンスの数をスケールアップするには (コンソー

ル) (p. 115)

Auto Scaling グループで Amazon EC2 インスタンスの数をスケールアップするには (CLI)1. update-auto-scaling-group コマンドを呼び出して、CodeDeployDemo-AS-Group という名前の Auto

Scaling グループの Amazon EC2 インスタンスを 1 から 2 に増やします。

ローカル Linux, macOS, or Unix マシンの場合

aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name CodeDeployDemo-AS-Group \ --min-size 2 \ --max-size 2 \ --desired-capacity 2

ローカル Windows マシンの場合

aws autoscaling update-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --min-size 2 --max-size 2 --desired-capacity 2

2. これで、Auto Scaling グループに 2 つの Amazon EC2 インスタンスがあることを確認します。CodeDeployDemo-AS-Group に対して、describe-auto-scaling-groups コマンドを呼び出します。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text

戻り値に、Healthy と InService の両方が表示されるまで続行しないでください。

デプロイグループで Amazon EC2 インスタンスの数をスケールアップするには (コンソール)1. Amazon EC2 ナビゲーションバーで、[Auto Scaling] の下の [Auto Scaling Groups] を選択して、次に

[CodeDeployDemo-AS-Group] を選択します。2. [ Actions] を選択して、[Edit] を選択します。

API バージョン 2014-10-06115

Page 124: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: 結果を再度確認します

3. [Desired] の [Details] タブで、[Min] および [Max] ボックスに、2 と入力して、[ Save] を選択します。4. [Instances] タブを選択します。新しい Amazon EC2 インスタンスが一覧に表示されます。(インスタ

ンスが表示されない場合、[Refresh] ボタンを数回選択する必要が生じる場合があります)。[Lifecycle]列に、[InService] の値が表示されて、[Health Status] 列に、[Healthy] の値が表示されるまで進まないでください。

ステップ 5: 結果を再度確認しますこのステップでは、AWS CodeDeploy が Auto Scaling グループの新しいインスタンスの SimpleDemoAppリビジョンをインストールしたかどうかを確認します。

トピック• 自動デプロイの結果を確認するには (CLI) (p. 116)• 自動デプロイの結果を確認するには (コンソール) (p. 117)

自動デプロイの結果を確認するには (CLI)1. get-deployment コマンドを確認する前に、自動デプロイの ID が必要です。ID を取得するに

は、SimpleDemoApp という名前のアプリケーション、および SimpleDemoDG という名前のデプロイグループに対して、list-deployments コマンドを呼び出します。

aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text

2 つのデプロイ ID があるはずです。get-deployment コマンドの呼び出しでは、まだ使用していないID を使用してください。

aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text

デプロイのステータスに加えて、autoScaling がコマンド出力に表示されます。(autoScaling はAuto Scaling がデプロイを作成したことを意味します)。

デプロイのステータスに Succeeded が表示されるまで進まないでください。2. describe-instances コマンドを呼び出す前に、新しい Amazon EC2 インスタンスの ID が必要です。こ

の ID を取得するには、CodeDeployDemo-AS-Group に対して describe-auto-scaling-groups コマンドをもう一度呼び出します。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text

ここで、describe-instances コマンドを呼び出します。

aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text

describe-instances コマンドの出力で、新しい Amazon EC2 インスタンスの パブリック DNS をメモします。

3. ウェブブラウザを使用して、次のような URL を使用して Amazon EC2 インスタンスにデプロイしたSimpleDemoApp リビジョンを表示します。

API バージョン 2014-10-06116

Page 125: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: クリーンアップ

http://ec2-01-234-567-890.compute-1.amazonaws.com

「おめでとうございます」のページが表示されれば、リビジョンは Auto Scaling グループのスケールアップされた Amazon EC2 インスタンスに AWS CodeDeploy を使用してデプロイされています。

自動デプロイの結果を確認するには (コンソール)1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。[Deployments] ページに、Auto Scalingが作成したデプロイに関する情報が表示されます。通常、お客様がデプロイを作成しますが、AutoScaling はお客様に代わってリビジョンを新しい Amazon EC2 インスタンスにデプロイします。

Note

デプロイの現在のステータスを更新するには、ブラウザのページを更新します。3. デプロイのステータスに [Succeeded] が表示された後、インスタンスの結果を確認します。最初に、

インスタンスのパブリック DNS を取得する必要があります。4. In the Amazon EC2 navigation pane, under Auto Scaling, choose Auto Scaling Groups, and then

choose the CodeDeployDemo-AS-Group entry.5. [Instances] タブで、新しい Amazon EC2 インスタンスの ID を選択します。6. [Instances] ページの、[Description] タブで、[Public DNS] 値をメモしま

す。ec2-01-234-567-890.compute-1.amazonaws.com のようになります。

インスタンスにデプロイされた SimpleDemoApp リビジョンを、次のような URL を使用して表示します。

http://ec2-01-234-567-890.compute-1.amazonaws.com

「おめでとうございます」のページが表示されれば、リビジョンは Auto Scaling グループのスケールアップされた Amazon EC2 インスタンスに AWS CodeDeploy を使用してデプロイされています。

ステップ 6: クリーンアップこのステップでは、このチュートリアルで使用したリソースの料金が継続的に発生するのを避けるためにAuto Scaling グループを削除します。必要に応じて、Auto Scaling 設定、および AWS CodeDeploy デプロイコンポーネントレコードを削除できます。

トピック• リソース (CLI) をクリーンアップするには (p. 117)• リソース (コンソール) をクリーンアップするには (p. 118)

リソース (CLI) をクリーンアップするには1. CodeDeployDemo-AS-Group に対して、delete-auto-scaling-group コマンドを呼び出して、Auto

Scaling グループを削除します。これにより、Amazon EC2 インスタンスも終了します。

API バージョン 2014-10-06117

Page 126: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドチュートリアル: GitHub からアプリケーションをデプロイする

aws autoscaling delete-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --force-delete

2. 必要に応じて、CodeDeployDemo-AS-Configuration という名前の起動設定に対して、delete-launch-configuration コマンドを呼び出して、Auto Scaling 起動設定を削除します。

aws autoscaling delete-launch-configuration --launch-configuration-name CodeDeployDemo-AS-Configuration

3. 必要に応じて、SimpleDemoApp という名前のアプリケーションに対して、delete-application コマンドを呼び出して、AWS CodeDeploy からアプリケーションを削除します。これにより、関連するすべてのデプロイ、デプロイグループ、およびリビジョンレコードも削除されます。

aws deploy delete-application --application-name SimpleDemoApp

リソース (コンソール) をクリーンアップするには1. Auto Scaling グループを削除します。これにより、Amazon EC2 インスタンスも終了します。

AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. In the Amazon EC2 navigation pane, under Auto Scaling, choose Auto Scaling Groups, and thenchoose the CodeDeployDemo-AS-Group entry.

3. [Actions] を選択して、[Delete] を選択し、次に [Yes, Delete] を選択します。4. 必要に応じて、起動設定を削除します。ナビゲーションバーで、[Auto Scaling] の下で、[Launch

Configurations] を選択して、次に [CodeDeployDemo-AS-Configuration] を選択します。5. [Actions] を選択して、[Delete launch configuration] を選択し、[Yes, Delete] を選択します。6. 必要に応じて、AWS CodeDeploy からアプリケーションを削除します。これにより、関連す

るすべてのデプロイ、デプロイグループ、およびリビジョンレコードも削除されます。https://console.aws.amazon.com/codedeploy にある AWS CodeDeploy コンソールを開きます。

7. AWS CodeDeploy メニューで [Applications] を選択します。8. アプリケーションのリストで、[SimpleDemoApp] を選択します。9. [Application details] ページで、[Delete application] を選択します。10. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

チュートリアル: AWS CodeDeploy を使用してGitHub からアプリケーションをデプロイする

このチュートリアルでは、AWS CodeDeploy を使用して GitHub からサンプルアプリケーションリビジョンを単一の Amazon EC2 インスタンス (Amazon Linux を実行中)、単一の Red Hat Enterprise Linux(RHEL) インスタンス、または単一の Windows Server インスタンスにデプロイします。GitHub と AWSCodeDeploy の統合については、「AWS CodeDeploy と GitHub の統合 (p. 55)」を参照してください。

Note

AWS CodeDeploy を使用して、アプリケーションリビジョンを GitHub から Ubuntu Server インスタンスにデプロイすることもできます。チュートリアル: AWS CodeDeploy によるオンプレミ

API バージョン 2014-10-06118

Page 127: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド前提条件

スインスタンスへのアプリケーションのデプロイ (Windows Server、Ubuntu Server、または RedHat Enterprise Linux) (p. 95) の「ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96)」に記述されているサンプルリビジョンを使用するか、Ubuntu Server インスタンスおよび AWS CodeDeploy. と互換性があるリビジョンを作成できます。独自のリビジョンを作成するには、AWS CodeDeploy のリビジョンの計画を立てる (p. 242) と AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243) を参照してください。

トピック• 前提条件 (p. 119)• ステップ 1: GitHub アカウントを設定する (p. 119)• ステップ 2: GitHub リポジトリを作成する (p. 119)• ステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする (p. 121)• ステップ 4: インスタンスをプロビジョニングする (p. 124)• ステップ 5: アプリケーションおよびデプロイグループの作成 (p. 124)• ステップ 6: アプリケーションをインスタンスにデプロイする (p. 126)• ステップ 7: デプロイをモニタリングおよび確認する (p. 128)• ステップ 8: クリーンアップ (p. 129)

前提条件このチュートリアルを開始する前に、以下を実行します。

• ローカルマシンで Git をインストールします。Git をインストールするには、Git Downloads を参照してください。

• AWS CLI のインストールと設定を含む、AWS CodeDeploy の使用開始 (p. 20) の手順を完了します。これは、AWS CLI を使用して GitHub からインスタンスにリビジョンをデプロイする場合に特に重要です。

ステップ 1: GitHub アカウントを設定するリビジョンが保存される GitHub リポジトリを作成するには、GitHub アカウントが必要です。すでに GitHub アカウントをお持ちの場合は、スキップして「ステップ 2: GitHub リポジトリを作成する (p. 119)」に進んでください。

1. https://github.com/join にアクセスします。2. ユーザー名、E メールアドレス、パスワードを入力します。3. [Sign up for GitHub] を選択し、指示に従います。

ステップ 2: GitHub リポジトリを作成するリビジョンを保存するには、GitHub リポジトリが必要です。

すでに GitHub リポジトリがある場合は、このチュートリアル全体で CodeDeployGitHubDemo の名前を必ず置き換えて、「ステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする (p. 121)」に進んでください。

1. GitHub home page で、次のいずれかの操作を実行します。

• [Your repositories] で、[New repository] を選択します。

API バージョン 2014-10-06119

Page 128: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 2: GitHub リポジトリを作成する

• ナビゲーションバーで、[Create new (+)] を選択し、[New repository] を選択します。2. [Create a new repository] ページで、次の操作を実行します。

• [Repository name] ボックスに、CodeDeployGitHubDemo と入力します。• [Public] を選択します。

Note

デフォルトの [Public] オプションを選択すると、誰でもこのリポジトリを表示できます。[Private] オプションを選択して、リポジトリにアクセスおよびコミットするユーザーを制限できますが、このオプションを選択すると GitHub からの追加料金が発生する可能性があります。

• [Initialize this repository with a README] チェックボックスをオフにします。代わりに、次のステップでは、README.md ファイルを手動で作成します。

• [Create repository] を選択します。3. ローカルマシンタイプ別の手順に従い、コマンドラインを使用してリポジトリを作成します。

Note

GitHub で 2 要素認証を有効にした場合、パスワードの入力を求められたら、GitHub のログインパスワードの代わりに必ず個人アクセストークンを入力するようにしてください。詳細については、「Providing Your 2FA Authentication Code」を参照してください。

ローカル Linux, macOS, or Unix マシンの場合

1. ターミナルから、次のコマンドを一度に 1 つずつ実行します。user-name は GitHub のユーザー名です。

mkdir /tmp/CodeDeployGitHubDemo

cd /tmp/CodeDeployGitHubDemo

touch README.md

git init

git add README.md

git commit -m "My first commit"

git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git

git push -u origin master

2. ターミナルを /tmp/CodeDeployGitHubDemo の場所で開いたままにします。

ローカル Windows マシンの場合

1. 管理者として実行するコマンドプロンプトから、次のコマンドを一度に 1 つずつ実行します。

API バージョン 2014-10-06120

Page 129: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする

mkdir c:\temp\CodeDeployGitHubDemo

cd c:\temp\CodeDeployGitHubDemo

notepad README.md

2. Notepad に README.md ファイルを保存します。Notepad を閉じます。次のコマンドを一度に 1つずつ実行します。user-name は GitHub のユーザー名です。

git init

git add README.md

git commit -m "My first commit"

git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git

git push -u origin master

3. コマンドプロンプトを c:\temp\CodeDeployGitHubDemo の場所で開いたままにします。

ステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードするこのステップでは、パブリックの Amazon S3 バケットから GitHub リポジトリにサンプルリビジョンをコピーします。(分かりやすいように、このチュートリアルに用意してあるサンプルリビジョンは単一のウェブページです。)

Note

サンプルリビジョンの代わりに自身のリビジョンの 1 つを使用する場合は、以下が必要です。

• AWS CodeDeploy のリビジョンの計画を立てる (p. 242) と AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243) のガイドラインに従う。

• 対応するインスタンスタイプを使用する。• GitHub のダッシュボードからアクセス可能である。

リビジョンがこれらの要件を満たしている場合は、「ステップ 5: アプリケーションおよびデプロイグループの作成 (p. 124)」に進んでください。Ubuntu Server インスタンスにデプロイする場合は、Ubuntu Server インスタンスおよび AWSCodeDeploy と互換性があるリビジョンを GitHub リポジトリにアップロードする必要があります。詳細については、「AWS CodeDeploy のリビジョンの計画を立てる (p. 242)」および「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」を参照してください。

トピック• ローカル Linux, macOS, or Unix マシンからサンプルリビジョンをプッシュする (p. 122)• ローカル Windows マシンからサンプルリビジョンをプッシュする (p. 123)

API バージョン 2014-10-06121

Page 130: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする

ローカル Linux, macOS, or Unix マシンからサンプルリビジョンをプッシュするターミナルを /tmp/CodeDeployGitHubDemo などの場所で開いたままにして、以下のコマンドを一度に1 つずつ実行します。

Note

デプロイ先を Windows Server インスタンスにする場合は、コマンドで SampleApp_Linux.zipの代わりに SampleApp_Windows.zip を使用します。

(Amazon S3 copy command)

unzip SampleApp_Linux.zip

rm SampleApp_Linux.zip

git add .

git commit -m "Added sample app"

git push

(Amazon S3 copy command) は次のいずれかです。

• aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip .--region us-east-2 米国東部 (オハイオ) リージョン

• aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip .--region us-east-1 米国東部(バージニア北部) リージョン

• aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip .--region us-west-1 米国西部 (北カリフォルニア) リージョン

• aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip .--region us-west-2 米国西部 (オレゴン) リージョン

• aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip . --region ca-central-1 カナダ (中部) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip .--region eu-west-1 欧州 (アイルランド) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip .--region eu-west-2 欧州 (ロンドン) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip .--region eu-west-3 EU (パリ) リージョン

• aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip . --region eu-central-1 欧州 (フランクフルト) リージョン

• aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip . --region ap-northeast-1 アジアパシフィック (東京) リージョン

• aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip . --region ap-northeast-2 アジアパシフィック (ソウル) リージョン

• aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip . --region ap-southeast-1 アジアパシフィック (シンガポール) リージョン

API バージョン 2014-10-06122

Page 131: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: GitHub リポジトリにサンプルアプリケーションをアップロードする

• aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip . --region ap-southeast-2 アジアパシフィック (シドニー) リージョン

• aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip .--region ap-south-1 アジアパシフィック (ムンバイ) リージョン

• aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip .--region sa-east-1 南米 (サンパウロ) リージョン

ローカル Windows マシンからサンプルリビジョンをプッシュするコマンドプロンプトを c:\temp\CodeDeployGitHubDemo などの場所で開いたままにして、以下のコマンドを一度に 1 つずつ実行します。

Note

デプロイ先を Amazon Linux または RHEL インスタンスにする場合は、コマンドでSampleApp_Windows.zip の代わりに SampleApp_Linux.zip を使用します。

(Amazon S3 copy command)

the ZIP ファイルの内容の解凍先を、新しいサブディレクトリではなく、直接ローカルディレクトリ (c:\temp\CodeDeployGitHubDemo など) にします。

git add .

git commit -m "Added sample app"

git push

(Amazon S3 copy command) は次のいずれかです。

• aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Windows.zip . --region us-east-2 米国東部 (オハイオ) リージョン

• aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Windows.zip . --region us-east-1 米国東部(バージニア北部) リージョン

• aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Windows.zip . --region us-west-1 米国西部 (北カリフォルニア) リージョン

• aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Windows.zip . --region us-west-2 米国西部 (オレゴン) リージョン

• aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Windows.zip . --region ca-central-1 カナダ (中部) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Windows.zip . --region eu-west-1 欧州 (アイルランド) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Windows.zip . --region eu-west-2 欧州 (ロンドン) リージョン

• aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Windows.zip . --region eu-west-3 EU (パリ) リージョン

• aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Windows.zip . --region eu-central-1 欧州 (フランクフルト) リージョン

• aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Windows.zip . --region ap-northeast-1 アジアパシフィック (東京) リージョン

API バージョン 2014-10-06123

Page 132: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 4: インスタンスをプロビジョニングする

• aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Windows.zip . --region ap-northeast-2 アジアパシフィック (ソウル) リージョン

• aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Windows.zip . --region ap-southeast-1 アジアパシフィック (シンガポール)リージョン

• aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Windows.zip . --region ap-southeast-2 アジアパシフィック (シドニー) リージョン

• aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Windows.zip . --region ap-south-1 アジアパシフィック (ムンバイ) リージョン

• aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Windows.zip . --region sa-east-1 南米 (サンパウロ) リージョン

独自のリビジョンを Ubuntu Server インスタンスにプッシュするには、リビジョンをローカルリポジトリにコピーしてから、次のコマンドを呼び出します。

git add .git commit -m "Added Ubuntu app"git push

ステップ 4: インスタンスをプロビジョニングするこのステップでは、サンプルアプリケーションのデプロイ先であるインスタンスを作成または設定します。AWS CodeDeploy でサポートされているオペレーティングシステムのいずれかを実行しているAmazon EC2 インスタンスまたはオンプレミスインスタンスにデプロイできます。詳細については、「AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132)」を参照してください。(AWS CodeDeploy デプロイで使用するインスタンスが設定済みである場合は、次のステップまでスキップします。)

インスタンスを作成または設定するには、「AWS CodeDeploy のインスタンスの使用 (p. 163)」を参照してください。その後に、このページに戻ります。

Note

このチュートリアル用に新しいインスタンスをすばやく作成するには、Amazon EC2 コンソールを使用することをお勧めします。「Amazon EC2 インスタンス (コンソール) の起動 (p. 164)」を参照してください。

AWS CodeDeploy エージェントがインスタンスで実行されていることを確認するには、「AWSCodeDeploy エージェントの実行の確認 (p. 139)」を参照してください。

インスタンスを正常に起動または設定して AWS CodeDeploy エージェントが実行されていることを確認したら、次のステップに進みます。

ステップ 5: アプリケーションおよびデプロイグループの作成このステップでは、GitHub リポジトリからサンプルリビジョンをデプロイするために使用するアプリケーションおよびデプロイグループを AWS CodeDeploy コンソールまたは AWS CLI で作成します。

アプリケーションおよびデプロイグループの作成 (コンソール)1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

API バージョン 2014-10-06124

Page 133: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 5: アプリケーションおよびデプロイグループの作成

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページで、[Create application] を選択します。

Note

アプリケーションが未作成で AWS CodeDeploy 開始ページが表示された場合は、[GetStarted Now] を選択し、Sample deployment wizard に従ってデプロイを完了してから、このトピックに戻ります。

3. [Application name] ボックスに、CodeDeployGitHubDemo-App と入力します。4. [Deployment group name] ボックスに、CodeDeployGitHubDemo-DepGrp と入力します。5. [Deployment type] で、[In-place deployment] を選択します。6. [Environment configuration] では、使用するインスタンスのタイプに応じて、[Amazon EC2 instances]

タブまたは [On-premises instances] タブを選択します。[Key] と [Value] のボックスに、ステップ 4:インスタンスをプロビジョニングする (p. 124) の一部としてインスタンスに適用されたインスタンスタグのキーと値を入力します。

7. [Service role ARN] ドロップダウンリストで、サービスロール ARN を選択します。(サービスロールARN を確認する必要がある場合は、「サービスロール ARN の取得 (コンソール) (p. 26)」の手順を参照してください)。

8. [Create application] を選択し、次のステップに進みます。

アプリケーションおよびデプロイグループの作成 (CLI)1. create-application コマンドを呼び出して、CodeDeployGitHubDemo-App という名前の AWS

CodeDeploy でアプリケーションを作成します。

aws deploy create-application --application-name CodeDeployGitHubDemo-App

2. create-deployment-group コマンドを呼び出して、CodeDeployGitHubDemo-DepGrp という名前のデプロイグループを作成します。

• Amazon EC2 インスタンスにデプロイする場合、EC2-tag-key は、「ステップ 4: インスタンスをプロビジョニングする (p. 124)」の一部として Amazon EC2 インスタンスに適用した AmazonEC2 インスタンスのタグキーです。

• Amazon EC2 インスタンスにデプロイする場合、ec2-tag-value は、「ステップ 4: インスタンスをプロビジョニングする (p. 124)」の一部として Amazon EC2 インスタンスに適用したAmazon EC2 インスタンスのタグ値です。

• オンプレミスインスタンスにデプロイする場合、on-premises-tag-key は、「ステップ 4: インスタンスをプロビジョニングする (p. 124)」の一部としてオンプレミスインスタンスに適用したオンプレミスインスタンスのタグキーです。

• オンプレミスインスタンスにデプロイする場合、on-premises-tag-value は、「ステップ 4: インスタンスをプロビジョニングする (p. 124)」の一部としてオンプレミスインスタンスに適用したオンプレミスインスタンスのタグ値です。

• service-role-arn は、サービスロール ARN です (サービスロール ARN の取得 (CLI) (p. 26) の手順に従って、サービスロール ARN を見つけます)。

aws deploy create-deployment-group --application-name CodeDeployGitHubDemo-App --ec2-tag-filters Key=ec2-tag-key,Type=KEY_AND_VALUE,Value=ec2-tag-value --on-premises-tag-filters Key=on-premises-tag-key,Type=KEY_AND_VALUE,Value=on-premises-tag-value --deployment-group-name CodeDeployGitHubDemo-DepGrp --service-role-arn service-role-arn

API バージョン 2014-10-06125

Page 134: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: アプリケーションをインスタンスにデプロイする

Note

create-deployment-group コマンドは、デプロイおよびインスタンスで指定されたイベントに関する Amazon SNS 通知をトピックの受信者に送信するトリガーを作成するためのサポートを提供します。また、このコマンドは、Amazon CloudWatch アラームのしきい値が満たされていることをモニタリングするときに、デプロイの自動的なロールバックと、デプロイを停止するためのアラームの設定のオプションをサポートします。これらのアクションのコマンドは、このチュートリアルに含まれていません。

ステップ 6: アプリケーションをインスタンスにデプロイするこのステップでは、AWS CodeDeploy コンソールまたは AWS CLI を使用して、サンプルリビジョンをGitHub リポジトリからインスタンスにデプロイします。

リビジョンをデプロイするには (コンソール)1. [Application details] ページの [Deployment groups] で、CodeDeployGitHubDemo-DepGrp の横にあ

るボタンを選択します。2. [Actions] メニューで、[Deploy new revision] を選択します。3. [Create deployment] ページの [Repository type] エリアで、[My application is stored in GitHub] を選択

します。4. [Connect to GitHub] で、次のいずれかを実行します。

• GitHub アカウントに対する AWS CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[GitHub account] に、この接続を識別する名前を入力し、[Connect to GitHub] を選択します。CodeDeployGitHubDemo-App という名前のアプリケーションの GitHub を操作することを AWS CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 5 に進みます。

• 作成済みの接続を使用するには、その名前を [GitHub account] で選択してから [Connect to GitHub]を選択します。ステップ 7 に進みます。

• 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[Connect to a different GitHub account] を選択し、[Connect to GitHub] を選択します。ステップ 5 に進みます。

5. [Sign in] ページの手順に従って、GitHub アカウントにサインインします。6. [Authorize application] ページで、[Authorize application] を選択します。7. AWS CodeDeploy [Create deployment] ページの [Repository name] ボックスに、サインインに使用

した GitHub のユーザー名を入力し、その後に、スラッシュ (/)、アプリケーションリビジョンをプッシュしたリポジトリの名前を順に入力します (my-github-user-name/CodeDeployGitHubDemoなど)。

入力する値が不確実な場合、または異なるリポジトリを指定する場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、ターゲットリポジトリの名前の上にマウスを置きます。GitHub ユーザー

または組織の名前、スラッシュ (/)、リポジトリの名前の順序でツールヒントが表示されます。[Repository name] ボックスに、この表示された値を入力します。

Note

[Your repositories] にターゲットリポジトリの名前が表示されない場合、[Search GitHub]ボックスを使用して、ターゲットリポジトリと、対応する GitHub ユーザーまたは組織の名前を検索します。

API バージョン 2014-10-06126

Page 135: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 6: アプリケーションをインスタンスにデプロイする

8. [Commit ID] ボックスに、アプリケーションリビジョンの GitHub へのプッシュに関連付けられているコミットの ID を入力します。

入力する値が不確実な場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、[CodeDeployGitHubDemo] を選択します。3. コミットのリストで、アプリケーションリビジョンの GitHub へのプッシュに関連付けられてい

るコミット ID を検索してコピーします。通常、この ID は 40 文字で、文字と数字の両方で構成されます (コミット ID の短いバージョンを使用しないでください。通常は、長いバージョンの最初の 10 文字です)。

4. [Commit ID] ボックスにコミット ID を貼り付けます。9. [Deploy] を選択して、次のステップに進みます。

リビジョンをデプロイするには (CLI)GitHub を操作する AWS CLI コマンド (次に呼び出す create-deployment コマンドなど) のいずれかを呼び出す前に、GitHub ユーザーアカウントを使用して CodeDeployGitHubDemo-App アプリケーションのGitHub を操作するためのアクセス権限を AWS CodeDeploy に付与する必要があります。現在、この操作を行うには、AWS CodeDeploy コンソールを使用する必要があります。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。3. [Create deployment] を選択します。

Note

新しいデプロイは作成されません。これは現在、GitHub ユーザーアカウントに代わってGitHub を操作するためのアクセス権限を AWS CodeDeploy に付与する唯一の方法です。

4. [Application] ドロップダウンリストから [CodeDeployGitHubDemo-App] を選択します。5. [Deployment group] ドロップダウンリストから [CodeDeployGitHubDemo-DepGrp] を選択します。6. [Repository type] エリアで、[My application is stored in GitHub] を選択します。7. [Connect to GitHub] で、次のいずれかを実行します。

• GitHub アカウントに対する AWS CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[GitHub account] に、この接続を識別する名前を入力し、[Connect to GitHub] を選択します。CodeDeployGitHubDemo-App という名前のアプリケーションの GitHub を操作することを AWS CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 8 に進みます。

• 作成済みの接続を使用するには、その名前を [GitHub account] で選択してから [Connect to GitHub]を選択します。ステップ 10 に進みます。

• 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[Connect to a different GitHub account] を選択し、[Connect to GitHub] を選択します。ステップ 8 に進みます。

8. [Sign in] ページの手順に従って、GitHub のユーザー名、または E メールとパスワードでサインインします。

9. [Authorize application] ページで、[Authorize application] を選択します。10. AWS CodeDeploy [Create deployment] ページで、[Cancel] を選択します。

API バージョン 2014-10-06127

Page 136: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 7: デプロイをモニタリングおよび確認する

11. create-deployment コマンドを呼び出して、リビジョンを GitHub リポジトリからインスタンスにデプロイします。

• repository は、GitHub アカウント名です。スラッシュ (/)、リポジトリの名前が後に続きます(CodeDeployGitHubDemo)。例: MyGitHubUserName/CodeDeployGitHubDemo。

使用する値が不確実な場合、または異なるリポジトリを指定する場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、ターゲットリポジトリの名前の上にマウスを置きます。GitHub ユー

ザーまたは組織の名前、スラッシュ (/)、リポジトリの名前の順序でツールヒントが表示されます。これが使用する値です。

Note

[Your repositories] にターゲットリポジトリの名前が表示されない場合、[SearchGitHub] ボックスを使用して、ターゲットリポジトリと、対応する GitHub ユーザーまたは組織の名前を検索します。

• commit-id は、リポジトリにプッシュしたアプリケーションリビジョンのバージョンに関連付けられているコミットです (例: f835159a...528eb76f)。

使用する値が不確実な場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、[CodeDeployGitHubDemo] を選択します。3. コミットのリストで、アプリケーションリビジョンの GitHub へのプッシュに関連付けられて

いるコミット ID を検索します。通常、この ID は 40 文字で、文字と数字の両方で構成されます (コミット ID の短いバージョンを使用しないでください。通常は、長いバージョンの最初の10 文字です)。この値を使用します。

ローカル Linux, macOS, or Unix マシンを使用している場合

aws deploy create-deployment \ --application-name CodeDeployGitHubDemo-App \ --deployment-config-name CodeDeployDefault.OneAtATime \ --deployment-group-name CodeDeployGitHubDemo-DepGrp \ --description "My GitHub deployment demo" \ --github-location repository=repository,commitId=commit-id

ローカル Windows マシンを使用している場合

aws deploy create-deployment --application-name CodeDeployGitHubDemo-App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name CodeDeployGitHubDemo-DepGrp --description "My GitHub deployment demo" --github-location repository=repository,commitId=commit-id

ステップ 7: デプロイをモニタリングおよび確認するこのステップでは、AWS CodeDeploy コンソールまたは AWS CLI を使用して、デプロイの成功を確認します。作成または設定したインスタンスにデプロイしたウェブページを表示するには、ウェブブラウザを使用します。

API バージョン 2014-10-06128

Page 137: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 8: クリーンアップ

Note

Ubuntu Server インスタンスにデプロイする場合、独自のテスト戦略を使用して、デプロイされたリビジョンがインスタンスで予期したとおりに機能するかどうかを確認し、次のステップに進みます。

デプロイをモニタリングおよび確認するには (コンソール)

1. [Deployments] ページが表示されない場合は、AWS CodeDeploy メニューで [Deployments] を選択します。

2. デプロイのリストで、CodeDeployGitHubDemo-App の Application 値と CodeDeployGitHubDemo-DepGrp の Deployment group 値がある行を探します。[Status] の列に [Succeeded] または [Failed] が表示されない場合は、定期的に [Refresh] ボタンをクリックします。

3. [Status] の列に [Failed] が表示される場合は、インスタンスの詳細の表示 (コンソール) (p. 207) の指示に従って、デプロイのトラブルシューティングを行います。

4. [Status] 列で [Succeeded] が表示される場合は、ウェブブラウザでデプロイを確認できます。このサンプルリビジョンでは、インスタンスに単一のウェブページをデプロイします。Amazon EC2 インスタンスにデプロイする場合は、ウェブブラウザで、インスタンスの http://public-dns にアクセスします (例: http://ec2-01-234-567-890.compute-1.amazonaws.com)。

5. ウェブページを表示できれば成功です。AWS CodeDeploy を使用して GitHub からリビジョンが正しくデプロイされました。これで、「ステップ 8: クリーンアップ (p. 129)」に進むことができます。

デプロイをモニタリングおよび確認するには (CLI)

1. list-deployments コマンドを呼び出して、CodeDeployGitHubDemo-App という名前のアプリケーションのデプロイ ID と CodeDeployGitHubDemo-DepGrp という名前のデプロイグループを取得します。

aws deploy list-deployments --application-name CodeDeployGitHubDemo-App --deployment-group-name CodeDeployGitHubDemo-DepGrp --query "deployments" --output text

2. get-deployment コマンドを呼び出して、list-deployments コマンドからの出力にデプロイメントの IDを指定します。

aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text

3. [Failed] が返されたら、インスタンスの詳細の表示 (コンソール) (p. 207) の指示に従って、デプロイのトラブルシューティングを行います。

4. [Succeeded] が返されたら、ウェブブラウザでデプロイを確認できます。このサンプルリビジョンは、インスタンスにデプロイされた単一のウェブページです。Amazon EC2インスタンスにデプロイする場合は、Amazon EC2 インスタンスの http://public-dns にアクセスすることで、このページをウェブブラウザで表示できます (例: http://ec2-01-234-567-890.compute-1.amazonaws.com)。

5. ウェブページを表示できれば成功です。AWS CodeDeploy を使用して GitHub リポジトリから正常にデプロイされました。

ステップ 8: クリーンアップこのチュートリアルの間に使用したリソースに対する追加料金を防ぐため、Amazon EC2 インスタンスと関連リソースを終了する必要があります。必要に応じて、このチュートリアルに関連付けられている AWSCodeDeploy デプロイコンポーネントレコードを削除できます。このチュートリアル専用に GitHub リポジトリを使用した場合は、今すぐ削除することもできます。

API バージョン 2014-10-06129

Page 138: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 8: クリーンアップ

AWS CloudFormation スタックを削除するには (AWSCloudFormation テンプレートを使用して Amazon EC2 インスタンスを作成した場合)1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://

console.aws.amazon.com/cloudformation) を開きます。2. [Stack Name] 列で、CodeDeploySampleStack で始まるスタックの横にあるボックスをオンにしま

す。3. [Delete Stack] を選択します。4. プロンプトが表示されたら、[Yes, Delete] を選択します。Amazon EC2 インスタンスおよび関連する

IAM インスタンスプロファイルとサービスロールが削除されます。

手動で登録を解除およびオンプレミスインスタンスをクリーンアップするには (オンプレミスインスタンスをプロビジョニングした場合)1. AWS CLI を使用して、your-instance-name で表されるオンプレミスインスタンスと、your-

region で関連付けられたリージョンに対して deregister コマンドを呼び出します。

aws deploy deregister --instance-name your-instance-name --delete-iam-user --region your-region

2. オンプレミスインスタンスから、uninstall コマンドを呼び出します:

aws deploy uninstall

Amazon EC2インスタンスを手動で終了するには (手動でAmazon EC2 インスタンスを起動した場合)1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にある

Amazon EC2 コンソールを開きます。2. ナビゲーションペインで、[Instances] の下にある [Instances] を選択します。3. 終了する Amazon EC2 インスタンスの横にあるボックスをオンにします。[Actions] メニューで

[Instance State] をポイントし、[Terminate] を選択します。4. プロンプトが表示されたら、[Yes, Terminate] を選択します。

AWS CodeDeploy デプロイコンポーネントレコードを削除するには1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

API バージョン 2014-10-06130

Page 139: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 8: クリーンアップ

2. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. [CodeDeployGitHubDemo-App] を選択します。4. [Application details] ページの [Deployment groups] で、デプロイグループの横にあるボタンを選択し

ます。[Actions] メニューで、[Delete] を選択します。求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

5. [Application details] ページの下部で、[Delete application] を選択します。6. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

GitHub リポジトリを削除するにはGitHub Help の「Deleting a repository」を参照してください。

API バージョン 2014-10-06131

Page 140: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントでサポートされているオペレーティングシステム

AWS CodeDeploy エージェントの使用

AWS CodeDeploy エージェントは、インスタンスにインストールして設定すると、そのインスタンスがAWS CodeDeploy デプロイで使用できるようになるソフトウェアパッケージです。

Note

AWS CodeDeploy エージェントは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 にデプロイする場合にのみ必要です。AWS Lambda コンピューティングプラットフォームを選択します。 を使用するデプロイでは、このエージェントは必要ありません。

エージェントがインストールされている場合、設定ファイルはインスタンスに配置されます。このファイルは、エージェントの動作を指定するために使用されます。この設定ファイルは、インスタンスとやり取りするときに使用する AWS CodeDeploy のディレクトリパスおよびその他の設定を指定します。ファイルの一部の設定オプションは変更できます。AWS CodeDeploy エージェント設定ファイルの使用の詳細については、「AWS CodeDeploy エージェント設定リファレンス (p. 344)」を参照してください。

インストール、更新、バージョン更新のステップなど、AWS CodeDeploy エージェントの使用の詳細については、「AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)」を参照してください。

トピック• AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132)• AWS CodeDeploy エージェントの通信プロトコルとポート (p. 133)• AWS CodeDeploy エージェントに対する AWS SDK for Ruby (aws-sdk-core) のサポート (p. 133)• サポートされているバージョンの AWS CodeDeploy エージェント (p. 133)• アプリケーションリビジョンとログファイルのクリーンアップ (p. 136)• AWS CodeDeploy エージェントがインストールしたファイル (p. 137)• AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)

AWS CodeDeploy エージェントでサポートされているオペレーティングシステム

サポートされる Amazon EC2 AMI オペレーティングシステムAWS CodeDeploy エージェントは、以下の Amazon EC2 AMI オペレーティングシステムでテスト済みです。

• Amazon Linux 2017.03.x、2016.09.0、2016.03.1、2016.03.0、2015.03, 2014.09.1• Ubuntu Server 16.04 LTS および 14.04 LTS• Microsoft Windows Server 2016、2012 R2、および 2008 R2• Red Hat Enterprise Linux (RHEL) 7.x

AWS CodeDeploy エージェントは、ニーズに適応できるようオープンソースとして利用できます。他の Amazon EC2 AMI オペレーティングシステムで使用できます。詳細については、GitHub の AWSCodeDeploy エージェント リポジトリを参照してください。

API バージョン 2014-10-06132

Page 141: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサポートされているオンプレミスオペレーティングシステム

サポートされているオンプレミスオペレーティングシステムAWS CodeDeploy エージェントは次のオンプレミスオペレーティングシステムでテスト済みです。

• Ubuntu Server 14.04 LTS• Microsoft Windows Server 2016、2012 R2、および 2008 R2• Red Hat Enterprise Linux (RHEL) 7.x

AWS CodeDeploy エージェントは、ニーズに適応できるようオープンソースとして利用できます。他のオンプレミスインスタンスオペレーティングシステムで使用できます。詳細については、GitHub の AWSCodeDeploy エージェント リポジトリを参照してください。

AWS CodeDeploy エージェントの通信プロトコルとポート

AWS CodeDeploy エージェントはポート 443 経由で HTTPS を使用してアウトバウンドの通信をします。

AWS CodeDeploy エージェントに対する AWSSDK for Ruby (aws-sdk-core) のサポート

1.0.1.880 以前のバージョンの AWS CodeDeploy エージェントは、2.1.2 以前のバージョンの AWSSDK for Ruby (aws-sdk-core 2.1.2) とのみと互換性があります。1.0.1.880 以前のバージョンの AWSCodeDeploy エージェントを使用している場合は、最新バージョンにアップデートすることをお勧めします。詳細については、以下を参照してください。

• AWS CodeDeploy エージェントのバージョンの特定 (p. 141)• AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142)

AWS CodeDeploy エージェントと互換性がある最新バージョンの AWS SDK for Ruby は、aws-sdk-core2.3 です。

サポートされているバージョンの AWSCodeDeploy エージェント

インスタンスが AWS CodeDeploy エージェントのサポートされているバージョンを実行している必要があります。現在サポートされている最小バージョンは 1.0.1.854 です。それ以前のバージョンを実行している場合、インスタンスへのデプロイは失敗することがあります。

次の表は、現在サポートされているバージョンの AWS CodeDeploy エージェントと、各リリースに含まれている機能や機能強化を示しています。

API バージョン 2014-10-06133

Page 142: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサポートされているバージョン

の AWS CodeDeploy エージェント

Version リリース日 詳細

1.0.1.1458 2018 年 3 月 6 日 機能強化: より多くの信頼された機関をサポートするため、証明書の検証を改善しました。

機能強化: ローカル CLI が BeforeInstall ライフサイクルイベントを含むデプロイに失敗していた問題を修正しました。

機能強化: AWS CodeDeploy エージェントが更新された場合にアクティブなデプロイが失敗していた問題を修正しました。

1.0.1.1352 2017 年 11 月 16 日 機能: AWS CodeDeploy エージェントがインストールされているローカルマシンまたはインスタンスで、EC2/オンプレミス のデプロイをテストおよびデバッグする新機能が導入されました。

1.0.1.1106 2017 年 5 月 16 日 特徴: 前回の成功したデプロイのアプリケーションリビジョンの一部ではない、デプロイ先のコンテンツを処理する新しいサポートを導入しました。既存のコンテンツのデプロイオプションとして、コンテンツの保持、コンテンツの上書き、またはデプロイの失敗が追加されました。

機能強化: AWS CodeDeploy エージェントがバージョン 2.9.2 のAWS SDK for Ruby (aws-sdk-core 2.9.2) に対応するようにしました。

1.0.1.1095 2017 年 29 月 3 日 機能強化: 中国 (北京) リージョン の AWS CodeDeploy エージェントに対するサポートを導入しました。

機能強化: ライフサイクルイベントフックから呼び出されたときにWindows Server インスタンスで Puppet が実行されるようになりました。

機能強化: untar オペレーションの処理が改善されました。

1.0.1.1067 2017 年 1 月 6 日 機能強化: 多くのエラーメッセージを改訂し、デプロイの失敗に関するより具体的な原因を含めました。

機能強化: AWS CodeDeploy エージェントが一部のデプロイ中にデプロイする正しいアプリケーションリビジョンを特定できない問題を修正しました。

機能強化: untar オペレーションの前後の pushd と popd の使用を元に戻しました。

1.0.1.1045 2016 年 11 月 21 日 機能強化: AWS CodeDeploy エージェントがバージョン 2.6.11 のAWS SDK for Ruby (aws-sdk-core 2.6.11) に対応するようにしました。

1.0.1.1037 2016 年 10 月 19 日 Amazon Linux、RHEL、および Ubuntu Server インスタンスのAWS CodeDeploy エージェントが、次の変更により更新されました。Windows Server インスタンスの最新バージョンは 1.0.1.998のままです。

機能強化: エージェントは、インスタンスにインストールされている Ruby のバージョンを特定して、そのバージョンを使用している codedeploy-agent スクリプトを呼び出すことができるようになりました。

API バージョン 2014-10-06134

Page 143: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサポートされているバージョン

の AWS CodeDeploy エージェント

Version リリース日 詳細

1.0.1.1011.1 2016 年 8 月 17 日 機能強化: シェルのサポートの問題により、バージョン 1.0.1.1011で導入された変更を削除しました。このバージョンのエージェントは、2016 年 7 月 11 日にリリースされたバージョン 1.0.1.998と機能的に同じものです。

1.0.1.1011 2016 年 8 月 15 日 Amazon Linux、RHEL、および Ubuntu Server インスタンスのAWS CodeDeploy エージェントが、次の変更により更新されました。Windows Server インスタンスの最新バージョンは 1.0.1.998のままです。

機能: systemd init システムが使用されているオペレーティングシステムで、Bash シェルを使用して AWS CodeDeploy エージェントを呼び出すサポートが追加されました。機能強化: AWS CodeDeploy エージェントおよび AWSCodeDeploy エージェントアップデータのすべてのバージョンの Ruby 2.x に対するサポートが有効になりました。更新されたAWS CodeDeploy エージェントは、Ruby 2.0 のみに依存しなくなりました (deb および rpm バージョンの AWS CodeDeploy エージェントインストーラでは、Ruby 2.0 が引き続き必要です)。

1.0.1.998 2016 年 7 月 11 日 機能強化: root 以外のユーザープロファイルで AWS CodeDeployエージェントを実行するためのサポートを修正しました。環境変数の競合を回避するため、USER いう名前の変数はCODEDEPLOY_USER で置き換えられました。

1.0.1.966 2016 年 6 月 16 日 機能: root 以外のユーザープロファイルで AWS CodeDeploy エージェントを実行するためのサポートが導入されました。

機能強化: デプロイグループに対して AWS CodeDeploy エージェントが達成するアプリケーションリビジョンの数を指定するサポートを修正しました。

機能強化: AWS CodeDeploy エージェントがバージョン 2.3 のAWS SDK for Ruby (aws-sdk-core 2.3) に対応するようにしました。

機能強化: デプロイ中の UTF-8 エンコードに関する問題が修正されました。

機能強化: プロセス名を確認する際の精度が向上しました。

1.0.1.950 2016 年 3 月 24 日 機能: インストールプロキシのサポートを追加しました。

機能強化: インストールスクリプトを更新し、最新バージョンが既にインストールされている場合、AWS CodeDeploy エージェントをダウンロードしないようにしました。

1.0.1.934 2016 年 2 月 11 日 機能: デプロイグループに対して AWS CodeDeploy エージェントが達成するアプリケーションリビジョンの数を指定するサポートが導入されました。

1.0.1.880 2016 年 1 月 11 日 機能強化: AWS CodeDeploy エージェントがバージョン 2.2 のAWS SDK for Ruby (aws-sdk-core 2.2) に対応するようにしました。バージョン 2.1.2 は引き続きサポートされます。

API バージョン 2014-10-06135

Page 144: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションリビジョンとログファイルのクリーンアップ

Version リリース日 詳細

1.0.1.854 2015 年 17 月 11 日 機能: SHA-256 ハッシュアルゴリズムのサポートが導入されました。

Important

2016 年 10 月 17 日以降は、AWS CodeDeploy エージェントのすべてのインストールを、最低でもバージョン1.0.1.854 に更新する必要があります。そうしないと、デプロイは失敗します。詳細については、「「PKCS7 署名メッセージの検証に失敗しました」というメッセージでデプロイが失敗する (p. 362)」を参照してください。

機能: .version ファイルでバージョンの追跡サポートが導入されました。

機能: 環境変数の使用を通じて、デプロイグループ ID を利用できるようになりました。

強化機能: Amazon CloudWatch Logs を使用した AWSCodeDeploy エージェントログのモニタリングのサポートを追加しました。

関連情報については、以下を参照してください。

• AWS CodeDeploy エージェントのバージョンの特定 (p. 141)• AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142)

AWS CodeDeploy エージェントバージョン履歴については、GitHub のリリースリポジトリを参照してください。

アプリケーションリビジョンとログファイルのクリーンアップ

AWS CodeDeploy エージェントはリビジョンとログファイルをインスタンスにアーカイブします。AWSCodeDeploy エージェントは、これらのアーティファクトをクリーンアップしてディスク容量を節約します。

アプリケーションリビジョンのデプロイログ: エージェント設定ファイルの : max_revisions: オプションを使用して、正の整数を入力することにより、アーカイブするアプリケーションリビジョンの数を指定できます。また、AWS CodeDeploy はそれらのリビジョンのログファイルをアーカイブします。その他すべては、最後に成功したデプロイのログファイルを除いて削除されます。失敗したデプロイの数が、保持されているバージョンの数を超えた場合でも、そのログファイルは常に保持されます。値を指定しない場合、AWS CodeDeploy は現在デプロイされたリビジョンに加えて 5 つの最新のリビジョンを保持します。

AWS CodeDeploy ログ: Amazon Linux、Ubuntu Server、および RHEL インスタンスの場合、AWSCodeDeploy エージェントは /var/log/aws/codedeploy-agent フォルダの下のログファイルをローテーションします。ログファイルは、毎日 00:00:00 (インスタンス時間) にローテーションされます。ログファイルは 7 日を経過した時点で削除されます。ローテーションされたログファイルの名前付けパターンは codedeploy-agent.YYYYMMDD.log です。

API バージョン 2014-10-06136

Page 145: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェン

トがインストールしたファイル

AWS CodeDeploy エージェントがインストールしたファイル

AWS CodeDeploy エージェントはリビジョン、デプロイ履歴、デプロイスクリプトをインスタンスのルートディレクトリに保存します。このディレクトリのデフォルトの名前と場所:

'/opt/codedeploy-agent/deployment-root' (Amazon Linux, Ubuntu Server, と RHEL インスタンスの場合)。

'C:\ProgramData\Amazon\CodeDeploy' (Windows Server インスタンスの場合)。

AWS CodeDeploy エージェントの設定ファイルにある root_dir 設定を使用して、ディレクトリの名前と場所を設定することができます。詳細については、「AWS CodeDeploy エージェント設定リファレンス (p. 344)」を参照してください。

次の例は、ルートディレクトリ内のファイルとディレクトリの構造を示しています。この構造は N 件のデプロイグループがあることを前提とし、各デプロイグループには N 件のデプロイが含まれています。

|--deployment-root/|-- deployment group 1 ID | |-- deployment 1 ID | | |-- Contents and logs of the deployment's revision| |-- deployment 2 ID| | |-- Contents and logs of the deployment's revision| |-- deployment N ID| | |-- Contents and logs of the deployment's revision|-- deployment group 2 ID| |-- deployment 1 ID| | |-- bundle.tar| | |-- deployment-archive| | | | -- contents of the deployment's revision| | |-- logs| | | | -- scripts.log | |-- deployment 2 ID| | |-- bundle.tar| | |-- deployment-archive| | | | -- contents of the deployment's revision| | |-- logs| | | | -- scripts.log | |-- deployment N ID| | |-- bundle.tar| | |-- deployment-archive| | | | -- contents of the deployment's revision| | |-- logs| | | | -- scripts.log |-- deployment group N ID| |-- deployment 1 ID| | |-- Contents and logs of the deployment's revision| |-- deployment 2 ID| | |-- Contents and logs of the deployment's revision| |-- deployment N ID| | |-- Contents and logs of the deployment's revision|-- deployment-instructions| |-- [deployment group 1 ID]_cleanup| |-- [deployment group 2 ID]_cleanup| |-- [deployment group N ID]_cleanup| |-- [deployment group 1 ID]_install.json| |-- [deployment group 2 ID]_install.json| |-- [deployment group N ID]_install.json| |-- [deployment group 1 ID]_last_successful_install| |-- [deployment group 2 ID]_last_successful_install

API バージョン 2014-10-06137

Page 146: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェン

トがインストールしたファイル

| |-- [deployment group N ID]_last_successful_install| |-- [deployment group 1 ID]_most_recent_install| |-- [deployment group 2 ID]_most_recent_install| |-- [deployment group N ID]_most_recent_install|-- deployment-logs| |-- codedeploy-agent-deployments.log

• Deployment Group ID フォルダは各デプロイグループを示しています。デプロイグループのディレクトリ名は、その ID です (例: acde1916-9099-7caf-fd21-012345abcdef)。各デプロイグループのディレクトリには、そのデプロイグループで試みた各デプロイのサブディレクトリ 1 つが含まれています。

batch-get-deployments コマンドを使用してデプロイグループ ID を検索できます。• Deployment ID フォルダはデプロイグループの各デプロイを示しています。各デプロイディレクトリの

名前はその ID です。各フォルダには以下が含まれています。• bundle.tar はデプロイのリビジョンのコンテンツを含む圧縮ファイルです。• deployment-archive はデプロイのリビジョンのコンテンツを含むディレクトリです。• logs は scripts.log ファイルを含むディレクトリです。このファイルはデプロイの AppSpec file で

指定されたスクリプトすべての出力をリストにしています。

デプロイのフォルダを探しているが、そのデプロイ ID またはデプロイグループ ID が分からないという場合は AWS CodeDeploy console または AWS CLI を使用すれば検索できます。詳細については、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

デプロイグループでアーカイブできるデプロイのデフォルト最大数は 5 件です。最大数に達すると、その後のデプロイがアーカイブされ、一番古いアーカイブは削除されます。AWS CodeDeploy エージェントの設定ファイルで max_revisions 設定を使用すればデフォルトを変更できます。詳細については、「AWS CodeDeploy エージェント設定リファレンス (p. 344)」を参照してください。

Note

アーカイブしたデプロイが使用したハードディスク容量を復元するには、max_revisions 設定を1 や 2 といった低い数値に変更してください。次のデプロイがアーカイブ済みのデプロイを削除するので、指定した数値と同じになります。

• deployment-instructions には各デプロイグループのテキストファイル 4 件が含まれています。• [Deployment Group ID]-cleanup はデプロイ中に実行される各コマンドの undo バージョンを使うテ

キストファイルです。サンプルファイルの名前は acde1916-9099-7caf-fd21-012345abcdef-cleanup です。

• [Deployment Group ID]-install.json は最新のデプロイ中に作成された JSON ファイルです。これにはデプロイ中に実行するコマンドが含まれています。サンプルファイルの名前はacde1916-9099-7caf-fd21-012345abcdef-install.json です。

• [Deployment Group ID]_last_successfull_install は、最後に成功したデプロイのアーカイブディレクトリをリストにしたテキストファイルです。これは AWS CodeDeploy エージェントがデプロイアプリケーションのファイルすべてをインスタンスにコピーした時に作成されたファイルです。次回のデプロイで、ApplicationStop と BeforeInstall スクリプトのどちらを実行するか決定するためにAWS CodeDeploy エージェントが使用します。サンプルファイルの名前は acde1916-9099-7caf-fd21-012345abcdef_last_successfull_install です。

• [Deployment Group ID]_most_recent_install は、最新のデプロイのアーカイブディレクトリ名をリストにしたテキストファイルです。このファイルはデプロイ内のファイルが正常にダウンロードされた時に作成されます。ダウンロードしたファイルが最終的な場所にコピーされると、このファイルの後に[deployment group ID]_last_successfull_install ファイルが作成されます。サンプルファイルの名前はacde1916-9099-7caf-fd21-012345abcdef_most_recent_install です。

• deployment-logs には次のログファイルが含まれています。• デプロイがある日ごとに codedeploy-agent.yyyymmdd.log ファイルが作成されます。各ログファ

イルには、その日のデプロイに関する情報が含まれています。アクセス権限の問題などをデバッグする場合に、こうしたログファイルが役に立ちます。初期状態のログファイル名は codedeploy-

API バージョン 2014-10-06138

Page 147: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのオペレーションの管理

agent.log です。翌日、デプロイの日付がファイル名に挿入されます。たとえば、今日の日付が2018 年 1 月 3 日だとします。この場合、その日のデプロイすべてに関する情報は codedeploy-agent.log で見ることができます。そして翌日の 2018 年 1 月 4 日に、ログファイル名はcodedeploy-agent.20180103.log に変更されます。

• codedeploy-agent-deployments.log は各デプロイの scripts.log ファイルのコンテンツをコンパイルします。scripts.log ファイルは logs サブフォルダ (各 Deployment ID フォルダ内) にあります。このファイル内のエントリにはデプロイ ID が付いています。たとえば、"[d-ABCDEF123]LifecycleEvent - BeforeInstall" はデプロイ中に d-ABCDEF123 の ID を使用して書き込みを実行します。codedeploy-agent-deployments.log が最大サイズに達した場合、AWS CodeDeploy エージェントは古いコンテンツを削除している間も引き続き書き込みを実行します。

AWS CodeDeploy エージェントのオペレーションの管理

このセクションの手順では、AWS CodeDeploy エージェントをインストール、アンインストール、再インストール、または更新し、AWS CodeDeploy エージェントの実行を確認する方法について説明します。

トピック• AWS CodeDeploy エージェントの実行の確認 (p. 139)• AWS CodeDeploy エージェントのバージョンの特定 (p. 141)• AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142)• AWS CodeDeploy エージェントの更新 (p. 148)• AWS CodeDeploy エージェントのアンインストール (p. 153)

AWS CodeDeploy エージェントの実行の確認このセクションでは、インスタンスで AWS CodeDeploy エージェントが実行を停止した可能性がある場合に実行するコマンドについて説明します。

トピック• Amazon Linux または RHEL の AWS CodeDeploy エージェントの実行の確認 (p. 139)• Ubuntu Server の AWS CodeDeploy が実行中であることの確認 (p. 140)• Windows Server の AWS CodeDeploy が実行中であることの確認 (p. 140)

Amazon Linux または RHEL の AWS CodeDeploy エージェントの実行の確認AWS CodeDeploy エージェントがインストールされていて実行していることを確認するには、インスタンスにサインインし、次のコマンドを実行します。

sudo service codedeploy-agent status

コマンドがエラーを返す場合、AWS CodeDeploy エージェントはインストールされていません。「Amazon Linux または RHEL の AWS CodeDeploy エージェントをインストールまたは再インストールします。 (p. 142)」で説明されているようにインストールします。

AWS CodeDeploy エージェントがインストールされて実行している場合、「The AWS CodeDeployagent is running」のようなメッセージが表示されます。

API バージョン 2014-10-06139

Page 148: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの実行の確認

「error: No AWS CodeDeploy agent running」のようなメッセージが表示される場合は、サービスを起動し、次の 2 つのコマンドを一度に 1 つずつ実行します。

sudo service codedeploy-agent start

sudo service codedeploy-agent status

Ubuntu Server の AWS CodeDeploy が実行中であることの確認AWS CodeDeploy エージェントがインストールされていて実行していることを確認するには、インスタンスにサインインし、次のコマンドを実行します。

sudo service codedeploy-agent status

コマンドがエラーを返す場合、AWS CodeDeploy エージェントはインストールされていません。「UbuntuServer の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 143)」で説明されているようにインストールします。

AWS CodeDeploy エージェントがインストールされて実行している場合、「The AWS CodeDeployagent is running」のようなメッセージが表示されます。

「error: No AWS CodeDeploy agent running」のようなメッセージが表示される場合は、サービスを起動し、次の 2 つのコマンドを一度に 1 つずつ実行します。

sudo service codedeploy-agent start

sudo service codedeploy-agent status

Windows Server の AWS CodeDeploy が実行中であることの確認AWS CodeDeploy エージェントがインストールされていて実行していることを確認するには、インスタンスにサインインし、次のコマンドを実行します。

powershell.exe -Command Get-Service -Name codedeployagent

次のような出力が表示されます。

Status Name DisplayName------ ---- -----------Running codedeployagent CodeDeploy Host Agent Service

コマンドがエラーを返す場合、AWS CodeDeploy エージェントはインストールされていません。「Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 144)」で説明されているようにインストールします。

Status で Running 以外の何かが表示される場合は、次のコマンドでサービスを開始します。

powershell.exe -Command Start-Service -Name codedeployagent

次のコマンドを使ってサービスを再起動できます。

API バージョン 2014-10-06140

Page 149: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのバージョンの特定

powershell.exe -Command Restart-Service -Name codedeployagent

次のコマンドを使ってサービスを停止できます。

powershell.exe -Command Stop-Service -Name codedeployagent

AWS CodeDeploy エージェントのバージョンの特定インスタンスで実行中の AWS CodeDeploy エージェントのバージョンは、2 つの方法で特定できます。

最初に、AWS CodeDeploy エージェントのバージョン 1.0.1.854 から、インスタンスの .version ファイルでバージョン番号を表示できます。次の表に、サポートされるオペレーティングシステムごとの場所とサンプルのバージョン文字列を示します。

オペレーティングシステム ファイルの場所 サンプルの agent_version 文字列

Amazon Linux および Red HatEnterprise Linux (RHEL)

/opt/codedeploy-agent/.version

OFFICIAL_1.0.1.854_rpm

Ubuntu Server /opt/codedeploy-agent/.version

OFFICIAL_1.0.1.854_deb

Windows Server C:\ProgramData\Amazon\CodeDeploy\.version

OFFICIAL_1.0.1.854_msi

2 番目に、インスタンスでコマンドを実行して、AWS CodeDeploy エージェントのバージョンを確認できます。

トピック• Amazon Linux または RHEL のバージョンの特定 (p. 141)• Ubuntu Server のバージョンの確認 (p. 141)• Windows Server のバージョンの確認 (p. 141)

Amazon Linux または RHEL のバージョンの特定インスタンスにサインインし、次のコマンドを実行します。

sudo yum info codedeploy-agent

Ubuntu Server のバージョンの確認インスタンスにサインインし、次のコマンドを実行します。

sudo dpkg -s codedeploy-agent

Windows Server のバージョンの確認インスタンスにサインインし、次のコマンドを実行します。

sc qdescription codedeployagent

API バージョン 2014-10-06141

Page 150: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

AWS CodeDeploy エージェントのインストールまたは再インストールAWS CodeDeploy エージェントが見つからないか、動作していない場合は、インスタンスでコマンドを実行してインストールまたは再インストールできます。

Important

ご使用のリージョンのエージェントインストールファイルがある Amazon S3 バケットにアクセスするアクセス権限を持つ IAM インスタンスプロファイルを各 Amazon EC2 インスタンスにアタッチする必要があります。IAM インスタンスプロファイルによって付与されるアクセス権限がないと、インスタンスが AWS CodeDeploy エージェントインストールファイルをダウンロードできません。詳細については、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」および「AWS CodeDeploy と連動するように Amazon EC2 インスタンスを設定する (p. 176)」を参照してください。

トピック• Amazon Linux または RHEL の AWS CodeDeploy エージェントをインストールまたは再インストール

します。 (p. 142)• Ubuntu Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 143)• Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 144)

Amazon Linux または RHEL の AWS CodeDeploy エージェントをインストールまたは再インストールします。インスタンスにサインインし、次のコマンドを一度に 1 つずつ実行します。

Note

4 番目のコマンドで、/home/ec2-user は Amazon Linux または RHEL Amazon EC2 インスタンスのデフォルトのユーザー名を表します。インスタンスがカスタム AMI を使用して作成された場合、AMI 所有者は別のデフォルトのユーザー名を指定している可能性があります。

sudo yum update

sudo yum install ruby

sudo yum install wget

cd /home/ec2-user

wget https://bucket-name.s3.amazonaws.com/latest/install

chmod +x ./install

sudo ./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれている AmazonS3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

API バージョン 2014-10-06142

Page 151: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

サービスが実行されているかどうか確認するには、次のコマンドを実行します。

sudo service codedeploy-agent status

AWS CodeDeploy エージェントがインストールされて実行している場合、「The AWS CodeDeployagent is running」のようなメッセージが表示されます。

「error: No AWS CodeDeploy agent running」のようなメッセージが表示される場合は、サービスを起動し、次の 2 つのコマンドを一度に 1 つずつ実行します。

sudo service codedeploy-agent start

sudo service codedeploy-agent status

Ubuntu Server の AWS CodeDeploy エージェントのインストールまたは再インストールインスタンスにサインインし、次のコマンドを一度に 1 つずつ実行します。

Note

5 番目のコマンドで、/home/ubuntu は Ubuntu Server インスタンスのデフォルトのユーザー名を表します。インスタンスがカスタム AMI を使用して作成された場合、AMI 所有者は別のデフォルトのユーザー名を指定している可能性があります。

sudo apt-get update

Ubuntu Server 14.04 では:

•sudo apt-get install ruby2.0

Ubuntu Server 16.04 では:

•sudo apt-get install ruby

sudo apt-get install wget

cd /home/ubuntu

wget https://bucket-name.s3.amazonaws.com/latest/install

chmod +x ./install

sudo ./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれている AmazonS3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

API バージョン 2014-10-06143

Page 152: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

サービスが実行されているかどうか確認するには、次のコマンドを実行します。

sudo service codedeploy-agent status

AWS CodeDeploy エージェントがインストールされて実行している場合、「The AWS CodeDeployagent is running」のようなメッセージが表示されます。

「error: No AWS CodeDeploy agent running」のようなメッセージが表示される場合は、サービスを起動し、次の 2 つのコマンドを一度に 1 つずつ実行します。

sudo service codedeploy-agent start

sudo service codedeploy-agent status

Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストールWindows Server インスタンスでは、次のいずれかの方法を使用して AWS CodeDeploy エージェントをダウンロードしてインストールできます。

• 一連の Windows PowerShell コマンドを実行• 直接ダウンロードリンクを選択• Amazon S3 コピーコマンドを実行

Note

新しいインスタンスおよび既存のインスタンスの両方で、Windows Server 用の AWSCodeDeploy エージェントアップデータをインストールすることをお勧めします。アップデータは新しいバージョンのエージェントを定期的に確認し、新しいバージョンが利用可能になるとそれをインストールします。新しいインスタンスでは、エージェントの代わりにアップデータをインストールでき、アップデータの直後に現在のバージョンのエージェントがインストールされます。詳細については、「Windows Server での AWS CodeDeploy エージェントの更新 (p. 149)」を参照してください。

トピック• Windows PowerShell の使用 (p. 144)• 直接接続の使用 (p. 145)• Amazon S3 コピーコマンドの使用 (p. 147)

Windows PowerShell の使用インスタンスにサインインし、Windows PowerShell で次のコマンドを実行します。

1. インターネットからダウンロードされたすべてのスクリプトと設定ファイルが、信頼された発行元によって署名されていることを要求します。実行ポリシーの変更を求められた場合は、「Y」と入力します。

Set-ExecutionPolicy RemoteSigned

2. AWS Tools for Windows PowerShell をロードします。

Import-Module AWSPowerShell

API バージョン 2014-10-06144

Page 153: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

3. AWS CodeDeploy エージェントのインストールファイルがダウンロードされた場所で、ディレクトリを作成します。

New-Item –Path "c:\temp" –ItemType "directory" -Force

4. AWS CodeDeploy エージェントのインストールファイルをダウンロードします。

powershell.exe -Command Read-S3Object -BucketName bucket-name -Key latest/codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi

5. AWS CodeDeploy エージェントのインストールファイルを実行します。

c:\temp\codedeploy-agent.msi /quiet /l c:\temp\host-agent-install-log.txt

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

サービスが実行されているかどうか確認するには、次のコマンドを実行します。

powershell.exe -Command Get-Service -Name codedeployagent

AWS CodeDeploy エージェントがインストールされ、まだ開始されていない場合は、Get-Service コマンドを実行した後、[ステータス] に [ポポ...] と表示されます。

Status Name DisplayName------ ---- -----------Start... codedeployagent CodeDeploy Host Agent Service

AWS CodeDeploy エージェントがすでに実行されている場合は、Get-Service コマンドを実行した後、[ステータス] に [ポポポ] と表示されます。

Status Name DisplayName------ ---- -----------Running codedeployagent CodeDeploy Host Agent Service

直接接続の使用

Windows Server インスタンスのブラウザセキュリティ設定がアクセス権限 (たとえば、http://*.s3.amazonaws.com への) を提供する場合は、リージョンの直接接続を使用して AWS CodeDeployエージェントをダウンロードし、インストーラを手動で実行できます。

リージョン名 ダウンロードリンク

米国東部 (オハイオ) https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/codedeploy-agent.msi

米国東部(バージニア北部) https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/codedeploy-agent.msi

API バージョン 2014-10-06145

Page 154: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

リージョン名 ダウンロードリンク

米国西部 (北カリフォルニア) https://aws-codedeploy-us-west-1.s3.amazonaws.com/latest/codedeploy-agent.msi

米国西部 (オレゴン) https://aws-codedeploy-us-west-2.s3.amazonaws.com/latest/codedeploy-agent.msi

カナダ (中部) https://aws-codedeploy-ca-central-1.s3.amazonaws.com/latest/codedeploy-agent.msi

欧州 (アイルランド) https://aws-codedeploy-eu-west-1.s3.amazonaws.com/latest/codedeploy-agent.msi

欧州 (ロンドン) https://aws-codedeploy-eu-west-2.s3.amazonaws.com/latest/codedeploy-agent.msi

EU (パリ) https://aws-codedeploy-eu-west-3.s3.amazonaws.com/latest/codedeploy-agent.msi

欧州 (フランクフルト) https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/codedeploy-agent.msi

アジアパシフィック (東京) https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/codedeploy-agent.msi

アジアパシフィック (ソウル) https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/codedeploy-agent.msi

アジアパシフィック (シンガポール) https://aws-codedeploy-ap-southeast-1.s3.amazonaws.com/latest/codedeploy-agent.msi

アジアパシフィック (シドニー) https://aws-codedeploy-ap-southeast-2.s3.amazonaws.com/latest/codedeploy-agent.msi

アジアパシフィック (ムンバイ) https://aws-codedeploy-ap-south-1.s3.amazonaws.com/latest/codedeploy-agent.msi

南米 (サンパウロ) https://aws-codedeploy-sa-east-1.s3.amazonaws.com/latest/codedeploy-agent.msi

API バージョン 2014-10-06146

Page 155: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのインストールまたは再インストール

Amazon S3 コピーコマンドの使用

AWS CLI がインスタンスにインストールされている場合、Amazon S3 cp コマンドを使用して、AWSCodeDeploy エージェントをダウンロードし、インストーラを手動で実行できます。詳細については、Microsoft Windows で AWS Command Line Interface をインストールするを参照してください。

リージョン名 Amazon S3 コピーコマンド

米国東部 (オハイオ)aws s3 cp s3://aws-codedeploy-us-east-2/latest/codedeploy-agent.msi codedeploy-agent.msi

米国東部(バージニア北部)aws s3 cp s3://aws-codedeploy-us-east-1/latest/codedeploy-agent.msi codedeploy-agent.msi

米国西部 (北カリフォルニア)aws s3 cp s3://aws-codedeploy-us-west-1/latest/codedeploy-agent.msi codedeploy-agent.msi

米国西部 (オレゴン)aws s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi codedeploy-agent.msi

カナダ (中部)aws s3 cp s3://aws-codedeploy-ca-central-1/latest/codedeploy-agent.msi codedeploy-agent.msi

欧州 (アイルランド)aws s3 cp s3://aws-codedeploy-eu-west-1/latest/codedeploy-agent.msi codedeploy-agent.msi

欧州 (ロンドン)aws s3 cp s3://aws-codedeploy-eu-west-2/latest/codedeploy-agent.msi codedeploy-agent.msi

EU (パリ)aws s3 cp s3://aws-codedeploy-eu-west-3/latest/codedeploy-agent.msi codedeploy-agent.msi

欧州 (フランクフルト)aws s3 cp s3://aws-codedeploy-eu-central-1/latest/codedeploy-agent.msi codedeploy-agent.msi

アジアパシフィック (東京)aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/codedeploy-agent.msi codedeploy-agent.msi

API バージョン 2014-10-06147

Page 156: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの更新

リージョン名 Amazon S3 コピーコマンド

アジアパシフィック (ソウル)aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/codedeploy-agent.msi codedeploy-agent.msi

アジアパシフィック (シンガポール)aws s3 cp s3://aws-codedeploy-ap-southeast-1/latest/codedeploy-agent.msi codedeploy-agent.msi

アジアパシフィック (シドニー)aws s3 cp s3://aws-codedeploy-ap-southeast-2/latest/codedeploy-agent.msi codedeploy-agent.msi

アジアパシフィック (ムンバイ)aws s3 cp s3://aws-codedeploy-ap-south-1/latest/codedeploy-agent.msi codedeploy-agent.msi

南米 (サンパウロ)aws s3 cp s3://aws-codedeploy-sa-east-1/latest/codedeploy-agent.msi codedeploy-agent.msi

AWS CodeDeploy エージェントの更新Amazon Linux、RHEL、および Ubuntu Server オペレーティングシステムでは、新しいバージョンがリリースされると、AWS CodeDeploy エージェントは自動的に更新されます。Windows Server では、AWSCodeDeploy エージェントの後、またはその代わりに、Windows Server 用の AWS CodeDeploy エージェントアップデータをインストールできます。エージェントは新しいバージョンが検出されるたびに更新されます。また、インスタンスでコマンドを実行して、サポートされているすべてのオペレーティングシステムで更新を強制することもできます。

トピック• Amazon Linux または RHEL での AWS CodeDeploy エージェントの更新 (p. 148)• Ubuntu Server での AWS CodeDeploy エージェントの更新 (p. 149)• Windows Server での AWS CodeDeploy エージェントの更新 (p. 149)

Amazon Linux または RHEL での AWS CodeDeploy エージェントの更新AWS CodeDeploy エージェント (codedeploy-agent.noarch.rpm) がインスタンスにインストールされた後、新しいバージョンのリリースから 24 時間以内に自動的に更新されます。更新時間を簡単にキャンセルまたは再スケジュールすることはできません。更新中にデプロイが進行中の場合、現在のデプロイライフサイクルイベントが最初に終了します。更新が完了した後、次のデプロイライフサイクルイベントでデプロイが再開します。

AWS CodeDeploy エージェントの更新を強制する場合は、インスタンスにサインインし、次のコマンドを実行します。

sudo /opt/codedeploy-agent/bin/install auto

API バージョン 2014-10-06148

Page 157: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの更新

Ubuntu Server での AWS CodeDeploy エージェントの更新AWS CodeDeploy エージェント (codedeploy-agent_all.deb) がインスタンスにインストールされた後、新しいバージョンのリリースから 24 時間以内に自動的に更新されます。更新時間を簡単にキャンセルまたは再スケジュールすることはできません。更新中にデプロイが進行中の場合、現在のデプロイライフサイクルイベントが最初に終了します。更新が完了した後、次のデプロイライフサイクルイベントでデプロイが再開します。

AWS CodeDeploy エージェントの更新を強制する場合は、インスタンスにサインインし、次のコマンドを実行します。

sudo /opt/codedeploy-agent/bin/install auto

Windows Server での AWS CodeDeploy エージェントの更新新しいバージョンがリリースされたときに AWS CodeDeploy エージェントの自動更新を有効にするには、新しいインスタンスまたは既存のインスタンスで Windows Server 用の AWS CodeDeploy エージェントアップデータをインストールします。アップデータは新しいバージョンを定期的に確認します。新しいバージョンが検出された場合、アップデータは、最新バージョンをインストールする前に、インストールされている場合はエージェントの現在のバージョンをアンインストールします。

アップデータが新しいバージョンが検出したときにデプロイが既に進行中の場合、デプロイは完了するまで続行されます。更新プロセス中にデプロイの開始が試みられた場合、デプロイは失敗します。

AWS CodeDeploy エージェントの更新を強制する場合は、「Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 144)」の手順に従います。

Windows Server インスタンスでは、AWS CodeDeploy エージェントアップローダをダウンロードしてインストールできます。これを行うには、一連の Windows PowerShell コマンドを実行するか、直接ダウンロードリンクを使用するか、Amazon S3 コピーコマンドを実行します。

トピック• Windows PowerShell の使用 (p. 149)• 直接接続の使用 (p. 150)• Amazon S3 コピーコマンドの使用 (p. 151)

Windows PowerShell の使用

インスタンスにサインインし、Windows PowerShell で、一度に 1 つずつ次のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更が求められた場合は、Y を選択し、Windows PowerShell により、インターネットからダウンロードされるすべてのスクリプトと設定ファイルが、信頼された発行元によって署名されていることが要求されるようにします。

Import-Module AWSPowerShell

New-Item –Path "c:\temp" –ItemType "directory" -Force

powershell.exe -Command Read-S3Object -BucketName bucket-name -Key latest/codedeploy-agent-updater.msi -File c:\temp\codedeploy-agent-updater.msi

API バージョン 2014-10-06149

Page 158: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの更新

c:\temp\codedeploy-agent-updater.msi /quiet /l c:\temp\host-agent-updater-log.txt

powershell.exe -Command Get-Service -Name codedeployagent

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれている AmazonS3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

更新プロセスのエラーをトラブルシューティングする必要がある場合は、次のコマンドを入力して AWSCodeDeploy エージェントアップデータのログファイルを開きます。

notepad C:\ProgramData\Amazon\CodeDeployUpdater\log\codedeploy-agent.updater.log

直接接続の使用Windows Server インスタンスのブラウザセキュリティ設定がアクセス権限 (たとえば、http://*.s3.amazonaws.com への) を提供する場合は、リージョンの直接接続を使用して AWS CodeDeployエージェントをダウンロードし、インストーラを手動で実行できます。

リージョン名 ダウンロードリンク

米国東部 (オハイオ) https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

米国東部(バージニア北部) https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

米国西部 (北カリフォルニア) https://aws-codedeploy-us-west-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

米国西部 (オレゴン) https://aws-codedeploy-us-west-2.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

カナダ (中部) https://aws-codedeploy-ca-central-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

欧州 (アイルランド) https://aws-codedeploy-eu-west-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

欧州 (ロンドン) https://aws-codedeploy-eu-west-2.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

EU (パリ) https://aws-codedeploy-eu-west-3.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

欧州 (フランクフルト) https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

API バージョン 2014-10-06150

Page 159: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの更新

リージョン名 ダウンロードリンク

アジアパシフィック (東京) https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

アジアパシフィック (ソウル) https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

アジアパシフィック (シンガポール) https://aws-codedeploy-ap-southeast-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

アジアパシフィック (シドニー) https://aws-codedeploy-ap-southeast-2.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

アジアパシフィック (ムンバイ) https://aws-codedeploy-ap-south-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

南米 (サンパウロ) https://aws-codedeploy-sa-east-1.s3.amazonaws.com/latest/codedeploy-agent-updater.msi

Amazon S3 コピーコマンドの使用

AWS CLI がインスタンスにインストールされている場合、Amazon S3 cp コマンドを使用して、AWSCodeDeploy エージェントアップローダをダウンロードし、インストーラを手動で実行できます。詳細については、Microsoft Windows で AWS Command Line Interface をインストールするを参照してください。

リージョン名 Amazon S3 コピーコマンド

米国東部 (オハイオ)aws s3 cp s3://aws-codedeploy-us-east-2/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

米国東部(バージニア北部)aws s3 cp s3://aws-codedeploy-us-east-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

米国西部 (北カリフォルニア)aws s3 cp s3://aws-codedeploy-us-west-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

米国西部 (オレゴン)aws s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

API バージョン 2014-10-06151

Page 160: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントの更新

リージョン名 Amazon S3 コピーコマンド

カナダ (中部)aws s3 cp s3://aws-codedeploy-ca-central-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

欧州 (アイルランド)aws s3 cp s3://aws-codedeploy-eu-west-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

欧州 (ロンドン)aws s3 cp s3://aws-codedeploy-eu-west-2/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

EU (パリ)aws s3 cp s3://aws-codedeploy-eu-west-3/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

欧州 (フランクフルト)aws s3 cp s3://aws-codedeploy-eu-central-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

アジアパシフィック (東京)aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

アジアパシフィック (ソウル)aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

アジアパシフィック (シンガポール)aws s3 cp s3://aws-codedeploy-ap-southeast-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

アジアパシフィック (シドニー)aws s3 cp s3://aws-codedeploy-ap-southeast-2/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

アジアパシフィック (ムンバイ)aws s3 cp s3://aws-codedeploy-ap-south-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

南米 (サンパウロ)aws s3 cp s3://aws-codedeploy-sa-east-1/latest/codedeploy-agent-updater.msi codedeploy-agent-updater.msi

API バージョン 2014-10-06152

Page 161: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy エージェントのアンインストール

AWS CodeDeploy エージェントのアンインストール不要になった場合や、新しいインストールを実行する場合は、インスタンスから AWS CodeDeploy エージェントを削除できます。

Amazon Linux または RHEL からの AWS CodeDeploy エージェントのアンインストールAWS CodeDeploy エージェントをアンインストールするには、インスタンスにサインインし、次のコマンドを実行します。

sudo yum erase codedeploy-agent

Ubuntu Server からの AWS CodeDeploy エージェントのアンインストールAWS CodeDeploy エージェントをアンインストールするには、インスタンスにサインインし、次のコマンドを実行します。

sudo dpkg --purge codedeploy-agent

Windows Server からの AWS CodeDeploy エージェントのアンインストールAWS CodeDeploy エージェントをアンインストールするには、インスタンスにサインインし、次の 3 つのコマンドを 1 つずつ実行します。

wmic

product where name="CodeDeploy Host Agent" call uninstall /nointeractive

exit

または、インスタンスにサインインし、[Control Panel] で [Programs and Features] を開き、[CodeDeployHost Agent] を選択してから [Uninstall] を選択します。

API バージョン 2014-10-06153

Page 162: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスとオンプレミスインスタンスの比較

AWS CodeDeploy のインスタンスの使用

AWS CodeDeploy は、Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux (RHEL)、WindowsServer を実行するインスタンスへのデプロイをサポートしています。

Amazon EC2 インスタンスとオンプレミスインスタンスの両方にデプロイするために AWS CodeDeployを使用できます。オンプレミスインスタンスは、Amazon EC2 インスタンスではなく、AWS CodeDeployエージェントを実行し、パブリック AWS サービスエンドポイントに接続できる物理デバイスです。AWSCodeDeploy を使用して、クラウドで実行している Amazon EC2 インスタンスと、オフィスや独自のデータセンターのサーバーで実行しているデスクトップ PC にアプリケーションを同時にデプロイできます。

Amazon EC2 インスタンスとオンプレミスインスタンスの比較

次の表は、Amazon EC2 インスタンスとオンプレミスインスタンスの比較を示しています。

件名 Amazon EC2 インスタンス オンプレミスインスタンス

インスタンスで実行中のオペレーティングシステムと互換性がある AWS CodeDeploy エージェントのバージョンをインストールおよび実行する必要があります。

はい はい

インスタンスが AWSCodeDeploy サービスに接続できる必要があります。

はい はい

IAM インスタンスプロファイルがインスタンスにアタッチされる必要があります。IAM インスタンスプロファイルには、AWSCodeDeploy デプロイに参加するアクセス権限が必要です。詳細については、ステップ 4:Amazon EC2 インスタンス用のIAM インスタンスプロファイルを作成する (p. 26) を参照してください。

はい いいえ

次のいずれかの操作を行って認証を行い、インスタンスを登録する必要があります。

• 各インスタンスの IAM ユーザーを作成し、IAM ユーザーアカウント認証情報をインスタンスにプレーンテキストで保存する。

いいえ はい

API バージョン 2014-10-06154

Page 163: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のインスタンスタスク

件名 Amazon EC2 インスタンス オンプレミスインスタンス• 各インスタンスで IAM ユー

ザーが引き受けることができる IAM ロールを作成し、AWSSecurity Token Service を通じて生成された、定期的に更新される一時的な認証情報を取得する。

デプロイを実行するには、事前に各インスタンスを AWSCodeDeploy に登録する必要がある。

いいえ はい

AWS CodeDeploy がデプロイを実行するには、事前に各インスタンスにタグを付ける必要がある。

はい はい

AWS CodeDeploy デプロイの一部として、Auto Scaling およびElastic Load Balancing シナリオに参加できる。

はい いいえ

Amazon S3 バケットと GitHubリポジトリからデプロイできる。

はい はい

指定されたイベントがデプロイまたはインスタンスで発生したときに、SMS または E メール通知の送信を求めるトリガーをサポートできる。

はい はい

関連デプロイへの請求対象である。

いいえ はい

AWS CodeDeploy のインスタンスタスクデプロイで使用するインスタンスを起動または設定するには、以下の手順から選択します。

新しい Amazon Linux または Windows ServerAmazon EC2 インスタンスを起動します。

最小限の労力で Amazon EC2 インスタンスを起動するには、「AWS CodeDeploy 用の Amazon EC2インスタンスの作成 (AWS CloudFormation テンプレート) (p. 169)」を参照してください。

主に自分で Amazon EC2 インスタンスを起動するには、「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソール) (p. 163)」を参照してください。

新しい Ubuntu Server または RHEL Amazon EC2インスタンスを起動します。

「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソール) (p. 163)」を参照してください。

API バージョン 2014-10-06155

Page 164: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy デプロイのインスタンスにタグを付ける

Amazon Linux、Windows Server、UbuntuServer、RHEL Amazon EC2 インスタンスを設定します。

「AWS CodeDeploy と連動するように AmazonEC2 インスタンスを設定する (p. 176)」を参照してください。

Windows Server、Ubuntu Server、RHEL オンプレミスインスタンス (Amazon EC2 インスタンスではない物理デバイス) を設定します。

「Working with On-PremisesInstances (p. 179)」を参照してください。

Blue/Green デプロイの間、AWS CodeDeploy がインスタンスの置換フリートをプロビジョニングします。

「AWS CodeDeploy でのデプロイの使用 (p. 255)」を参照してください。

Auto Scaling グループに Amazon EC2 インスタンスを準備するには、追加の手順を実行する必要があります。詳細については、「AWS CodeDeploy と Auto Scaling の統合 (p. 46)」を参照してください。

トピック

• Tagging Instances for AWS CodeDeploy Deployments (p. 156)• Working with Amazon EC2 Instances (p. 163)• Working with On-Premises Instances (p. 179)• View Instance Details (p. 206)• Instance Health (p. 208)

AWS CodeDeploy でデプロイグループのインスタンスにタグを付ける

Amazon EC2 インスタンスとオンプレミスインスタンスを管理するために、タグを使用して独自のメタデータを各リソースに割り当てることができます。タグを使用すると、インスタンスをさまざまな方法(目的、所有者、環境など) で分類することができます。これはインスタンスが多数ある場合に便利です。割り当てられたタグに基づいて、インスタンスやインスタンスグループを迅速に識別できます。タグはそれぞれ、1 つのキーとオプションの 1 つの値で構成されており、どちらもお客様側が定義します。詳細については、「Amazon EC2 リソースにタグを付ける」を参照してください。

AWS CodeDeploy デプロイグループに含まれるインスタンスを指定するには、1 つ以上のタググループにタグを指定します。タグ条件を満たすインスタンスは、そのデプロイグループへのデプロイが作成されたときにアプリケーションの最新のリビジョンがインストール済みのものです。

Note

また、Auto Scaling グループをデプロイグループを含めることもできますが、インスタンスに適用されたタグではなく名前で識別されます。詳細については、AWS CodeDeploy と Auto Scalingの統合 (p. 46) を参照してください。

デプロイグループ内のインスタンスの条件は、単一のタググループ内に単一のタグというシンプルなものにもできますし、最大 3 つのタググループそれぞれに 10 個のタグという複雑なものにもできます。

単一のタググループを使用する場合は、グループ内の少なくとも 1 つのタグによって識別されたインスタンスがデプロイグループに含まれます。複数のタググループを使用する場合は、タググループそれぞれの少なくとも 1 つのタグによって識別されたインスタンスのみが含まれます。

次の例は、タグとタググループを使用してデプロイグループのインスタンスを選択する方法を説明します。

トピック• 例 1: 単一タググループ、単一タグ (p. 157)

API バージョン 2014-10-06156

Page 165: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 1: 単一タググループ、単一タグ

• 例 2: 単一タググループ、複数タグ (p. 157)• 例 3: 複数タググループ、複数タグ (p. 158)• 例 4: 複数タググループ、複数タグ (p. 160)

例 1: 単一タググループ、単一タグ単一のタグを単一のタググループに指定できます。

タググループ 1

キー 値

名前 AppVersion-ABC

Name=AppVersion-ABC というタグが付いている各インスタンスは、他のタグがついていても、デプロイグループの一部になります。

AWS CodeDeploy コンソールのセットアップビュー:

JSON の構造:

"ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Key": "Name", "Value": "AppVersion-ABC" } ],

例 2: 単一タググループ、複数タグ単一のタグを複数のタググループに指定することもできます。

タググループ 1

キー 値

リージョン North

API バージョン 2014-10-06157

Page 166: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 3: 複数タググループ、複数タグ

キー 値

リージョン South

リージョン East

この 3 つのタグのうちいずれかが付いているインスタンスは、他のタグがついていても、デプロイグループの一部になります。たとえば、Region=West というタグが付いている他のインスタンスがある場合、それらはデプロイグループに含まれません。

AWS CodeDeploy コンソールのセットアップビュー:

JSON の構造:

"ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Key": "Region", "Value": "North" }, { "Type": "KEY_AND_VALUE", "Key": "Region", "Value": "South" }, { "Type": "KEY_AND_VALUE", "Key": "Region", "Value": "East" } ],

例 3: 複数タググループ、複数タグそれぞれに単一のキーと値のペアを持つタググループの複数セットを使用して、デプロイグループのインスタンスの条件を指定することもできます。デプロイグループで複数のタググループを使用する場合は、すべてのタググループによって識別されたインスタンスのみがデプロイグループに含まれます。

API バージョン 2014-10-06158

Page 167: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 3: 複数タググループ、複数タグ

タググループ 1

キー 値

名前 AppVersion-ABC

タググループ 2

キー 値

リージョン North

タググループ 3

キー 値

タイプ t2.medium

多くのリージョンに Name=AppVersion-ABC というタグが付いたさまざまなインスタンスタイプのインスタンスを置くことができますが、この例では、Region=North および Type=t2.medium というタグもついたインスタンスのみがデプロイグループの一部になります。

AWS CodeDeploy コンソールのセットアップビュー:

API バージョン 2014-10-06159

Page 168: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 4: 複数タググループ、複数タグ

JSON の構造:

"ec2TagSet": { "ec2TagSetList": [ [ { "Key": "KEY_AND_VALUE", "Type": "Name", "Value": "AppVersion-ABC" } ], [ { "Key": "KEY_AND_VALUE", "Type": "Region", "Value": "North" } ], [ { "Key": "KEY_AND_VALUE", "Type": "Type", "Value": "t2.medium" } ], ] },

例 4: 複数タググループ、複数タグ複数のタグを持つ複数のタググループを 1 つ以上のグループで使用する場合、デプロイグループに含まれるインスタンスはそれぞれのグループの少なくとも 1 つのタグが一致している必要があります。

タググループ 1

キー 値

環境 ベータ

環境 ステージング

タググループ 2

キー 値

リージョン North

リージョン South

リージョン East

タググループ 3

キー 値

タイプ t2.medium

タイプ t2.large

API バージョン 2014-10-06160

Page 169: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 4: 複数タググループ、複数タグ

この例では、デプロイグループに含まれるには、インスタンスが次のようにタグ付けされている必要があります。(1) Environment=Beta または Environment=Staging、(2)Region=North、Region=South または Region=East、(3) Type=t2.medium またはType=t2.large。

たとえば、次のタググループを持つインスタンスは、デプロイグループに含まれるもののひとつになることがあります。

• Environment=Beta、Region=North、Type=t2.medium

• Environment=Staging、Region=East、Type=t2.large

• Environment=Staging、Region=South、Type=t2.large

次のタググループを持つインスタンスは、デプロイグループに含まれないことがあります。 強調表示された キー値は、インスタンスが除外されます。

• Environment=Beta、Region=West、Type=t2.medium

• Environment=Staging、Region=East、Type=t2.micro

• Environment=Production、Region=South、Type=t2.large

AWS CodeDeploy コンソールのセットアップビュー:

API バージョン 2014-10-06161

Page 170: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例 4: 複数タググループ、複数タグ

JSON の構造:

"ec2TagSet": { "ec2TagSetList": [ [ { "Key": "KEY_AND_VALUE", "Type": "Environment", "Value": "Beta" }, { "Key": "KEY_AND_VALUE", "Type": "Environment", "Value": "Staging" } ], [ { "Key": "KEY_AND_VALUE", "Type": "Region", "Value": "North" },

API バージョン 2014-10-06162

Page 171: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの使用

{ "Key": "KEY_AND_VALUE", "Type": "Region", "Value": "South" }, { "Key": "KEY_AND_VALUE", "Type": "Region", "Value": "East" } ], [ { "Key": "KEY_AND_VALUE", "Type": "Type", "Value": "t2.medium" }, { "Key": "KEY_AND_VALUE", "Type": "Type", "Value": "t2.large" } ], ] },

AWS CodeDeploy 用の Amazon EC2 インスタンスの使用

Amazon EC2 インスタンスは、Amazon Elastic Compute Cloud サービスを使用して作成および設定する仮想コンピューティング環境です。Amazon EC2 は、Amazon Web Services (AWS) クラウドでスケーラブルなコンピューティングキャパシティーを提供します。Amazon EC2 を使用して AWS CodeDeploy デプロイに必要な数だけ仮想サーバーを起動できます。

Amazon EC2 の詳細については、Amazon EC2 入門ガイド を参照してください。

このセクションの手順では、AWS CodeDeploy のデプロイで使用する Amazon EC2 インスタンスを作成および設定する方法を示します。

トピック• AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソー

ル) (p. 163)• AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレー

ト) (p. 169)• AWS CodeDeploy と連動するように Amazon EC2 インスタンスを設定する (p. 176)

AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または Amazon EC2 コンソール)AWS CodeDeploy デプロイで使用するように設定された新しい Amazon EC2 インスタンスを起動する手順を次に説明します。

AWS CloudFormation テンプレートを使用して、AWS CodeDeploy デプロイで使用するようにすでに設定されている Amazon Linux、または Windows Server を実行している Amazon EC2 インスタンスを起動

API バージョン 2014-10-06163

Page 172: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成 (AWS

CLI または Amazon EC2 コンソール)

できます。Ubuntu Server または Red Hat Enterprise Linux (RHEL) を実行する Amazon EC2 インスタンスには、AWS CloudFormation テンプレートは提供されていません。テンプレートを使用する代わりに、「AWS CodeDeploy のインスタンスの使用 (p. 154)」を参照してください。

Amazon EC2 コンソール、AWS CLI、または Amazon EC2 API を使用して、Amazon EC2 インスタンスを起動できます。

Amazon EC2 インスタンス (コンソール) の起動「AWS CodeDeploy の使用開始 (p. 20)」の手順に従って AWS CLI をセットアップして設定し、IAM インスタンスプロファイルを作成します (まだ行っていない場合)。

1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にあるAmazon EC2 コンソールを開きます。

2. ナビゲーションペインで [Instances] を選択し、[Launch Instance] を選択します。3. [Step 1: Choose an Amazon Machine Image (AMI)] ページで、[Quick Start] タブから、使用するオペ

レーションシステムおよびバージョンを探して、[Select] を選択します。4. [Step 2: Choose an Instance Type] ページで、利用可能な Amazon EC2 インタンスタイプを選択して

から、 [Next: Configure Instance Details] を選択します。5. [ステップ 3: インスタンスの詳細を設定する] ページの [IAM ロール] リストで、「ステップ 4: Amazon

EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」で作成した IAM インスタンスロールを選択します。提案されたロール名を使用している場合は、[CodeDeployDemo-EC2-Instance-Profile] を選択します。独自のロール名を作成した場合は、その名前を選択します。

Note

ネットワークリストに Launch into EC2-Classic もデフォルトの Virtual Private Cloud (VPC)も表示されず、EC2-Classic への起動をサポートする別の Amazon EC2 インスタンスタイプを選択できない場合は、Amazon VPC およびサブネット、または Create new VPC またはCreate new subnet、またはその両方を選択する必要があります。詳細については、「VPCとサブネット」を参照してください。

6. [Advanced Details] を展開します。7. ユーザーデータの横の、[As text] オプションを選択し、次のように入力して、Amazon EC2 インスタ

ンスの起動時に AWS CodeDeploy エージェントをインストールします。

Amazon Linux および RHEL の場合

✔!/bin/bashyum -y updateyum install -y rubycd /home/ec2-usercurl -O https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Ubuntu Server の場合

Important

AWS CodeDeploy エージェントを Ubuntu Server 14.04 にインストールする場合は、3 行目を次のとおりに変更します。apt-get -y install ruby2.0

API バージョン 2014-10-06164

Page 173: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成 (AWS

CLI または Amazon EC2 コンソール)

✔!/bin/bashapt-get -y updateapt-get -y install rubyapt-get -y install wgetcd /home/ubuntuwget https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Windows Server の場合

<powershell> New-Item -Path c:\temp -ItemType "directory" -Forcepowershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msiStart-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden</powershell>

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

8. このページの残りの項目は変更せず、[Next: Add Storage] を選択します。9. [Step 4: Add Storage] ページは変更せず、[Next: Add Tags] を選択します。10. [ステップ 5: タグの追加] ページで、[タグの追加] を選択します。11. [Key] ボックスで [Name] を入力します。[値] ボックスで「CodeDeployDemo」と入力します。

Important

[Key] および [Value] ボックスのコンテンツは大文字と小文字が区別されます。12. [Next: Configure Security Group] を選択します。13. [Step 6: Configure Security Group] ページで、[Create a new security group] オプションを選択したま

まにします。

デフォルトの SSH ロールは、Amazon Linux、Ubuntu Server、または RHEL を実行する AmazonEC2 インスタンスに対して設定されます。デフォルトの RDP ロールは、Windows Server を実行している Amazon EC2 インスタンスに対して設定されます。

14. HTTP ポートを開く場合は、[Add Rule] ボタンを選択し、[Type] ドロップダウンリストから、[HTTP]を選択します。Anywhere 0.0.0.0/0 のデフォルトの Source 値をそのまま使用し、[Review andLaunch] を選択します。

Note

本稼働環境では、Anywhere 0.0.0.0/0 を指定する代わりに、SSH、RDP、および HTTP ポートへのアクセスを制限することを推奨します。AWS CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP アクセスを必要としません。詳細については、「Tips for SecuringYour Amazon EC2 Instance」を参照してください。

Boot from General Purpose (SSD) ダイアログボックスが表示されたら、指示に従って [Next] を選択します。

15. [Step 7: Review Instance Launch] ページは変更せず、[Launch] を選択します。

API バージョン 2014-10-06165

Page 174: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成 (AWS

CLI または Amazon EC2 コンソール)

16. Select an existing key pair or create a new key pair ダイアログボックスで、[Choose an existing keypair] または [Create a new key pair] を選択します。すでに Amazon EC2 インスタンスキーペアを設定している場合は、ここで選択できます。

Amazon EC2 インスタンスのキーペアがまだない場合は、[Create a new key pair] を選択して、わかりやすい名前を付けます。Amazon EC2 インスタンスのキーペアをコンピューターにダウンロードするには、[Download Key Pair] を選択します。

Important

SSH または RDP を使用して、Amazon EC2 インスタンスにアクセスする場合、キーペアが必要です。

17. [Launch Instances] を選択します。18. Amazon EC2 インスタンスの ID を選択します。インスタンスが起動され、すべてのチェックが成功

するまで先に進まないでください。

インスタンスで AWS CodeDeploy エージェントが実行されていることを確認するには、AWSCodeDeploy エージェントの実行の確認 (p. 139) を参照してから、このページに戻ります。これを実行した後、Amazon EC2 インスタンスは、AWS CodeDeploy デプロイで使用できるようになります。

Amazon EC2 インスタンス (CLI) を起動します。「AWS CodeDeploy の使用開始 (p. 20)」の手順に従って AWS CLI をセットアップして設定し、IAM インスタンスプロファイルを作成します (まだ行っていない場合)。

1. Windows Server の場合のみ Windows Server を実行している Amazon EC2 インスタンスを作成する場合は、create-security-group コマンドおよび authorize-security-group-ingress コマンドを呼び出して、RDP アクセス (デフォルトでは許可されていない)、または代わりに HTTP アクセスを許可するセキュリティグループを作成します。たとえば、CodeDeployDemo-Windows-Security-Group という名前のセキュリティグループを作成するには、次のコマンドを 1 つずつ実行します。

aws ec2 create-security-group --group-name CodeDeployDemo-Windows-Security-Group --description "For launching Windows Server images for use with AWS CodeDeploy"

aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 3389 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 3389

aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 80 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 80

Note

デモンストレーションのため、これらのコマンドは、ポート 3389 を経由して RDP に、またはポート 80 を経由して HTTP に無制限アクセスを許可するセキュリティグループを作成します。ベストプラクティスとして、RDP および HTTP ポートへのアクセスを制限することをお勧めします。AWS CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP アクセスを必要としません。詳細については、「Tips for Securing Your Amazon EC2 Instance」を参照してください。

2. 開発用マシンで、以下の内容を含む instance-setup.sh (Amazon Linux、Ubuntu Server、RHELを実行する Amazon EC2 インスタンス) または instance-setup.txt (Windows Server を実行するAmazon EC2 インスタンス) という名前のファイルを作成します。

Amazon EC2 インスタンスが起動されると、このスクリプトは指定された Amazon S3 の場所からAWS CodeDeploy エージェントをダウンロードし、インスタンスにインストールします。

API バージョン 2014-10-06166

Page 175: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成 (AWS

CLI または Amazon EC2 コンソール)

Amazon Linux および RHEL の場合

Amazon Linux および RHEL の instance-setup.sh のコンテンツは次のとおりです。

✔!/bin/bashyum -y updateyum install -y rubycd /home/ec2-usercurl -O https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Ubuntu Server の場合

Ubuntu Server の instance-setup.sh のコンテンツは次のとおりです。

Important

AWS CodeDeploy エージェントを Ubuntu Server 14.04 にインストールする場合は、ファイルの 3 行目を次のとおりに変更します。apt-get -y install ruby2.0

✔!/bin/bashapt-get -y updateapt-get -y install rubyapt-get -y install wgetcd /home/ubuntuwget https://bucket-name.s3.amazonaws.com/latest/installchmod +x ./install./install auto

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

Windows Server の場合

Windows Server の instance-setup.txt のコンテンツは次のとおりです。

<powershell> New-Item -Path c:\temp -ItemType "directory" -Forcepowershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msiStart-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden</powershell>

bucket-name は、リージョン用の AWS CodeDeploy リソースキットファイルが含まれているAmazon S3sds-s3-latest-bucket-name バケットの名前です。たとえば、米国東部 (オハイオ) リージョン の場合、bucket-name を aws-codedeploy-us-east-2 に置き換えます。バケット名のリストについては、「リージョン別リソースキットバケット名 (p. 349)」を参照してください。

3. instance-setup.sh または instance-setup.txt を作成した同じディレクトリから、run-instances コマンドを呼び出して Amazon EC2 インスタンスを作成および起動します。

API バージョン 2014-10-06167

Page 176: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成 (AWS

CLI または Amazon EC2 コンソール)

このコマンドを呼び出す前に、以下を収集する必要があります。

• インスタンスに使用する Amazon Machine Image (AMI) (ami-id) の ID。ID を取得するには、「適切な AMI の検索」を参照してください。

• 作成する Amazon EC2 インスタンスのタイプ (instance-type) の名前 (t1.micro など)。リストについては、「Amazon EC2 のインスタンスタイプ」を参照してください。

• ご使用のリージョンの AWS CodeDeploy エージェントインストールファイルがある Amazon S3 バケットにアクセスするアクセス権限を持つ IAM インスタンスプロファイルの名前が保存されます。

IAM インスタンスプロファイルの作成については、「ステップ 4: Amazon EC2 インスタンス用のIAM インスタンスプロファイルを作成する (p. 26)」を参照してください。

• Amazon Linux、Ubuntu Server、または RHEL を実行している Amazon EC2 インスタンスへのSSH アクセス、または Windows Server を実行している Amazon EC2 インスタンスへの RDP アクセスを可能にする Amazon EC2 インスタンスのキーペア (key-name) の名前。

Important

キーペアのファイル拡張子ではなく、キーペア名のみを入力します。たとえば、my-keypair.pem ではなく、my-keypair です。

キーペア名を見つけるには、https://console.aws.amazon.com/ec2 で Amazon EC2 コンソールを開きます。ナビゲーションペインの [Network & Security] の下で、[Key Pairs] を選択し、リストのキーペア名をメモします。

キーペアを生成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。それ以外の場合、AWS CodeDeploy で Amazon EC2インスタンスキーペアを使用できなくなります。

Amazon Linux, RHEL、および Ubuntu Server の場合

run-instances コマンドを呼び出し、Amazon Linux、Ubuntu Server、または RHEL を実行するAmazon EC2 インスタンスを起動して、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」で作成した IAM インスタンスプロファイルをアタッチするには、以下に例を示します。

Important

Be sure to include file:// before the file name. It is required in this command.

aws ec2 run-instances \ --image-id ami-id \ --key-name key-name \ --user-data file://instance-setup.sh \ --count 1 \ --instance-type instance-type \ --iam-instance-profile Name=iam-instance-profile

Note

このコマンドは、ポート 22 を経由した SSH の無制限のアクセス、または、ポート 80 を経由した HTTP など複数のポートへのアクセスを許可する Amazon EC2 インスタンスのデフォルトのセキュリティグループを作成します。ベストプラクティスとして、RDP および HTTPポートへのアクセスのみを制限することをお勧めします。AWS CodeDeploy は、無制限のポートアクセスを必要とせず、HTTP ポートアクセスを必要としません。詳細については、「Tips for Securing Your Amazon EC2 Instance」を参照してください。

API バージョン 2014-10-06168

Page 177: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

Windows Server の場合

run-instances コマンドを呼び出して Windows Server を実行している Amazon EC2 インスタンスを起動し、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」で作成した IAM インスタンスプロファイルをアタッチして、ステップ 1 で作成したセキュリティグループの名前を指定するには。以下に例を示します。

Important

Be sure to include file:// before the file name. It is required in this command.

aws ec2 run-instances --image-id ami-id --key-name key-name --user-data file://instance-setup.txt --count 1 --instance-type instance-type --iam-instance-profile Name=iam-instance-profile --security-groups CodeDeploy-Windows-Security-Group

これらのコマンドは、指定された AMI、キーペア、およびインスタンスタイプを持つ単一の AmazonEC2 インスタンスを、指定された IAM インスタンスプロファイルと共に起動し、起動時に指定されたスクリプトを実行します。

4. 出力の InstanceID の値を記録します。この値を忘れた場合、Amazon EC2 インスタンスのキーペアに対して、describe-instances コマンドを呼び出すことにより後で取得できます。

aws ec2 describe-instances --filters "Name=key-name,Values=keyName" --query "Reservations[*].Instances[*].[InstanceId]" --output text

インスタンス ID を使用して、Amazon EC2 インスタンスにタグを付けて、AWS CodeDeploy がデプロイ中に後で見つけることができる create-tags コマンドを呼び出します。次の例では、タグの名前はCodeDeployDemo ですが、任意の Amazon EC2 インスタンスタグを指定できます。

aws ec2 create-tags --resources instance-id --tags Key=Name,Value=CodeDeployDemo

複数のタグを同時にインスタンスに適用できます。以下に例を示します。

aws ec2 create-tags --resources instance-id --tags Key=Name,Value=testInstance Key=Region,Value=West Key=Environment,Value=Beta

Amazon EC2 インスタンスが起動され、すべてのチェックが成功したことを確認するには、インスタンス ID を使用して describe-instance-status コマンドを呼び出します。

aws ec2 describe-instance-status --instance-ids instance-id --query "InstanceStatuses[*].InstanceStatus.[Status]" --output text

インスタンスが起動され、すべてのチェックが成功すると、ok が出力に表示されます。

インスタンスで AWS CodeDeploy エージェントが実行されていることを確認するには、AWSCodeDeploy エージェントの実行の確認 (p. 139) を参照してから、このページに戻ります。これを実行した後、Amazon EC2 インスタンスは、AWS CodeDeploy デプロイで使用できるようになります。

AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレート)AWS CloudFormation テンプレートを使用して、Amazon Linux または Windows Server を実行するAmazon EC2 インスタンスをすばやく起動できます。AWS CLI、AWS CodeDeploy コンソール、AWS

API バージョン 2014-10-06169

Page 178: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

API を使用して、テンプレートでインスタンスを起動できます。インスタンスを起動することに加えて、テンプレートでは以下を実行します。

• AWS CodeDeploy デプロイに参加するアクセス権限をインスタンスに付与するよう AWSCloudFormation に指示します。

• インスタンスにタグ付けして、デプロイ中に AWS CodeDeploy がそのインスタンスを見つけられるようにします。

• インスタンスで AWS CodeDeploy エージェントをインストールおよび実行します。

Amazon EC2 インスタンスの設定に AWS CloudFormation を使用する必要はありません。代替方法については、「AWS CodeDeploy のインスタンスの使用 (p. 154)」を参照してください。

Ubuntu Server または Red Hat Enterprise Linux (RHEL) を実行する Amazon EC2 インスタンス用の AWSCloudFormation テンプレートは提供されていません。

Important

AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する場合、呼び出し元の IAM ユーザーには、AWS CloudFormation および AWS サービスと、AWSCloudFormation が依存しているアクションへのアクセス権が必要です。「ステップ 1: IAM ユーザーをプロビジョニングする (p. 20)」のステップに従って呼び出し元の IAM ユーザーをプロビジョニングしていない場合、少なくとも以下のポリシーをアタッチする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "codedeploy:*", "ec2:*", "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:DeleteInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:GetRole", "iam:PassRole", "iam:PutRolePolicy", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "*" } ]}

トピック• AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する (コンソー

ル) (p. 171)• AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する (AWS

CLI) (p. 173)

API バージョン 2014-10-06170

Page 179: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する (コンソール)開始する前に、Amazon Linux を実行する Amazon EC2 インスタンスへの SSH アクセスまたは WindowsServer を実行するインスタンスへの RDP アクセスを有効にするインスタンスのキーペアが必要です。キーペアのファイル拡張子ではなく、キーペア名のみを入力します。

キーペア名を見つけるには、https://console.aws.amazon.com/ec2 で Amazon EC2 コンソールを開きます。ナビゲーションペインの [Network & Security] の下で、[Key Pairs] を選択し、リストのキーペア名をメモします。

新しいキーペアを生成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。それ以外の場合、AWS CodeDeploy でインスタンスのキーペアを使用できなくなります。

1. AWS マネジメントコンソール にサインインした後、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

Important

AWS CodeDeploy の使用開始 (p. 20) で使用したのと同じアカウントで AWS マネジメントコンソール にサインインします。ナビゲーションバーのリージョンセレクターで、AWSGeneral Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy では、これらのリージョンのみがサポートされます。

2. [Create Stack] を選択します。3. [Choose a template] で、[Specify an Amazon S3 template URL] を選択します。ボックスに、使用する

リージョンの AWS CloudFormation テンプレートの場所を入力し、[Next] を選択します。

Region Location of AWS CloudFormation template

米国東部 (オハイオ) リージョン http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json

米国東部 (バージニア北部) リージョン http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json

米国西部 (北カリフォルニア) リージョン http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json

米国西部 (オレゴン) リージョン http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json

カナダ (中部) リージョン http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json

API バージョン 2014-10-06171

Page 180: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

Region Location of AWS CloudFormation template

欧州 (アイルランド) リージョン http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json

欧州 (ロンドン) リージョン http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json

  http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json

欧州 (フランクフルト) リージョン http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (東京) リージョン http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (ソウル) リージョン http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (シンガポール) リージョン http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (シドニー) リージョン http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (ムンバイ) リージョン http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json

南米 (サンパウロ) リージョン http://s3-sa-east-1.amazonaws.com/aws-codedeploy-sa-east-1/templates/latest/CodeDeploy_SampleCF_Template.json

4. [Stack name] ボックスにスタックの名前を入力します (例: CodeDeployDemoStack)。5. [Parameters] に以下を入力し、[Next] を選択します。

API バージョン 2014-10-06172

Page 181: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

• [InstanceCount] には、起動するインスタンスの数を入力します (デフォルトの 1 のままにしておくことをお勧めします)。

• [InstanceType] には、起動するインスタンスタイプを入力します (またはデフォルトの t1.micro のままにします)。

• [KeyPairName] には、インスタンスのキー名を入力します。• [OperatingSystem] ボックスに Windows と入力して、Windows Server を実行するインスタンスを

起動します (またはデフォルトの Linux のままにします)。• [SSHLocation] には、SSH または RDP でインスタンスに接続するのに使用される IP アドレス範囲

を入力します (またはデフォルトの 0.0.0.0/0 のままにします)。

Important

デフォルトの 0.0.0.0/0 は、デモンストレーションの目的でのみ提供されます。AWSCodeDeploy では、ポートへの無制限のアクセス権限を持つ Amazon EC2 インスタンスは必要ありません。ベストプラクティスとして、SSH (および HTTP) ポートへのアクセスを制限することをお勧めします。詳細については、「Tips for Securing Your Amazon EC2Instance」を参照してください。

• [TagKey] には、デプロイ中にインスタンスを特定するのに使用されるインスタンスのタグキーAWS CodeDeploy を入力します (またはデフォルトの Name のままにします)。

• [TagValue] には、デプロイ中にインスタンスを特定するのに使用されるインスタンスのタグ値AWS CodeDeploy を入力します (またはデフォルトの CodeDeployDemo のままにします)。

6. [Options] ページで、オプションボックスは空白のまま残し、[Next] を選択します。

Important

AWS CloudFormation タグは AWS CodeDeploy タグとは異なります。AWS CloudFormationでは、タグを使用してインフラストラクチャの管理を簡略化します。AWS CodeDeploy では、タグを使用して Amazon EC2 インスタンスを識別します。[Specify Parameters] ページで AWS CodeDeploy タグを指定します。

7. [Review] ページの [Capabilities] で、[I acknowledge that AWS CloudFormation might create IAMresources] ボックスをオンにし、[Create] を選択します。

AWS CloudFormation がスタックを作成し、Amazon EC2 インスタンスを起動した後、AWSCloudFormation コンソールの [Status] 列に [CREATE_COMPLETE] が表示されます。この処理には数分かかることもあります。

AWS CodeDeploy エージェントが Amazon EC2 インスタンスで実行されていることを確認するには、「AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)」を参照して、AWS CodeDeploy でアプリケーションを作成 (p. 218) に進みます。

AWS CloudFormation テンプレートを使用して Amazon EC2 インスタンスを起動する (AWS CLI)AWS CodeDeploy の使用開始 (p. 20) の手順に従って、AWS CodeDeploy で使用する AWS CLI をインストールおよび設定します。

create-stack コマンドを呼び出す前に、Amazon Linux を実行する Amazon EC2 インスタンスへの SSHアクセスまたは Windows Server を実行する Amazon EC2 インスタンスへの RDP アクセスを有効にするAmazon EC2 インスタンスのキーペアが必要です。キーペアのファイル拡張子ではなく、キーペア名のみを入力します。

キーペア名を見つけるには、https://console.aws.amazon.com/ec2 で Amazon EC2 コンソールを開きます。ナビゲーションペインの [Network & Security] の下で、[Key Pairs] を選択し、リストのキーペア名をメモします。

API バージョン 2014-10-06173

Page 182: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

キーペアを生成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。AWSGeneral Reference のリージョンとエンドポイントに一覧表示されているリージョンのいずれかにキーペアを作成する必要があります。それ以外の場合、AWS CodeDeploy でインスタンスのキーペアを使用できなくなります。

1. create-stack コマンドの呼び出しに AWS CloudFormation テンプレートを使用します。このスタックでは、インストールされた AWS CodeDeploy エージェントで新しい Amazon EC2 インスタンスを起動します。

Amazon Linux を実行する Amazon EC2 インスタンスを起動する場合:

aws cloudformation create-stack \ --stack-name CodeDeployDemoStack \ --template-url templateURL \ --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro \ ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Linux \ ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name \ ParameterKey=TagValue,ParameterValue=CodeDeployDemo \ --capabilities CAPABILITY_IAM

Windows Server を実行する Amazon EC2 インスタンスを起動する場合:

aws cloudformation create-stack --stack-name CodeDeployDemoStack --template-url template-url --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Windows ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name ParameterKey=TagValue,ParameterValue=CodeDeployDemo --capabilities CAPABILITY_IAM

template-url はご利用のリージョンの AWS CloudFormation テンプレートの場所:

Region Location of AWS CloudFormation template

米国東部 (オハイオ) リージョン http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json

米国東部 (バージニア北部) リージョン http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json

米国西部 (北カリフォルニア) リージョン http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json

米国西部 (オレゴン) リージョン http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json

API バージョン 2014-10-06174

Page 183: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの作成

(AWS CloudFormation テンプレート)

Region Location of AWS CloudFormation template

カナダ (中部) リージョン http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json

欧州 (アイルランド) リージョン http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json

欧州 (ロンドン) リージョン http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json

  http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json

欧州 (フランクフルト) リージョン http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (東京) リージョン http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (ソウル) リージョン http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (シンガポール) リージョン http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (シドニー) リージョン http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json

アジアパシフィック (ムンバイ) リージョン http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json

API バージョン 2014-10-06175

Page 184: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの設定

Region Location of AWS CloudFormation template

南米 (サンパウロ) リージョン http://s3-sa-east-1.amazonaws.com/aws-codedeploy-sa-east-1/templates/latest/CodeDeploy_SampleCF_Template.json

このコマンドでは、指定された Amazon S3 バケットの AWS CloudFormation テンプレートを使用して、CodeDeployDemoStack という名前の AWS CloudFormation スタックを作成します。AmazonEC2 インスタンスは、t1.micro インスタンスタイプに基づいていますが、任意のタイプを使用できます。Amazon EC2 インスタンスは、CodeDeployDemo の値でタグ付けされていますが、任意の値でタグ付けできます。指定されたインスタンスのキーペアが適用されています。

2. describe-stacks コマンドを呼び出して、正常に作成された CodeDeployDemoStack という名前のAWS CloudFormation スタックを確認します。

aws cloudformation describe-stacks --stack-name CodeDeployDemoStack --query "Stacks[0].StackStatus" --output text

CREATE_COMPLETE の値が返されるまで進まないでください。

AWS CodeDeploy エージェントが Amazon EC2 インスタンスで実行されていることを確認するには、「AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)」を参照して、AWS CodeDeploy でアプリケーションを作成 (p. 218) に進みます。

AWS CodeDeploy と連動するように Amazon EC2 インスタンスを設定するこれらの手順は、AWS CodeDeploy デプロイで使用するために、Amazon Linux、Ubuntu Server、RedHat Enterprise Linux (RHEL)、Windows Server を実行している Amazon EC2 インスタンスを設定する方法を示します。

Note

Amazon EC2 インスタンスがない場合、AWS CloudFormation テンプレートを使用して、Amazon Linux または Windows Server を実行しているインスタンスを起動できます。UbuntuServer または RHEL 用のテンプレートは提供されていません。

このトピックの手順を実行するには:

• AWS CodeDeploy デプロイに参加するアクセス許可のある IAM インスタンスプロファイルが、インスタンスにアタッチされている必要があります。

Amazon EC2 インスタンスの作成時に IAM インスタンスプロファイルをアタッチする方法の詳細については、「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI または AmazonEC2 コンソール) (p. 163)」と「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWSCloudFormation テンプレート) (p. 169)」を参照してください。

既存の Amazon EC2 インスタンスに IAM インスタンスプロファイルをアタッチする方法については、「IAM ロールをインスタンスにアタッチする」を参照してください。

• Amazon EC2 インスタンスはタグを付ける必要があります。• Amazon EC2 インスタンスで AWS CodeDeploy エージェントをインストールして実行する必要があり

ます。

エージェントが実行されていない場合、デプロイは保留状態で停止しているように見えます。

API バージョン 2014-10-06176

Page 185: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの設定

ステップ 1: IAM インスタンスプロファイルが Amazon EC2 インスタンスにアタッチされていることを確認する1. AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ にある

Amazon EC2 コンソールを開きます。2. ナビゲーションペインで、[Instances] の下にある [Instances] を選択します。3. 一覧で Amazon EC2 インスタンスを参照して選択します。4. 詳細ペインの、[Description] タブで [IAM role] フィールドの値を書き留め、次のセクションに進みま

す。

フィールドが空の場合は、IAM インスタンスプロファイルをインスタンスにアタッチすることができます。詳細については、IAM ロールをインスタンスにアタッチするを参照してください。

ステップ 2: アタッチされた IAM インスタンスプロファイルが正しいアクセス権限を持っていることを確認する1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで [Roles (ロール) ] を選択します。3. 前のセクションのステップ 4 で書き留めた IAM ロールの名前を参照し、選択します。

Note

「ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)」の手順に従って作成したサービスロールの代わりに AWS CloudFormation テンプレートにより生成されたサービスロールを使用する場合、次の点に注意してください。AWS CloudFormation テンプレートの一部のバージョンでは、生成され、AmazonEC2 インスタンスにアタッチされた IAM インスタンスプロファイルの表示名は IAMコンソールの表示名と同じではありません。たとえば、IAM インスタンスプロファイルが、CodeDeploySampleStack-expnyi6-InstanceRoleInstanceProfile-IK8J8A9123EX の表示名で、IAM コンソールの IAM インスタンスプロファイルがCodeDeploySampleStack-expnyi6-InstanceRole-C5P33V1L64EX の表示名である可能性があります。IAM コンソールのインスタンスプロファイルを特定するには、CodeDeploySampleStack-expnyi6-InstanceRole のプレフィックスがどちらでも同じことを確認します。これらの表示名が異なる理由に関する詳細については、「インスタンスプロファイル」を参照してください。

4. [Trust Relationships] タブを選択します。[Trusted Entities] に [The identity provider(s)ec2.amazonaws.com] というエントリがない場合は、この Amazon EC2 インスタンスを使用できません。停止して、AWS CodeDeploy のインスタンスの使用 (p. 154) の情報を使用して、Amazon EC2インスタンスを作成します。

[The identity provider(s) ec2.amazonaws.com] というエントリがあり、GitHub リポジトリにのみアプリケーションを保存する場合は、次に「ステップ 3: Amazon EC2 インスタンスにタグを付ける (p. 179)」までスキップします。

[The identity provider(s) ec2.amazonaws.com] というエントリがあり、Amazon S3 バケットにアプリケーションを保存する場合は、[Permissions] タブを選択します。

5. [Managed Policies] エリアにポリシーがある場合は、ポリシー名を選択してから [Edit] を選択します。[Inline Policies] にポリシーがある場合は、[Actions] の下で [Edit Policy] を選択します。

6. Amazon S3 バケットでアプリケーションを保存する場合は、[Policy Document] ボックスで、"s3:Get*" および "s3:List*" が指定したアクションのリストにあることを確認します。

次のように表示されます。

API バージョン 2014-10-06177

Page 186: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon EC2 インスタンスの設定

{"Statement":[{"Resource":"*","Action":[ ... Some actions may already be listed here ... "s3:Get*","s3:List*" ... Some more actions may already be listed here ... ],"Effect":"Allow"}]}

または、次のように表示されます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ ... Some actions may already be listed here ... "s3:Get*", "s3:List*" ... Some more actions may already be listed here ... ], ... } ] }

If "s3:Get*" および "s3:List*" が指定されたアクションのリストにない場合、[Edit] を選択して、それらを追加し、[Save] を選択します。("s3:Get*" または "s3:List*" のどちらかがリストの最後のアクションである場合、必ずアクションの後にコンマを追加して、ポリシードキュメントが検証するようにします。)

Note

We recommend that you restrict this policy to only those Amazon S3 buckets your AmazonEC2 instances must access. Make sure to give access to the Amazon S3 buckets that containthe AWS CodeDeploy agent. Otherwise, an error may occur when the AWS CodeDeployagent is installed or updated on the instances. To grant the IAM instance profile access toonly some AWS CodeDeploy resource kit buckets in Amazon S3, use the following policy butremove the lines for buckets you want to prevent access to:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",

API バージョン 2014-10-06178

Page 187: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの使用

"arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

ステップ 3: Amazon EC2 インスタンスにタグを付けるAmazon EC2 インスタンスにタグをつけて、AWS CodeDeploy がデプロイ中に見つけられるようにする方法に関する詳細について、「Working with Tags in the Console」を参照してから、このページに戻ります。

Note

任意のキーおよび値を使用して Amazon EC2 インスタンスにタグを付けます。インスタンスにデプロイするとき、必ずこのキーと値を指定してください。

ステップ 4: AWS CodeDeploy エージェントを Amazon EC2 インスタンスにインストールするAWS CodeDeploy エージェントを Amazon EC2 インスタンスにインストールして、動作していることを確認する方法に関する詳細について、「AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)」を参照してから、「AWS CodeDeploy でアプリケーションを作成 (p. 218)」に進みます。

AWS CodeDeploy 用のオンプレミスインスタンスの使用

オンプレミスインスタンスは、Amazon EC2 インスタンスではなく、AWS CodeDeploy エージェントを実行し、パブリック AWS サービスエンドポイントに接続できる物理デバイスです。

AWS CodeDeploy アプリケーションリビジョンをオンプレミスインスタンスにデプロイするのには、2 つの主なステップがあります。

• ステップ 1– 各オンプレミスインスタンスを設定し、AWS CodeDeploy で登録し、タグをつけます。• ステップ 2– オンプレミスインスタンスにアプリケーションリビジョンをデプロイします。

Note

サンプルアプリケーションリビジョンの作成と、正しく設定および登録されたオンプレミスインスタンスへのデプロイを試す場合は、「チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (Windows Server、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95)」を参照してください。オンプレミスインスタンス、および AWS CodeDeploy の使用方法の詳細については、「Working with On-PremisesInstances (p. 179)」を参照してください。

オンプレミスインスタンスをデプロイでそれ以上使用しない場合は、デプロイグループからオンプレミスインスタンスタグを削除できます。より強力な方法としては、インスタンスからオンプレミスインスタンスタグを削除します。明示的にオンプレミスインスタンスを登録解除し、デプロイでそれ以上使用されないようにすることもできます。詳細については、「AWS CodeDeploy でのオンプレミスインスタンスのオペレーションの管理 (p. 201)」を参照してください。

API バージョン 2014-10-06179

Page 188: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスを設定するための前提条件

このセクションの手順では、デプロイで使用できるようにオンプレミスインスタンスを設定し、AWSCodeDeploy で登録し、タグ付けする方法を説明します。また、このセクションでは、AWS CodeDeployを使用して、オンプレミスインスタンスについての情報を取得する方法や、デプロイする計画がなくなった後にオンプレミスインスタンスの登録を解除する方法を説明します。

トピック• オンプレミスインスタンスを設定するための前提条件 (p. 180)• AWS CodeDeploy へのオンプレミスインスタンスの登録 (p. 181)• AWS CodeDeploy でのオンプレミスインスタンスのオペレーションの管理 (p. 201)

オンプレミスインスタンスを設定するための前提条件オンプレミスインスタンスを登録するには、次の前提条件を満たす必要があります。

Important

register-on-premises-instance コマンド、および AWS Security Token Service (AWS STS) で生成される、定期的に更新される一時的な認証情報を使用する場合は、その他の前提条件があります。詳細については、IAM セッション ARN 登録前提条件 (p. 195) を参照してください。

デバイスの要件

オンプレミスインスタンスとして AWS CodeDeploy で準備し、登録し、タグ付けするデバイスは、サポートされている OS を実行している必要があります。リストについては、「AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132)」を参照してください。

OS がサポートされていない場合、ニーズを満たすため AWS CodeDeploy エージェントをオープンソースとして利用できます。詳細については、GitHub の AWS CodeDeploy エージェントリポジトリを参照してください。

アウトバウンド通信

オンプレミスインスタンスは、AWS CodeDeploy と通信するために、パブリック AWS サービスエンドポイントに接続できる必要があります。

AWS CodeDeploy エージェントはポート 443 経由で HTTPS を使用してアウトバウンドの通信をします。

管理コントロール

オンプレミスインスタンスの設定のためにオンプレミスインスタンスで使用するローカルまたはネットワークのアカウントは、sudo または root (Ubuntu Server の場合)、または、管理者 (Windows Server の場合) として実行できる必要があります。

IAM アクセス許可

オンプレミスインスタンスを登録するために使用する IAM ID は、登録を完了するため (および必要に応じて登録を削除するため) のアクセス許可を付与されている必要があります。

AWS CodeDeploy の使用開始 (p. 20) で説明されているポリシーに加えて、呼び出し元の IAM ID に以下の追加のポリシーもアタッチ済みであることを確認します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey",

API バージョン 2014-10-06180

Page 189: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

"iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser" ], "Resource": "*" } ]}

AWS CodeDeploy へのオンプレミスインスタンスの登録オンプレミスインスタンスを登録するには、リクエストを認証するために IAM ID を使用する必要があります。使用する IAM ID と登録方法を以下のオプションから選択できます。

• リクエストを認証するため、IAM ユーザー ARN を使用します。• 最も自動化された登録プロセスのために、register コマンドを使用します。単一のオンプレミスイン

スタンスを登録するのに最適です。詳細については、オンプレミスインスタンスを登録するために登録コマンド (IAM ユーザー ARN) を使用する (p. 181) を参照してください。

• ほとんどの登録オプションを手動で設定するために、register-on-premises-instance コマンドを使用します。少数のオンプレミスインスタンスを登録するのに適しています。詳細については、register-on-premises-instance コマンド (IAM ユーザー ARN) を使用してオンプレミスインスタンスを登録する (p. 186) を参照してください。

• リクエストを認証するため、IAM ロール ARN を使用します。• ほとんどの登録オプションを手動で設定するために、register-on-premises-instance コマンド、および

AWS Security Token Service (AWS STS) で生成される、定期的に更新される一時的な認証情報を使用します。多数のオンプレミスインスタンスを登録するのに最適です。詳細については、register-on-premises-instance コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録する (p. 195) を参照してください。

トピック• オンプレミスインスタンスを登録するために登録コマンド (IAM ユーザー ARN) を使用する (p. 181)• register-on-premises-instance コマンド (IAM ユーザー ARN) を使用してオンプレミスインスタンスを

登録する (p. 186)• register-on-premises-instance コマンド (IAM セッション ARN) を使用してオンプレミスインスタンス

を登録する (p. 195)

オンプレミスインスタンスを登録するために登録コマンド (IAMユーザー ARN) を使用するこのセクションでは、最低限の労力でオンプレミスインスタンスを AWS CodeDeploy で設定してタグ付けする方法を説明します。登録コマンドは、単一の、または少数のオンプレミスインスタンスを処理する際に最も有用です。登録コマンドは、インスタンスを認証するために IAM ユーザー ARN を使用している場合のみ使用できます。登録コマンドは、認証のための IAM セッション ARN と使用することはできません。

登録コマンドを使用すると、AWS CodeDeploy で次の操作ができます。

• コマンドで指定しない場合、オンプレミスインスタンスのため、AWS Identity and Access Managementに IAM ユーザーを作成します。

API バージョン 2014-10-06181

Page 190: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

• オンプレミスインスタンスの設定ファイルに IAM ユーザーの認証情報を保存します。• AWS CodeDeploy でオンプレミスインスタンスを登録します。• コマンドの一部にタグを指定した場合、オンプレミスインスタンスにタグを追加します。

Note

register-on-premises-instance コマンドは、register コマンドに代わるものです。AWSCodeDeploy を使ったオンプレミスインスタンスの設定、登録、タグ付けのほとんどを自分で行いたい場合は、register-on-premises-instance コマンドを使用します。また、register-on-premises-instance コマンドを使うと、IAM ユーザー ARN の代わりに、IAM セッション ARNを使用してインスタンスを登録できます。このアプローチは、大量のオンプレミスインスタンスがある場合、大きな利点となります。具体的には、各オンプレミスインスタンスに 1 つずつ IAM ユーザーを作成するかわりに、単一の IAM セッション ARN を使用して複数のインスタンスを認証できます。詳細については、「register-on-premises-instance コマンド (IAM ユーザー ARN) を使用してオンプレミスインスタンスを登録する (p. 186)」および「register-on-premises-instance コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録する (p. 195)」を参照してください。

トピック• ステップ 1: オンプレミスインスタンスで AWS CLI をインストールして設定する (p. 182)• ステップ 2: 登録コマンドを呼び出す (p. 183)• ステップ 3: インストールコマンドを呼び出す (p. 184)• ステップ 4: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする (p. 185)• ステップ 5: オンプレミスインスタンスへのデプロイの追跡 (p. 186)

ステップ 1: オンプレミスインスタンスで AWS CLI をインストールして設定する

1. オンプレミスインスタンスに AWS CLI をインストールします。「AWS Command Line Interface UserGuide」の「AWS コマンドラインインターフェースの設定」にある手順に従います。

Note

オンプレミスインスタンスで使用する AWS CodeDeploy コマンドは、AWS CLI バージョン1.7.19 以降で使用できます。AWS CLI がすでにインストールしてある場合は、aws --versionを呼び出してバージョンをチェックします。

2. オンプレミスインスタンスに AWS CLI を設定します。「AWS Command Line Interface User Guide」の「AWS コマンドラインインターフェイスの設定」にある手順に従います。

Important

AWS CLI を設定する際 (たとえば、aws configure コマンドを呼び出す場合など) は、オンプレミスインスタンスを設定するための前提条件 (p. 180) で指定されているアクセス許可に加えて少なくとも以下の AWS アクセス権限を持つ IAM ユーザーのシークレットキー IDとシークレットアクセスキーを必ず指定します。これにより、オンプレミスインスタンスでAWS CodeDeploy エージェントをダウンロードしてインストールすることができます。アクセス権限は次のようになります。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey",

API バージョン 2014-10-06182

Page 191: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

"iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:GetTags", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

ステップ 2: 登録コマンドを呼び出すこのステップでは、オンプレミスインスタンス自体からオンプレミスインスタンスを登録していることを想定します。前のステップでの説明のとおり、AWS CLI がインストールされ設定された別のデバイスやインスタンスから、オンプレミスインスタンスを登録することもできます。

以下を指定して、AWS CLI を使用して register コマンドを呼び出します。

• AWS CodeDeploy に対してオンプレミスインスタンスを一意に識別する名前 (--instance-name オプションで指定)。

Important

後でオンプレミスインスタンスを識別するために、特にデバッグのため、オンプレミスインスタンスの一意な特徴を示す名前 (たとえば、もしあれば、シリアルナンバーや一意の内部アセット識別子など) を使用することを強くお勧めします。名前に MAC アドレスを指定した場合、MAC アドレスにはコロン (:) など AWS CodeDeploy が許可しない文字が含まれることに注意してください。許可された文字の一覧については、「AWS CodeDeploy の制限 (p. 354)」を参照してください。

• 必要に応じて、このオンプレミスインスタンスと関連付ける既存の IAM ユーザーの ARN (--iam-user-arn オプションで指定)。IAM ユーザーの ARN を取得するには、get-user コマンドを呼び出すか、または、IAM コンソールの [Users] セクションで IAM ユーザー名を選択した後、[Summary]

API バージョン 2014-10-06183

Page 192: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

セクションで [User ARN] の値を見つけます。このオプションが指定されていない場合は、AWSCodeDeploy が代わりに IAM ユーザーを AWS アカウントに作成し、オンプレミスインスタンスと関連付けます。

Important

--iam-user-arn オプションを指定する場合は、「ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190)」の説明にあるとおり、オンプレミスインスタンスの設定ファイルを手動で作成することも必要です。1 つのオンプレミスインスタンスのみに対し、1 人の IAM ユーザーのみを関連付けることができます。複数のオンプレミスインスタンスに 1 人の IAM ユーザーを関連付けようとすると、エラー、オンプレミスインスタンスへのデプロイの失敗、またはオンプレミスインスタンスへのデプロイが無期限の保留状態のままとなります。

• 必要に応じて、デプロイ先の Amazon EC2 インスタンスのセットを識別するために AWSCodeDeploy で使用するオンプレミスインスタンスタグのセット (--tags オプションで指定)。各タグを Key=tag-key,Value=tag-value で指定します (例: Key=Name,Value=BetaKey=Name,Value=WestRegion)。このオプションを指定しない場合、タグは登録されません。後でタグを登録するには、add-tags-to-on-premises-instances コマンドを呼び出します。

• 必要に応じて、AWS CodeDeploy でオンプレミスインスタンスを登録する AWS リージョン (--regionオプションで指定)。これは、AWS General Reference の「リージョンとエンドポイント」のリストにあるサポートされているリージョンの 1 つである必要があります (例: us-west-2)。このオプションを指定しない場合、IAM ユーザーの呼び出しに関連付けられているデフォルトの AWS リージョンが使用されます。

以下に例を示します。

aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::80398EXAMPLE:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2

register コマンドは次のことを行います。

1. 既存の IAM ユーザーを指定しない場合、IAM ユーザーを作成して必要なアクセス権限を付与し、対応するシークレットキーおよびシークレットアクセスキーを生成します。オンプレミスインスタンスは、この IAM ユーザーとアクセス権限および認証情報を使用して AWS CodeDeploy との認証および操作を行います。

2. AWS CodeDeploy でオンプレミスインスタンスを登録します。3. AWS CodeDeploy で、タグ (--tags オプションで指定した場合) と登録済みのオンプレミスインスタ

ンスの名前を関連付けます。4. IAM ユーザーを作成したら、register コマンドの呼び出し元と同じディレクトリに必要な設定ファイル

も作成します。

このコマンドでエラーが発生した場合、エラーメッセージが表示され、手動で残りのステップを完了する方法について説明します。そうでない場合は、成功メッセージが表示され、次のステップに示すとおり、install コマンドを呼び出す方法について説明します。

ステップ 3: インストールコマンドを呼び出すオンプレミスインスタンスから、以下を指定して、AWS CLI を使用して install コマンドを呼び出します。

• 設定ファイルへのパス (--config-file オプションで指定)。• 必要に応じて、オンプレミスインスタンスにある既存の設定ファイルを置き換えるかどうか (--override-config オプションで指定)。指定しない場合、既存の設定ファイルは置き換えられません。

• 必要に応じて、AWS CodeDeploy でオンプレミスインスタンスを登録する AWS リージョン (--regionオプションで指定)。これは、AWS General Reference の「リージョンとエンドポイント」のリストにあ

API バージョン 2014-10-06184

Page 193: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

るサポートされているリージョンの 1 つである必要があります (例: us-west-2)。このオプションを指定しない場合、IAM ユーザーの呼び出しに関連付けられているデフォルトの AWS リージョンが使用されます。

• 必要に応じて、AWS CodeDeploy エージェントのインストール元のカスタムロケーション (--agent-installer オプションで指定)。このオプションは、AWS CodeDeploy が公式にはサポートしていないAWS CodeDeploy エージェントのカスタムバージョンのインストールに使用できます (GitHub の AWSCodeDeploy エージェントリポジトリに基づくカスタムバージョンなど)。値は、次のいずれかを含むAmazon S3 バケットへのパスである必要があります:• AWS CodeDeploy エージェントのインストールスクリプト (GitHub の AWS CodeDeploy エージェン

トリポジトリにあるインストールファイルと同様、Linux または Unix ベースの OS 用)。• AWS CodeDeploy エージェントのインストーラパッケージ (.msi) ファイル (Windows ベースの OS

用)。

このオプションを指定しない場合、AWS CodeDeploy は独自の場所から、オンプレミスインスタンスの OS と互換性のある正式にサポートされているバージョンの AWS CodeDeploy エージェントをインストールしようとします。

以下に例を示します。

aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi

install コマンドは次のことを行います。

1. オンプレミスインスタンスが Amazon EC2 インスタンスかどうかを確認します。そうである場合は、エラーメッセージが表示されます。

2. オンプレミスインスタンスの設定ファイルを、インスタンスの指定された場所から AWS CodeDeployエージェントが見つけやすい場所へ (まだその場所にない場合) コピーします。

Ubuntu Server および Red Hat Enterprise Linux (RHEL) の場合は、/etc/codedeploy-agent/conf/codedeploy.onpremises.yml です。

Windows Server の場合は C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml です。

--override-config オプションを指定した場合は、ファイルを作成または上書きします。3. オンプレミスインスタンスに AWS CodeDeploy エージェントをインストールし、起動します。

ステップ 4: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする登録され、タグ付けされたオンプレミスインスタンスにアプリケーションリビジョンをデプロイする準備ができました。

Amazon EC2 インスタンスにアプリケーションリビジョンをデプロイするのと同様の方法でオンプレミスインスタンスにアプリケーションリビジョンをデプロイします。手順については、「AWS CodeDeployを使用してデプロイを作成する (p. 256)」を参照してください。これらの指示は、アプリケーションの作成、開発グループの作成、およびアプリケーションリビジョンの準備を含む前提条件と関連しています。シンプルなサンプルアプリケーションリビジョンをデプロイすることが必要な場合は、チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95) の ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96) で説明してあるものを作成できます。

Important

オンプレミスインスタンスを対象としたデプロイグループの作成の一部として、既存の AWSCodeDeploy サービスロールを再利用する場合は、Tag:get* をサービスロールのポリシース

API バージョン 2014-10-06185

Page 194: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

テートメントの Action 部分に含める必要があります。詳細については、「ステップ 3: AWSCodeDeploy のサービスロールを作成する (p. 22)」を参照してください。

ステップ 5: オンプレミスインスタンスへのデプロイの追跡登録されタグ付けされたオンプレミスインスタンスへアプリケーションリビジョンをデプロイした後、デプロイの進行状況を追跡できます。

Amazon EC2 インスタンスへのデプロイの追跡と同様の方法でオンプレミスインスタンスへのデプロイの追跡をします。手順については、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

他のオプションについては、「AWS CodeDeploy でのオンプレミスインスタンスのオペレーションの管理 (p. 201)」を参照してください。

register-on-premises-instance コマンド (IAM ユーザー ARN) を使用してオンプレミスインスタンスを登録する認証に固定 IAM ユーザー認証情報を使って、AWS CodeDeploy でオンプレミスインスタンスの設定、登録、タグ付けをほとんど自分で行う場合は、これらの手順に従います。

トピック• ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186)• ステップ 2: IAM ユーザーにアクセス権限を割り当てる (p. 187)• ステップ 3: IAM ユーザーの認証情報を取得する (p. 189)• ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190)• ステップ 5: AWS CLI をインストールして設定する (p. 191)• ステップ 6: AWS_REGION 環境変数を設定する (Ubuntu Server および RHEL のみ) (p. 192)• ステップ 7: AWS CodeDeploy エージェントをインストールする (p. 193)• ステップ 8: AWS CodeDeploy でオンプレミスインスタンスを登録します。 (p. 193)• ステップ 9: オンプレミスインスタンスのタグ付け (p. 193)• ステップ 10: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする (p. 194)• ステップ 11: オンプレミスインスタンスへのデプロイの追跡 (p. 195)

ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する認証や AWS CodeDeploy とのやり取りにオンプレミスインスタンスが使用する IAM ユーザーを作成します。

Important

それぞれの参加しているオンプレミスインスタンスに対して個別の IAM ユーザーを作成する必要があります。複数のオンプレミスインスタンスに対して単独の IAM ユーザーを再利用しようとすると、AWS CodeDeploy でのオンプレミスインスタンスの登録やタグ付けができない場合があります。それらのオンプレミスインスタンスへのデプロイは、無期限の保留状態のまま、または完全にエラーとなる場合があります。

IAM ユーザーに、目的を識別するために、CodeDeployUser-OnPrem のような名前を割り当てることをお勧めします。

AWS CLI または IAM コンソールを使用して IAM ユーザーを作成できます。詳細については、「AWS アカウント内での IAM ユーザーの作成」を参照してください。

Important

新しい IAM ユーザーを作成するのに AWS CLI または IAM コンソールのどちらを使用するとしても、ユーザーに提供されるユーザー ARN をメモしておきます。この情報は後に ステップ 4: オン

API バージョン 2014-10-06186

Page 195: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

プレミスインスタンスに設定ファイルを追加する (p. 190) と ステップ 8: AWS CodeDeploy でオンプレミスインスタンスを登録します。 (p. 193) で必要になります。

ステップ 2: IAM ユーザーにアクセス権限を割り当てる

オンプレミスインスタンスが Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合、IAM ユーザーがバケットでやり取りするためのアクセス権限を割り当てる必要があります。AWS CLIまたは IAM コンソールを使用してアクセス権限を割り当てることができます。

Note

GitHub リポジトリからのみアプリケーションリビジョンをデプロイする場合は、このステップを飛ばして ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) へ進んでください。(ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) で作成した IAM ユーザーの情報はまだ必要です。後のステップで使用します。)

アクセス権限 (CLI) を割り当てるには

1. AWS CLI を呼び出すのに使用している Amazon EC2 インスタンスまたはデバイスに次のポリシーの内容を含むファイルを作成します。ファイルに CodeDeploy-OnPrem-Permissions.json のような名前を付けて、ファイルを保存します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ]}

Note

このポリシーを、オンプレミスインスタンスがアクセスする必要のある Amazon S3 バケットにのみ制限することをお勧めします。このポリシーを制限する場合、AWS CodeDeployエージェントを含む Amazon S3 バケットへのアクセスを許可することも確認します。そうしない場合、AWS CodeDeploy エージェントが関連するオンプレミスインスタンスにインストールされる、または更新されるたびに、エラーが発生する可能性があります。以下に例を示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*",

API バージョン 2014-10-06187

Page 196: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

"arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

2. put-user-policy コマンドを呼び出し、IAM ユーザーの名前 (--user-name オプションで指定)、ポリシーの名前 (--policy-name オプションで指定)、および新しく作成したポリシードキュメントへのパス (--policy-document オプション) を指定します。たとえば、CodeDeploy-OnPrem-Permissions.json というファイルが、コマンドを呼び出しているのと同じディレクトリ (フォルダ) にあるとします。

Important

Be sure to include file:// before the file name. It is required in this command.

aws iam put-user-policy --user-name CodeDeployUser-OnPrem --policy-name CodeDeploy-OnPrem-Permissions --policy-document file://CodeDeploy-OnPrem-Permissions.json

アクセス権限を割り当てるには (コンソール)

1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで、[Policies] を選択し、[Create Policy] を選択します。 ([Get Started] ボタンが

表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。3. [Create Your Own Policy] の横の [Select] を選択します。4. [Policy Name] ボックスに、このポリシーの名前を入力します (例: CodeDeploy-OnPrem-

Permissions)。5. [Policy Document] ボックスに、以下のアクセス権限の式を入力するか貼り付けることで、AWS

CodeDeploy が、IAM ユーザーアカウントに代わって、アプリケーションリビジョンをポリシーで指定されたどの Amazon S3 バケットからでもオンプレミスインスタンスにデプロイすることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ]}

6. [Create Policy] を選択します。7. ナビゲーションペインで [Users] を選択します。

API バージョン 2014-10-06188

Page 197: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

8. ユーザーのリストで、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186)で作成した IAM ユーザーを探して選択します。

9. [Permissions] タブを開き、[Managed Policies] で [Attach Policy] を選択します。10. CodeDeploy-OnPrem-Permissions という名前のポリシーを選択した後、[Attach Policy] を選択し

ます。

ステップ 3: IAM ユーザーの認証情報を取得するIAM ユーザーのシークレットキー ID およびシークレットアクセスキーを取得します。これは、ステップ4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) で必要になります。AWS CLI またはIAM コンソールを使用して、シークレットキー ID およびシークレットアクセスキーを取得できます。

Note

すでにシークレットキー ID およびシークレットアクセスキーがある場合、このステップを飛ばして ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) へ進んでください。

認証情報 (CLI) を取得するには

1. list-access-keys コマンドを呼び出し、IAM ユーザーの名前を指定し (--user-name オプションを使用)、アクセスキー ID のみのクエリを実行します (--query オプションおよび --output オプションを使用)。以下に例を示します。

aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text

2. キーが出力に表示されないか、1 つのキーについての情報だけが出力に表示されたら、create-access-key コマンドを呼び出し、IAM ユーザーの名前を指定します (--user-name オプションを使用)。

aws iam create-access-key --user-name CodeDeployUser-OnPrem

create-access-key コマンドの呼び出しの出力で、AccessKeyId および SecretAccessKey フィールドの値をメモしておきます。この情報は ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) で必要になります。

Important

このシークレットアクセスキーにアクセスできるのは、この時だけです。このシークレットアクセスキーを忘れた、またはアクセスできなくなった場合、ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) のステップに従い、新しいキーを生成する必要があります。

3. 2 つのアクセスキーが既にリストされている場合は、そのうちの 1 つを削除する必要があります。削除するには、delete-access-key コマンドを呼び出して、IAM ユーザーの名前 (--user-name オプションを使用) と削除するアクセスキーの ID (--access-key-id オプションを使用) を指定します。それから、このステップの前のほうにある説明のとおり、create-access-key コマンドを呼び出します。delete-access-key コマンドを呼び出す例は以下のとおりです。

aws iam delete-access-key --user-name CodeDeployUser-OnPrem --access-key-id access-key-ID

Important

delete-access-key コマンドを呼び出してアクセスキーの片方を削除する場合、また、オンプレミスインスタンスが ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) にある説明のとおりにすでにそのアクセスキーを使用している場合は、ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) の手順に再び従って、この IAM ユーザーと関連付けられた異なるアクセスキー ID およびシークレットアクセス

API バージョン 2014-10-06189

Page 198: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

キーを指定する必要があります。そうしない場合、そのオンプレミスインスタンスへのデプロイは、無期限の保留状態のまま、または完全にエラーとなる可能性があります。

認証情報を取得するには (コンソール)

1. 1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ユーザーのリストがナビゲーションペインに表示されない場合は、[Users] を選択します。3. ユーザーのリストで、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成す

る (p. 186) で作成した IAM ユーザーを探して選択します。2. [Security credentials] タブにキーが表示されていない場合、または 1 つしか表示されていない場合

は、[Create access key] を選択します。

2 つのアクセスキーが表示されている場合は、片方を削除する必要があります。片方のアクセスキーの横にある [Delete] を選択した後、[Create access key] を選択します。

Important

片方のアクセスキーの横にある [Delete] を選択した場合、また、オンプレミスインスタンスが ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) にある説明のとおりにすでにそのアクセスキーを使用している場合は、ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) の手順に再び従って、この IAM ユーザーと関連付けられた異なるアクセスキー ID およびシークレットアクセスキーを指定する必要があります。そうしない場合、そのオンプレミスインスタンスへのデプロイは、無期限の保留状態のまま、または完全にエラーとなる可能性があります。

3. [Show] を選択し、アクセスキー ID とシークレットアクセスキーをメモします。この情報は、次のステップで必要になります。または、[Download .csv file] を選択して、アクセスキー ID とシークレットアクセスキーのコピーを保存することができます。

Important

認証情報をメモする、または、ダウンロードするのでない限り、このシークレットアクセスキーにアクセスできるのは、この時だけです。このシークレットアクセスキーを忘れた、またはアクセスできなくなった場合、ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) のステップに従い、新しいキーを生成する必要があります。

4. [Close] を選択して [Users > IAM User Name] ページに戻ります。

ステップ 4: オンプレミスインスタンスに設定ファイルを追加するルートまたは管理者権限を使用して、オンプレミスインスタンスに設定ファイルを追加します。この設定ファイルは、AWS CodeDeploy で使用される IAM ユーザーの認証情報、および ターゲット AWS リージョンを宣言するために使用します。ファイルは、オンプレミスインスタンスの指定の場所に追加する必要があります。ファイルには、IAM ユーザーの ARN、シークレットキー ID、シークレットアクセスキー、およびターゲット AWS リージョンを含める必要があります。ファイルは特定の形式に従っている必要があります。

1. オンプレミスインスタンスの以下の場所に、codedeploy.onpremises.yml (Ubuntu Server またはRHEL オンプレミスインスタンスの場合)、または、conf.onpremises.yml (Windows Server オンプレミスインスタンスの場合) という名前のファイルを作成します。

• Ubuntu Server の場合: /etc/codedeploy-agent/conf• Windows Server の場合: C:\ProgramData\Amazon\CodeDeploy

2. テキストエディタを使用して、新しく作成した codedeploy.onpremises.yml またはconf.onpremises.yml ファイルに次の情報を追加します。

---aws_access_key_id: secret-key-id

API バージョン 2014-10-06190

Page 199: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

aws_secret_access_key: secret-access-keyiam_user_arn: iam-user-arnregion: supported-region

各パラメーターの意味は次のとおりです。

• secret-key-id は、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) または ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) でメモした、対応する IAM ユーザーのシークレットキー ID です。

• secret-access-key は、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) または ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) でメモした、対応する IAM ユーザーのシークレットアクセスキーです。

• iam-user-arn は、「ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186)」で先にメモした IAM ユーザーの ARN です。

• supported-region は、AWS CodeDeploy でサポートされているリージョンの識別子で、そこにAWS CodeDeploy アプリケーション、デプロイグループ、およびアプリケーションリビジョンがあります (例:us-west-2)。リージョンのリストについては、『AWS General Reference』の「リージョンとエンドポイント」を参照してください。

Important

ステップ 3: IAM ユーザーの認証情報を取得する (p. 189) の片方のアクセスキーの横にある[Delete] を選択した場合、また、オンプレミスインスタンスがすでに関連するアクセスキーID およびシークレットアクセスキーを使用している場合は、ステップ 4: オンプレミスインスタンスに設定ファイルを追加する (p. 190) の手順に再び従って、この IAM ユーザーと関連付けられた異なるアクセスキー ID およびシークレットアクセスキーを指定する必要があります。そうしない場合、オンプレミスインスタンスへのデプロイは、無期限の保留状態のまま、または完全にエラーとなる可能性があります。

ステップ 5: AWS CLI をインストールして設定する

オンプレミスインスタンスに AWS CLI をインストールして設定します。(AWS CLI は ステップ 7: AWSCodeDeploy エージェントをインストールする (p. 193) で AWS CodeDeploy エージェントをダウンロードしてオンプレミスインスタンスにインストールするために使用されます。)

1. オンプレミスインスタンスに AWS CLI をインストールするには、「AWS Command Line InterfaceUser Guide」の「AWS コマンドラインインターフェイスの設定」にある指示に従います。

Note

オンプレミスインスタンスを使用するための AWS CodeDeploy コマンドは、AWS CLI のバージョン 1.7.19 で使用できるようになりました。AWS CLI のすでにインストールしているバージョンがある場合は、aws --version コマンドを呼び出してバージョンを確認できます。

2. オンプレミスインスタンスで AWS CLI を設定するには、「AWS Command Line Interface UserGuide」の「AWS コマンドラインインターフェイスの設定」にある手順に従います。

Important

AWS CLI を設定する際 (たとえば、aws configure コマンドを呼び出す場合など) は、オンプレミスインスタンスを設定するための前提条件 (p. 180) で指定されているアクセス権限に加えて少なくとも以下の AWS アクセス権限を持つ IAM ユーザーのシークレットキー IDとシークレットアクセスキーを必ず指定します。これにより、オンプレミスインスタンスでAWS CodeDeploy エージェントをダウンロードしてインストールすることができます。

{ API バージョン 2014-10-06191

Page 200: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

"Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ]}

これらのアクセス権限は、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) で作成したユーザー IAM ユーザー、または別の IAM ユーザーのいずれかに割り当てることができます。これらのアクセス権限を IAM ユーザーに割り当てるには、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) にある手順に従いますが、手順中のアクセス権限の代わりにこれらのアクセス権限を使用します。

ステップ 6: AWS_REGION 環境変数を設定する (Ubuntu Server および RHEL のみ)オンプレミスインスタンスで Ubuntu Server または RHEL を実行中でなければ、このステップを飛ばしてステップ 7: AWS CodeDeploy エージェントをインストールする (p. 193) へ進んでください。

Ubuntu Server または RHEL オンプレミスインスタンスに AWS CodeDeploy エージェントをインストールし、新しいバージョンが使用可能になったらいつでも AWS CodeDeploy エージェントを更新するようにインスタンスを有効にします。これを行うには、インスタンスの AWS_REGION 環境変数を AWSCodeDeploy がサポートしているリージョンの識別子に設定します。AWS CodeDeploy アプリケーション、デプロイグループ、およびアプリケーションリビジョンのあるリージョンの値に設定することをお勧めします (例:us-west-2)。リージョンのリストについては、『AWS General Reference』の「リージョンとエンドポイント」を参照してください。

環境変数を設定するには、端末から以下を呼び出します。

export AWS_REGION=supported-region

supported-region がリージョンの識別子である場所 (例:us-west-2)。

API バージョン 2014-10-06192

Page 201: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

ステップ 7: AWS CodeDeploy エージェントをインストールする

オンプレミスインスタンスに AWS CodeDeploy エージェントをインストールします。

• Ubuntu Server オンプレミスインスタンスの場合は、Ubuntu Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 143) の手順に従った後、このページに戻ります。

• RHEL オンプレミスインスタンスの場合は、Amazon Linux または RHEL の AWS CodeDeploy エージェントをインストールまたは再インストールします。 (p. 142) の手順に従った後、このページに戻ります。

• Windows Server オンプレミスインスタンスの場合は、Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 144) の手順に従った後、このページに戻ります。

ステップ 8: AWS CodeDeploy でオンプレミスインスタンスを登録します。

このステップの手順では、オンプレミスインスタンス自体からオンプレミスインスタンスを登録していることを想定します。ステップ 5: AWS CLI をインストールして設定する (p. 191) で説明されているとおり、オンプレミスインスタンスを、AWS CLI がインストールされ設定してある別のデバイスまたはインスタンスから登録できます。

AWS CLI を使用してオンプレミスインスタンスを AWS CodeDeploy に登録し、デプロイで使用できるようにします。

1. AWS CLI を使用する前に、ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186) で作成した IAM ユーザーのユーザー ARN が必要です。ユーザー ARN がまだない場合は、get-user コマンドを呼び出し、IAM ユーザーの名前を指定し (--user-name オプションを使用)、ユーザー ARN のみをクエリします (--query オプションと --output オプションを使用)。

aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text

2. register-on-premises-instance コマンドを呼び出し、以下を指定します。

• オンプレミスインスタンスを一意に識別する名前 (--instance-name オプションで指定)。

Important

オンプレミスインスタンスを識別するために、特にデバッグのため、オンプレミスインスタンスの一意な特徴を示す名前 (たとえば、もしあれば、シリアルナンバーや内部アセット識別子など) を指定することを強くお勧めします。名前として MAC アドレスを指定した場合、MAC アドレスにはコロン (:) など AWS CodeDeploy が許可しない文字が含まれることに注意してください。許可された文字の一覧については、「AWS CodeDeploy の制限 (p. 354)」を参照してください。

• 「ステップ 1: オンプレミスインスタンス用に IAM ユーザーを作成する (p. 186)」で作成した IAMユーザーの ARN (--iam-user-arn オプションで指定)。

以下に例を示します。

aws deploy register-on-premises-instance --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::80398EXAMPLE:user/CodeDeployUser-OnPrem

ステップ 9: オンプレミスインスタンスのタグ付け

AWS CLI または AWS CodeDeploy コンソールのいずれかを使用して、オンプレミスインスタンスにタグ付けができます。(AWS CodeDeploy はオンプレミスインスタンスタグを使用してデプロイ中にデプロイターゲットを識別します。)

API バージョン 2014-10-06193

Page 202: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

オンプレミスインスタンスにタグ付けするには (CLI)

• add-tags-to-on-premises-instances コマンドを呼び出し、以下を指定します。

• オンプレミスインスタンスを一意に識別する名前 (--instance-names オプションで指定)。• 使用するオンプレミスインスタンスのタグキーの名前とタグ値 (--tags オプションで指定)。名前

と値の両方を指定する必要があります。AWS CodeDeploy は値のみがあるオンプレミスインスタンスタグを許可しません。

以下に例を示します。

aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem

オンプレミスインスタンスにタグ付けするには (コンソール)

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューから [On-premises instances] を選択します。3. オンプレミスインスタンスのリストで、タグ付けするオンプレミスインスタンスの横にある矢印を選

択します。4. タグのリストで、目的のタグキーとタグ値を選択するか、または入力します。タグキーとタグ値を入

力したら、別の列が表示されます。最大 10 個のタグにこれを繰り返すことができます。タグを削除

するには、削除アイコン ( ) を選択します。5. タグを追加したら、[Update Tags] を選択します。

ステップ 10: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする

登録され、タグ付けされたオンプレミスインスタンスにアプリケーションリビジョンをデプロイする準備ができました。

Amazon EC2 インスタンスにアプリケーションリビジョンをデプロイするのと同様の方法でオンプレミスインスタンスにアプリケーションリビジョンをデプロイします。手順については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。これらの指示には、アプリケーションの作成、開発グループの作成、およびアプリケーションリビジョンの準備を含む前提条件へのリンクが含まれています。シンプルなサンプルアプリケーションリビジョンをデプロイすることが必要な場合は、チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95) の ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96) で説明してあるものを作成できます。

Important

オンプレミスインスタンスを対象としたデプロイグループの作成の一部として、AWSCodeDeploy サービスロールを再利用する場合は、Tag:get* をサービスロールのポリシーステートメントの Action 部分に含める必要があります。詳細については、「ステップ 3: AWSCodeDeploy のサービスロールを作成する (p. 22)」を参照してください。

API バージョン 2014-10-06194

Page 203: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

ステップ 11: オンプレミスインスタンスへのデプロイの追跡

登録されタグ付けされたオンプレミスインスタンスへアプリケーションリビジョンをデプロイした後、デプロイの進行状況を追跡できます。

Amazon EC2 インスタンスへのデプロイの追跡と同様の方法でオンプレミスインスタンスへのデプロイの追跡をします。手順については、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

register-on-premises-instance コマンド (IAM セッション ARN) を使用してオンプレミスインスタンスを登録するオンプレミスインスタンスの認証と登録を最大限にコントロールするには、register-on-premises-instanceコマンド、および、AWS Security Token Service (AWS STS) を通じて生成された、定期的に更新される一時的な認証情報を使用できます。インスタンスの静的 IAM ロールは、AWS CodeDeploy デプロイ操作を実行するためのこれらの更新された AWS STS 認証情報のロールを想定しています。

多数のインスタンスを登録する必要がある場合は、このメソッドが最も役に立ちます。これにより、AWSCodeDeploy での登録処理を自動化できます。自分の ID と認証システムを使用して、オンプレミスインスタンスを認証でき、AWS CodeDeploy で使用するためにインスタンス IAM セッション認証情報をサービスからインスタンスへ配布できます。

Note

または、AWS STS AssumeRole API を呼び出してオンプレミスインスタンスのセッション認証情報を取得するために、すべてのオンプレミスインスタンスに分散した共有 IAM ユーザーを使用することもできます。このメソッドは安全性が低いため、本番稼働用またはミッションクリティカルな環境での使用は推奨しません。

以下のトピックにある情報を参照し、AWS STS で生成された一時的なセキュリティ認証情報を使用してオンプレミスインスタンスを設定します。

トピック• IAM セッション ARN 登録前提条件 (p. 195)• ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成する (p. 196)• ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成する (p. 197)• ステップ 3: オンプレミスインスタンスに設定ファイルを追加する (p. 198)• ステップ 4: AWS CodeDeploy デプロイのためオンプレミスインスタンスを準備する (p. 198)• ステップ 5: AWS CodeDeploy でオンプレミスインスタンスを登録します。 (p. 199)• ステップ 6: オンプレミスインスタンスのタグ付け (p. 200)• ステップ 7: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする (p. 201)• ステップ 8: オンプレミスインスタンスへのデプロイの追跡 (p. 201)

IAM セッション ARN 登録前提条件

オンプレミスインスタンスを設定するための前提条件 (p. 180) にリストされている前提条件に加えて、次の追加の要件を満たす必要があります。

IAM アクセス許可

オンプレミスインスタンスを登録するのに使用する IAM 識別子には、AWS CodeDeploy 操作を実行するためのアクセス権限が付与される必要があります。[AWSCodeDeployFullAccess] 管理ポリシーが IAMID にアタッチされていることを確認します。詳細については、IAM ユーザーガイド の「AWS 管理ポリシー」を参照してください。

API バージョン 2014-10-06195

Page 204: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

一時的な認証情報を更新するシステム

IAM セッション ARN を使用してオンプレミスインスタンスを登録する場合、一時的な認証情報を定期的に更新する適切なシステムが必要です。一時的な認証情報は 1 時間後、または認証情報が生成されたときより短い時間が指定されていればそれより早く期限切れになります。認証情報を更新するためのメソッドは 2 つあります。

• メソッド 1: 企業ネットワーク内で ID および認証システムを適切に使用し、CRON スクリプトを使ってID および認証システムを定期的にポーリングし、最新のセッション認証情報をインスタンスへコピーするようにします。これにより、組織で使用する認証タイプをサポートするために AWS CodeDeploy エージェントまたはサービスを変更することなく、認証および ID 構成を AWS により統合できます。

• メソッド 2: 定期的に CRON ジョブをインスタンスで実行して AWS STS AssumeRole アクションを呼び出し、AWS CodeDeploy エージェントがアクセスできるファイルにセッション認証情報を書き込みます。このメソッドでは、IAM ユーザーの使用、およびオンプレミスインスタンスへの認証情報のコピーをする必要はありますが、多くのオンプレミスインスタンスで同じ IAM ユーザーおよび認証情報を使用できます。

AWS STS 認証情報の作成および使用の詳細については、AWS Security Token Service API リファレンスおよび「一時的なセキュリティ認証情報を使用して AWS リソースへのアクセスをリクエストする」を参照してください。

ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成する

AWS CLI または IAM コンソールを使用して、AWS CodeDeploy との認証および操作を行うためにオンプレミスインスタンスが使用する IAM ロールを作成できます。

単一の IAM ロールのみを作成する必要があります。各オンプレミスインスタンスは、このロールに付与されたアクセス権限を提供する一時認証情報を取得するためにこのロールを引き受けることができます。

作成するロールは、AWS CodeDeploy エージェントをインストールするのに必要なファイルにアクセスするために、次のアクセス権限が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ]}

このポリシーを、オンプレミスインスタンスがアクセスする必要のある Amazon S3 バケットにのみ制限することをお勧めします。このポリシーを制限する場合、AWS CodeDeploy エージェントを含む AmazonS3 バケットへのアクセスを許可することを確認します。そうしない場合、AWS CodeDeploy エージェントがオンプレミスインスタンスにインストールされる、または更新されるたびに、エラーが発生する可能性があります。Amazon S3 バケットに対するアクセスのコントロールの詳細については、「Amazon S3リソースへのアクセス許可の管理」を参照してください。

IAM ロールを作成するには

1. --role-name オプションを使用して create-role コマンドを呼び出し、IAM ロールの名前 (例:CodeDeployInstanceRole) と --assume-role-policy-document オプションを指定してアクセス権限を提供します。

API バージョン 2014-10-06196

Page 205: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

このインスタンスの IAM ロールを作成するときは、CodeDeployInstanceRole という名前を付け、CodeDeployRolePolicy.json という名前のファイルに必要なアクセス権限を含めます。

aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json

2. create-role コマンドを呼び出した出力で、ARN フィールドの値をメモします。以下に例を示します。

arn:aws:iam::123456789012:role/CodeDeployInstanceRole

AWS STS AssumeRole API を使用して各インスタンスに短期的な認証情報を生成するには、ロールARN が必要です。

IAM ロールの作成の詳細については、『IAM ユーザーガイド』の「AWS サービスにアクセス権限を委任するロールの作成」を参照してください。

既存のロールへのアクセス権限の割り当ての詳細については、AWS CLI Command Reference の put-role-policy を参照してください。

ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成するオンプレミスインスタンスの登録に使用する一時認証情報を生成する前に、一時認証情報を生成する IAMID (ユーザーまたはロール) を作成または選択する必要があります。sts:AssumeRole アクセス権限は、この IAM ID のポリシーの設定に含める必要があります。

IAM ID への sts:AssumeRole アクセス権限の付与の詳細については、「AWS サービスにアクセス許可を委任するロールの作成」および AssumeRole を参照してください。

一時認証情報を生成するには、2 とおりの方法があります。

• AWS CLI で assume-role コマンドを使用します。以下に例を示します。

aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name

各パラメーターの意味は次のとおりです。• 12345ACCOUNT が組織の 12 桁のアカウント番号です。• role-arn は、ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成する (p. 196)

で生成した引き受けるロールの ARN です。• session-name は、現在作成しているロールセッションへ付ける名前です。

Note

ID と認証システムを定期的にポーリングして最新のセッション認証情報をインスタンスにコピーする CRON スクリプトを使用している場合 (IAM セッション ARN 登録前提条件 (p. 195)で説明している一時認証情報を更新するメソッド 1)、代わりに、サポートされている AWSSDK を使用して AssumeRole を呼び出せます。

• AWS が提供しているツールを使用します。

aws-codedeploy-session-helper ツールは、AWS STS 認証情報を生成しインスタンスに配置するファイルに書き込みます。このツールは、IAM セッション ARN 登録前提条件 (p. 195) で説明している一時認証情報を更新するメソッド 2 に最適です。このメソッドでは、aws-codedeploy-session-helper ツールは、各インスタンスに配置され、IAM ユーザーのアクセス権限を使用してコマンドを実行します。各インスタンスは、このツールとともに同じ IAM ユーザーの認証情報を使用します。

詳細については、aws-codedeploy-session-helper GitHub リポジトリを参照してください。

API バージョン 2014-10-06197

Page 206: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

Note

IAM セッション認証情報を作成した後、オンプレミスインスタンスの任意の場所に保存します。次のステップで、AWS CodeDeploy エージェントがこの場所の認証情報にアクセスできるように設定します。

続ける前に、定期的に一時認証情報を更新するために使用するシステムを確認します。一時認証情報が更新されていない場合、オンプレミスインスタンスへのデプロイは失敗します。詳細については、IAM セッション ARN 登録前提条件 (p. 195) にある「一時認証情報を更新するシステム」を参照してください。

ステップ 3: オンプレミスインスタンスに設定ファイルを追加する

ルートまたは管理者権限を使用して、オンプレミスインスタンスに設定ファイルを追加します。この設定ファイルは、AWS CodeDeploy で使用される IAM の認証情報、および ターゲット AWS リージョンを宣言するために使用します。ファイルは、オンプレミスインスタンスの指定の場所に追加する必要があります。ファイルには、IAM の一時セッション ARN、シークレットキー ID とシークレットアクセスキー、および、ターゲット AWS リージョンが含まれている必要があります。

設定ファイルを追加するには

1. オンプレミスインスタンスの以下の場所に、codedeploy.onpremises.yml (Ubuntu Server またはRHEL オンプレミスインスタンスの場合)、または、conf.onpremises.yml (Windows Server オンプレミスインスタンスの場合) という名前のファイルを作成します。

• Ubuntu Server の場合: /etc/codedeploy-agent/conf• Windows Server の場合: C:\ProgramData\Amazon\CodeDeploy

2. テキストエディタを使用して、新しく作成した codedeploy.onpremises.yml またはconf.onpremises.yml ファイルに次の情報を追加します。

---iam_session_arn: iam-session-arnaws_credentials_file: credentials-fileregion: supported-region

各パラメーターの意味は次のとおりです。

• iam-session-arn は、「ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成する (p. 197)」でメモしておいた IAM セッションシークレットキー ARN です。

• credentials-file は、ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成する (p. 197) でメモした一時セッション ARN の認証情報ファイルの場所です。

• supported-region は、AWS General Reference の「リージョンとエンドポイント」にリストされている AWS CodeDeploy がサポートしているリージョンの 1 つです。

ステップ 4: AWS CodeDeploy デプロイのためオンプレミスインスタンスを準備する

AWS CLI をインストールして設定する

オンプレミスインスタンスに AWS CLI をインストールして設定します。(AWS CLI は AWS CodeDeployエージェントをダウンロードしてオンプレミスインスタンスにインストールするために使用されます。)

1. オンプレミスインスタンスに AWS CLI をインストールするには、「AWS Command Line InterfaceUser Guide」の「AWS コマンドラインインターフェイスの設定」にある指示に従います。

API バージョン 2014-10-06198

Page 207: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

Note

オンプレミスインスタンスを使用するための AWS CodeDeploy コマンドは、AWS CLI のバージョン 1.7.19 で使用できるようになりました。AWS CLI のすでにインストールしているバージョンがある場合は、aws --version コマンドを呼び出してバージョンを確認できます。

2. オンプレミスインスタンスで AWS CLI を設定するには、「AWS Command Line Interface UserGuide」の「AWS コマンドラインインターフェイスの設定」にある手順に従います。

Important

AWS CLI を設定する際は (たとえば、aws configure コマンドの呼び出しなど)、最低限 IAMセッション ARN 登録前提条件 (p. 195) に説明のあるアクセス権限を持つ IAM ユーザーのシークレットキー ID とシークレットアクセスキーを必ず指定します。

AWS_REGION 環境変数を設定する (Ubuntu Server および RHEL のみ)

Ubuntu Server または RHEL をオンプレミスインスタンスで実行していない場合は、このステップを飛ばして「AWS CodeDeploy エージェントをインストールする」へ進んでください。

Ubuntu Server または RHEL オンプレミスインスタンスに AWS CodeDeploy エージェントをインストールし、新しいバージョンが使用可能になったらいつでも AWS CodeDeploy エージェントを更新するようにインスタンスを有効にします。これを行うには、インスタンスの AWS_REGION 環境変数を AWSCodeDeploy がサポートしているリージョンの識別子に設定します。AWS CodeDeploy アプリケーション、デプロイグループ、およびアプリケーションリビジョンのあるリージョンの値に設定することをお勧めします (例:us-west-2)。リージョンのリストについては、『AWS General Reference』の「リージョンとエンドポイント」を参照してください。

環境変数を設定するには、端末から以下を呼び出します。

export AWS_REGION=supported-region

supported-region がリージョンの識別子である場所 (例:us-west-2)。

AWS CodeDeploy エージェントのインストール

• Ubuntu Server オンプレミスインスタンスの場合は、Ubuntu Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 143) の手順に従った後、このページに戻ります。

• RHEL オンプレミスインスタンスの場合は、Amazon Linux または RHEL の AWS CodeDeploy エージェントをインストールまたは再インストールします。 (p. 142) の手順に従った後、このページに戻ります。

• Windows Server オンプレミスインスタンスの場合は、Windows Server の AWS CodeDeploy エージェントのインストールまたは再インストール (p. 144) の手順に従った後、このページに戻ります。

ステップ 5: AWS CodeDeploy でオンプレミスインスタンスを登録します。

このステップの手順では、オンプレミスインスタンス自体からオンプレミスインスタンスを登録していることを想定します。オンプレミスインスタンスを、AWS CLI がインストールされ設定してある別のデバイスまたはインスタンスから登録できます。

AWS CLI を使用してオンプレミスインスタンスを AWS CodeDeploy に登録し、デプロイで使用できるようにします。

AWS CLI を使用するには、ステップ 3: オンプレミスインスタンスに設定ファイルを追加する (p. 198) で作成した一時セッション認証情報の ARN が必要です。たとえば、AssetTag12010298EX と指定したインスタンスの場合:

API バージョン 2014-10-06199

Page 208: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスの登録

arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX

register-on-premises-instance コマンドを呼び出し、以下を指定します。

• オンプレミスインスタンスを一意に識別する名前 (--instance-name オプションで指定)。

Important

オンプレミスインスタンスを識別するために、特にデバッグのため、オンプレミスインスタンスの一意な特徴を示す名前 (たとえば、もしあれば、STS 認証情報の session-name とシリアルナンバー、または内部アセット識別子など) を指定することを強くお勧めします。名前として MAC アドレスを指定した場合、MAC アドレスにはコロン (:) など AWS CodeDeploy が許可しない文字が含まれることに注意してください。許可された文字の一覧については、「AWSCodeDeploy の制限 (p. 354)」を参照してください。

• 複数のオンプレミスインスタンスを認証するために ステップ 1: オンプレミスインスタンスが引き受ける IAM ロールを作成する (p. 196) で設定した IAM セッション ARN。

以下に例を示します。

aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name

各パラメーターの意味は次のとおりです。

• name-of-instance は、オンプレミスインスタンスを識別するのに使用する名前です(例:AssetTag12010298EX)。

• account-id は、組織の 12 桁のアカウント IDです (例: 111222333444)。• role-to-assume は、インスタンス用に作成した IAM ロールの名前です (例:CodeDeployInstanceRole)。

• session-name は、ステップ 2: AWS STS を使用して各インスタンスに一時認証情報を生成する (p. 197) で指定したセッションロールの名前です。

ステップ 6: オンプレミスインスタンスのタグ付け

AWS CLI または AWS CodeDeploy コンソールのいずれかを使用して、オンプレミスインスタンスにタグ付けができます。(AWS CodeDeploy はオンプレミスインスタンスタグを使用してデプロイ中にデプロイターゲットを識別します。)

オンプレミスインスタンスにタグ付けするには (CLI)

• add-tags-to-on-premises-instances コマンドを呼び出し、以下を指定します。

• オンプレミスインスタンスを一意に識別する名前 (--instance-names オプションで指定)。• 使用するオンプレミスインスタンスのタグキーの名前とタグ値 (--tags オプションで指定)。名前

と値の両方を指定する必要があります。AWS CodeDeploy は値のみがあるオンプレミスインスタンスタグを許可しません。

以下に例を示します。

aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem

API バージョン 2014-10-06200

Page 209: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスのオペレーションの管理

オンプレミスインスタンスにタグ付けするには (コンソール)

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューから [On-premises instances] を選択します。3. オンプレミスインスタンスのリストで、タグ付けするオンプレミスインスタンスの横にある矢印を選

択します。4. タグのリストで、目的のタグキーとタグ値を選択するか、または入力します。タグキーとタグ値を入

力したら、別の列が表示されます。最大 10 個のタグにこれを繰り返すことができます。タグを削除

するには、削除アイコン ( ) を選択します。5. タグを追加したら、[Update Tags] を選択します。

ステップ 7: アプリケーションリビジョンをオンプレミスインスタンスにデプロイする

登録され、タグ付けされたオンプレミスインスタンスにアプリケーションリビジョンをデプロイする準備ができました。

Amazon EC2 インスタンスにアプリケーションリビジョンをデプロイするのと同様の方法でオンプレミスインスタンスにアプリケーションリビジョンをデプロイします。手順については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。これらの指示には、アプリケーションの作成、開発グループの作成、およびアプリケーションリビジョンの準備を含む前提条件へのリンクが含まれています。シンプルなサンプルアプリケーションリビジョンをデプロイすることが必要な場合は、チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat Enterprise Linux) (p. 95) の ステップ 2: サンプルのアプリケーションリビジョンを作成する (p. 96) で説明してあるものを作成できます。

Important

オンプレミスインスタンスを対象としたデプロイグループの作成の一部として、AWSCodeDeploy サービスロールを再利用する場合は、Tag:get* をサービスロールのポリシーステートメントの Action 部分に含める必要があります。詳細については、「ステップ 3: AWSCodeDeploy のサービスロールを作成する (p. 22)」を参照してください。

ステップ 8: オンプレミスインスタンスへのデプロイの追跡

登録されタグ付けされたオンプレミスインスタンスへアプリケーションリビジョンをデプロイした後、デプロイの進行状況を追跡できます。

Amazon EC2 インスタンスへのデプロイの追跡と同様の方法でオンプレミスインスタンスへのデプロイの追跡をします。手順については、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

AWS CodeDeploy でのオンプレミスインスタンスのオペレーションの管理このセクションの手順では、AWS CodeDeploy に登録したオンプレミスインスタンスに対するオペレーションを管理します。オンプレミスインスタンスに関する情報の取得、タグの削除、アンインストール、登録解除などのオペレーションが管理対象になります。

API バージョン 2014-10-06201

Page 210: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスのオペレーションの管理

トピック• 単一のオンプレミスインスタンスについての情報を取得する (p. 202)• 複数のオンプレミスインスタンスに関する情報を取得する (p. 202)• オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除する (p. 203)• AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタ

ンスから削除する (p. 204)• オンプレミスインスタンスの自動的な登録解除 (p. 205)• 手動でオンプレミスのインスタンスの登録を解除する (p. 206)

単一のオンプレミスインスタンスについての情報を取得するAWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266) にある手順に従って、単一のオンプレミスインスタンスに関する情報を取得できます。AWS CLI または AWS CodeDeploy コンソールを使用して、単一のオンプレミスインスタンスに関する情報を取得できます。

単一のオンプレミスインスタンスについての情報を取得するには (CLI)

• get-on-premises-instance コマンドを呼び出し、オンプレミスインスタンスを一意に識別する名前を指定します (--instance-name オプションを使用)。

aws deploy get-on-premises-instance --instance-name AssetTag12010298EX

単一のオンプレミスインスタンスに関する情報を取得するには (コンソール)

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで、[On-premises instances] を選択します。3. オンプレミスインスタンスのリストで、オンプレミスインスタンスの横にある矢印を選択します。オ

ンプレミスインスタンスに関する詳細が表示されます。

複数のオンプレミスインスタンスに関する情報を取得するAWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266) にある手順に従って、オンプレミスインスタンスに関する情報を取得できます。AWS CLI または AWS CodeDeploy コンソールを使用して、オンプレミスインスタンスに関する情報を取得できます。

複数のオンプレミスインスタンスに関する情報を取得するには (CLI)

1. オンプレミスインスタンスの名前のリストでは、list-on-premises-instances コマンドを呼び出し、以下を指定します。

• すべての登録または登録解除されたオンプレミスインスタンスに関する情報を取得するかどうか(--registration-status オプションの Registered または Deregistered でそれぞれ指定)。これを省略すると、登録されている、および登録解除されたオンプレミスインスタンスの名前が両方とも返されます。

• 特定のオンプレミスインスタンスのタグが付けられたオンプレミスインスタンスに関する情報だけを取得するかどうか (--tag-filters オプションで指定)。各オンプレミスインスタンスタグ

API バージョン 2014-10-06202

Page 211: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスのオペレーションの管理

で、Key、Value、および Type を指定します (常に KEY_AND_VALUE である必要があります)。複数のオンプレミスインスタンスタグは、Key、Value、Type の間にスペースを入れて区切ります。

以下に例を示します。

aws deploy list-on-premises-instances --registration-status Registered --tag-filters Key=Name,Value=CodeDeployDemo-OnPrem,Type=KEY_AND_VALUE Key=Name,Value=CodeDeployDemo-OnPrem-Beta,Type=KEY_AND_VALUE

2. 詳細については、オンプレミスインスタンスの名前で batch-get-on-premises-instances コマンドを呼び出します (--instance-names オプションで指定)。

aws deploy batch-get-on-premises-instances --instance-names AssetTag12010298EX AssetTag09920444EX

複数のオンプレミスインスタンスに関する情報を取得するには (コンソール)

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューから [On-premises instances] を選択します。オンプレミスインスタンスに関する情報が表示されます。

オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除する通常、タグが使われなくなった場合や、タグに依存するデプロイグループからオンプレミスインスタンスを削除する場合は、オンプレミスインスタンスからオンプレミスインスタンスタグを削除します。AWSCLI または AWS CodeDeploy コンソールを使用してオンプレミスインスタンスからオンプレミスインスタンスタグを削除できます。

登録を解除する前にオンプレミスインスタンスからオンプレミスインスタンスタグを削除する必要はありません。

オンプレミスインスタンスからオンプレミスインスタンスタグを手動で削除しても、インスタンスの登録は解除されません。AWS CodeDeploy エージェントはインスタンスからアンインストールされません。インスタンスから設定ファイルは削除されません。インスタンスに関連付けられた IAM ユーザーは削除されません。

自動的にオンプレミスインスタンスの登録を解除するには、オンプレミスインスタンスの自動的な登録解除 (p. 205) を参照してください。

オンプレミスインスタンスの登録を手動で解除するには、手動でオンプレミスのインスタンスの登録を解除する (p. 206) を参照してください。

AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除するには、AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除する (p. 204) を参照してください。

AWS CodeDeploy エージェントだけをオンプレミスインスタンスから手動でアンインストールするには、AWS CodeDeploy エージェントのオペレーションの管理 (p. 139) を参照してください。

API バージョン 2014-10-06203

Page 212: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスのオペレーションの管理

関連する IAM ユーザーを手動で削除するには、「AWS アカウントから IAM ユーザーを削除する」を参照してください。

オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除するには (CLI)

• remove-tags-from-on-premises-instances を呼び出し、以下を指定します。

• オンプレミスインスタンスを一意に識別する名前 (--instance-names オプションで指定)。• 削除するタグの名前と値 (--tags オプションで指定)。

以下に例を示します。

aws deploy remove-tags-from-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem

オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除するには (コンソール)

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで、[On-premises instances] を選択します。3. オンプレミスインスタンスのリストで、タグを削除するオンプレミスインスタンスの横にある矢印を

選択します。4.

[Tags] エリアで、削除する各タグの横にある削除アイコン ( ) を選択します。5. タグを削除したら、[Update tags] を選択します。

AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除する通常、AWS CodeDeploy エージェントをアンインストールし、今後デプロイする予定がなければ、オンプレミスインスタンスから設定ファイルを削除します。

Note

AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除しても、オンプレミスインスタンスの登録は解除されません。オンプレミスインスタンスに関連付けられたオンプレミスインスタンスタグの関連付けは解除されません。オンプレミスインスタンスに関連付けられた IAM ユーザーは削除されません。自動的にオンプレミスインスタンスの登録を解除するには、オンプレミスインスタンスの自動的な登録解除 (p. 205) を参照してください。オンプレミスインスタンスの登録を手動で解除するには、手動でオンプレミスのインスタンスの登録を解除する (p. 206) を参照してください。オンプレミスインスタンスタグの関連付けを手動で解除するには、オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除する (p. 203) を参照してください。AWS CodeDeploy エージェントをオンプレミスインスタンスから手動でアンインストールするには、AWS CodeDeploy エージェントのオペレーションの管理 (p. 139) を参照してください。関連する IAM ユーザーを手動で削除するには、「AWS アカウントから IAM ユーザーを削除する」を参照してください。

オンプレミスインスタンスから、AWS CLI を使用して uninstall コマンドを呼び出します。

API バージョン 2014-10-06204

Page 213: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドオンプレミスインスタンスのオペレーションの管理

以下に例を示します。

aws deploy uninstall

uninstall コマンドは次のことを行います。

1. オンプレミスインスタンスで実行中の AWS CodeDeploy エージェントを停止します。2. オンプレミスインスタンスから AWS CodeDeploy エージェントをアンインストールします。3. オンプレミスインスタンスから設定ファイルを削除します。(Ubuntu Server および RHEL の場合は、/

etc/codedeploy-agent/conf/codedeploy.onpremises.yml です。Windows Server の場合はC:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml です。)

オンプレミスインスタンスの自動的な登録解除通常は、デプロイする計画がなくなった後、オンプレミスインスタンスの登録を解除します。オンプレミスインスタンスの登録を解除すると、オンプレミスインスタンスがデプロイグループのオンプレミスインスタンスタグの一部であっても、オンプレミスインスタンスはデプロイには含まれなくなります。AWSCLI を使用してオンプレミスインスタンスの登録を解除できます。

Note

AWS CodeDeploy コンソールを使用してオンプレミスインスタンスの登録を解除することはできません。また、オンプレミスインスタンスの登録を解除しても、オンプレミスインスタンスに関連付けられたオンプレミスインスタンスタグの関連付けは解除されません。AWS CodeDeployエージェントはオンプレミスインスタンスからアンインストールされません。オンプレミスインスタンスの設定ファイルはオンプレミスインスタンスから削除されません。AWS CodeDeploy コンソールを使用して、このセクションの一部 (ただしすべてではない) のアクティビティを実行するには、AWS CodeDeploy コンソールセクションの 手動でオンプレミスのインスタンスの登録を解除する (p. 206) を参照してください。オンプレミスインスタンスタグの関連付けを手動で解除するには、オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除する (p. 203) を参照してください。AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除するには、AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除する (p. 204) を参照してください。AWS CodeDeploy エージェントのみをオンプレミスインスタンスから手動でアンインストールするには、AWS CodeDeploy エージェントのオペレーションの管理 (p. 139) を参照してください。

AWS CLI を使用して deregister コマンドを呼び出し、以下を指定します。

• AWS CodeDeploy に対してオンプレミスインスタンスを一意に識別する名前 (--instance-name オプションで指定)。

• 必要に応じて、オンプレミスインスタンスに関連付けられた IAM ユーザーを削除するかどうか (デフォルトの --delete-iam-user オプションで指定)。オンプレミスインスタンスに関連付けられた IAMユーザーを削除しない場合は、--no-delete-iam-user オプションを指定します。

• 必要に応じて、AWS CodeDeploy にオンプレミスインスタンスを登録した AWS リージョン (--regionオプションで指定)。これは、AWS General Reference の「リージョンとエンドポイント」のリストにあるサポートされているリージョンの 1 つである必要があります (例: us-west-2)。このオプションを指定しない場合、IAM ユーザーの呼び出しに関連付けられているデフォルトの AWS リージョンが使用されます。

以下に例を示します。

aws deploy deregister --instance-name AssetTag12010298EX --delete-iam-user --region us-west-2

API バージョン 2014-10-06205

Page 214: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンスの詳細の表示

deregister コマンドは次のことを行います。

1. AWS CodeDeploy でオンプレミスインスタンスの登録を解除します。2. 指定した場合、オンプレミスインスタンスに関連付けられている IAM ユーザーを削除します。

オンプレミスインスタンスの登録を解除した後、AWS CodeDeploy が登録を解除されたオンプレミスインスタンスに関する記録を削除するまでは、同じ名前または同じ関連 IAM ユーザー名で代わりのオンプレミスインスタンスを作成することはできません。通常、これには約 24 時間かかります。

このコマンドでエラーが発生した場合、エラーメッセージが表示され、手動で残りのステップを完了する方法について説明します。それ以外の場合は、成功メッセージが表示され、uninstall コマンドを呼び出す方法が説明されます。

手動でオンプレミスのインスタンスの登録を解除する通常は、デプロイする計画がなくなった後、オンプレミスインスタンスの登録を解除します。AWS CLI を使用して手動でオンプレミスインスタンスの登録を解除します。

手動でオンプレミスインスタンスの登録を解除しても、AWS CodeDeploy エージェントはアンインストールされません。インスタンスから設定ファイルは削除されません。インスタンスに関連付けられた IAMユーザーは削除されません。インスタンスに関連付けられるタグは削除されません。

AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除するには、AWS CodeDeploy エージェントを自動でアンインストールし、設定ファイルをオンプレミスインスタンスから削除する (p. 204) を参照してください。

手動で AWS CodeDeploy エージェントのみをアンインストールするには、AWS CodeDeploy エージェントのオペレーションの管理 (p. 139) を参照してください。

関連する IAM ユーザーを手動で削除するには、「AWS アカウントから IAM ユーザーを削除する」を参照してください。

関連付けられたオンプレミスインスタンスタグのみを手動で削除するには、オンプレミスインスタンスから手動でオンプレミスインスタンスタグを削除する (p. 203) を参照してください。

• deregister-on-premises-instance コマンドを呼び出し、オンプレミスインスタンスを一意に識別する名前を指定します (--instance-name オプションを使用)。

aws deploy deregister-on-premises-instance --instance-name AssetTag12010298EX

オンプレミスインスタンスの登録を解除した後、AWS CodeDeploy が登録を解除されたオンプレミスインスタンスに関する記録を削除するまでは、同じ名前または同じ関連 IAM ユーザー名で代わりのインスタンスを作成することはできません。通常、これには約 24 時間かかります。

AWS CodeDeploy によるインスタンスの詳細の表示

AWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、デプロイで使用されているインスタンスに関する詳細を表示できます。

AWS CodeDeploy API アクションを使用したインスタンスの表示の詳細については、「GetDeploymentInstance」、「ListDeploymentInstances」、および「ListOnPremisesInstances」を参照してください。

API バージョン 2014-10-06206

Page 215: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンスの詳細の表示 (コンソール)

トピック• インスタンスの詳細の表示 (コンソール) (p. 207)• インスタンスの詳細の表示 (CLI) (p. 207)

インスタンスの詳細の表示 (コンソール)インスタンスの詳細を表示するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

3. デプロイの詳細を表示するには、インスタンスに対応するデプロイ ID の横にある矢印を選択します。4. [Instances] で、[View all instances] を選択します。5. インスタンスの個別のデプロイライフサイクルイベントに関する詳細を表示するには、デプロイの詳細

ページの [Events] 列で、[View events] を選択します。

Note

いずれかのライフサイクルイベントに対して [Failed] が表示された場合、インスタンスの詳細ページで、[View logs]、[View in EC2]、またはその両方を選択します。トラブルシューティングのヒントについては、「インスタンスの問題のトラブルシューティング (p. 369)」を参照してください。

6. Amazon EC2 インスタンスに関する詳細情報を表示したいが、インスタンスの詳細ページで [View inEC2] が利用できない場合は、デプロイの詳細ページに戻り、[Instance ID] 列で Amazon EC2 インスタンスの ID を選択します。

インスタンスの詳細の表示 (CLI)AWS CLI を使用してインスタンスの詳細を表示するには、get-deployment-instance コマンドまたはlist-deployment-instances コマンドを呼び出します。

1 つのインスタンスに関する詳細を表示するには、get-deployment-instance コマンドを呼び出し、以下を指定します。

• 一意のデプロイ ID。デプロイ ID を取得するには、list-deployments コマンドを呼び出します。• 一意のインスタンス ID。インスタンス ID を取得するには、list-deployment-instances コマンドを呼び出

します。

デプロイで使用するインスタンスの ID のリストを表示するには、list-deployment-instances コマンドを呼び出し、以下を指定します。

• 一意のデプロイ ID。デプロイ ID を取得するには、list-deployments コマンドを呼び出します。

API バージョン 2014-10-06207

Page 216: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンスの状態

• オプションで、デプロイの状態別に特定のインスタンス ID のみを含めるかどうか。(指定しない場合、一致するすべてのインスタンス ID が、デプロイの状態にかかわらず表示されます。)

AWS CodeDeploy インスタンスの状態AWS CodeDeploy はデプロイグループのインスタンスのヘルスステータスをモニタリングします。正常なインスタンスの数が、デプロイ中にデプロイグループに指定された正常なインスタンスの最小数を下回ると、デプロイが失敗します。たとえば、インスタンスの 85% がデプロイ中に正常な状態を維持する必要があり、デプロイグループに 10 個のインスタンスが含まれている場合、1 つのインスタンスへのデプロイが失敗したときであっても、デプロイ全体が失敗します。これは、インスタンスがオフラインになり、最新のアプリケーションリビジョンをインストールできるようになると、使用できる正常なインスタンスの数が既に 90% にまで下がるためです。失敗したインスタンスと別のオフラインインスタンスを加えると、正常で使用できるインスタンスは、全体の 80% のみとなることを意味します。AWS CodeDeploy により、デプロイ全体が失敗します。

デプロイ全体が成功するには、以下が満たされている必要があります。

• AWS CodeDeploy でデプロイの各インスタンスにデプロイできる。• 少なくとも 1 つのインスタンスへのデプロイに成功する。つまり、デプロイ全体が成功するには、最小

限の正常なホストの値が 0 の場合であっても、少なくとも 1 つ以上のインスタンスへのデプロイに成功する必要があります (1 つ以上のインスタンスが正常)。

正常なインスタンスに必要な最小数は、デプロイ設定の一部として定義されます。Important

Blue/Green デプロイ中に、デプロイ設定と最小限の正常なホストの値は、元の環境ではなく置き換え先環境のインスタンスに適用されます。ただし、元の環境のインスタンスがロードバランサーから登録解除されている場合、1 つの元のインスタンスが正常な登録解除に失敗したときであっても、全体的なデプロイは失敗とマークされます。

AWS CodeDeploy は、最小限の正常なホストの値を一般的に使用した 3 つのデフォルトのデプロイ設定を提供します。

デフォルトのデプロイ設定名 事前定義された最小限の正常なホストの値

CodeDeployDefault.OneAtATime 99%

CodeDeployDefault.HalfAtATime 50%

CodeDeployDefault.AllAtOnce 0

デフォルトのデプロイ設定の詳細は、「AWS CodeDeploy でデプロイ設定を使用する (p. 212)」で参照できます。

AWS CodeDeploy でカスタムデプロイ設定を作成して、独自の最小限の正常なホストの値を定義できます。これらの値は、次のオペレーションを使用して整数または割合 (%) として定義できます。

• AWS CLI で create-deployment-config コマンドを使用する場合は minimum-healthy-hosts。• AWS CodeDeploy API の MinimumHealthyHosts データ型の Value。• AWS CloudFormation テンプレートで AWS::CodeDeploy::DeploymentConfig を使用する場合はMinimumHealthyHosts。

トピック

API バージョン 2014-10-06208

Page 217: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドヘルスステータス

• ヘルスステータス (p. 209)• 正常なインスタンスとデプロイの最小数 (p. 210)

ヘルスステータスAWS CodeDeploy は各インスタンスに 2 つのヘルスステータス値 (リビジョンの状態とインスタンスの状態) を割り当てます。

リビジョンの状態

リビジョンの状態は、現在インスタンスにインストールされているアプリケーションリビジョンに基づきます。以下のステータス値があります。• Current: インスタンスにインストールされているリビジョンは、デプロイグループの前回成功した

デプロイのリビジョンに一致します。• Old: インスタンスにインストールされているリビジョンは、アプリケーションの以前のバージョン

と一致します。• Unknown: アプリケーションリビジョンはインスタンスに正常にインストールされていません。

インスタンスの状態

インスタンスの状態は、インスタンスへのデプロイが成功したかどうかに基づきます。以下の値があります。• Healthy: インスタンスへの前回のデプロイは成功しました。• Unhealthy: インスタンスへのリビジョンのデプロイの試みは失敗したか、リビジョンがインスタン

スにデプロイされていません。

AWS CodeDeploy はリビジョンの状態とインスタンスの状態を使用して、次の順序でデプロイグループのインスタンスにデプロイをスケジュールします。

1. インスタンスの状態が Unhealthy。2. リビジョンの状態が Unknown。3. リビジョンの状態が Old。4. リビジョンの状態が Current。

デプロイ全体が成功すると、リビジョンは更新され、デプロイグループのヘルスステータスの値が更新されて、最新のデプロイを反映します。

• デプロイに成功したすべての最新のインスタンスは current のままになります。それ以外の場合は、unknown になります。

• デプロイに成功したすべての古いインスタンスまたは不明なインスタンスは current になります。それ以外の場合は、old または unknown のままになります。

• デプロイに成功したすべての正常なインスタンスは healthy のままになります。それ以外の場合は、unhealthy になります。

• デプロイに成功したすべての異常なインスタンスは healthy になります。それ以外の場合は、unhealthyのままになります。

全体的なデプロイが失敗するか、停止している場合:

• AWS CodeDeploy がアプリケーションリビジョンのデプロイを試みた各インスタンスでは、そのインスタンスのデプロイの試みが成功したか失敗したかによって、そのインスタンスの状態が healthy またはunhealthy に設定されています。

API バージョン 2014-10-06209

Page 218: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド正常なインスタンスとデプロイの最小数

• AWS CodeDeploy がアプリケーションリビジョンのデプロイを試みなかった各インスタンスは、インスタンスの状態の値 current を保持します。

• デプロイグループのリビジョンに変更はありません。

正常なインスタンスとデプロイの最小数AWS CodeDeploy では、2 つの主な目的で、デプロイに対して正常なインスタンスの最小数を指定できます。

• 全体的なデプロイの成功または失敗を判断する。アプリケーションリビジョンが少なくとも最小数の正常なインスタンスに正しくデプロイされた場合、デプロイは成功します。

• デプロイが続行するためにデプロイ中に正常である必要があるインスタンス数を決定する。

デプロイグループの正常なインスタンスの最小数は、インスタンス数、または合計インスタンス数の割合(%) として指定できます。割合 (%) を指定する場合、AWS CodeDeploy はデプロイの開始時に割合 (%) を同等のインスタンス数に変換し、端数がある場合は切り上げます。

AWS CodeDeploy はデプロイプロセス中にデプロイグループのインスタンスのヘルスステータスを追跡し、デプロイの指定された正常なインスタンスの最小数を使用して、デプロイを続行するかどうか判断します。基本的な原則は、デプロイによって、正常なインスタンスの数が、指定した最小数を下回ってはならないということです。このルールの 1 つの例外は、デプロイグループの正常なインスタンスの数が、指定した最小数より最初から少ない場合です。その場合、デプロイプロセスによってそれ以上正常なインスタンスの数が減ることはありません。

Note

AWS CodeDeploy は現在停止状態にあるものも含めて、デプロイグループのすべてのインスタンスのデプロイを試みます。最小限の正常なホストの計算では、停止中のインスタンスは失敗したインスタンスと同じ影響を与えます。停止中のインスタンスが多すぎるために失敗したデプロイを解決するには、インスタンスを再起動するか、タグを変更してデプロイグループから除外します。

AWS CodeDeploy はアプリケーションリビジョンをデプロイグループの異常なインスタンスにデプロイするよう試みて、デプロイプロセスを開始します。AWS CodeDeploy はデプロイに成功するたびにインスタンスのヘルスステータスを healthy に変更し、それをデプロイグループの正常なインスタンスに追加します。次に、AWS CodeDeploy は現在の正常なインスタンスの数を、指定された正常なインスタンスの最小数と比較します。

• 正常なインスタンスの数が、正常なインスタンスの指定された最小数以下である場合、AWSCodeDeploy はデプロイをキャンセルし、より多くのデプロイによって正常なインスタンスの数が減らないようにします。

• 正常なインスタンスの数が指定された正常なインスタンスの最小数よりも少なくとも 1 つ大きい場合、AWS CodeDeploy はアプリケーションリビジョンを正常なインスタンスの元のセットにデプロイします。

正常なインスタンスへのデプロイが失敗した場合、AWS CodeDeploy はそのインスタンスのヘルスステータスを unhealthy に変更します。デプロイが進行するにつれて、AWS CodeDeploy は正常なインスタンスの現在の数を更新し、正常なインスタンスの指定された最小数と比較します。デプロイプロセスのある時点で、正常なインスタンスの数が指定された最小数にまで減った場合、AWS CodeDeploy はデプロイを停止します。この方法により、次のデプロイが失敗し、正常なインスタンスの数が指定された最小数を下回ることを回避できます。

Note

指定する正常なインスタンスの最小数が、デプロイグループの合計インスタンス数より少ないことを確認します。割合 (%) の値を指定する場合、切り上げられることを覚えておいてください。

API バージョン 2014-10-06210

Page 219: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド正常なインスタンスとデプロイの最小数

それ以外の場合、デプロイが開始すると、正常なインスタンスの数は正常なインスタンスの指定された最小数以下となり、AWS CodeDeploy によりデプロイ全体が直ちに失敗します。

また、AWS CodeDeploy は指定された正常なインスタンスの最小数および正常なインスタンスの実際の数を使用して、複数のインスタンスにアプリケーションリビジョンをデプロイするかどうかと、その方法を決定します。デフォルトでは、AWS CodeDeploy は正常なインスタンスの数が、指定された正常なインスタンスの最小数を下回るリスクなく、可能な限り多くのインスタンスにアプリケーションリビジョンをデプロイします。以下に例を示します。

• デプロイグループに 10 個のインスタンスがあり、最小の正常なインスタンス数を 9 に設定した場合、AWS CodeDeploy は一度に 1 つのインスタンスをデプロイします。

• デプロイグループに 10 個のインスタンスがあり、最小の正常なインスタンス数を 0 に設定した場合、AWS CodeDeploy は同時に各インスタンスにデプロイします。

次の例では、10 個のインスタンスがあるデプロイグループを前提としています。

正常なインスタンスの最小数: 95%

AWS CodeDeploy は正常なインスタンスの最小数を 10 個のインスタンスに切り上げます。これは正常なインスタンスの数と等しくなります。全体的なデプロイは、いずれのインスタンスにもリビジョンをデプロイすることなく、直ちに失敗します。

正常なインスタンスの最小数: 9

AWS CodeDeploy は一度に 1 個のインスタンスにリビジョンをデプロイします。いずれかのインスタンスへのデプロイが失敗した場合、正常なインスタンスの数は正常なインスタンスの最小数に等しくなるため、AWS CodeDeploy のデプロイ全体は直ちに失敗します。このルールの例外は、最後のインスタンスが失敗した場合でも、デプロイは引き続き成功することです。

AWS CodeDeploy は、一度に 1 個のインスタンスずつ、デプロイが失敗するか、デプロイ全体が完了するまで、デプロイを続行します。10 のデプロイすべてに成功した場合、デプロイグループには 10個の正常なインスタンスが含まれます。

正常なインスタンスの最小数: 8

AWS CodeDeploy は一度に 2 個のインスタンスにリビジョンをデプロイします。これらのうち 2 つのデプロイに失敗した場合、AWS CodeDeploy によりデプロイ全体が直ちに失敗します。このルールの例外は、最後のインスタンスが 2 番目に失敗した場合でも、デプロイは成功することです。

正常なインスタンスの最小数: 0

AWS CodeDeploy はデプロイグループ全体に一度にリビジョンをデプロイします。デプロイ全体が成功するには、インスタンスに対して、少なくとも 1 つ以上のデプロイが成功する必要があります。正常なインスタンスが 0 の場合、デプロイは失敗します。これは、デプロイ全体を成功としてマークするには、正常なインスタンスの最小値が 0 であっても、デプロイ全体の完了時に 1 つ以上のインスタンスが正常であることが要件であるためです。

API バージョン 2014-10-06211

Page 220: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミスコンピューティングプラットフォームのデプロイ設定

AWS CodeDeploy でデプロイ設定を使用する

デプロイ設定とは、デプロイ中に AWS CodeDeploy が使用する一連のルール、成功条件、および失敗条件です。これらのルールと条件は、デプロイ先が EC2/オンプレミス コンピューティングプラットフォームを選択します。 であるか AWS Lambda コンピューティングプラットフォームを選択します。 であるかによって異なります。

EC2/オンプレミスコンピューティングプラットフォームのデプロイ設定

EC2/オンプレミス コンピューティングプラットフォームを選択します。 にデプロイする場合、デプロイ設定により、最小限の正常なホストの値の使用を通じて、デプロイ中の任意の時点で利用できる必要があるインスタンスの数または割合 (%) を指定します。

AWS により提供される 3 つの定義済みのデプロイ設定の一つを使用するか、またはカスタムデプロイ設定を作成できます。デプロイ設定に指定しない場合、AWS CodeDeployは、CodeDeployDefault.OneAtATime デプロイ設定を使用します。

AWS CodeDeploy がデプロイ時にインスタンスのヘルス状態をモニタリングおよび評価する方法の詳細については、「Instance Health (p. 208)」を参照してください。AWS アカウントに既に登録されたデプロイ設定のリストを表示するには、「View Deployment Configuration Details (p. 216)」を参照してください。

EC2/オンプレミスコンピューティングプラットフォームの事前定義されたデプロイ設定次の表は、定義済みのデプロイ設定を一覧表示します。

デプロイ設定 説明

CodeDeployDefault.AllAtOnce インプレースデプロイ:一度に可能な限り多くのインスタンスへアプリケーションリビジョンをデプロイするよう試みます。アプリケーションリビジョンが 1 つ以上のインスタンスにデプロイされる場合、デプロイ全体のステータスは Succeeded として表示されます。アプリケーションリビジョンがいずれのインスタンスにもデプロイされない場合、デプロイ全体のステータスは Failed として表示されます。9 つのインスタンスの例を使い、CodeDeployDefault.AllAtOnce は、一度に 9 つのインスタンスすべてにデプロイするよう試みます。デプロイ全体は 1 つでもインスタンスへのデプロイが成功すると成功し、9 つすべてのインスタンスへのデプロイが失敗した場合に限り失敗します。

API バージョン 2014-10-06212

Page 221: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド事前定義されたデプロイ設定

デプロイ設定 説明Blue/Green デプロイ

• 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.AllAtOnce と同じデプロイルールに従います。

• トラフィックの再ルーティング: 置き換え先環境のすべてのインスタンスに一度にトラフィックをルーティングします。トラフィックが少なくとも 1 つのインスタンスに正常に再ルーティングされた場合が成功です。すべてのインスタンスへの再ルーティングが失敗した時点で失敗です。

CodeDeployDefault.HalfAtATime インプレースデプロイ:

一度に最大半分のインスタンスにデプロイします(端数は切り捨てられます)。デプロイ全体は、アプリケーションリビジョンが少なくとも半分のインスタンスにデプロイされた場合は成功で (端数は切り捨てられます) それ以外の場合、デプロイは失敗です。9 つのインスタンスの例では、4 つまでのインスタンスに同時にデプロイされます。デプロイ全体は 5 つ以上のインスタンスへのデプロイが成功した場合は成功で、それ以外の場合は、デプロイは失敗です。

Blue/Green デプロイ

• 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.HalfAtATime と同じデプロイルールに従います。

• トラフィックの再ルーティング: 置き換え先環境の最大半分のインスタンスに一度にトラフィックをルーティングします。少なくとも半分のインスタンスへの再ルーティングが成功した場合が成功です。それ以外の場合は失敗です。

API バージョン 2014-10-06213

Page 222: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラットフォームのデプロイ設定

デプロイ設定 説明

CodeDeployDefault.OneAtATime インプレースデプロイ:

一度に 1 つのインスタンスにのみアプリケーションリビジョンをデプロイします。

複数のインスタンスを含むデプロイグループの場合。

• デプロイ全体はアプリケーションリビジョンがすべてのインスタンスへデプロイされた場合、成功します。このルールの例外は、最後のインスタンスへのデプロイが失敗した場合に、デプロイ全体が成功することです。これは AWSCodeDeploy が一度に 1 つのインスタンスのみCodeDeployDefault.OneAtATime 設定でオフラインにするためです。

• デプロイ全体はアプリケーションリビジョンが最後のインスタンス以外へのデプロイに失敗すると、ただちに失敗します。

• 9 つのインスタンスを使用する例では、1 つのインスタンスに同時にデプロイされます。デプロイ全体は最初の 8 つのインスタンスへのデプロイが成功すると成功で、最初の 8 つのインスタンスのいずれかへのデプロイが失敗すると失敗します。

1 つのインスタンスのみを含むデプロイグループでは、1 つのインスタンスへのデプロイが成功した場合にのみ、デプロイは全体は成功します。

Blue/Green デプロイ

• 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.OneAtATime と同じデプロイルールに従います。

• トラフィックの再ルーティング: 置き換え先環境で一度に 1 つのインスタンスにトラフィックをルーティングします。トラフィックがすべての置き換え先インスタンスに正常に再ルーティングされた場合が成功です。最初に再ルーティングが失敗した時点で失敗です。このルールの例外は、最後のインスタンスが登録に失敗しても、デプロイ全体が成功することです。

AWS Lambda コンピューティングプラットフォームのデプロイ設定

AWS Lambda コンピューティングプラットフォームを選択します。 へのデプロイでは、デプロイ設定により、アプリケーションで新しい Lambda 関数のバージョンにトラフィックが移行される方法が指定されます。

API バージョン 2014-10-06214

Page 223: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド事前定義されたデプロイ設定

デプロイ中にトラフィックを移行できる 3 つの方法があります。

• Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合(%) を分単位で指定する、事前定義された Canary オプションから選択できます。

• 線形: トラフィックは、毎回同じ間隔 (分) の等しい増分で移行します。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。

• All-at-once: トラフィックはすべて、元の Lambda 関数から、更新された Lambda 関数のバージョンに一度に移行されます。

独自の Canary または線形のデプロイ設定を作成することもできます。

AWS Lambda コンピューティングプラットフォームの事前定義されたデプロイ設定次の表に、AWS Lambda のデプロイで利用できる事前定義された設定を一覧表示します。

デプロイ設定 説明

CodeDeployDefault.LambdaCanary10Percent5Minutes最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 5 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent10Minutes最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 10 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent15Minutes最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 15 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent30Minutes最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 30 分後にデプロイされます。

CodeDeployDefault.LambdaLinear10PercentEvery1Minuteすべてのトラフィックが移行されるまで、毎分トラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery2Minutesすべてのトラフィックが移行されるまで、2 分ごとにトラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery3Minutesすべてのトラフィックが移行されるまで、3 分ごとにトラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery10Minutesすべてのトラフィックが移行されるまで、30 分ごとにトラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaAllAtOnce すべてのトラフィックは、更新された Lambda 関数に一度に移行します。

トピック

• Create a Deployment Configuration (p. 216)• View Deployment Configuration Details (p. 216)

API バージョン 2014-10-06215

Page 224: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ設定を作成する

• Delete a Deployment Configuration (p. 217)

AWS CodeDeploy を使用してデプロイ設定を作成する

AWS CLI、AWS CodeDeploy、API、または AWS CloudFormation テンプレートを使用して、カスタムデプロイ設定を作成できます。

Note

AWS CodeDeploy コンソールで、インプレースデプロイ用の Sample deployment wizard を使用して、カスタムデプロイ設定を作成できます。

AWS CloudFormation テンプレートを使用してデプロイ設定を作成する方法については、「AWSCodeDeploy リファレンス用の AWS CloudFormation テンプレート (p. 347)」を参照してください。

AWS CLI を使用してデプロイ設定を作成するには、以下を指定して create-deployment-config コマンドを呼び出します。

• デプロイ設定を一意に識別する名前。この名前は、AWS アカウントに関連付けられた AWSCodeDeploy で作成するすべてのデプロイ設定で一意である必要があります。

• デプロイ中にいつでも使用可能な正常なインスタンスの最小数または割合。詳細については、「Instance Health (p. 208)」を参照してください。

次の例では、ThreeQuartersHealthy という名前の EC2/オンプレミス デプロイ設定を作成します。このデプロイ設定では、デプロイ中にターゲットインスタンスの 75% が正常であり続けるように要求されます。

aws deploy create-deployment-config --deployment-config-name ThreeQuartersHealthy --minimum-healthy-hosts type=FLEET_PERCENT,value=75

次の例では、Canary25Percent45Minutes という名前の AWS Lambda デプロイ設定を作成します。この際、最初の増分でトラフィックの 25 パーセントを移行する Canary トラフィックを使用します。残りの75 パーセントは 45 分後に移行されます。

aws deploy create-deployment-config --deployment-config-name Canary25Percent45Minutes --traffic-routing-config "type="TimeBasedCanary",timeBasedCanary={canaryPercentage=25,canaryInterval=45}" --compute-platform Lambda

AWS CodeDeploy によるデプロイ設定の詳細の表示

AWS CodeDeploy コンソール、AWS CLI または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられているデプロイ設定の詳細を表示できます。事前定義された AWS CodeDeploy デプロイ設定の説明については、「EC2/オンプレミスコンピューティングプラットフォームの事前定義されたデプロイ設定 (p. 212)」を参照してください。

トピック• デプロイ設定の詳細の表示 (コンソール) (p. 217)• デプロイ設定の表示 (CLI) (p. 217)

API バージョン 2014-10-06216

Page 225: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ設定の詳細の表示 (コンソール)

デプロイ設定の詳細の表示 (コンソール)AWS CodeDeploy コンソールを使用して、デプロイ設定名の一覧を表示するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで、[Deployment configurations] を選択して、各デプロイ設定のデプロイ設定名および条件の一覧を表示します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

デプロイ設定の表示 (CLI)AWS CLI を使用してデプロイ設定の詳細を表示するには、get-deployment-config コマンドまたはlist-deployment-configs コマンドを呼び出します。

1 つのデプロイ設定に関する詳細を表示するには、get-deployment-config コマンドを呼び出し、一意のデプロイ設定名を指定します。

複数のデプロイ設定に関する詳細を表示するには、list-deployments コマンドを呼び出します

AWS CodeDeploy を使用してデプロイ設定を削除する

AWS CLI または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられるカスタムデプロイ設定を削除できます。CodeDeployDefault.AllAtOnce、CodeDeployDefault.HalfAtATime、CodeDeployDefault.OneAtATimeなどの組み込みのデプロイ設定は削除できません。

Warning

まだ使用中のカスタムデプロイ設定は削除できません。未使用のカスタムデプロイ設定を削除すると、それを新しいデプロイおよび新規デプロイグループに関連付けることはできなくなります。このアクションは元に戻すことができません。

AWS CLI を使用して、デプロイ設定を削除し、delete-deployment-config コマンドを呼び出し、デプロイ設定名を指定するには。デプロイ設定名のリストを表示するには、list-deployment-configs コマンドを呼び出します。

次の例では、ThreeQuartersHealthy という名前のデプロイ設定を削除します。

aws deploy delete-deployment-config --deployment-config-name ThreeQuartersHealthy

API バージョン 2014-10-06217

Page 226: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションを作成します。

AWS CodeDeploy でのアプリケーションの使用

インスタンスを設定した後、リビジョンをデプロイする前に、AWS CodeDeploy でアプリケーションを作成する必要があります。アプリケーションは、正しいリビジョン、デプロイ設定、およびデプロイグループがデプロイ中に参照されるために、AWS CodeDeploy によって使用される名前またはコンテナです。

次のステップ用に、以下の表の情報を使用します。

まだインスタンスを作成していません。 「AWS CodeDeploy のインスタンスの使用 (p. 154)」を参照してから、このページに戻ってください。

インスタンスは作成しましたが、タグ付けが完了していません。

「Tagging Instances for AWS CodeDeployDeployments (p. 156)」を参照してから、このページに戻ってください。

まだアプリケーションを作成していません。 「AWS CodeDeploy でアプリケーションを作成 (p. 218)」を参照してください。

既にアプリケーションを作成しましたが、まだデプロイグループを作成していません。

「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

既にアプリケーションとデプロイグループを作成しましたが、アプリケーションリビジョンを作成していません。

「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

既にアプリケーションとデプロイグループを作成し、アプリケーションリビジョンをアップロードしました。デプロイの準備が整いました。

「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

トピック• AWS CodeDeploy でアプリケーションを作成 (p. 218)• AWS CodeDeploy を使用してアプリケーションの詳細を表示する (p. 226)• AWS CodeDeploy アプリケーションの名前を変更する (p. 227)• AWS CodeDeploy でのアプリケーションの削除 (p. 227)

AWS CodeDeploy でアプリケーションを作成アプリケーションは、正しいリビジョン、デプロイ設定、およびデプロイグループがデプロイ時に参照されていることを確認するために、AWS CodeDeploy で使用される単なる名前またはコンテナです。AWSCodeDeploy コンソール、AWS CLI、AWS CodeDeploy API、または AWS CloudFormation テンプレートを使用して、アプリケーションを作成できます。

コード、またはアプリケーションリビジョンは、デプロイと呼ばれるプロセスを通してインスタンスにインストールされます。AWS CodeDeploy では、2 種類のデプロイがサポートされています。

• インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証さ

API バージョン 2014-10-06218

Page 227: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションを作成します。

れます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。インプレイスデプロイは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでのみ使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要 (p. 4)」を参照してください。

• Blue/Green デプロイ: デプロイの動作は、使用する コンピューティングプラットフォームを選択します。 により異なります。• EC2/オンプレミス コンピューティングプラットフォームを選択します。 の Blue/Green: 以下のス

テップによって、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。• インスタンスは、置き換え先環境に対してプロビジョニングされます。• 最新のアプリケーションリビジョンが置き換え先インスタンスにインストールされます。• アプリケーションのテストやシステムの検証などのアクティビティでは、オプションの待機時間が

発生します。• 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラ

フィックは、それらに再ルーティングされます。元の環境のインスタンスは登録解除されます。これらのインスタンスは削除するか、その他の用途のために引き続き実行できます。

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用する場合、Blue/Green デプロイは Amazon EC2 インスタンスでのみ動作します。

• AWS Lambda コンピューティングプラットフォームを選択します。 の Blue/Green: トラフィックは、現在のサーバーレス環境から、更新された Lambda 関数のバージョンの環境に移行されます。検証テストを実行する Lambda 関数を指定し、トラフィックの移行が発生する方法を選択できます。AWSLambda コンピューティングプラットフォームを選択します。 のデプロイはすべて、Blue/Green デプロイです。そのため、デプロイタイプを指定する必要はありません。

Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

AWS CodeDeploy コンソールを使用してアプリケーションを作成する場合は、最初のデプロイグループを同時に設定します。AWS CLI を使用してアプリケーションを作成する場合は、最初のデプロイグループを別のステップで作成します。

AWS アカウントに既に登録されたアプリケーションのリストを表示するには、「AWS CodeDeploy を使用してアプリケーションの詳細を表示する (p. 226)」を参照してください。AWS CloudFormation テンプレートを使用してアプリケーションを作成する方法の詳細については、「AWS CodeDeploy リファレンス用の AWS CloudFormation テンプレート (p. 347)」を参照してください。

デプロイタイプはいずれも、どの送信先にも適用されません。以下の表に、3 種類のデプロイ送信先のデプロイを指定するデプロイタイプを示します。

デプロイ送信先 インプレース Blue/Green

Amazon EC2 はい はい

オンプレミス はい いいえ

サーバーレス AWS Lambda 関数 いいえ はい

トピック• インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)• Blue/Green デプロイ (コンソール) のアプリケーションを作成します。 (p. 221)• AWS Lambda 関数デプロイ用のアプリケーションを作成 (コンソール) (p. 224)

API バージョン 2014-10-06219

Page 228: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインプレースデプロイ (コンソール) 用のアプリケーションを作成

• アプリケーションの作成 (CLI) (p. 225)

インプレースデプロイ (コンソール) 用のアプリケーションを作成AWS CodeDeploy コンソールを使用して、インプレースデプロイ用のアプリケーションを作成するには:

Warning

次の場合は、これらの手順を実行しないでください。

• インスタンスを AWS CodeDeploy デプロイで使用する準備ができていません。インスタンスをセットアップするには、AWS CodeDeploy のインスタンスの使用 (p. 154) の指示に従い、その後にこのトピックの手順に従います。

• カスタムデプロイ設定を使用するアプリケーションを作成する必要があり、まだデプロイ設定を作成していません。Create a Deployment Configuration (p. 216) の指示に従った後に、このトピックの手順に従います。

• 最低限必要な信頼およびアクセス権限を持つ AWS CodeDeploy を信頼するサービスロールがありません。必要なアクセス許可を持つサービスロールを作成し、設定するには、「ステップ 3:AWS CodeDeploy のサービスロールを作成する (p. 22)」の手順に従って、このトピックの手順に戻ります。

• インプレースデプロイのために Elastic Load Balancing で Classic Load Balancer、ApplicationLoad Balancer、または Network Load Balancer を選択したいが、それをまだ作成していない。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy のホームページが表示される場合は、[Get Started Now] を選択します。3. [Create application] を選択します。4. [Application name] ボックスに、アプリケーションの名前を入力します。(AWS アカウントでは AWS

CodeDeploy アプリケーション名はリージョンごとに 1 回のみ使用できます。異なるリージョンでアプリケーション名を再利用することができます。)

5. [コンピューティングプラットフォームを選択します。] ドロップダウンリストから [EC2/On-Premises]を選択します。

6. [Deployment group name] ボックスには、デプロイグループを示す名前を入力します。

Note

他のデプロイグループで使用されている設定 (デプロイグループ名、タグ、Auto Scaling グループ名、または両方、およびデプロイ設定を含む) を使用する場合は、このページでこれらの設定を指定します。この新しいデプロイグループと既存のデプロイグループは名前が同じでも、それぞれが別のアプリケーションに関連付けられるため、AWS CodeDeploy では別のデプロイグループとして扱われます。

7. [In-place deployment] を選択します。8. [Environment configuration] で、以下から選択します。

• [Auto Scaling groups] タブ: アプリケーションリビジョンをデプロイする Auto Scaling グループの名前を選択します。Auto Scaling グループの一部として新しい Amazon EC2 インスタンスを起動すると、AWS CodeDeploy ではリビジョンを新しいインスタンスに自動的にデプロイできます。デプロイグループには最大 10 個の Auto Scaling グループを追加できます。

API バージョン 2014-10-06220

Page 229: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイ (コンソール) の

アプリケーションを作成します。

• [Amazon EC2 instances] タブまたは [On-premises instances] タブ: [Key] と [Value] フィールドで、インスタンスにタグを付けるために使用したキーと値のペアの値を入力します。単一タググループで最大 10 個のキーと値のペアをタグ付けできます。• [Value] フィールド内でワイルドカードを使用して、似ている Amazon EC2 インスタンス、コスト

センター、グループ名などの特定のパターンでタグ付けされたすべてのインスタンスを識別できます。たとえば、[Key] フィールドで [Name] を選択し、[Value] フィールドに GRP-*a と入力すると、AWS CodeDeploy は、GRP-1a、GRP-2a、GRP-XYZ-a などそのパターンに適合するすべてのインスタンスを識別します。

• [Value] フィールドでは、大文字と小文字を区別します。• リストからキーと値のペアを削除するには、削除のアイコンを選択します。

AWS CodeDeploy では、指定された各キーと値のペアまたは Auto Scaling グループ名に一致するインスタンスを検出すると、一致するインスタンスの数が表示されます。インスタンスに関する詳細情報を表示するには、数をクリックします。

インスタンスへのデプロイの条件をさらに絞り込むには、[Add tag group] を選択してタググループを作成します。それぞれ最大 10 個のキーと値のペアを持つタググループを 3 つまで作成できます。デプロイグループで複数のタググループを使用する場合は、すべてのタググループによって識別されたインスタンスのみがデプロイグループに含まれます。つまり、インスタンスがデプロイグループに含まれるには、各グループの少なくとも 1 つのタグが一致する必要があります。

タググループを使用してデプロイグループを絞り込む方法ついては、「Tagging Instances for AWSCodeDeploy Deployments (p. 156)」を参照してください。

9. (オプション) [Load balancer] で [Enable load balancing] を選択し、デプロイプロセス中にインスタンスへのトラフィックを管理する既存の Classic Load Balancer、Application Load Balancer、またはNetwork Load Balancer を選択します。

各インスタンスは、デプロイ中はロードバランサー (Classic Load Balancer) またはターゲットグループ (Application Load Balancer および Network Load Balancer) から登録解除されてトラフィックがルーティングされなくなります。これは、デプロイが完了したときに再登録されます。

AWS CodeDeploy デプロイのロードバランサーに関する詳細については、「Integrating AWSCodeDeploy with Elastic Load Balancing (p. 49)」を参照してください。

10.[Deployment configuration] リストで、デプロイ設定を選択して、一度に 1 つずつ、または一度にすべてなど、インスタンスがデプロイされるレートを制御します。デプロイ設定の詳細については、AWSCodeDeploy でデプロイ設定を使用する (p. 212) を参照してください。

11.(オプション) [Advanced] で、Amazon SNS 通知トリガー、Amazon CloudWatch アラーム、または自動ロールバックのような、デプロイに含めるオプションを設定します。

詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。12.[Service role ARN] で、少なくとも「ステップ 3: AWS CodeDeploy のサービスロールを作成す

る (p. 22)」に記載されている信頼およびアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールの Amazon リソースネーム (ARN) を選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

13.[Create application] を選択します。

次のステップでは、アプリケーションおよびデプロイグループにデプロイするリビジョンを準備します。手順については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

Blue/Green デプロイ (コンソール) のアプリケーションを作成します。AWS CodeDeploy コンソールを使用して、Blue/Green デプロイ用のアプリケーションを作成する。

API バージョン 2014-10-06221

Page 230: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイ (コンソール) の

アプリケーションを作成します。

Note

AWS Lambda コンピューティングプラットフォームを選択します。 へのデプロイは、常に Blue/Green デプロイです。デプロイタイプオプションは指定しません。

Warning

次の場合は、これらの手順を実行しないでください。

• Blue/Green デプロイプロセス中に置き換える AWS CodeDeploy エージェントがインストールされたインスタンスはありません。インスタンスをセットアップするには、AWS CodeDeployのインスタンスの使用 (p. 154) の指示に従い、その後にこのトピックの手順に従います。

• カスタムデプロイ設定を使用するアプリケーションを作成する必要があり、まだデプロイ設定を作成していません。Create a Deployment Configuration (p. 216) の指示に従った後に、このトピックの手順に従います。

• 少なくとも、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) に記載されている信頼とアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールはありません。サービスロールを作成して設定するには、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) の指示に従い、その後にこのトピックの手順に従います。

• 置き換え先環境でインスタンスを登録するための Classic Load Balancer、Application LoadBalancer、または Network Load Balancer を、Elastic Load Balancing で作成していません。詳細については、「AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する (p. 234)」を参照してください。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy のホームページが表示される場合は、[Get Started Now] を選択します。3. [Create application] を選択します。4. [Application name] に、アプリケーションの名前を入力します。(AWS アカウントでは AWS

CodeDeploy アプリケーション名はリージョンごとに 1 回のみ使用できます。異なるリージョンでアプリケーション名を再利用することができます。)

5. [コンピューティングプラットフォームを選択します。] ドロップダウンリストで、[EC2/On-Premises]を選択します。

6. [Deployment group name] ボックスには、デプロイグループを示す名前を入力します。

Note

別のデプロイグループで使用されているのと同じ設定を使用する場合は、その設定をこのページで指定します。再使用する設定の例としては、デプロイグループ名、タグ、Auto Scalingグループ名、デプロイ設定などがあります。この新しいデプロイグループと既存のデプロイグループは名前が同じでも、それぞれが別のアプリケーションに関連付けられるため、AWSCodeDeploy では別のデプロイグループとして扱われます。

7. [Blue/green deployment] を選択します。8. [Environment configuration] で、置き換え先環境にインスタンスを提供するために使用する方法を選択

します:• [Automatically copy Auto Scaling group]: AWS CodeDeploy では指定したグループの 1 つをコピーし

て Auto Scaling グループを作成します。• [Manually provision instances]: デプロイを作成するまで置き換え先環境のインスタンスを特定しませ

ん。デプロイを開始する前に、インスタンスを作成する必要があります。代わりに、ここで置換するインスタンスを指定します。

API バージョン 2014-10-06222

Page 231: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイ (コンソール) の

アプリケーションを作成します。

9. ステップ 7 での選択内容に応じて、次のいずれかを実行します:• [Automatically copy Auto Scaling group] を選択した場合: [Auto Scaling group] で、置き換え先環境の

インスタンスに作成される Auto Scaling グループのテンプレートとして使用する Auto Scaling グループの名前を選択します。選択した Auto Scaling グループ内の現在正常なインスタンスの数が、置き換え先環境で作成されます。

• [Manually provision instances] を選択した場合: [Choose the EC2 instances or Auto Scaling groupswhere the current application revision is deployed] で、Amazon EC2 タグの値または Auto Scaling グループ名を入力して元の環境のインスタンス (つまり、置き換えるインスタンスまたは現在のアプリケーションリビジョンを実行中のインスタンス) を特定します。

10.[Load balancer] で、デプロイプロセスで置き換え先環境のインスタンスの登録に使用する Classic LoadBalancer、Application Load Balancer、または Network Load Balancer を選択します。

Note

元の環境内のインスタンスは、選択したロードバランサーに登録することができますが、必須ではありません。

AWS CodeDeploy デプロイのロードバランサーに関する詳細については、「Integrating AWSCodeDeploy with Elastic Load Balancing (p. 49)」を参照してください。

11.[Deployment settings] で、置き換え先環境へトラフィックを再ルーティングするためのデフォルトのオプション、デプロイに使用するデプロイ設定、デプロイ後に元の環境のインスタンスを処理する方法を確認します。

設定を変更する場合は、ステップ 11 に進みます。それ以外の場合は、ステップ 12 に進みます。12.Blue/Green デプロイ設定を変更するには、[Edit deployment settings] を選択し、次の設定のいずれかを

更新して、[Submit] を選択します。

設定 オプション

[Traffic rerouting] • [Reroute traffic immediately]: 置き換え先環境のインスタンスがプロビジョニングされ、最新のアプリケーションリビジョンがインストールされるとすぐに、ロードバランサーに自動的に登録され、トラフィックがそれらに再ルーティングされます。元の環境内のインスタンスは、登録解除されます。

• [I will choose whether to reroute traffic]: 置き換え先環境のインスタンスは、手動でトラフィックを再ルーティングしないかぎり、ロードバランサーに登録されません。指定した待機時間中にトラフィックが再ルーティングされない場合、デプロイステータスは停止に変更されます。

Deployment configuration 置き換え先環境のインスタンスをロードバランサーに登録するレート (個別、一括など) を選択します。

Note

トラフィックが置き換え先環境に適切にルーティングされた後、元の環境のインスタンスは、どのデプロイ設定が選択されていても一度にすべて登録解除されます。

API バージョン 2014-10-06223

Page 232: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda 関数デプロイ用のアプリケーションを作成 (コンソール)

設定 オプション詳細については、「AWS CodeDeploy でデプロイ設定を使用する (p. 212)」を参照してください。

Original instances • [Terminate the original instances in thedeployment group]: トラフィックが置き換え先環境に再ルーティングされた後、ロードバランサーから登録解除されたインスタンスは、指定した待機時間の後に終了します。

• [Keep the original instances in the deploymentgroup running]: トラフィックが置き換え先環境に再ルーティングされた後、ロードバランサーから登録解除されたインスタンスは実行されたままになります。

13.(オプション) [Advanced] で、Amazon SNS 通知トリガー、Amazon CloudWatch アラーム、または自動ロールバックのような、デプロイに含めるオプションを設定します。

デプロイグループの詳細なオプションを指定する方法の詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。

14.[Service role ARN] ボックスで、少なくとも ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) に記載されている信頼およびアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールの Amazon リソースネーム (ARN) を選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

15.[Create application] を選択します。

次のステップでは、アプリケーションおよびデプロイグループにデプロイするリビジョンを準備します。手順については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

AWS Lambda 関数デプロイ用のアプリケーションを作成 (コンソール)AWS CodeDeploy コンソールを使用して Lambda 関数デプロイ用のアプリケーションを作成するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy のホームページが表示される場合は、[Get Started Now] を選択します。3. [Create application] を選択します。4. [Application name] に、アプリケーションの名前を入力します。(AWS アカウントでは AWS

CodeDeploy アプリケーション名はリージョンごとに 1 回のみ使用できます。異なるリージョンでアプリケーション名を再利用することができます。)

5. [コンピューティングプラットフォームを選択します。] ドロップダウンリストから [AWS Lambda] を選択します。

6. [Deployment group name] にデプロイグループの名前を入力します。

API バージョン 2014-10-06224

Page 233: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションの作成 (CLI)

Note

別のデプロイグループで使用されているのと同じ設定を使用する場合は、その設定をこのページで指定します。デプロイトリガー、ロールバック、デプロイ設定は、再使用することができます。この新しいデプロイグループと既存のデプロイグループは名前が同じでも、それぞれが別のアプリケーションに関連付けられるため、AWS CodeDeploy では別のデプロイグループとして扱われます。

7. [Deployment configuration] ドロップダウンリストから、事前定義済みのいずれかのデプロイ設定を選択し、ステップ 9 に進みます。

デプロイ設定の詳細については、 AWS Lambda コンピューティングプラットフォームのデプロイ設定 (p. 214) を参照してください。

8. カスタム設定を作成するには、[Create deployment configuration] を選択し、以下の操作を行います。• [Deployment configuration name] に、設定の名前を入力します。• (オプション) [Description] に、この設定の説明を入力します。• [Type] ドロップダウンリストから、設定タイプを選択します。[Canary] を選択すると、トラフィック

は 2 回の増分で移行されます。[Linear] を選択すると、トラフィックは毎回同じ間隔 (分) の等しい増分で移行します。

• [Step] に、移行するトラフィックの割合を 1~99 で入力します。設定タイプが [Canary] の場合、この値は最初の増分で移行されるトラフィックの割合を示します。残りのトラフィックは、2 回目の増分で、選択した間隔後に移行されます。設定タイプが [Linear] の場合、この値は各間隔の開始時に移行されるトラフィックの割合を示します。

• [Interval] ダイアログボックスに、時間 (分) を入力します。設定タイプが [Canary] の場合、この値は最初と 2 回目のトラフィック移行の時間 (分) を示します。設定タイプが [Linear] の場合、この値は各増分の移行間の時間 (分) を示します。

Note

AWS Lambda デプロイの最大時間は、2 日間または 2,880 分です。したがって、Canary 設定の [Interval] に指定された最大値は、2,800 分です。リニア設定の最大値は、[Step] の値によって異なります。たとえば、トラフィックのリニア移行のステップの割合が 25% の場合、トラフィック移行は 4 回です。最大間隔値は、2,880 を 4 で割るか、720 分になります。

• [Submit] を選択します。9. (オプション) [Advanced] で、Amazon SNS 通知トリガー、Amazon CloudWatch アラーム、または自動

ロールバックのような、デプロイに含めるオプションを設定します。

詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。10.[Service role ARN] で、少なくとも「ステップ 3: AWS CodeDeploy のサービスロールを作成す

る (p. 22)」に記載されている信頼およびアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールの Amazon リソースネーム (ARN) を選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

11.[Create application] を選択します。

アプリケーションの作成 (CLI)AWS CLI を使用してアプリケーションを作成するには、create-application コマンドを呼び出して、アプリケーションを一意に表す名前を指定します。(AWS アカウントでは AWS CodeDeploy アプリケーション名はリージョンごとに 1 回のみ使用できます。異なるリージョンでアプリケーション名を再利用することができます。)

AWS CLI を使用してアプリケーションを作成した後、次のステップは、リビジョンをデプロイするインスタンスを指定するデプロイグループを作成します。手順については、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

API バージョン 2014-10-06225

Page 234: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションの詳細を表示する

デプロイグループを作成したら、次にアプリケーションおよびデプロイグループにデプロイするリビジョンを準備します。手順については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

AWS CodeDeploy を使用してアプリケーションの詳細を表示する

AWS CodeDeploy コンソール、AWS CLI または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられているすべてのアプリケーションの詳細を表示できます。

トピック• アプリケーションの詳細を表示する (コンソール) (p. 226)• アプリケーションの詳細を表示する (CLI) (p. 226)

アプリケーションの詳細を表示する (コンソール)AWS CodeDeploy コンソールを使用してアプリケーションの詳細を表示するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

3. その他のアプリケーションの詳細を表示するには、リストからアプリケーションの名前を選択します。

アプリケーションの詳細を表示する (CLI)AWS CLI を使用してアプリケーションの詳細を表示するには、get-application コマンド、batch-get-application コマンド、または list-applications コマンドを呼び出します。

1 つのアプリケーションに関する詳細を表示するには、get-application コマンドを呼び出し、アプリケーション名を指定します。

複数のアプリケーションに関する詳細を表示するには、batch-get-applications コマンドを呼び出し、複数のアプリケーションの名前を指定します。

アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

API バージョン 2014-10-06226

Page 235: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションの名前を変更する

AWS CodeDeploy アプリケーションの名前を変更する

AWS CLI または AWS CodeDeploy API を使用してアプリケーションの名前を変更できます。

アプリケーション名のリストを表示するには、AWS CLI を使用して、list-applications コマンドを呼び出します。

AWS CLI を使用してアプリケーション名の変更をすることの詳細については、update-application を参照してください。

AWS CodeDeploy API を使用してアプリケーション名を変更することの詳細については、「API_UpdateApplication」を参照してください。

AWS CodeDeploy でのアプリケーションの削除AWS CodeDeploy コンソール、AWS CLI、AWS CodeDeploy API アクションを使用して、アプリケーションを削除できます。AWS CodeDeploy の API アクションの使用方法についての詳細は、「DeleteApplication」を参照してください。

Warning

アプリケーションを削除すると、関連するすべてのデプロイグループの情報およびデプロイの詳細を含む、アプリケーションに関する情報が AWS CodeDeploy システムから削除されます。EC2/オンプレミス のデプロイ用に作成されたアプリケーションを削除しても、インスタンスからアプリケーションのリビジョンが削除されたり、Amazon S3 バケットからリビジョンが削除されたりすることはありません。EC2/オンプレミス のデプロイ用に作成されたアプリケーションを削除しても、Amazon EC2 インスタンスが削除されたり、オンプレミスインスタンスが登録解除されたりすることはありません。このアクションは元に戻すことができません。

トピック• アプリケーションの削除 (コンソール) (p. 227)• アプリケーション (AWS CLI) の削除 (p. 228)

アプリケーションの削除 (コンソール)AWS CodeDeploy コンソールを使用してアプリケーションを削除するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. アプリケーションの一覧で、削除するアプリケーションの名前を選択します。4. [Application details] ページの [Deployment groups] で、デプロイグループの横にあるボタンを選択し

ます。[Actions] メニューで、[Delete] を選択します。プロンプトが表示されたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。追加のデプロイグループに対し操作を繰り返します。

API バージョン 2014-10-06227

Page 236: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーション (AWS CLI) の削除

5. [Application details] ページの下部で、[Delete application] を選択します。6. プロンプトが表示されたら、アプリケーションの名前を入力し、削除することを確認してから、

[Delete] を選択します。

アプリケーション (AWS CLI) の削除AWS CLI を使用してアプリケーションを削除するには、アプリケーション名を指定して、delete-application コマンドを呼び出します。アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

API バージョン 2014-10-06228

Page 237: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラットフォームのデプロイでのデプロイグループ

AWS CodeDeploy でのデプロイグループの使用AWS Lambda コンピューティングプラットフォームのデプロイでのデプロイグループ

AWS Lambda のデプロイでは、デプロイグループにより、グループに対する将来のサーバーレス Lambdaデプロイの AWS CodeDeploy 設定のセットが定義されます。たとえば、デプロイグループでは、アラームとロールバックを指定する場合があります。AWS Lambda デプロイグループの単一のデプロイでは、1 つ以上のグループ設定を上書きできます。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイでのデプロイグループ

EC2/オンプレミス のデプロイでは、デプロイグループはデプロイをターゲットにした個別のインスタンスのセットです。デプロイグループには、個別にタグ付けされたインスタンス、Auto Scaling グループ内のAmazon EC2 インスタンス、またはその両方が含まれます。

インプレースデプロイでは、デプロイグループのインスタンスは最新のアプリケーションリビジョンで更新されます。

Blue/Green デプロイでは、ロードバランサーから元のインスタンスを登録解除し、通常は最新のアプリケーションリビジョンが既にインストールされたインスタンスの代替セットを登録して、インスタンスの1 つのセットから別のセットにトラフィックが転送されます。

複数のデプロイグループを AWS CodeDeploy のアプリケーションに関連付けることができます。これにより、インスタンスの別々のセットに異なるタイミングでアプリケーションリビジョンをデプロイできます。たとえば、1 つのデプロイグループを使用して、Test というタグが付けられた、コードの品質を確認するインスタンスのセットにアプリケーションリビジョンをデプロイできます。次に、追加の確認のため、Staging というタグが付けられたインスタンスがあるデプロイグループに、同じアプリケーションリビジョンをデプロイします。最後に、最新アプリケーションを顧客にリリースする準備ができたら、Production というタグが付けられたインスタンスを含むデプロイグループにデプロイします。

複数のタググループを使用して、デプロイグループに含めるインスタンスをさらに絞り込むこともできます。詳細については、Tagging Instances for AWS CodeDeploy Deployments (p. 156) を参照してください。

AWS CodeDeploy コンソールを使用してアプリケーションを作成する場合は、最初のデプロイグループを同時に設定します。AWS CLI を使用してアプリケーションを作成する場合は、最初のデプロイグループを別のステップで作成します。

既に AWS アカウントに関連付けられたデプロイグループの一覧を表示する方法については、「AWSCodeDeploy を使用したデプロイグループの詳細の表示 (p. 236)」を参照してください。

API バージョン 2014-10-06229

Page 238: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの作成

Amazon EC2 インスタンスタグの詳細については、「コンソールでのタグの処理」を参照してください。オンプレミスインスタンスの詳細については、「Working with On-Premises Instances (p. 179)」を参照してください。Auto Scaling の詳細については、「AWS CodeDeploy と Auto Scaling の統合 (p. 46)」を参照してください。

トピック

• the section called “デプロイグループの作成” (p. 230)• the section called “デプロイグループの詳細の表示” (p. 236)• the section called “デプロイグループの設定を変更する” (p. 237)• the section called “デプロイグループの詳細オプションの設定” (p. 239)• the section called “デプロイグループの削除” (p. 240)

AWS CodeDeploy を使用してデプロイグループを作成する

AWS CodeDeploy コンソール、AWS CLI、AWS CodeDeploy API、または AWS CloudFormation テンプレートを使用して、デプロイグループを作成できます。AWS CloudFormation テンプレートを使用してデプロイグループを作成する方法については、AWS CodeDeploy リファレンス用の AWS CloudFormation テンプレート (p. 347) を参照してください。

AWS CodeDeploy コンソールを使用してアプリケーションを作成する場合は、最初のデプロイグループを同時に設定します。AWS CLI を使用してアプリケーションを作成する場合は、最初のデプロイグループを別のステップで作成します。

デプロイグループ作成の一環として、サービスロールを指定する必要があります。詳細については、「ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)」を参照してください。

トピック• インプレースデプロイ用のデプロイグループを作成する (コンソール) (p. 230)• Blue/Green デプロイ用のデプロイグループを作成する (コンソール) (p. 232)• AWS CodeDeploy デプロイ用の Load Balancer を Elastic Load Balancing で設定する (p. 234)• デプロイグループの作成 (CLI) (p. 235)

インプレースデプロイ用のデプロイグループを作成する (コンソール)AWS CodeDeploy コンソールを使用して、インプレースデプロイ用のデプロイグループを作成する方法。

Warning

次の場合は、これらの手順を実行しないでください。

• アプリケーションの最初の AWS CodeDeploy デプロイで使用するインスタンスを準備していない。インスタンスをセットアップするには、AWS CodeDeploy のインスタンスの使用 (p. 154)の指示に従い、その後にこのトピックの手順に従います。

• カスタムデプロイ設定を使用してデプロイグループを作成したいが、まだデプロイ設定を作成していない。Create a Deployment Configuration (p. 216) の指示に従った後に、このトピックの手順に従います。

API バージョン 2014-10-06230

Page 239: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインプレースデプロイ用のデプロ

イグループを作成する (コンソール)

• 少なくとも、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) に記載されている信頼とアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールはありません。サービスロールを作成して設定するには、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) の指示に従い、その後にこのトピックの手順に従います。

• インプレースデプロイのために Elastic Load Balancing で Classic Load Balancer、ApplicationLoad Balancer、または Network Load Balancer を選択したいが、それをまだ作成していない。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。3. [Applications] ページで、デプロイグループを作成するアプリケーションの名前を選択します。4. [Create deployment group] を選択します。5. [Deployment group name] ボックスには、デプロイグループを示す名前を入力します。

Note

他のデプロイグループで使用されている設定 (デプロイグループ名、タグ、Auto Scaling グループ名、または両方、およびデプロイ設定を含む) を使用する場合は、このページでこれらの設定を指定します。この新しいデプロイグループと既存のデプロイグループは名前が同じでも、それぞれが別のアプリケーションに関連付けられるため、AWS CodeDeploy では別のデプロイグループとして扱われます。

6. [In-place deployment] を選択します。7. [Environment configuration] で、以下から選択します。

• [Auto Scaling groups] タブ: アプリケーションリビジョンをデプロイする Auto Scaling グループの名前を選択します。Auto Scaling グループの一部として新しい Amazon EC2 インスタンスを起動すると、AWS CodeDeploy ではリビジョンを新しいインスタンスに自動的にデプロイできます。デプロイグループには最大 10 個の Auto Scaling グループを追加できます。

• [Amazon EC2 instances] タブまたは [On-premises instances] タブ: [Key] と [Value] フィールドで、インスタンスにタグを付けるために使用したキーと値のペアの値を入力します。単一タググループで最大 10 個のキーと値のペアをタグ付けできます。• [Value] フィールド内でワイルドカードを使用して、似ている Amazon EC2 インスタンス、コスト

センター、グループ名などの特定のパターンでタグ付けされたすべてのインスタンスを識別できます。たとえば、[Key] フィールドで [Name] を選択し、[Value] フィールドに GRP-*a と入力すると、AWS CodeDeploy は、GRP-1a、GRP-2a、GRP-XYZ-a などそのパターンに適合するすべてのインスタンスを識別します。

• [Value] フィールドでは、大文字と小文字を区別します。• リストからキーと値のペアを削除するには、削除のアイコンを選択します。

AWS CodeDeploy では、指定された各キーと値のペアまたは Auto Scaling グループ名に一致するインスタンスを検出すると、一致するインスタンスの数が表示されます。インスタンスに関する詳細情報を表示するには、数をクリックします。

インスタンスへのデプロイの条件をさらに絞り込むには、[Add tag group] を選択してタググループを作成します。それぞれ最大 10 個のキーと値のペアを持つタググループを 3 つまで作成できます。デプロイグループで複数のタググループを使用する場合は、すべてのタググループによって識別されたインスタンスのみがデプロイグループに含まれます。つまり、インスタンスがデプロイグループに含まれるには、各グループの少なくとも 1 つのタグが一致する必要があります。

タググループを使用してデプロイグループを絞り込む方法ついては、「Tagging Instances for AWSCodeDeploy Deployments (p. 156)」を参照してください。

API バージョン 2014-10-06231

Page 240: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイ用のデプロイグループを作成する (コンソール)

8. (オプション) [Load balancer] で [Enable load balancing] を選択し、デプロイプロセス中にインスタンスへのトラフィックを管理する既存の Classic Load Balancer、Application Load Balancer、またはNetwork Load Balancer を選択します。

各インスタンスは、デプロイ中はロードバランサー (Classic Load Balancer) またはターゲットグループ (Application Load Balancer および Network Load Balancer) から登録解除されてトラフィックがルーティングされなくなります。これは、デプロイが完了したときに再登録されます。

AWS CodeDeploy デプロイのロードバランサーに関する詳細については、「Integrating AWSCodeDeploy with Elastic Load Balancing (p. 49)」を参照してください。

9. [Deployment configuration] リストで、デプロイ設定を選択して、一度に 1 つずつ、または一度にすべてなど、インスタンスがデプロイされるレートを制御します。デプロイ設定の詳細については、AWSCodeDeploy でデプロイ設定を使用する (p. 212) を参照してください。

10.(オプション) [Advanced] で、Amazon SNS 通知トリガー、Amazon CloudWatch アラーム、または自動ロールバックのような、デプロイに含めるオプションを設定します。

詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。11.[Service role ARN] で、少なくとも「ステップ 3: AWS CodeDeploy のサービスロールを作成す

る (p. 22)」に記載されている信頼およびアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールの Amazon リソースネーム (ARN) を選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

12.[Create deployment group] を選択します。

Blue/Green デプロイ用のデプロイグループを作成する(コンソール)AWS CodeDeploy コンソールを使用して、Blue/Green デプロイ用のデプロイグループを作成する方法。

Warning

次の場合は、これらの手順を実行しないでください。

• Blue/Green デプロイプロセス中に置き換える AWS CodeDeploy エージェントがインストールされたインスタンスはありません。インスタンスをセットアップするには、AWS CodeDeployのインスタンスの使用 (p. 154) の指示に従い、その後にこのトピックの手順に従います。

• カスタムデプロイ設定を使用するアプリケーションを作成する必要があり、まだデプロイ設定を作成していません。Create a Deployment Configuration (p. 216) の指示に従った後に、このトピックの手順に従います。

• 少なくとも、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) に記載されている信頼とアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールはありません。サービスロールを作成して設定するには、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) の指示に従い、その後にこのトピックの手順に従います。

• 置き換え先環境でインスタンスを登録するための Classic Load Balancer を、Elastic LoadBalancing で作成していません。詳細については、「AWS CodeDeploy デプロイ用の LoadBalancer を Elastic Load Balancing で設定する (p. 234)」を参照してください。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

API バージョン 2014-10-06232

Page 241: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドBlue/Green デプロイ用のデプロイグループを作成する (コンソール)

2. AWS CodeDeploy メニューから、[Applications] を選択します。3. [Applications] ページで、デプロイグループを作成するアプリケーションの名前を選択します。4. [Create deployment group] を選択します。5. [Deployment group name] ボックスには、デプロイグループを示す名前を入力します。

Note

別のデプロイグループで使用されているのと同じ設定を使用する場合は、その設定をこのページで指定します。再使用する設定の例としては、デプロイグループ名、タグ、Auto Scalingグループ名、デプロイ設定などがあります。この新しいデプロイグループと既存のデプロイグループは名前が同じでも、それぞれが別のアプリケーションに関連付けられるため、AWSCodeDeploy では別のデプロイグループとして扱われます。

6. [Blue/green deployment] を選択します。7. [Environment configuration] で、置き換え先環境にインスタンスを提供するために使用する方法を選択

します:• [Automatically copy Auto Scaling group]: AWS CodeDeploy では指定したグループの 1 つをコピーし

て Auto Scaling グループを作成します。• [Manually provision instances]: デプロイを作成するまで置き換え先環境のインスタンスを特定しませ

ん。デプロイを開始する前に、インスタンスを作成する必要があります。代わりに、ここで置換するインスタンスを指定します。

8. ステップ 7 での選択内容に応じて、次のいずれかを実行します:• [Automatically copy Auto Scaling group] を選択した場合: [Auto Scaling group] で、置き換え先環境の

インスタンスに作成される Auto Scaling グループのテンプレートとして使用する Auto Scaling グループの名前を選択します。選択した Auto Scaling グループ内の現在正常なインスタンスの数が、置き換え先環境で作成されます。

• [Manually provision instances] を選択した場合: [Choose the EC2 instances or Auto Scaling groupswhere the current application revision is deployed] で、Amazon EC2 タグの値または Auto Scaling グループ名を入力して元の環境のインスタンス (つまり、置き換えるインスタンスまたは現在のアプリケーションリビジョンを実行中のインスタンス) を特定します。

9. [Load balancer] で、デプロイプロセスで置き換え先環境のインスタンスの登録に使用する Classic LoadBalancer、Application Load Balancer、または Network Load Balancer を選択します。

Note

元の環境内のインスタンスは、選択したロードバランサーに登録することができますが、必須ではありません。

AWS CodeDeploy デプロイのロードバランサーに関する詳細については、「Integrating AWSCodeDeploy with Elastic Load Balancing (p. 49)」を参照してください。

10.[Deployment settings] で、置き換え先環境へトラフィックを再ルーティングするためのデフォルトのオプション、デプロイに使用するデプロイ設定、デプロイ後に元の環境のインスタンスを処理する方法を確認します。

設定を変更する場合は、ステップ 11 に進みます。それ以外の場合は、ステップ 12 に進みます。11.Blue/Green デプロイ設定を変更するには、[Edit deployment settings] を選択し、次の設定のいずれかを

更新して、[Submit] を選択します。

設定 オプション

[Traffic rerouting] • [Reroute traffic immediately]: 置き換え先環境のインスタンスがプロビジョニングされ、最新のアプリケーションリビジョンがインストールされるとすぐに、ロードバランサーに自動的に登録され、トラフィックがそれらに再ルーティンAPI バージョン 2014-10-06

233

Page 242: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy デプロイ用の Load

Balancer を Elastic Load Balancing で設定する

設定 オプショングされます。元の環境内のインスタンスは、登録解除されます。

• [I will choose whether to reroute traffic]: 置き換え先環境のインスタンスは、手動でトラフィックを再ルーティングしないかぎり、ロードバランサーに登録されません。指定した待機時間中にトラフィックが再ルーティングされない場合、デプロイステータスは停止に変更されます。

Deployment configuration 置き換え先環境のインスタンスをロードバランサーに登録するレート (個別、一括など) を選択します。

Note

トラフィックが置き換え先環境に適切にルーティングされた後、元の環境のインスタンスは、どのデプロイ設定が選択されていても一度にすべて登録解除されます。

詳細については、「AWS CodeDeploy でデプロイ設定を使用する (p. 212)」を参照してください。

Original instances • [Terminate the original instances in thedeployment group]: トラフィックが置き換え先環境に再ルーティングされた後、ロードバランサーから登録解除されたインスタンスは、指定した待機時間の後に終了します。

• [Keep the original instances in the deploymentgroup running]: トラフィックが置き換え先環境に再ルーティングされた後、ロードバランサーから登録解除されたインスタンスは実行されたままになります。

12.(オプション) [Advanced] で、Amazon SNS 通知トリガー、Amazon CloudWatch アラーム、または自動ロールバックのような、デプロイに含めるオプションを設定します。

デプロイグループの詳細なオプションを指定する方法の詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。

13.[Service role ARN] ボックスで、少なくとも ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) に記載されている信頼およびアクセス権限を持つ、AWS CodeDeploy を信頼するサービスロールの Amazon リソースネーム (ARN) を選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール) (p. 26)」を参照してください。

14.[Create deployment group] を選択します。

AWS CodeDeploy デプロイ用の Load Balancer をElastic Load Balancing で設定するBlue/Green デプロイまたはインプレースデプロイを実行するときにオプションのロードバランサーをデプロイグループで指定する場合は、事前に Elastic Load Balancing で Classic Load Balancer またはApplication Load Balancer を作成しておく必要があります。Blue/Green デプロイの場合は、そのロードバ

API バージョン 2014-10-06234

Page 243: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの作成 (CLI)

ランサーを使用して置き換え先環境を構成するインスタンスを登録します。元の環境のインスタンスは、この同じロードバランサーにオプションで登録できます。

Classic Load Balancer を設定するには、クラシックロードバランサー 用ユーザーガイド にあるチュートリアル: Classic Load Balancer の作成の手順に従ってください。次の点に注意してください。

• ステップ 2: ロードバランサーの定義、[Create LB Inside] で、インスタンスを作成したときに選択したのと同じ VPC を選択します。

• ステップ 5: ロードバランサーへの EC2 インスタンスの登録で、現在デプロイグループにあるインスタンス (インプレースデプロイ)、または元の環境に存在するように指定したインスタンス (Blue/Green デプロイ) を選択します。

• ステップ 7: Load Balancer の作成と検証で、ロードバランサーの DNS アドレスをメモします。

たとえば、ロードバランサーの名前を my-load-balancer とした場合、DNS アドレスは my-load-balancer-1234567890.us-east-2.elb.amazonaws.com のような形式で表示されます。

Application Load Balancer を設定するには、以下のトピックのいずれかの指示に従ってください。

• Application Load Balancer を作成する• チュートリアル: AWS CLI を使用して Application Load Balancer を作成する

デプロイグループの作成 (CLI)AWS CLI を使用してデプロイグループを作成するには、以下を指定して create-deployment-group コマンドを呼び出します。

• アプリケーション名. アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• デプロイグループの名前。この名前はデプロイグループに関連付けられる各アプリケーションで一意にする必要があります。

• デプロイグループに含めるインスタンスを識別するタグ、タググループ、または Auto Scaling グループ名に関する情報。

• 他の AWS のサービスとやり取りを行う際に、AWS CodeDeploy が AWS アカウントに代わって動作することを許可するサービスロールの Amazon リソースネーム (ARN) の識別子。サービスロール ARN を取得するには、サービスロール ARN の取得 (CLI) (p. 26) を参照してください。サービスロールに関する詳細については、IAM ユーザーガイド のロールに関する用語と概念を参照してください。

• デプロイグループに関連付けるデプロイのタイプ (インプレースデプロイまたは Blue/Green デプロイ)についての情報。

• (オプション) 既存のデプロイ設定の名前。デプロイ設定のリストを表示するには、View DeploymentConfiguration Details (p. 216) を参照してください。指定されない場合、AWS CodeDeploy ではデフォルトのデプロイ設定を使用します。

• (オプション) Amazon Simple Notification Service トピックに登録しているユーザーにデプロイとインスタンスのイベントに関する通知をプッシュするトリガーを作成するコマンド。詳細については、「Monitoring Deployments with Amazon SNS Event Notifications (p. 291)」を参照してください。

• (オプション) アラームで指定したメトリクスが定義済みのしきい値を下回る/上回るとアクティブ化される、既存の CloudWatch アラームをデプロイグループに追加するコマンド。

• (オプション) デプロイが失敗、または CloudWatch アラームがアクティブ化されると、既知の正常なリビジョンのデプロイにロールバックするコマンド。

• インプレースデプロイの場合:• (オプション) デプロイプロセスでインスタンスへのトラフィックを管理する、Elastic Load Balancing

の Classic Load Balancer または Application Load Balancer の名前。• Blue/Green デプロイの場合。

API バージョン 2014-10-06235

Page 244: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの詳細の表示

• Blue/Green デプロイプロセスの設定。• 置き換え先環境の新しいインスタンスをプロビジョニングする方法。• トラフィックを置き換え先環境にすぐに再ルーティングするか、またはトラフィックを手動で再

ルーティングするために指定された期間待機するか。• 元の環境内のインスタンスを削除するかどうか。

• 置き換え先環境で登録されたインスタンスに使用する Elastic Load Balancing の Classic LoadBalancer または Application Load Balancer の名前。

AWS CodeDeploy を使用したデプロイグループの詳細の表示

AWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、アプリケーションに関連付けられたすべてのデプロイグループに関する詳細を表示できます。

トピック• デプロイグループの詳細の表示 (コンソール) (p. 236)• デプロイグループの詳細の表示 (CLI) (p. 236)

デプロイグループの詳細の表示 (コンソール)AWS CodeDeploy コンソールを使用してデプロイグループの詳細を表示するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページが表示されない場合は、AWS CodeDeploy メニューで [Applications] を選択します。

3. [Applications] ページで、デプロイグループに関連付けられたアプリケーション名を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

4. 個別のデプロイグループに関する詳細を表示するには、[Deployment groups] で、デプロイグループの横にある矢印を選択します。

デプロイグループの詳細の表示 (CLI)AWS CLI を使用してデプロイグループの詳細を表示するには、get-deployment-group コマンドまたは list-deployment-groups コマンドを呼び出します。

1 つのデプロイの詳細を表示するには、get-deployment-group コマンドを呼び出して、以下を指定します。

API バージョン 2014-10-06236

Page 245: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの設定を変更する

• デプロイグループに関連付けられたアプリケーション名。アプリケーション名を取得するには、list-applications コマンドを呼び出します。

• デプロイグループ名。デプロイグループ名を取得するには、list-deployment-groups コマンドを呼び出します。

デプロイグループ名のリストを表示するには、list-deployment-groups コマンドを呼び出して、デプロイグループに関連付けられたアプリケーション名を指定します。アプリケーション名を取得するには、list-applications コマンドを呼び出します。

AWS CodeDeploy を使用して、デプロイグループの設定を変更します。

AWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、デプロイグループの設定を変更できます。

Warning

デプロイグループが、まだ作成していないカスタムデプロイグループを使用する場合、これらの手順を使用しないでください。代わりに、「Create a Deployment Configuration (p. 216)」の手順に従って、このトピックに戻ります。デプロイグループが、別のまだ作成していないサービスロールを使用する場合、これらの手順を使用しないでください。サービスロールは、最低でも、「ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)」で説明しているアクセス権限を持つ AWS CodeDeploy を信頼する必要があります。正しいアクセス許可を持つサービスロールを作成し、設定するには、「ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)」の手順に従って、このトピックに戻ります。

トピック• デプロイグループの設定 (コンソール) を変更する (p. 237)• デプロイグループの設定 (CLI) を変更する (p. 238)

デプロイグループの設定 (コンソール) を変更するAWS CodeDeploy コンソールを使用してデプロイグループの設定を変更するには。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] を選択します。3. アプリケーションの一覧で、変更するデプロイグループに関連付けられるアプリケーションを選択しま

す。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

API バージョン 2014-10-06237

Page 246: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの設定 (CLI) を変更する

4. [Application details] ページの [Deployment groups] で、変更するデプロイグループの隣のボタンを選択します。

5. [Actions] メニューで、[Edit] を選択します。6. 必要に応じてデプロイグループのオプションを変更します。

デプロイグループのコンポーネントの詳細については、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

7. デプロイグループに最後に成功したリビジョンをデプロイする場合は、[Deploy changes made todeployment group name] を選択してから、[Save] を選択します。プロンプトが表示されたら、[Deploy] を選択します。AWS CodeDeploy はデプロイグループの情報を更新し、指定した変更内容に基づいて、デプロイグループに最後に成功したリビジョンのデプロイを開始し、[Deployments] ページを表示します。

Note

[Deploy changes made to deployment group name] チェックボックスは、このデプロイグループへの成功したデプロイがある場合にのみ表示されます。

8. 変更にともないデプロイグループの情報を更新しつつも、現時点ではデプロイグループにアプリケーションをデプロイしない場合は、[Deploy changes made to deployment group name] をオフにして、[Save] を選択します。AWS CodeDeploy は、デプロイグループの情報を更新しますが、デプロイグループにアプリケーションをデプロイしません。

デプロイグループの設定 (CLI) を変更するAWS CLI を使用して、デプロイグループの設定を変更するには update-deployment-group コマンドを呼び出し、指定します。

• EC2/オンプレミス および AWS Lambda のデプロイの場合:• アプリケーション名. アプリケーション名のリストを表示するには、list-applications コマンドを呼び

出します。• 現在のデプロイグループ名。デプロイグループ名のリストを表示するには、list-deployment-groups コ

マンドを呼び出します。• (オプション) 別のデプロイグループ名。• (オプション) 別の AWS のサービスとやり取りするときに AWS CodeDeploy を AWS アカウントの代

わりに機能することを可能にするサービスロールに対応する別の Amazon リソースネーム (ARN)。サービスロール ARN を取得するには、サービスロール ARN の取得 (CLI) (p. 26) を参照してください。サービスロールに関する詳細については、IAM ユーザーガイド のロールに関する用語と概念を参照してください。

• (オプション) デプロイ設定の名前。デプロイ設定のリストを表示するには、View DeploymentConfiguration Details (p. 216) を参照してください。(指定されない場合、AWS CodeDeploy ではデフォルトのデプロイ設定を使用します。)

• (オプション) アラームで指定されたメトリクスが定義したしきい値を下回る、または、超える場合にアクティベートするデプロイグループに 1 つ以上の既存 CloudWatch アラームを追加するコマンド。

• (オプション) デプロイが失敗、または CloudWatch アラームがアクティブ化されると、既知の正常なリビジョンのデプロイにロールバックするコマンド。

• (オプション) Amazon Simple Notification Service のトピックに発行するトリガーを作成または更新するコマンドにより、そのトピックのサブスクライバーがこのデプロイグループのデプロイおよびインスタンスイベントに関する通知を受け取ります。詳細については、Monitoring Deployments withAmazon SNS Event Notifications (p. 291) を参照してください。

• EC2/オンプレミス のデプロイの場合のみ:• (オプション) デプロイグループに含まれるインスタンスを一意に識別する代替タグまたはタググルー

プ。• (オプション) デプロイグループに追加する代替 Auto Scaling グループの名前。

API バージョン 2014-10-06238

Page 247: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの詳細オプションの設定

デプロイグループの詳細オプションの設定デプロイグループを作成または更新する場合は、そのデプロイグループのデプロイをより詳細に制御および監視できるように、数多くのオプションを設定できます。

このページの情報を使用して、次のトピックで、デプロイグループを使用するときに詳細オプションを設定できます。

• AWS CodeDeploy でアプリケーションを作成 (p. 218)• AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)• AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)

Amazon SNS 通知トリガー: トリガーを AWS CodeDeploy デプロイグループに追加すると、そのデプロイグループ内のデプロイに関連するイベントについて通知を受信できます。これらの通知は、トリガーのアクションの一部となった Amazon SNS トピックにサブスクライブされている受信者に送信されます。

このトリガーが指す Amazon SNS トピックを既に設定している必要があり、AWS CodeDeploy には、このデプロイグループからトピックに公開するアクセス許可が必要です。これらのセットアップ手順をまだ完了していない場合は、後でデプロイグループにトリガーを追加できます。

このアプリケーションのデプロイグループのデプロイイベントに関する通知を受信するトリガーを今すぐ作成する場合は、[Create trigger] を選択します。

Amazon EC2 にデプロイする場合、インスタンスの通知を作成して、関連する通知を受け取ることができます。

詳細については、「Monitoring Deployments with Amazon SNS Event Notifications (p. 291)」を参照してください。

Amazon CloudWatch アラーム: 指定した期間にわたって単一のメトリクスを監視し、複数の期間にわたり既定のしきい値に関連するメトリクス値に基づいて 1 つ以上のアクションを実行する CloudWatch アラームを作成できます。Amazon EC2 デプロイの場合は、AWS CodeDeploy オペレーションで使用しているインスタンスまたは Amazon EC2 Auto Scaling グループのアラームを作成できます。AWS Lambda デプロイの場合は、Lambda 関数のエラーを確認するアラームを作成できます。

Amazon CloudWatch アラームが、メトリクスが定義されたしきい値を下回った、または超えたことを検出すると、デプロイを停止するように設定できます。

デプロイグループに追加する前に、CloudWatch でアラームを作成しておく必要があります。

1. デプロイグループにアラームモニタリングを追加するには、[Add alarm] を選択します。2. [Alarm name] で、このデプロイを監視するためにすでにセットアップした CloudWatch アラームの名前

を入力します。

CloudWatch で作成されたのとまったく同じ CloudWatch. アラームを入力する必要があります。アラームのリストを表示するには、https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開いて、[ALARM] を選択します。

追加のオプション:

• 追加したアラームを想定せずにデプロイを続行する場合は、[Ignore alarm configuration] を選択します。

この選択は、後で同じアラームを再び追加しなくても、デプロイグループのアラームの監視を一時的に非アクティブ化する場合に便利です。

• (オプション) AWS CodeDeploy が Amazon CloudWatch からアラームステータスを取得できないイベントでデプロイを続行する場合は、[Continue deployments even if alarm status is unavailable] を選択します。

API バージョン 2014-10-06239

Page 248: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの削除

Note

このオプションは、AWS CodeDeploy API の AlarmConfiguration オブジェクトのignorePollAlarmFailure に対応します。

詳細については、「AWS CodeDeploy で CloudWatch アラームを使用したデプロイのモニタリング (p. 285)」を参照してください。

自動ロールバック: デプロイが失敗した場合、または監視しきい値が満たされた場合に、自動的にロールバックするようにデプロイグループまたはデプロイを設定できます。この場合、アプリケーションリビジョンの最後の既知の正常なバージョンがデプロイされます。コンソールを使用してアプリケーションを作成する場合、デプロイグループを作成する場合、またはデプロイグループを更新する場合、デプロイグループのオプション設定を設定できます。新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。

• 次のいずれかまたは両方を選択して何か問題が発生した場合、デプロイを有効化して最新の既知の正常なリビジョンにロールバックすることができます。

• デプロイが失敗したときにロールバックする。AWS CodeDeploy は、新しいデプロイとして、最後の既知の正常なリビジョンを再デプロイします。

• アラームのしきい値が一致したときにロールバックする。前のステップでこのアプリケーションにアラームを追加した場合、AWS CodeDeploy は、指定された 1 つ以上のアラームがアクティブ化されたときに、最後の既知の正常なリビジョンを再デプロイします。

Note

ロールバック設定を一時的に無視するには、[Disable rollbacks] を選択します。この選択は、後で再び同じ設定をセットアップせずに自動ロールバックを一時的に無効にする場合に便利です。

詳細については、「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」を参照してください。

AWS CodeDeploy を使用してデプロイグループを削除する

AWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられるデプロイグループを削除します。

Warning

デプロイグループを削除すると、そのデプロイグループに関連付けられるすべての詳細もまたAWS CodeDeploy から削除されます。デプロイグループで使用するインスタンスは変更されません。このアクションは元に戻すことができません。

トピック• デプロイグループ (コンソール) を削除する (p. 240)• デプロイグループ (CLI) の削除 (p. 241)

デプロイグループ (コンソール) を削除するAWS CodeDeploy コンソールを使用してデプロイグループを削除するには。

API バージョン 2014-10-06240

Page 249: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループ (CLI) の削除

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。3. アプリケーションのリストで、デプロイグループに関連付けられるアプリケーションの名前を選択しま

す。4. [Application Details] ページの [デプロイグループ] で、削除するデプロイグループの隣のボタンを選択し

ます。5. [Actions] メニューで、[Delete] を選択します。6. 求められたら、デプロイグループの名前を入力して削除を確認してから、[Delete] を選択します。

デプロイグループ (CLI) の削除AWS CLI を使用してデプロイグループを削除するには、以下を指定して delete-deployment-group コマンドを呼び出します。

• デプロイグループに関連付けられたアプリケーションの名前。アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• アプリケーションに関連付けられたデプロイグループの名前。デプロイグループ名のリストを表示するには、list-deployment-groups コマンドを呼び出します。

API バージョン 2014-10-06241

Page 250: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリビジョンの計画を立てる

AWS CodeDeploy 用のアプリケーションリビジョンの操作

AWS CodeDeploy で、リビジョンには AWS CodeDeploy がインスタンスにデプロイするソースファイルのバージョン、または AWS CodeDeploy がインスタンスで実行するスクリプトが含まれています。

リビジョンを計画し、AppSpec file にリビジョンを追加してから、リビジョンを Amazon S3 またはGitHub にプッシュします。リビジョンをプッシュしたら、デプロイできます。

トピック• AWS CodeDeploy のリビジョンの計画を立てる (p. 242)• AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)• AWS CodeDeploy リポジトリタイプの選択 (p. 247)• AWS CodeDeploy のリビジョンを Amazon S3 にプッシュします。 (p. 248)• AWS CodeDeploy を使用したアプリケーションリビジョンの詳細の表示 (p. 251)• AWS CodeDeploy による Amazon S3 でのアプリケーションリビジョンの登録 (p. 253)

AWS CodeDeploy のリビジョンの計画を立てる良い計画は、インスタンスへのリビジョンのデプロイをより簡単にします。

AWS Lambda コンピューティングプラットフォームを選択します。 にデプロイする場合、リビジョンは、AppSpec file と同じです。次の情報は適用されません。詳細については、「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」を参照してください。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 にデプロイする場合、開発マシンで空のルートディレクトリ (フォルダ) を作成することから始めます。これはインスタンスで実行するインスタンスまたはスクリプトにデプロイするソースファイル (テキストファイルやバイナリファイル、実行ファイル、パッケージなど) を保存します。

たとえば、Linux, macOS, or Unix の /tmp/ のルートフォルダ、または Windows の c:\temp のルートフォルダ:

/tmp/ or c:\temp (root folder) |--content (subfolder) | |--myTextFile.txt | |--mySourceFile.rb | |--myExecutableFile.exe | |--myInstallerFile.msi | |--myPackage.rpm | |--myImageFile.png |--scripts (subfolder) | |--myShellScript.sh | |--myBatchScript.bat | |--myPowerShellScript.ps1 |--appspec.yml

ルートフォルダには、以下に示すとおり application specification file (AppSpec file) が含まれます。詳細については、「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」を参照してください。

API バージョン 2014-10-06242

Page 251: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec File の追加

AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加

このトピックでは、AppSpec file をデプロイに追加する方法について説明します。また、AWS Lambda および EC2/オンプレミス のデプロイ向けに AppSpec file を作成するテンプレートも含まれます。

AWS Lambda デプロイ向けに AppSpec ファイルを追加するAWS Lambda コンピューティングプラットフォームを選択します。 へのデプロイの場合

• AppSpec file には、デプロイされる Lambda 関数に関する手順が含まれており、デプロイの検証で使用されます。

• リビジョンは、AppSpec file と同じです。• AppSpec file は、JSON または YAML を使用して書き込むことができます。• AppSpec file は、テキストファイルとして保存するか、デプロイ作成時にコンソールの AppSpec エ

ディタに直接入力することができます。詳細については、「AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 258)」を参照してください。

AppSpec file を作成するには

1. JSON または YAML テンプレートをテキストエディタ、またはコンソールの AppSpec エディタにコピーします。

2. 必要に応じてテンプレートを変更します。3. JSON または YAML Validator を使用して、AppSpec file を検証します。AppSpec エディタを使用し

ている場合、ファイルは [Deploy] を選択すると検証されます。4. テキストエディタを使用している場合は、ファイルを保存します。AWS CLI を使用してデプロイを作

成する場合は、AppSpec file がハードドライブ、または Amazon S3 バケットにあるかどうかを確認します。コンソールを使用している場合は、AppSpec file を Amazon S3 にプッシュする必要があります。

5. (オプション) AppSpec エディタを使用している場合は、[Save as text file] を選択して、AppSpec fileをハードドライブに保存します。

手順付き YAML AppSpec ファイルテンプレートhooks セクションで使用するライフサイクルイベントについては、「AWS Lambda のデプロイ向けのAppSpec の「hooks」セクション (p. 330)」を参照してください。

✔ This is an appspec.yml template file for use with an AWS Lambda deployment in AWS CodeDeploy.✔ The lines in this template starting with the hashtag symbol are ✔ instructional comments and can be safely left in the file or ✔ ignored.✔ For help completing this file, see the "AppSpec File Reference" in the ✔ "AWS CodeDeploy User Guide" at✔ http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.htmlversion: 0.0✔ In the Resources section specify the name, alias, ✔ target version, and (optional) the current version of your AWS Lambda function. Resources: - MyFunction: ✔ Replace "MyFunction" with the name of your Lambda function

API バージョン 2014-10-06243

Page 252: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス デプロイ用

に AppSpec ファイルを追加する

Type: AWS::Lambda::Function Properties: Name: "" ✔ Specify the name of your Lambda function Alias: "" ✔ Specify the alias for your Lambda function CurrentVersion: "" ✔ Specify the current version of your Lambda function TargetVersion: "" ✔ Specify the version of your Lambda function to deploy✔ (Optional) In the Hooks section, specify a validation Lambda function to run during ✔ a lifecycle event. Replace "LifeCycleEvent" with BeforeAllowTraffic✔ or AfterAllowTraffic. Hooks: - LifeCycleEvent: "" ✔ Specify a Lambda validation function between double-quotes.

JSON AppSpec ファイルテンプレート以下のテンプレートで、"MyFunction" を AWS Lambda 関数名に置き換えます。オプションの Hooks セクションで、ライフサイクルイベントを BeforeAllowTraffic または AfterAllowTraffic に置き換えます。

Hooks セクションで使用するライフサイクルイベントについては、「AWS Lambda のデプロイ向けのAppSpec の「hooks」セクション (p. 330)」を参照してください。

{ "version": 0.0, "Resources": [{ "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "", "Alias": "", "CurrentVersion": "", "TargetVersion": "" } } }], "Hooks": [{ "LifeCycleEvent": "" } ] }

EC2/オンプレミス デプロイ用に AppSpec ファイルを追加するAppSpec file がないと、AWS CodeDeploy は、アプリケーションリビジョンのソースファイルを送信先にマッピングしたり、EC2/オンプレミス コンピューティングプラットフォームを選択します。 にデプロイするためのスクリプトを実行できません。

各リビジョンには、AppSpec file を 1 つだけ含める必要があります。

リビジョンに AppSpec file を追加するには:

1. テンプレートにテキストエディターをコピーします。2. 必要に応じてテンプレートを変更します。3. YAML validator を使用して、AppSpec file の有効性をチェックします。4. リビジョンのルートディレクトリに appspec.yml としてファイルを保存します。5. AppSpec file をルートディレクトリに配置したことを確認するには、次のいずれかのコマンドを実行

します。

• Linux, macOS, or Unix 用:

API バージョン 2014-10-06244

Page 253: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス デプロイ用

に AppSpec ファイルを追加する

find /path/to/root/directory -name appspec.yml

AppSpec file がその場所で見つからない場合は、出力は発生しません。• Windows の場合:

dir path\to\root\directory\appspec.yml

AppSpec file がそこに格納されていない場合は、File Not Found エラーが表示されます。6. リビジョンを Amazon S3 または GitHub にプッシュします。

手順については、「AWS CodeDeploy のリビジョンを Amazon S3 にプッシュします。 (p. 248)」を参照してください。

手順付き AppSpec ファイルテンプレートNote

Windows Server インスタンスへのデプロイは runas 要素をサポートしていません。WindowsServer インスタンスにデプロイする場合は、AppSpec file にこの要素を含めないでください。

✔ This is an appspec.yml template file for use with an EC2/✔✔✔✔✔✔ deployment in AWS CodeDeploy.✔ The lines in this template starting with the hashtag symbol are ✔ instructional comments and can be safely left in the file or ✔ ignored.✔ For help completing this file, see the "AppSpec File Reference" in the ✔ "AWS CodeDeploy User Guide" at✔ http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.htmlversion: 0.0✔ Specify "os: linux" if this revision targets Amazon Linux, ✔ Red Hat Enterprise Linux (RHEL), or Ubuntu Server ✔ instances.✔ Specify "os: windows" if this revision targets Windows Server instances.✔ (You cannot specify both "os: linux" and "os: windows".)os: linux ✔ os: windows✔ During the Install deployment lifecycle event (which occurs between the ✔ BeforeInstall and AfterInstall events), copy the specified files ✔ in "source" starting from the root of the revision's file bundle ✔ to "destination" on the Amazon EC2 instance.✔ Specify multiple "source" and "destination" pairs if you want to copy ✔ from multiple sources or to multiple destinations.✔ If you are not copying any files to the Amazon EC2 instance, then remove the✔ "files" section altogether. A blank or incomplete "files" section✔ may cause associated deployments to fail.files: - source: destination: - source: destination:✔ For deployments to Amazon Linux, Ubuntu Server, or RHEL instances,✔ you can specify a "permissions" ✔ section here that describes special permissions to apply to the files ✔ in the "files" section as they are being copied over to ✔ the Amazon EC2 instance.✔ For more information, see the documentation.✔ If you are deploying to Windows Server instances,✔ then remove the

API バージョン 2014-10-06245

Page 254: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス デプロイ用

に AppSpec ファイルを追加する

✔ "permissions" section altogether. A blank or incomplete "permissions"✔ section may cause associated deployments to fail.permissions: - object: pattern: except: owner: group: mode: acls: - context: user: type: range: type: -✔ If you are not running any commands on the Amazon EC2 instance, then remove ✔ the "hooks" section altogether. A blank or incomplete "hooks" section✔ may cause associated deployments to fail.hooks:✔ For each deployment lifecycle event, specify multiple "location" entries ✔ if you want to run multiple scripts during that event.✔ You can specify "timeout" as the number of seconds to wait until failing the deployment ✔ if the specified scripts do not run within the specified time limit for the ✔ specified event. For example, 900 seconds is 15 minutes. If not specified, ✔ the default is 1800 seconds (30 minutes).✔ Note that the maximum amount of time that all scripts must finish executing ✔ for each individual deployment lifecycle event is 3600 seconds (1 hour). ✔ Otherwise, the deployment will stop and AWS CodeDeploy will consider the deployment✔ to have failed to the Amazon EC2 instance. Make sure that the total number of seconds ✔ that are specified in "timeout" for all scripts in each individual deployment ✔ lifecycle event does not exceed a combined 3600 seconds (1 hour).✔ For deployments to Amazon Linux, Ubuntu Server, or RHEL instances,✔ you can specify "runas" in an event to✔ run as the specified user. For more information, see the documentation.✔ If you are deploying to Windows Server instances,✔ remove "runas" altogether.✔ If you do not want to run any commands during a particular deployment✔ lifecycle event, remove that event declaration altogether. Blank or ✔ incomplete event declarations may cause associated deployments to fail.✔ During the ApplicationStop deployment lifecycle event, run the commands ✔ in the script specified in "location" starting from the root of the ✔ revision's file bundle. ApplicationStop: - location: timeout: runas: - location: timeout: runas: ✔ During the BeforeInstall deployment lifecycle event, run the commands ✔ in the script specified in "location". BeforeInstall: - location: timeout: runas: - location: timeout: runas:✔ During the AfterInstall deployment lifecycle event, run the commands ✔ in the script specified in "location". AfterInstall: - location: timeout: runas:

API バージョン 2014-10-06246

Page 255: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドレポジトリタイプの選択

- location: timeout: runas:✔ During the ApplicationStart deployment lifecycle event, run the commands ✔ in the script specified in "location". ApplicationStart: - location: timeout: runas: - location: timeout: runas:✔ During the ValidateService deployment lifecycle event, run the commands ✔ in the script specified in "location". ValidateService: - location: timeout: runas: - location: timeout: runas:

AWS CodeDeploy リポジトリタイプの選択AWS CodeDeploy に必要なファイルのストレージの場所は、リポジトリと呼ばれます。使用するリポジトリは、デプロイで使用する コンピューティングプラットフォームを選択します。 によって異なります。

• EC2/オンプレミス: 1 つ以上のインスタンスにアプリケーションコードをデプロイするには、コードをアーカイブファイルにバンドルし、デプロイプロセス中に AWS CodeDeploy がアクセスできるリポジトリに配置する必要があります。デプロイ可能なコンテンツと AppSpec ファイルをアーカイブファイルにバンドルしてから、AWS CodeDeploy でサポートされているいずれかのレポジトリタイプにアップロードします。

• AWS Lambda: デプロイには AppSpec file が必要です。このファイルは、デプロイ時に以下のいずれかの方法でアクセスできます。• Amazon S3 バケットから• コンソールの AppSpec エディタへ直接入力されたテキストから詳細については、「AWS Lambda コ

ンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 258)」を参照してください。

• AWS CLI を使用している場合は、ハードドライブまたはネットワークドライブ上にある AppSpec fileを参照できます。詳細については、「 AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI) (p. 263)」を参照してください。

現在、AWS CodeDeploy は次のリポジトリタイプをサポートしています。

Amazon S3 Amazon Simple Storage Service (Amazon S3) は、安全でスケーラブルなオブジェクトストレージのための AWS ソリューションです。Amazon S3は、データをオブジェクトとしてバケットに保存します。オブジェクトは、ファイルと、オプションとしてそのファイルを記述する任意のメタデータで構成されています。

Amazon S3 にオブジェクトを保管するには、バケットに保管するファイルをアップロードします。ファイルをアップロードする際に、オブジェ

API バージョン 2014-10-06247

Page 256: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリビジョンをプッシュする

クトにアクセス権限とメタデータを設定することができます。

詳細はこちら:

• Amazon S3 でのバケットの作成• AWS CodeDeploy のリビジョンを Amazon S3

にプッシュします。 (p. 248)• AWS CodeDeploy を使用した Amazon S3 から

の自動的なデプロイ

GitHub (EC2/オンプレミス デプロイのみ) アプリケーションリビジョンは、「GitHub」リポジトリに保存できます。そのリポジトリのソースコードが変更されるたびに、GitHub リポジトリからデプロイをトリガーできます。

詳細はこちら:

• AWS CodeDeploy と GitHub の統合 (p. 55)• チュートリアル: AWS CodeDeploy を使用し

て GitHub からアプリケーションをデプロイする (p. 118)

• Automatically Deploy from GitHub Using AWSCodeDeploy

Bitbucket (EC2/オンプレミス deployment のみ) 継続的統合(CI) プラットフォームまたは Amazon EC2 インスタンスにサインインして手動のデプロイプロセスを実行することなく、Bitbucket UI から任意のデプロイグループの Amazon EC2 インスタンスに直接コードをプッシュできます。最初に、Bitbucket は指定された Amazon S3 バケットにコードをプッシュし、そこからコードをデプロイします。ただし、このプロセスをサポートする最初のセットアップが完了すると、Bitbucket からプッシュするコードは、中間ステップなしでインスタンスに自動的にデプロイされます。

詳細はこちら:

• AWS CodeDeploy に対する Atlassian Bitbucketのサポート

Note

AWS Lambda デプロイでは、Amazon S3 リポジトリのみ使用できます。

AWS CodeDeploy のリビジョンを Amazon S3 にプッシュします。

AWS CodeDeploy のリビジョンの計画を立てる (p. 242) で説明されているようにリビジョンを計画して、AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243) で説明されているように AppSpec file をリビジョンに追加したら、コンポーネントファイルをバンドルして、リビジョンを

API バージョン 2014-10-06248

Page 257: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリビジョンをプッシュする

Amazon S3 にプッシュすることができます。Amazon EC2 インスタンスにデプロイする場合は、リビジョンをプッシュしたら、AWS CodeDeploy を使用して、Amazon S3 からインスタンスへのリビジョンをデプロイできます。

Note

AWS CodeDeploy は GitHub にプッシュされたリビジョンのデプロイにも使用できます。詳細については、GitHub のドキュメントを参照してください。

AWS CodeDeploy の使用開始 (p. 20) にある AWS CLI のセットアップの指示に従っていることを前提としています。これは、後で説明する push コマンドを呼び出す場合に特に重要です。

Amazon S3 バケットがあることを確認してください。バケットの作成の手順に従います。

Amazon EC2 インスタンスにデプロイする場合は、ターゲットの Amazon S3 バケットを作成するか、そのバケットがターゲットインスタンスと同じリージョンに存在する必要があります。たとえば、米国東部(バージニア北部) リージョン のインスタンスにリビジョンをデプロイをするときに、他のインスタンスが米国西部 (オレゴン) リージョン にある場合は、米国東部 (バージニア北部) リージョン にリビジョンのコピーのあるバケット、米国西部 (オレゴン) リージョン に同じリビジョンの別のコピーのある別のバケットが必要です。このシナリオでは、両方のリージョンとバケットでリビジョンが同じであっても、米国東部(バージニア北部) リージョン に 1 つ、米国西部 (オレゴン) リージョン に別の 1 つと、2 つの別個のデプロイを作成する必要があります。

Amazon S3 バケットに対するアップロードのアクセス許可が必要です。Amazon S3 バケットポリシーを通じてこれらのアクセス許可を指定できます。たとえば、次の Amazon S3 バケットポリシーでは、ワイルドカード (*) を使用することで、AWS アカウント 111122223333 が、codedeploydemobucket という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできます。

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ]}

To view your AWS account ID, see Finding Your AWS Account ID.

Amazon S3 バケットポリシーを生成しアタッチする方法については、「バケットポリシーの例」を参照してください。

push コマンドを呼び出す IAM ユーザーは、少なくとも、各ターゲット Amazon S3 バケットにリビジョンをアップロードするアクセス権限が必要です。たとえば、次のポリシーでは、IAM ユーザーがcodedeploydemobucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [

API バージョン 2014-10-06249

Page 258: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CLI を使用してリビジョンをプッシュする

"s3:PutObject" ], "Resource": "arn:aws:s3:::codedeploydemobucket/*" } ]}

IAM ポリシーを作成しアタッチする方法については、「ポリシーの使用」を参照してください。

AWS CLI を使用してリビジョンをプッシュするNote

push コマンドは、アプリケーションのアーティファクトおよび AppSpec file をリビジョンにバンドルします。このリビジョンのファイル形式は、圧縮された ZIP ファイルです。このコマンドは、AWS Lambda デプロイでは使用できません。これは JSON 形式または YAML 形式のAppSpec file のリビジョンを想定しているためです。

push コマンドを呼び出してリビジョンをバンドルしてプッシュし、デプロイします。パラメータは次のとおりです。

• --application-name: (文字列) 必須。アプリケーションバージョンに関連付けられる AWS CodeDeploy アプリケーションの名前。

• --s3-location: (文字列) 必須。Amazon S3 にアップロードされるアプリケーションリビジョンの場所に関する情報。Amazon S3 バケットとキーを指定する必要があります。キーは、リビジョンの名前です。AWS CodeDeploy はコンテンツをアップロードする前に zip 形式で圧縮します。s3://your-S3-bucket-name/your-key.zip の形式を使用します。

• --ignore-hidden-files または --no-ignore-hidden-files: (ブール値) 省略可能。--no-ignore-hidden-files フラグ (デフォルト) を使用して、隠しファイルをバンドルし Amazon S3 にアップロードします。--ignore-hidden-files フラグを使用すると、隠しファイルをバンドルおよび Amazon S3 にアップロードしません。

• --source (文字列) 省略可能。zip 圧縮され Amazon S3 にアップロードされる開発マシン上の、デプロイするコンテンツおよび AppSpec file の場所。この場所は、現在のディレクトリに対する相対パスとして指定されます。相対パスが指定されていない場合、または 1 つのピリオド (「.」) がパスとして使用される場合、現在のディレクトリが使用されます。

• --description (文字列) 省略可能。アプリケーションリビジョンを要約したコメントです。指定しない場合、デフォルトの文字列「Uploaded by AWS CLI 'time' UTC」が使用されます。ここで「time」は、現在のシステム時刻 (協定世界時 (UTC)) です。

AWS CLI を使用して、Amazon EC2 のデプロイ用にリビジョンをプッシュできます。プッシュコマンドの例は、次のようになります。

Linux, macOS, or Unix の場合:

aws deploy push \ --application-name WordPress_App \ --description "This is a revision for the application WordPress_App" \ --ignore-hidden-files \ --s3-location s3://codedeploydemobucket/WordPressApp.zip \ --source .

Windows の場合:

aws deploy push --application-name WordPress_App --description "This is a revision for the application WordPress_App" --ignore-hidden-files --s3-location s3://codedeploydemobucket/WordPressApp.zip --source .

API バージョン 2014-10-06250

Page 259: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションリビジョンの詳細の表示

このコマンドは次のことを行います。

• バンドルされたファイルを WordPress_App という名前のアプリケーションに関連付けます。• リビジョンに説明をアタッチします。• 隠しファイルを無視します。• リビジョンに WordPressApp.zip という名前を付け、codedeploydemobucket というバケットに

プッシュします。• ルートディレクトリ内のすべてのファイルをリビジョンにバンドルします。

プッシュが成功したら、AWS CLI または AWS CodeDeploy コンソールを使用して、Amazon S3 からリビジョンをデプロイできます。AWS CLI でこのリビジョンをデプロイするには:

Linux, macOS, or Unix の場合:

aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-name your-deployment-config-name \ --deployment-group-name your-deployment-group-name \ --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

Windows の場合:

aws deploy create-deployment --application-name WordPress_App --deployment-config-name your-deployment-config-name --your-deployment-group-name your-deployment-group-name --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

AWS CodeDeploy を使用したアプリケーションリビジョンの詳細の表示

AWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、指定したアプリケーションに対して AWS アカウントに登録されたすべてのアプリケーションリビジョンに関する詳細を表示することができます。

リビジョンの登録の詳細については、「AWS CodeDeploy による Amazon S3 でのアプリケーションリビジョンの登録 (p. 253)」を参照してください。

トピック• アプリケーションリビジョンの詳細の表示 (コンソール) (p. 251)• アプリケーションリビジョンの詳細の表示 (CLI) (p. 252)

アプリケーションリビジョンの詳細の表示 (コンソール)アプリケーションリビジョンの詳細を表示するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

API バージョン 2014-10-06251

Page 260: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションリビジョンの詳細の表示 (CLI)

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Applications] を選択します。3. [Applications] ページで、表示するリビジョンの詳細と共にアプリケーションの名前を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

4. [Application details] ページの [Revisions] で、アプリケーションに登録されたリビジョンの一覧を確認します。詳細を表示するには、リビジョンの横にある矢印を選択します。

アプリケーションリビジョンの詳細の表示 (CLI)AWS CLI を使用してアプリケーションリビジョンを表示するには、get-application-revision コマンドまたは list-application-revisions コマンドのいずれかを呼び出します。

Note

GitHub の参照は、EC2/オンプレミス デプロイにのみ適用されます。AWS Lambda リビジョンのデプロイを GitHub で行うことはできません。

1 つのアプリケーションリビジョンに関する詳細を表示するには、get-application-revision コマンドを呼び出し、以下を指定します。

• アプリケーション名. アプリケーション名を取得するには、list-applications コマンドを呼び出します。• GitHub に保存されたリビジョンの場合、GitHub レポジトリ名と、リポジトリにプッシュされたアプリ

ケーションリビジョンを参照するコミットの ID。• Amazon S3 に保存されたリビジョンの場合、リビジョンを含む Amazon S3 バケット名、アップロー

ドされたアーカイブファイルの名前とファイル形式。さらにオプションで、アーカイブファイルのAmazon S3 バージョン ID と ETag。バージョン ID、ETag、または両方が register-application-revisionの呼び出し中に指定された場合、ここで指定する必要があります。

複数のアプリケーションリビジョンに関する詳細を表示するには、list-application-revisions コマンドを呼び出し、以下を指定します。

• アプリケーション名. アプリケーション名を取得するには、list-applications コマンドを呼び出します。• オプションで、Amazon S3 アプリケーションリビジョンの詳細を表示する場合のみ、リビジョンを含む

Amazon S3 バケット名。• オプションで、Amazon S3 アプリケーションリビジョンの詳細を表示する場合のみ、Amazon S3 ア

プリケーションリビジョンの検索を制限するプレフィックス文字列 (指定されていない場合、AWSCodeDeploy は一致するすべての Amazon S3 アプリケーションリビジョンを表示します)。

• オプションで、各リビジョンがデプロイグループのターゲットリビジョンかどうかに基づいてリビジョンの詳細を表示するかどうか (指定されていない場合、AWS CodeDeploy は一致するすべてのリビジョンを表示します)。

• オプションで、リビジョンの詳細の一覧をソートする際の基準とする列名と順序 (指定されていない場合、AWS CodeDeploy は任意の順序で結果を表示します)。

すべてのリビジョンを表示するか、Amazon S3 に保存されているリビジョンのみを表示できます。GitHubに保存されているリビジョンのみを表示することはできません。

API バージョン 2014-10-06252

Page 261: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーションリビジョンの登録

AWS CodeDeploy による Amazon S3 でのアプリケーションリビジョンの登録

既に push コマンドを呼び出してアプリケーションリビジョンを Amazon S3 にプッシュしている場合、リビジョンを登録する必要はありません。ただし、他の方法で Amazon S3 にリビジョンをアップロードし、リビジョンを AWS CodeDeploy コンソールに表示するか、AWS CLI を通じて表示する場合は、次のステップに従って最初にリビジョンを登録します。

GitHub リポジトリにアプリケーションリビジョンをプッシュし、リビジョンを AWS CodeDeploy コンソールに表示するか、AWS CLI を通じて表示する場合も、次のステップに従う必要があります。

Amazon S3 または GitHub でアプリケーションリビジョンを登録するには、AWS CLI または AWSCodeDeploy API のみを使用できます。

トピック• Amazon S3 での AWS CodeDeploy によるリビジョンの登録 (CLI) (p. 253)• AWS CodeDeploy による GitHub でのリビジョンの登録 (CLI) (p. 254)

Amazon S3 での AWS CodeDeploy によるリビジョンの登録 (CLI)1. リビジョンを Amazon S3 にアップロードします。2. register-application-revision コマンドを呼び出し、次のように指定します。

• アプリケーション名. アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• 登録するリビジョンに関する情報:• リビジョンを含む Amazon S3 バケットの名前。• アップロードされたリビジョンの名前とファイル形式。AWS Lambda デプロイの場合、リビジョ

ンは、JSON または YAML で書き込まれた AppSpec file です。EC2/オンプレミス デプロイの場合、このリビジョンには、AWS CodeDeploy からインスタンスにデプロイされるソースファイルか、AWS CodeDeploy によってインスタンスで実行されるスクリプトのバージョンが含まれます。

Note

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported forWindows Server instances.

• (オプション) リビジョンの Amazon S3 バージョン ID。(バージョン ID を指定しない場合、AWSCodeDeploy は最新バージョンを使用します)。

• (オプション) のリビジョン ETag。(ETag が指定されていない場合、AWS CodeDeploy はオブジェクトの検証をスキップします)

• (オプション) リビジョンに関連付ける説明。

Amazon S3 のリビジョンに関する情報は、この構文を register-application-revision 呼び出しの一部として使用して、コマンドラインで指定できます (version および eTag はオプションです)。

EC2/オンプレミス のデプロイ向けリビジョンファイルの場合

--s3-location bucket=string,key=string,bundleType=tar|tgz|zip,version=string,eTag=string

API バージョン 2014-10-06253

Page 262: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy による GitHub

でのリビジョンの登録 (CLI)

AWS Lambda のデプロイ向けリビジョンファイルの場合

--s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string

AWS CodeDeploy による GitHub でのリビジョンの登録 (CLI)

Note

AWS Lambda デプロイを GitHub で行うことはできません。

1. GitHub リポジトリにリビジョンをアップロードします。2. register-application-revision コマンドを呼び出し、次のように指定します。

• アプリケーション名. アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• 登録するリビジョンに関する情報:• スラッシュ (/)、リポジトリの名前が後に続く、リポジトリに割り当てられたリビジョンを含む

GitHub ユーザーまたは組織の名前。• リポジトリのリビジョンを参照するコミットの ID。

• (オプション) リビジョンに関連付ける説明。

GitHub のリビジョンに関する情報は、この構文を register-application-revision 呼び出しの一部として使用して、コマンドラインで指定できます。

--github-location repository=string,commitId=string

API バージョン 2014-10-06254

Page 263: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

AWS CodeDeploy でのデプロイの使用

AWS CodeDeploy では、デプロイはプロセスであり、プロセスには 1 つ以上のインスタンスのコンテンツをインストールするコンポーネントが含まれます。このコンテンツはコード、ウェブ、設定ファイル、実行ファイル、パッケージ、スクリプトなどによって構成できます。AWS CodeDeploy は、指定した設定ルールに従って、ソースリポジトリに格納されたコンテンツをデプロイします。

AWS CodeDeploy は、2 つのデプロイタイプのオプション、インプレースデプロイおよび Blue/Green デプロイを提供します。

• インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用すれば、各インスタンスがデプロイ中に登録解除され、デプロイ完了後にサービスに復元されるようにすることができます。インプレイスデプロイは、EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用するデプロイでのみ使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要 (p. 4)」を参照してください。

• Blue/Green デプロイ: デプロイの動作は、使用する コンピューティングプラットフォームを選択します。 により異なります。• EC2/オンプレミス コンピューティングプラットフォームを選択します。 の Blue/Green: 以下のス

テップによって、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。• インスタンスは、置き換え先環境に対してプロビジョニングされます。• 最新のアプリケーションリビジョンが置き換え先インスタンスにインストールされます。• アプリケーションのテストやシステムの検証などのアクティビティでは、オプションの待機時間が

発生します。• 置き換え先環境のインスタンスは、Elastic Load Balancing ロードバランサーに登録され、トラ

フィックは、それらに再ルーティングされます。元の環境のインスタンスは登録解除されます。これらのインスタンスは削除するか、その他の用途のために引き続き実行できます。

Note

EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用する場合、Blue/Green デプロイは Amazon EC2 インスタンスでのみ動作します。

• AWS Lambda コンピューティングプラットフォームを選択します。 の Blue/Green: トラフィックは、現在のサーバーレス環境から、更新された Lambda 関数のバージョンの環境に移行されます。検証テストを実行する Lambda 関数を指定し、トラフィックの移行が発生する方法を選択できます。AWSLambda コンピューティングプラットフォームを選択します。 のデプロイはすべて、Blue/Green デプロイです。そのため、デプロイタイプを指定する必要はありません。

Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要 (p. 5)」を参照してください。

Amazon S3 からの自動的なデプロイの詳細については、「;AWS CodeDeploy を使用して Amazon S3 から自動的にデプロイする」を参照してください。

トピック• AWS CodeDeploy を使用してデプロイを作成する (p. 256)• AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)• AWS CodeDeploy デプロイのログデータの表示 (p. 267)• AWS CodeDeploy を使用してデプロイを停止する (p. 270)

API バージョン 2014-10-06255

Page 264: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイの作成

• AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)• 異なる AWS アカウントでアプリケーションをデプロイする (p. 274)• AWS CodeDeploy エージェントを使用してローカルマシン上のデプロイパッケージを検証す

る (p. 277)

AWS CodeDeploy を使用してデプロイを作成するAWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、Amazon S3 (デプロイ先が EC2/オンプレミス コンピューティングプラットフォームを選択します。 である場合は GitHub)にすでにプッシュしたアプリケーションリビジョンをデプロイグループのインスタンスにインストールするデプロイを作成できます。

デプロイを作成するプロセスは、デプロイで使用される コンピューティングプラットフォームを選択します。 によって異なります。

トピック• デプロイの前提条件 (p. 256)• AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソー

ル) (p. 258)• EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソー

ル) (p. 260)• AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI)

(p. 263)• EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成

(CLI) (p. 264)

デプロイの前提条件デプロイを開始する前に、以下のステップが完了していることを確認します。

AWS Lambda コンピューティングプラットフォームのデプロイ前提条件• 少なくとも 1 つのデプロイグループを含むアプリケーションを作成します。詳細については、「AWS

CodeDeploy でアプリケーションを作成 (p. 218)」および「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

• デプロイする Lambda 関数のバージョンを指定するアプリケーションリビジョン (AppSpec file とも呼ばれます) を準備します。AppSpec file では、Lambda 関数を指定してデプロイを検証することもできます。詳細については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

• デプロイにカスタムデプロイ設定を使用する場合、デプロイプロセスを開始する前にカスタムデプロイ設定を作成します。詳細については、Create a Deployment Configuration (p. 216) を参照してください。

EC2/オンプレミスコンピューティングプラットフォームのデプロイ前提条件• インプレースデプロイの場合は、デプロイ先のインスタンスを作成または設定します。詳細について

は、AWS CodeDeploy のインスタンスの使用 (p. 154) を参照してください。Blue/Green デプロイのために、置き換え先環境のテンプレートとして使用する既存の Auto Scaling グループがあるか、元の環境

API バージョン 2014-10-06256

Page 265: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイの前提条件

として指定する 1 つ以上のインスタンスまたは Auto Scaling グループがあります。詳細については、「チュートリアル: AWS CodeDeploy を使用して Auto Scaling グループにアプリケーションをデプロイする (p. 102)」および「AWS CodeDeploy と Auto Scaling の統合 (p. 46)」を参照してください。

• 少なくとも 1 つのデプロイグループを含むアプリケーションを作成します。詳細については、「AWSCodeDeploy でアプリケーションを作成 (p. 218)」および「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を参照してください。

• デプロイグループのインスタンスにデプロイするアプリケーションリビジョンを準備します。詳細については、AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242) を参照してください。

• デプロイにカスタムデプロイ設定を使用する場合、デプロイプロセスを開始する前にカスタムデプロイ設定を作成します。詳細については、Create a Deployment Configuration (p. 216) を参照してください。

• Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合、バケットはデプロイグループのインスタンスと同じ AWS リージョンにあります。

• Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合、Amazon S3 バケットポリシーをバケットに適用済みです。このポリシーでは、アプリケーションリビジョンをダウンロードするために必要なアクセス許可をインスタンスに付与します。

たとえば、次の Amazon S3 バケットポリシーは codedeploydemobucket という名前の AmazonS3 バケットのどこからでもダウンロードする ARN arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo を含む IAM インスタンスプロファイルがアタッチされた任意の Amazon EC2 インスタンスを許可します。

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo" ] } } ]}

次の Amazon S3 バケットポリシーは、codedeploydemobucket という名前の Amazon S3 バケットのどこからでもダウンロードする ARN arn:aws:iam::80398EXAMPLE:user/CodeDeployUser を含む IAM ユーザーに関連付けられたオンプレミスインスタンスを許可します。

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:user/CodeDeployUser" ] } }

API バージョン 2014-10-06257

Page 266: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール)

]}

Amazon S3 バケットポリシーを生成しアタッチする方法については、「バケットポリシーの例」を参照してください。

• Blue/Green デプロイを作成する場合、またはインプレースデプロイのためにデプロイグループにオプションの Classic Load Balancer、Application Load Balancer、または Network Load Balancer を指定している場合、少なくとも 2 つのサブネットを含む VPC を Amazon VPC で作成済みです。(AWSCodeDeploy で使用する Elastic Load Balancing では、ロードバランサーグループ内のすべてのインスタンスが 1 つの VPC 内にあることが必要です)。

VPC を作成済みでない場合は、Amazon VPC 入門ガイド を参照してください。• Blue/Green デプロイを作成する場合、Elastic Load Balancing に Classic Load Balancer、Application

Load Balancer、または Network Load Balancer を設定し、これを使用して元の環境を構成するインスタンスを登録済みです。

Note

置き換え先環境内のインスタンスは後でロードバランサーを使用して登録されます。

Classic Load Balancer を設定するには、クラシックロードバランサー 用ユーザーガイド にあるチュートリアル: Classic Load Balancer の作成のステップを完了します。その際には、次のことに注意してください:• ステップ 2: ロードバランサーの定義、[Create LB Inside] で、インスタンスを作成したときに選択し

たのと同じ VPC を選択します。• ステップ 5: ロードバランサーへの EC2 インスタンスの登録で、元の環境のインスタンスを選択しま

す。• ステップ 7: Load Balancer の作成と検証で、ロードバランサーの DNS アドレスをメモします。

たとえば、ロードバランサーの名前を my-load-balancer とした場合、DNS アドレスは my-load-balancer-1234567890.us-east-2.elb.amazonaws.com のような形式で表示されます。

インターネットに接続したウェブブラウザのアドレスフィールドに DNS 名を貼り付けると、元の環境にデプロイしたアプリケーションが表示されます。

Application Load Balancer を設定するには、以下のトピックのいずれかの指示に従ってください。• Application Load Balancer を作成する• チュートリアル: AWS CLI を使用して Application Load Balancer を作成する

Network Load Balancer を設定するには、以下のトピックのいずれかの指示に従ってください。• Network Load Balancer を作成する• チュートリアル: AWS CLI を使用して Network Load Balancer を作成する

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール)1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. 次のいずれかを行ってください。API バージョン 2014-10-06

258

Page 267: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール)

• AWS CodeDeploy メニューで、[Deployments]、[Create deployment] の順に選択します。• AWS CodeDeploy メニューで [Applications] を選択し、リビジョンのデプロイ先の AWS Lambda

アプリケーションの名前を選択します。コンピューティングプラットフォームを選択します。 列で、AWS Lambda アプリケーションを特定できます。[Application details] ページで、リビジョンをデプロイするデプロイグループのボタンを選択します。[Actions] メニューで、[Deploy new revision]を選択します。

3. [Application] リストで、このデプロイに使用するアプリケーションの名前を選択します。アプリケーションを選択したら、[Application] リストの コンピューティングプラットフォームを選択します。 がAWS Lambda になっていることを確認します。

4. [Deployment group] リストで、アプリケーションに関連付けられるデプロイグループの名前を選択します。

5. [Deployment type] ラベルに注意してください。AWS Lambda のデプロイは、すべて Blue/Green です。

6. [Revision location] の横で、リビジョンの場所を選択します。

• [My revision is stored in Amazon S3] — 詳細については、「Amazon S3 バケットに格納されているリビジョンについての情報を指定します (p. 261)」を参照し、ステップ 6 に戻ります。

• [I will use the AppSpec editor] — JSON または YAML を選択し、提供されたエディタに AppSpecfile を入力します。[Save as text file] を選択して、入力する AppSpec file を保存できます。これらのステップの最後に [Deploy] をクリックするときに、JSON または YAML が有効でないとエラーが発生します。AppSpec file の作成の詳細については、「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」を参照してください。

7. (オプション) [Deployment description] ボックスに、このデプロイの説明を入力します。8. [Deployment configuration] リストで、Lambda 関数のバージョンにトラフィックが移行される方法を

制御するデプロイ設定を選択します。

詳細については、「 AWS Lambda コンピューティングプラットフォームのデプロイ設定 (p. 214)」を参照してください。

9. (オプション) [Rollback configuration overrides] で、該当する場合は、デプロイグループに指定されているものとは別の自動ロールバックオプションをこのデプロイに指定できます。

Note

AWS CodeDeploy のロールバックの詳細については、「デプロイと再デプロイのロールバック (p. 13)」および「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」を参照してください。

次から選択します。

• [Roll back when a deployment fails] — AWS CodeDeploy は既知の正常なリビジョンを新しいデプロイとして再デプロイします。

• [Roll back when alarm thresholds are met] — デプロイグループにアラームが追加された場合、1 つ以上の指定したアラームがアクティブ化されたときに、AWS CodeDeploy は既知の正常なリビジョンを再デプロイします。

• [Disable rollbacks] — このデプロイのロールバックを実行しません。10. [Deploy] を選択します。

デプロイの状態を追跡するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

API バージョン 2014-10-06259

Page 268: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォー

ムを選択します。 のデプロイの作成 (コンソール)

EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール)1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. 次のいずれかを行ってください。

• AWS CodeDeploy メニューで、[Deployments]、[Create deployment] の順に選択します。• AWS CodeDeploy メニューで [Applications] を選択して、リビジョンのデプロイ先の EC2/オンプレ

ミス アプリケーションの名前を選択します。[Compute platform] 列で、EC2/オンプレミス アプリケーションを特定できます。[Application details] ページで、リビジョンをデプロイするデプロイグループのボタンを選択します。[Actions] メニューで、[Deploy new revision] を選択します。

3. [Application] リストで、このデプロイに使用するアプリケーションの名前を選択します。[Computeplatform] に EC2/オンプレミス が表示されることを確認します。

4. [Deployment group] リストで、アプリケーションに関連付けられるデプロイグループの名前を選択します。

5. [Repository type] の横で、リビジョンが保存されているリポジトリタイプを選択します。

• [My application is stored in Amazon S3] — 詳細については、「Amazon S3 バケットに格納されているリビジョンについての情報を指定します (p. 261)」を参照し、ステップ 6 に戻ります。

• [My application is stored in GitHub] — 詳細については、以下の「GitHub リポジトリに格納されているリビジョンについての情報を指定します (p. 262)」 を参照してください。ステップ 6 に戻ります。

6. (オプション) [Deployment description] ボックスに、このデプロイの説明を入力します。7. [Deployment configuration] リストで、インスタンスが新しいアプリケーションリビジョンを使用して

更新されるレート (インプレースデプロイ)、または、トラフィックが置き換え先環境に再ルーティングされるレート (Blue/Green デプロイ) を制御するデプロイ設定を選択します。

詳細については、「AWS CodeDeploy でデプロイ設定を使用する (p. 212)」を参照してください。8. [Content options] で、前回の正常なデプロイに含まれていなかったファイルをデプロイ先で AWS

CodeDeploy によって処理する方法を指定できます。

次から選択します。

• Fail the deployment — エラーが報告され、デプロイのステータスが [Failed] に変更されます。• Overwrite the content — デプロイ先に同じ名前のファイルが存在する場合は、アプリケーションリ

ビジョンのバージョンによって置き換えられます。• Retain the content — デプロイ先に同じ名前のファイルが存在する場合は、それが保持され、アプ

リケーションリビジョンのバージョンはインスタンスにコピーされません。

詳細については、「既存のコンテンツでのロールバック動作 (p. 272)」を参照してください。9. (オプション) [Rollback configuration overrides] で、該当する場合は、デプロイグループに指定されて

いるものとは別の自動ロールバックオプションをこのデプロイに指定できます。

API バージョン 2014-10-06260

Page 269: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォー

ムを選択します。 のデプロイの作成 (コンソール)

Note

AWS CodeDeploy のロールバックの詳細については、「デプロイと再デプロイのロールバック (p. 17)」および「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」を参照してください。

次から選択します。

• [Roll back when a deployment fails] — AWS CodeDeploy は既知の正常なリビジョンを新しいデプロイとして再デプロイします。

• [Roll back when alarm thresholds are met] — デプロイグループにアラームが追加された場合、1 つ以上の指定したアラームがアクティブ化されたときに、AWS CodeDeploy は既知の正常なリビジョンを再デプロイします。

• [Disable rollbacks] — このデプロイのロールバックを実行しません。10. [Deploy] を選択します。

デプロイの状態を追跡するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

トピック• Amazon S3 バケットに格納されているリビジョンについての情報を指定します (p. 261)• GitHub リポジトリに格納されているリビジョンについての情報を指定します (p. 262)

Amazon S3 バケットに格納されているリビジョンについての情報を指定します「EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 260)」の手順を使用している場合は、以下のステップに従って Amazon S3 バケットに保存されているアプリケーションリビジョンの詳細を追加してください。

1. リビジョンの Amazon S3 リンクを [Revision location] ボックスにコピーします。リンク値を確認するには。

1. 別のブラウザタブで

AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

参照して、リビジョンを選択します。2. [Properties] ペインが表示されていない場合、[Properties] ボタンを選択します。3. [Properties] ペインで、[Link] フィールドの値を AWS CodeDeploy コンソールの [Revision

location] ボックスにコピーします。

ETag (ファイルチェックサム) をリビジョンの場所の一部として指定するには。

• [Link] フィールド値が ?versionId=versionId で終わる場合、&etag= および ETag を [Link]フィールド値の末尾に追加します。

• [Link] フィールド値がバージョン ID を指定していない場合、?etag= および ETag を [Link] フィールド値の末尾に追加します。

API バージョン 2014-10-06261

Page 270: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォー

ムを選択します。 のデプロイの作成 (コンソール)

Note

[Link] フィールドの値をコピーするように簡単ではありませんが、次のいずれかの形式でリビジョンの場所を入力することもできます。s3://bucket-name/folders/objectNames3://bucket-name/folders/objectName?versionId=versionIds3://bucket-name/folders/objectName?etag=etags3://bucket-name/folders/objectName?versionId=versionId&etag=etagbucket-name.s3.amazonaws.com/folders/objectName

2. [File type] リストに、ファイル形式を検出できないというメッセージが表示された場合は、リビジョンのファイル形式を選択します。それ以外の場合は、検出されたファイル形式を使用します。

GitHub リポジトリに格納されているリビジョンについての情報を指定します「EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 260)」の手順を使用している場合は、以下のステップに従って GitHub リポジトリに保存されているアプリケーションリビジョンの詳細を追加してください。

1. [Connect to GitHub] で、次のいずれかを実行します。

• GitHub アカウントに対する AWS CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[GitHub account] に、この接続を識別する名前を入力し、[Connect to GitHub] を選択します。アプリケーションの GitHub を操作することをAWS CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 2 に進みます。

• 作成済みの接続を使用するには、その名前を [GitHub account] で選択してから [Connect to GitHub]を選択します。ステップ 4 に進みます。

• 別の GitHub アカウントへの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[Connect to a different GitHub account] を選択し、[Connect to GitHub] を選択します。ステップ 2 に進みます。

2. GitHub にサインインするよう求められたら、[Sign in] ページの手順に従います。GitHub のユーザー名、または E メールとパスワードでサインインします。

3. [Authorize application] ページが表示された場合、[Authorize application] を選択します。4. [Create deployment] ページの、[Repository name] ボックスに、スラッシュ (/)、リビジョンを含むリ

ポジトリの名前が後に続く、リビジョンを含む GitHub ユーザーまたは組織の名前を入力します。入力する値が不確実な場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、ターゲットリポジトリの名前の上にマウスを置きます。GitHub ユーザー

または組織の名前、スラッシュ (/)、リポジトリの名前の順序でツールヒントが表示されます。[Repository name] ボックスに、この表示された値を入力します。

Note

[Your repositories] にターゲットリポジトリの名前が表示されない場合、[Search GitHub]ボックスを使用して、ターゲットリポジトリの名前と、GitHub ユーザーまたは組織の名前を検索します。

5. [Commit ID] ボックスで、リポジトリのリビジョンを参照するコミット ID を入力します。入力する値が不確実な場合:

1. ウェブブラウザの別のタブで、GitHub dashboard にアクセスします。2. [Your repositories] で、ターゲットコミットを含むリポジトリの名前を選択します。

API バージョン 2014-10-06262

Page 271: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラット

フォームを選択します。 のデプロイの作成 (CLI)

3. コミットのリストで、リポジトリのリビジョンを参照するコミット ID を検索してコピーします。通常、この ID は 40 文字で、文字と数字の両方で構成されます (通常はコミット ID の長いバージョンの最初の 10 文字の、コミット ID の短いバージョンを使用しないでください)。

4. [Commit ID] ボックスにコミット ID を貼り付けます。

AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI)アプリケーションとリビジョンの作成後 (AWS Lambda のデプロイでは、これは AppSpec file です) に、次の操作を実行します。

create-deployment コマンドを呼び出して、以下を指定します。

• アプリケーション名。アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• デプロイグループ名。デプロイグループ名のリストを表示するには、list-deployment-groups コマンドを呼び出します。

• デプロイするリビジョンに関する情報。

Amazon S3 に格納されているリビジョン。• リビジョンを含む Amazon S3 バケット名。• アップロードされたリビジョンの名前。• (オプション) リビジョンの Amazon S3 バージョン ID。(バージョン ID を指定しない場合、AWS

CodeDeploy は最新バージョンを使用します)。• (オプション) リビジョンの ETag。(ETag が指定されていない場合、AWS CodeDeploy はオブジェク

トの検証をスキップします)。

Amazon S3 にないファイルに保存されているリビジョンの場合、ファイル名とパスが必要です。リビジョンファイルは、YAML または JSON で書かれているため、ほとんどの場合、その拡張子は .json または .yaml です。

• (オプション) 使用するデプロイ設定の名前。デプロイ設定のリストを表示するには、list-deployment-configs コマンドを呼び出します。(指定されない場合、AWS CodeDeploy は、特定のデフォルトのデプロイ設定を使用します)。

• (オプション) デプロイの説明。

リビジョンファイルは Amazon S3 バケットにアップロードされるファイルまたは文字列として指定できます。create-deployment コマンドの一部として使用する場合の各構文は次のようになります。

• Amazon S3 バケット:

version および eTag 設定はオプションです。

--s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string

• 文字列:

--revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'

API バージョン 2014-10-06263

Page 272: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI)

Note

create-deployment コマンドはファイルからリビジョンをロードできます。詳細については、「ファイルからパラメータをロードする」を参照してください。

AWS Lambda のデプロイリビジョンテンプレートについては、「AWS Lambda デプロイ向けに AppSpecファイルを追加する (p. 243)」を参照してください。リビジョンの例については、「 AWS Lambda のデプロイ向けの AppSpec File の例 (p. 340)」を参照してください。

デプロイの状態を追跡するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI)AWS CLI を使用して EC2/オンプレミス コンピューティングプラットフォームを選択します。 にリビジョンをデプロイするには:

1. インスタンスを準備し、アプリケーションを作成して、リビジョンをプッシュした後、次のいずれかを実行します。• Amazon S3 バケットからリビジョンをデプロイする場合は、そのままステップ 2 に進みます。• GitHub リポジトリからリビジョンをデプロイする場合は、まず「AWS CodeDeploy アプリケーショ

ンを GitHub リポジトリに接続します。 (p. 265)」のステップを完了してからステップ 2 に戻ります。

2. create-deployment コマンドを呼び出して、以下を指定します。• アプリケーション名。アプリケーション名のリストを表示するには、list-applications コマンドを呼び

出します。• Amazon EC2 デプロイグループ名。デプロイグループ名のリストを表示するには、list-deployment-

groups コマンドを呼び出します。• デプロイするリビジョンに関する情報。

Amazon S3 に格納されているリビジョン。• リビジョンを含む Amazon S3 バケット名。• アップロードされたリビジョンの名前とファイル形式。

Note

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported forWindows Server instances.

• (オプション) リビジョンの Amazon S3 バージョン ID。(バージョン ID を指定しない場合、AWSCodeDeploy は最新バージョンを使用します)。

• (オプション) リビジョンの ETag。(ETag が指定されていない場合、AWS CodeDeploy はオブジェクトの検証をスキップします)。

GitHub で格納されたリビジョンの場合。• スラッシュ (/)、リポジトリの名前が後に続く、リポジトリに割り当てられたリビジョンを含む

GitHub ユーザーまたは組織の名前。• リビジョンのコミット ID。

• (オプション) 使用するデプロイ設定の名前。デプロイ設定のリストを表示するには、list-deployment-configs コマンドを呼び出します。(指定されない場合、AWS CodeDeploy は、特定のデフォルトのデプロイ設定を使用します)。

• (オプション) ApplicationStop デプロイライフサイクルイベントが失敗したときに、BeforeInstall デプロイライフサイクルイベントを続行してインスタンスへのデプロイを続行するかどうか。

• (オプション) デプロイの説明。

API バージョン 2014-10-06264

Page 273: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI)

• Blue/Green デプロイの場合、Amazon EC2 インスタンスを識別するのに使用する、1 つ以上の AutoScaling グループの名前、または、タグフィルタキー、型、および値を含む、Blue/Green デプロイの置き換え先環境に属するインスタンスに関する情報。

Note

コマンドラインで、Amazon S3 のリビジョンについての情報を直接呼び出す create-deploymentの一部としてこの構文を使用します。(version および eTag 設定はオプションです)。

--s3-location bucket=string,key=string,bundleType=tar|tgz|zip,version=string,eTag=string

コマンドラインで、GitHub のリビジョンについての情報を直接呼び出す create-deployment の一部としてこの構文を使用します。

--github-location repository=string,commitId=string

すでにプッシュされているリビジョンについての情報を入手するには、list-application-revisionsコマンドを呼び出します。

デプロイの状態を追跡するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」を参照してください。

トピック• AWS CodeDeploy アプリケーションを GitHub リポジトリに接続します。 (p. 265)

AWS CodeDeploy アプリケーションを GitHub リポジトリに接続します。AWS CLI を使用して初めて GitHub リポジトリからアプリケーションをデプロイするには、まず AWSCodeDeploy に GitHub アカウントに代わって GitHub を操作するためのアクセス許可を付与する必要があります。AWS CodeDeploy コンソールを使用して、このステップをアプリケーションごとに一度実行する必要があります。

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。3. [Create deployment] を選択します。

Note

新しいデプロイは作成されません。これは現在、GitHub ユーザーアカウントに代わってGitHub を操作するためのアクセス権限を AWS CodeDeploy に付与する唯一の方法です。

4. [Application] ドロップダウンリストで、GitHub ユーザーアカウントにリンクするアプリケーションを選択します。

5. [Deployment group] ドロップダウンリストで使用可能な任意のデプロイグループを選択します。6. [Repository type] の横の [My application revision is stored in GitHub] を選択します。7. [Connect to GitHub] を選択します。

API バージョン 2014-10-06265

Page 274: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイの詳細の表示

Note

[Connect to a different GitHub account] リンクが表示されている場合:アプリケーションの別の GitHub アカウントの代わりに GitHub を操作する AWS CodeDeployをすでに承認している可能性があります。AWS CodeDeploy にリンクされているすべてのアプリケーションに対してサインインしている GitHub アカウントに代わって、GitHub を操作する AWS CodeDeploy の承認を取り消した可能性があります。詳細については、「AWS CodeDeploy のアプリケーションを使用した GitHub の認証 (p. 56)」を参照してください。

8. GitHub にまだサインインしていない場合は、[Sign in] ページの手順に従います。9. [Authorize application] ページで、[Authorize application] を選択します。10. AWS CodeDeploy にアクセス許可があるので、[Cancel] を選択して、EC2/オンプレミス コンピュー

ティングプラットフォームを選択します。 のデプロイの作成 (CLI) (p. 264) の手順に進んでください。

AWS CodeDeploy を使用したデプロイの詳細の表示

AWS CodeDeploy コンソール、AWS CLI または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられているデプロイの詳細を表示できます。

Note

インスタンスのデプロイログは以下の場所で確認できます。

• Amazon Linux、RHEL、Ubuntu Server:/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log

• Windows Server: C:\ProgramData\Amazon\CodeDeploy<DEPLOYMENT-GROUP-ID><DEPLOYMENT-ID>\logs\scripts.log

詳細については、「ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)」を参照してください。

トピック• デプロイの詳細の表示 (コンソール) (p. 266)• デプロイの詳細の表示 (CLI) (p. 267)

デプロイの詳細の表示 (コンソール)AWS CodeDeploy コンソールを使用してデプロイの詳細を表示するには:

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで、[Deployments] を選択して、デプロイとその詳細のリストを表示します。

API バージョン 2014-10-06266

Page 275: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイの詳細の表示 (CLI)

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

3. 1 つのデプロイの詳細を表示するには、[Deployments] でデプロイ ID を選択します。

デプロイの詳細の表示 (CLI)AWS CLI を使用してデプロイの詳細を表示するには、get-deployment コマンドまたは batch-get-deployments コマンドを呼び出します。list-deployments コマンドを呼び出して、get-deployment コマンドおよび batch-get-deployments コマンドへの入力として使用する一意のデプロイ ID のリストを取得できます。

1 つのデプロイの詳細を表示するには、get-deployment コマンドを呼び出し、一意のデプロイ ID を特定します。デプロイ ID を取得するには、list-deployments コマンドを呼び出します。

複数のデプロイの詳細を表示するには、batch-get-deployments コマンドを呼び出し、複数の一意のデプロイ ID を特定します。デプロイ ID を取得するには、list-deployments コマンドを呼び出します。

デプロイ ID の一覧を表示するには、list-deployments コマンドを呼び出し、以下を指定します。

• デプロイに関連付けられたアプリケーションの名前。アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• デプロイに関連付けられたデプロイグループの名前。デプロイグループ名のリストを表示するには、list-deployment-groups コマンドを呼び出します。

• オプションで、デプロイの詳細をデプロイの状態別に含めるかどうか (指定しない場合、一致するすべてのデプロイが、デプロイの状態にかかわらず表示されます)。

• オプションで、デプロイの作成開始または終了時間別、あるいはその両方を基準にデプロイの詳細を含めるかどうか (指定しない場合、一致するすべてのデプロイが、作成時間にかかわらず表示されます)。

AWS CodeDeploy デプロイのログデータの表示AWS CodeDeploy デプロイで作成されたログデータを表示するには、CloudWatch コンソールに集約データを表示するように Amazon CloudWatch Logs エージェントを設定するか、個別のインスタンスにログインしてログファイルを確認します。

トピック• Amazon CloudWatch コンソールでのログファイルデータの表示 (p. 267)• インスタンスでのログファイルの表示 (p. 268)

Amazon CloudWatch コンソールでのログファイルデータの表示インスタンスに Amazon CloudWatch Logs エージェントがインストールされていると、そのインスタンスに対するすべてのデプロイのログデータは、CloudWatch コンソールで表示できるようになります。分かりやすいように、インスタンス別に表示するのではなく、Amazon CloudWatch Logs を使用してログファイルを集中的にモニタリングすることをお勧めします。Amazon CloudWatch ログエージェントの設定の

API バージョン 2014-10-06267

Page 276: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンスでのログファイルの表示

詳細については、「CloudWatch Logs コンソールでの AWS CodeDeploy ログの表示」を参照してください。

インスタンスでのログファイルの表示個別のインスタンスのデプロイログデータを表示するには、インスタンスにサインインして、エラーや他のデプロイイベントに関する情報を参照します。

トピック• Amazon Linux、RHEL、および Ubuntu Server の各インスタンスのデプロイログファイルを表示する

には (p. 268)• Windows Server インスタンスのデプロイログファイルを表示するには (p. 269)

Amazon Linux、RHEL、および Ubuntu Server の各インスタンスのデプロイログファイルを表示するにはAmazon Linux、RHEL、および Ubuntu Server の各インスタンスのデプロイログは、次の場所に保存されています。

/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log

Amazon Linux、RHEL、および Ubuntu Server の各インスタンスのデプロイログを表示または分析するには、インスタンスにサインインし、次のコマンドを入力して AWS CodeDeploy エージェントのログファイルを開きます。

less /var/log/aws/codedeploy-agent/codedeploy-agent.log

エラーメッセージのログファイルを参照するには、次のコマンドを入力します。

コマンド 結果

& ERROR ログファイルでエラーメッセージのみを表示します。ERROR という単語の前後に 1 つのスペースを使用します。

/ ERROR 次のエラーメッセージを検索します。¹

? ERROR 前のエラーメッセージを検索します。² ERROR という単語の前後に 1 つのスペースを使用します。

G ログファイルの末尾に移動します。

g ログファイルの先頭に移動します。

q ログファイルを終了します。

h 追加のコマンドについて参照します。

¹ 「/ ERROR」と入力してから、次のエラーメッセージを検索するには、「n」と入力します。前のエラーメッセージを検索するには、「N」と入力します。

² 「? ERROR」と入力してから、次のエラーメッセージを検索するには「n」、前のエラーメッセージを検索するには「N」と入力します。

API バージョン 2014-10-06268

Page 277: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンスでのログファイルの表示

また、次のコマンドを入力して AWS CodeDeploy スクリプトのログファイルを開くこともできます。

less /opt/codedeploy-agent/deployment-root/deployment-group-ID/deployment-ID/logs/scripts.log

エラーメッセージのログファイルを参照するには、次のコマンドを入力します。

コマンド 結果

/stderr ログファイルでエラーメッセージのみを表示します。

/stderr 次のエラーメッセージを検索します。¹

?stderr 前のエラーメッセージを検索します。²

G ログファイルの末尾に移動します。

g ログファイルの先頭に移動します。

q ログファイルを終了します。

h 追加のコマンドについて参照します。

¹「/stderr」と入力してから、次のエラーメッセージを前方に検索するには、「n」と入力します。前のエラーメッセージを後方に検索するには、「N」と入力します。

² 「?stderr」と入力してから、次のエラーメッセージを後方に検索するには、「n」と入力します。前のエラーメッセージを前方に検索するには、「N」と入力します。

Windows Server インスタンスのデプロイログファイルを表示するにはAWS CodeDeploy エージェントのログファイル : Windows Server インスタンスで AWS CodeDeploy エージェントのログファイルは次の場所に保存されています。

C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt

Windows Server インスタンスで AWS CodeDeploy エージェントのログファイルを表示または分析するには、インスタンスにサインインし、次のコマンドを入力してファイルを開きます。

notepad C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt

ログファイルでエラーメッセージを参照するには、Ctrl+F キーを押し、「ERROR [」と入力してから、Enter キーを押して最初のエラーを見つけます。

AWS CodeDeploy スクリプトログファイル: Windows Server インスタンスのデプロイログは次の場所に保存されています。

C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\logs\scripts.log

各パラメーターの意味は次のとおりです。

• deployment-group-id は examplebf3a9c7a-7c19-4657-8684-b0c68d0cd3c4 などの文字列

API バージョン 2014-10-06269

Page 278: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイの停止

• deployment-id は、d-12EXAMPLE などの識別子

次のコマンドを入力して AWS CodeDeploy スクリプトのログファイルを開きます。

notepad C:\ProgramData\Amazon\CodeDeploy\deployment-group-ID\deployment-ID\logs\scripts.log

ログファイルでエラーメッセージを参照するには、Ctrl+F キーを押し、「stderr」と入力してから、Enter キーを押して最初のエラーを見つけます。

AWS CodeDeploy を使用してデプロイを停止するAWS CodeDeploy コンソール、AWS CLI、または AWS CodeDeploy API を使用して、AWS アカウントに関連付けられるデプロイを停止します。

Warning

EC2/オンプレミス のデプロイを停止すると、デプロイグループのインスタンスの一部またはすべてを未確定のデプロイメントの状態のまま残すことができます。詳細については、「停止、失敗したデプロイ (p. 17)」を参照してください。

トピック• デプロイ (コンソール) の停止 (p. 270)• デプロイ (CLI) の停止 (p. 270)

デプロイ (コンソール) の停止1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. AWS CodeDeploy メニューで [Deployments] を選択します。

Note

エントリが表示されていない場合は、正しいリージョンが選択されていることを確認します。ナビゲーションバーのリージョンセレクターで、AWS General Reference のリージョンとエンドポイントに一覧表示されているリージョンの 1 つを選択します。AWS CodeDeploy は、これらのリージョンでのみサポートされます。

3. 停止するデプロイの [Actions] 列で、[Stop] を選択します。

Note

[Stop] ボタンが [Actions] 列に表示されない場合、デプロイは停止できないところまで進行しています。

デプロイ (CLI) の停止デプロイ ID を指定して、stop-deployment コマンドを呼び出します。デプロイ ID の一覧を表示するには、list-deployments コマンドを呼び出します。

API バージョン 2014-10-06270

Page 279: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイを使用した再デプロイおよびロールバック

AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック

AWS CodeDeploy は、以前にデプロイされたアプリケーションのリビジョンを新しいデプロイとして再デプロイすることによって、デプロイをロールバックします。これらのロールバックされたデプロイは、前のデプロイのバージョンを復元するのではなく、新しいデプロイ ID を使用する技術的に新しいデプロイです。

デプロイは、自動または手動でロールバックできます。

トピック• 自動ロールバック (p. 271)• 手動ロールバック (p. 271)• ロールバックおよび再デプロイのワークフロー (p. 271)• 既存のコンテンツでのロールバック動作 (p. 272)

自動ロールバックデプロイが失敗した場合、または指定した監視しきい値に達した場合、自動的にロールバックするように、デプロイグループまたはデプロイを設定できます。この場合、アプリケーションリビジョンの最後の既知の正常なバージョンがデプロイされます。自動ロールバックは、アプリケーションを作成するとき、またはデプロイグループを作成または更新するときに設定します。

新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。

Note

デプロイが自動的にロールバックされるときには、Amazon Simple Notification Service を使用して通知を受け取ることができます。詳細については、Monitoring Deployments with Amazon SNSEvent Notifications (p. 291) を参照してください。

自動ロールバックの設定の詳細については、「デプロイグループの詳細オプションの設定 (p. 239)」を参照してください。

手動ロールバック自動ロールバックをセットアップしていない場合は、以前にデプロイされたアプリケーションリビジョンを使用する新しいデプロイを作成し、リビジョンを再デプロイする手順に従うことによって、デプロイを手動でロールバックすることができます。アプリケーションが不明な状態になった場合、これを行う場合があります。トラブルシューティングに多くの時間を費やすのではなく、アプリケーションを既知の動作状態に再デプロイすることができます。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

Note

デプロイグループからインスタンスを削除する場合、AWS CodeDeploy はそのインスタンスにすでにインストールされているものはアンインストールしません。

ロールバックおよび再デプロイのワークフロー自動ロールバックが開始された場合、または再デプロイまたは手動ロールバックを手動で開始した場合、AWS CodeDeploy は、まず、最後に正常にインストールされたすべてのファイルを各参加インスタンスから削除しようとします。AWS CodeDeploy は、クリーンアップファイルを確認することで、これを行います。

API バージョン 2014-10-06271

Page 280: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド既存のコンテンツでのロールバック動作

/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup ファイル (Amazon Linux、Ubuntu Server、および RHEL インスタンスの場合)。

C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup ファイル (Windows Server インスタンスの場合)

存在する場合、AWS CodeDeploy は、クリーンアップファイルを使用して、新しいデプロイを開始する前にリストされたすべてのファイルをインスタンスから削除します。

たとえば、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルは、Windows Server を実行している Amazon EC2 インスタンスにすでにデプロイされ、スクリプトはデプロイライフサイクルイベント中にさらに 2 つのテキストファイルを作成しました。

c:\temp\a.txt (previously deployed by AWS CodeDeploy)c:\temp\b.txt (previously deployed by AWS CodeDeploy)c:\temp\c.bat (previously deployed by AWS CodeDeploy)c:\temp\d.bat (previously deployed by AWS CodeDeploy)c:\temp\e.txt (previously created by c.bat)c:\temp\f.txt (previously created by d.bat)

クリーンアップファイルは、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルのみが表示されます。

c:\temp\a.txtc:\temp\b.txt c:\temp\c.bat c:\temp\d.bat

新しいデプロイの前に、AWS CodeDeploy は最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルのみを削除し、最後の 2 つのテキストファイルはそのまま残します。

c:\temp\a.txt will be removedc:\temp\b.txt will be removedc:\temp\c.bat will be removedc:\temp\d.bat will be removedc:\temp\e.txt will remainc:\temp\f.txt will remain

このプロセスの一部として、AWS CodeDeploy は、手動または自動ロールバックであっても、その後の再デプロイの間に以前のデプロイのスクリプトによって実行されるアクションを元に戻したり、一致させたりしません。たとえば、c.bat および d.bat ファイルが、既に存在している e.txt および f.txt ファイルを再作成しないロジックを含んでいる場合、その後のデプロイで AWS CodeDeploy が c.bat およびd.bat を実行するたびに、e.txt および f.txt の古いバージョンはそのまま残ります。c.bat およびd.bat にロジックを追加して、新しいバージョンを作成する前に e.txt および f.txt の古いバージョンを常にチェックして削除することができます。

既存のコンテンツでのロールバック動作デプロイプロセスの一環として、AWS CodeDeploy エージェントは、前回のデプロイでインストールされたすべてのファイルを各インスタンスから削除します。前回のデプロイに含まれていないファイルがデプロイ先に表示された場合は、次回のデプロイ時にこれらのファイルを AWS CodeDeploy で処理する方法を選択できます。

• Fail the deployment — エラーが報告され、デプロイのステータスが [Failed] に変更されます。• Overwrite the content — アプリケーションリビジョンのファイルのバージョンにより、インスタンスの

既存のファイルのバージョンが置き換えられます。• Retain the content — デプロイ先のファイルは保持され、アプリケーションリビジョンのバージョンは

インスタンスにコピーされません。

API バージョン 2014-10-06272

Page 281: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド既存のコンテンツでのロールバック動作

ファイルを保持して次回のデプロイの一部とすることを選択すると、そのファイルはアプリケーションリビジョンパッケージに追加する必要がなくなります。たとえば、デプロイに必要なファイルでもアプリケーションリビジョンバンドルには追加しないで直接インスタンスにアップロードできます。または、アプリケーションが既に本番稼働環境にあっても AWS CodeDeploy を初めて使用してデプロイする場合は、ファイルをインスタンスにアップロードできます。

ロールバックでは、デプロイの失敗が原因で前回の成功したデプロイのアプリケーションリビジョンが再デプロイされますが、その前回の成功したデプロイのコンテンツ処理オプションがロールバックデプロイに適用されます。

ただし、失敗したデプロイの設定がファイルを保持せずに上書きするようになっていた場合、ロールバックは予期しない結果になる可能性があります。特に、保持しようとしていたファイルが、失敗したデプロイによって削除される可能性があります。ロールバックデプロイを実行したときに、ファイルは、ロールバック時にインスタンス上ではなくデプロイが実行されます。

次の例では 3 つのデプロイがあります。失敗したデプロイ 2 で上書き (削除) されたファイルは、デプロイ3 でアプリケーションリビジョン 1 が再度デプロイされたときには使用不能 (保持不能) です。

デプロイメント アプリケーションリビジョン

コンテンツ上書きオプション

デプロイのステータス

動作と結果

デプロイ 1 アプリケーションリビジョン 1

保持 成功 AWS CodeDeployは、前回のデプロイでデプロイされなかったファイルをデプロイ先で検出します。これらのファイルは、現在のデプロイの一部とするために意図的に置かれている場合があります。これらのファイルは今回のデプロイパッケージの一部として保持および記録されます。

デプロイ 2 アプリケーションリビジョン 2

上書き 失敗 デプロイプロセス中に、AWSCodeDeploy は前回の成功したデプロイに含まれているすべてのファイルを削除します。これには、デプロイ 1 で保持されたファイルも含まれます。

ただし、デプロイが失敗する原因は、これとは無関係です。

デプロイ 3 アプリケーションリビジョン 1

保持 デプロイまたはデプロイグルー

API バージョン 2014-10-06273

Page 282: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド異なる AWS アカウントでアプリケーションをデプロイする

デプロイメント アプリケーションリビジョン

コンテンツ上書きオプション

デプロイのステータス

動作と結果

プに対して自動ロールバックが有効になっているため、AWSCodeDeploy は正常であることが判明している前回のアプリケーションリビジョン (アプリケーションリビジョン 1) をデプロイします。

ただし、デプロイ 1 で保持することにしたファイルはデプロイ 2 の失敗前に削除されており、AWSCodeDeploy で回復することはできません。これらのファイルは、アプリケーションリビジョン 1 に必要であれば、自分でインスタンスに追加できます。または、新しいアプリケーションリビジョンを作成できます。

異なる AWS アカウントでアプリケーションをデプロイする

組織には、一般的に、さまざまな目的で使用する複数の AWS アカウントがあります (たとえば、システム管理タスク用のもの、開発、テストおよび本稼働用のもの、開発およびテスト環境に関連付けられたもの、本稼働環境に関連付けられたものなど)。

異なるアカウントで、関連作業を実行するかもしれませんが、デプロイする AWS CodeDeploy デプロイグループと Amazon EC2 インスタンスは、作成されたアカウントに厳密に関連付けられています。たとえば、1 つのアカウントで起動したインスタンスを別のデプロイグループに追加することはできません。

開発用アカウントと本稼働用アカウントの 2 つの AWS アカウントがあるとします。主に開発用アカウントで作業しますが、認証情報のフルセットまたは開発用アカウントからのサインアウトや本稼働アカウントへのサインインなしで、本稼働アカウントでデプロイの開始を可能にします。

クロスアカウント設定手順に従うことで、別のアカウントの認証情報フルセットの必要なしで、組織の別のアカウントに属するデプロイを開始できます。これは、そのアカウントへの一時的アクセスを許可するAWS Security Token Service (AWS STS) が提供する機能を利用して一部行われます。

API バージョン 2014-10-06274

Page 283: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 1: どちらかのアカウントで S3 バケットを作成する

ステップ 1: どちらかのアカウントで S3 バケットを作成する開発用アカウントか本稼働アカウントで。

• まだそうしていない場合は、本稼働用アカウントのアプリケーションリビジョンが保存される AmazonS3 バケットを作成します。詳細については、「Amazon S3 でのバケットの作成」を参照してください。同じファイルを開発用アカウントでテスト、確認した本稼働環境にデプロイして、同じバケットとアプリケーションリビジョンを両方のアカウントに使用することもできます。

ステップ 2: Amazon S3 バケットのアクセス許可をProduction アカウントの IAM インスタンスプロファイルに付与します。ステップ 1 で作成した Amazon S3 バケットが本稼働アカウントにある場合、このステップは必要ありません。本稼働アカウントにもあるため、後で引き受けるロールはこのバケットへのアクセス権限をすでに持っています。

開発用アカウントで Amazon S3 バケットを作成する場合は、以下を実行します。

• 本稼働アカウントで、IAM インスタンスプロファイルを作成します。詳細については、ステップ 4:Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26) を参照してください。

Note

この IAM インスタンスプロファイルの ARN を書き留めます。次に作成するクロスバケットポリシーにそれを追加する必要があります。

• 開発用アカウントで、開発用アカウントで作成した Amazon S3 バケットへのアクセス権限を、本稼働アカウントで先ほど作成した IAM インスタンスプロファイルに付与します。詳細については、「例 2:バケット所有者がクロスアカウントのバケットのアクセス許可を付与」を参照してください。

クロスアカウントのバケットのアクセス許可を付与するプロセスを完了するにあたり、次の点に注意してください。• サンプルウォークスルーでは、アカウント A は開発用アカウントを表し、アカウント B は本稼働アカ

ウントを表します。• アカウント A (開発用アカウント) タスクを実行する際、ウォークスルーで提供されたサンプルポリ

シーを使用する代わりに、クロスアカウントアクセス許可を付与する次のバケットポリシーを変更します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Cross-account permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": [

API バージョン 2014-10-06275

Page 284: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 3: Production アカウントで、リソースやクロスアカウントのロールを作成します。

"arn:aws:s3:::bucket-name/*" ] } ]}

account-id は、IAM インスタンスプロファイルを作成した生産用アカウントのアカウント番号を表します。

role-name は、作成した IAM インスタンスプロファイル名を表します。

bucket-name は、ステップ 1 で作成したバケットの名前を表します。バケット名の後に必ず /* が含まれるようにして、バケット内の各ファイルへのアクセスを提供します。

ステップ 3: Production アカウントで、リソースやクロスアカウントのロールを作成します。本稼働アカウントで。

• このガイドの手順を使用して、AWS CodeDeploy リソース — アプリケーション、デプロイグループ、デプロイ設定、Amazon EC2 インスタンス、Amazon EC2 インスタンスプロファイル、サービスロールなど — を作成します。

• デプロイアカウントのユーザーが、この本稼働アカウントで AWS CodeDeploy オペレーションを引き受けて実行できる追加のロール、クロスアカウント IAM ロールを作成します。

クロスアカウントロールの作成に役立つガイドとして、「ウォークスルー: AWS アカウント間の IAMロールを使用したアクセスの委任」を使用します。ポリシードキュメントにウォークスルーのサンプルアクセス許可を追加する代わりに、少なくとも次の 2 つの AWS が指定したポリシーをロールにアタッチする必要があります。• AmazonS3FullAccess: S3 バケットが開発用アカウントにある場合にのみ必要です。Amazon S3

サービスとリソースへのフルアクセスを持ち、リビジョンが保存されている引き受けた本稼働アカウントロールを提供します。

• AWSCodeDeployDeployerAccess: IAM ユーザーがリビジョンを登録し、デプロイできるようにします。

デプロイを開始するだけでなく、デプロイグループを作成および管理する場合、AWSCodeDeployDeployerAccess ポリシーの代わりに、AWSCodeDeployFullAccess ポリシーを追加します。IAM 管理ポリシーを使用して、AWS CodeDeploy タスクにアクセス許可を付与することに関する詳細については、「AWS CodeDeploy の AWS 管理 (定義済み) ポリシー (p. 309)」を参照してください。

このクロスアカウントロールの使用時に、ほかの AWS サービスでタスクを実行する場合、追加のポリシーをアタッチできます。

Important

クロスアカウントアクセスの IAM ロールを作成する際に、生産用アカウントへのアクセス許可を得るのに必要な詳細を書きとめておきます。AWS マネジメントコンソール を使用して、ロールを切り替えるには、次のいずれかを指定する必要があります。

• 引き受けたロールの認証情報を使用して生産用アカウントにアクセスするための URL。URL は[Review] ページのクロスアカウント作成プロセスの最後に表示されます。

• クロスアカウントロール名およびアカウント ID 番号またはエイリアス。API バージョン 2014-10-06

276

Page 285: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドステップ 4: Amazon S3 バケットにアプリケーションリビジョンをアップロードする

AWS CLI を使用してロールを切り替えるには、次を指定する必要があります。

• 引き受けるクロスアカウントロールの ARN。

ステップ 4: Amazon S3 バケットにアプリケーションリビジョンをアップロードするAmazon S3 バケットを作成したアカウントで。

• Amazon S3 バケットにアプリケーションリビジョンをアップロードします。詳細については、AWSCodeDeploy のリビジョンを Amazon S3 にプッシュします。 (p. 248) を参照してください。

ステップ 5: クロスアカウントロールを引き受け、アプリケーションをデプロイする開発用アカウントでは、AWS CLI または AWS マネジメントコンソール を使用して、クロスアカウントロールを引き受け、本稼働アカウントでデプロイを開始することができます。

AWS マネジメントコンソール を使用してロールを切り替え、デプロイを開始する方法に関する手順については、「ロールの切り替え (AWS マネジメントコンソール)」および「EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 260)」を参照してください。

AWS CLI を使用して、クロスアカウントロールを引き受け、デプロイを開始する方法の詳細については、「IAM ロールの切り替え (AWS コマンドラインインターフェイス)」および「EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (CLI) (p. 264)」を参照してください。

AWS STS を通してロールを引き受けることの詳細については、『AWS Security Token Service ユーザーガイド』の「AssumeRole」および『AWS CLI コマンドリファレンス』の「assume-role」を参照してください。

関連トピック:

• 開発用アカウントから本稼働アカウントへの AWS CodeDeploy: のデプロイ

AWS CodeDeploy エージェントを使用してローカルマシン上のデプロイパッケージを検証する

AWS CodeDeploy エージェントを使用して、ログインしているインスタンスのコンテンツをデプロイできます。これにより、デプロイ時に使用予定のアプリケーション仕様ファイル (AppSpec file) とデプロイ予定のコンテンツの整合性を検証することができます。

アプリケーションおよびデプロイグループを作成する必要はありません。ローカルインスタンス上に保存されているコンテンツをデプロイする上で、AWS アカウントは必要ありません。最も簡単に検証するには、AppSpec file やデプロイ予定のコンテンツが含まれるディレクトリで、オプションを指定せずに[codedeploy-local] コマンドを実行します。このツールには、他のテストケースのオプションが含まれています。

ローカルマシン上のデプロイパッケージを検証することで、以下を行うことができます。

API バージョン 2014-10-06277

Page 286: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド前提条件

• アプリケーションリビジョンの整合性の検証。• AppSpec file のコンテンツの検証。• 既存のアプリケーションコードを使用した AWS CodeDeploy の初回実行。• コンテンツの迅速なデプロイ (インスタンスにすでにログインしている場合)。

ローカルインスタンス、またはサポートされているリモートリポジトリタイプ (Amazon S3 バケットまたはパブリックの GitHub リポジトリ) 上に保存されているコンテンツをデプロイできます。

前提条件ローカルのデプロイを開始する前に、以下の手順を行います。

• AWS CodeDeploy エージェントでサポートされているインスタンスタイプを作成または使用します。詳細については、AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132) を参照してください。

• バージョン 1.0.1.1352 以降の AWS CodeDeploy エージェントをインストールします。詳細については、AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142) を参照してください。

• Amazon S3 バケットまたは GitHub リポジトリからコンテンツをデプロイする場合は、AWSCodeDeploy で使用する IAM ユーザーをプロビジョニングします。詳細については、ステップ 1: IAMユーザーをプロビジョニングする (p. 20) を参照してください。

• Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合は、使用中のリージョンにAmazon S3 バケットを作成し、そのバケットに Amazon S3 バケットポリシーを適用します。このポリシーでは、アプリケーションリビジョンをダウンロードするために必要なアクセス許可をインスタンスに付与します。

たとえば、次の Amazon S3 バケットポリシーは codedeploydemobucket という名前の AmazonS3 バケットのどこからでもダウンロードする ARN arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo を含む IAM インスタンスプロファイルがアタッチされた任意の Amazon EC2 インスタンスを許可します。

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:role/CodeDeployDemo" ] } } ]}

次の Amazon S3 バケットポリシーは、codedeploydemobucket という名前の Amazon S3 バケットのどこからでもダウンロードする ARN arn:aws:iam::80398EXAMPLE:user/CodeDeployUser を含む IAM ユーザーに関連付けられたオンプレミスインスタンスを許可します。

{ "Statement": [ {

API バージョン 2014-10-06278

Page 287: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドローカルのデプロイを作成する。

"Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::80398EXAMPLE:user/CodeDeployUser" ] } } ]}

Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

• Amazon S3 バケットまたは GitHub リポジトリからアプリケーションリビジョンをデプロイする場合は、IAM インスタンスプロファイルをセットアップして、そのプロファイルをインスタンスにアタッチします。詳細については、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」、「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CLI またはAmazon EC2 コンソール) (p. 163)」、および「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレート) (p. 169)」を参照してください。

• GitHub からコンテンツをデプロイする場合は、GitHub アカウントおよびパブリックリポジトリを作成します。GitHub のアカウントを作成するには、「GitHub への参加」を参照してください。GitHub リポジトリを作成するには、「Repo の作成」を参照してください。

Note

プライベートリポジトリは、現在サポートされていません。プライベートの GitHub リポジトリにコンテンツが保存されている場合は、インスタンスにダウンロードし、--bundle-location オプションでローカルパスを指定します。

• インスタンスにデプロイするコンテンツ (AppSpec ファイルなど) を準備し、Amazon S3 バケットまたは GitHub リポジトリのローカルインスタンスに配置します。詳細については、AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242) を参照してください。

• 他の設定オプションでデフォルト値以外の値を使用する場合は、設定ファイルを作成し、その設定ファイルをインスタンスに配置します (Amazon Linux、RHEL、または Ubuntu Server インスタンスの場合は/etc/codedeploy-agent/conf/codedeployagent.yml、Windows Server インスタンスの場合はC:\ProgramData\Amazon\CodeDeploy\conf.yml)。詳細については、AWS CodeDeploy エージェント設定リファレンス (p. 344) を参照してください。

Note

Amazon Linux、RHEL、または Ubuntu Server インスタンスで設定ファイルを使用する場合は、以下のいずれかを行う必要があります。• :root_dir: 変数および :log_dir: 変数を使用して、デプロイルートおよびログディレク

トリフォルダでデフォルト以外の場所を指定する。• sudo を使用して、AWS CodeDeploy エージェントのコマンドを実行する。

ローカルのデプロイを作成する。ローカルのデプロイを作成するインスタンスで、ターミナルセッション (Amazon Linux、RHEL、UbuntuServer インスタンス)、またはコマンドプロンプト (Windows Server) を開き、ツールコマンドを実行します。

Note

codedeploy-local コマンドは、次の場所にインストールされます。

API バージョン 2014-10-06279

Page 288: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドローカルのデプロイを作成する。

• Amazon Linux、RHEL、または Ubuntu Server: /opt/codedeploy-agent/bin。• Windows Server: C:\ProgramData\Amazon\CodeDeploy\bin。

基本的なコマンド構文

codedeploy-local [options]

概要

codedeploy-local[--bundle-location <value>][--type <value>][--file-exists-behavior <value>][--deployment-group <value>][--events <comma-separated values>][--agent-configuration-file <value>]

オプション

-l、--bundle-location

アプリケーションリビジョンバンドルの場所。場所を指定しない場合は、現在作業中のディレクトリがデフォルトで使用されます。--bundle-location に値を指定する場合、--type の値も指定する必要があります。

バンドルの場所を表す形式の例を以下に示します。

• ローカル Amazon Linux、RHEL、または Ubuntu Server インスタンス: /path/to/local/bundle.tgz

• ローカル Windows Server インスタンス: C:/path/to/local/bundle• Amazon S3 バケット: s3://mybucket/bundle.tar• GitHub リポジトリ: https://github.com/account-name/repository-name/

-t、--type

アプリケーションリビジョンバンドルの形式。サポートされるタイプには tgz、tar、zip、directoryなどがあります。タイプを指定しない場合は、デフォルトで directory が使用されます。--type に値を指定する場合、--bundle-location の値も指定する必要があります。

-b、--file-exists-behavior

デプロイのターゲット場所に存在しているが、デプロイが正常に完了していないファイルを処理する方法について説明します。オプションには DISALLOW、OVERWRITE、RETAIN などがあります。詳細については、『AWS CodeDeploy API Reference』の「fileExistsBehavior」を参照してください。

-g、--deployment-group

デプロイされるコンテンツのターゲット場所を示すフォルダへのパス。フォルダを指定しない場合は、default-local-deployment-group という名前のフォルダがデプロイルートディレクトリ内に作成されます。ローカルデプロイを作成する度に、d-98761234-local のような名前のサブディレクトリがこのフォルダ内に作成されます。

-e、--events

上書きライフサイクルのイベントフックセット。AppSpec file に表示されているイベントの代わりに、順番に実行されます。フックが複数ある場合は、カンマ区切りで指定できます。このオプションは以下の場合に使用できます。

API バージョン 2014-10-06280

Page 289: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例

• AppSpec file をアップデートせずに、異なるイベントのセットを実行する場合。• AppSpec file の例外として、単一のイベントフックを実行する場合 (例: ApplicationStop)。

上書きリストで DownloadBundle イベントや Install イベントを指定しない場合は、指定するすべてのイベントフックより前に実行されます。DownloadBundle や Install を --events オプションのリストに含んだ場合、通常 AWS CodeDeploy デプロイのイベント前に実行されるイベントよりも前に実行する必要があります。詳細については、AppSpec の「hooks」セクション (p. 330) を参照してください。

-c、--agent-configuration-file

デプロイに使用する設定ファイルの場所 (デフォルト以外の場所に設定ファイルを保存している場合)。設定ファイルは、デプロイ向けに別のデフォルト値および動作を指定します。

デフォルトでは、設定ファイルは /etc/codedeploy-agent/conf/codedeployagent.yml (AmazonLinux、RHEL、Ubuntu Server インスタンス)、または C:/ProgramData/Amazon/CodeDeploy/conf.yml (Windows Server) に保存されています。詳細については、「AWS CodeDeploy エージェント設定リファレンス (p. 344)」を参照してください。

-h、--help

ヘルプコンテンツの概要を表示します。

-v、--version

ツールのバージョン番号を表示します。

例有効なコマンド形式の例を以下に示します。

codedeploy-local

codedeploy-local --bundle-location /path/to/local/bundle/directory

codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group

codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group

Amazon S3 からバンドルをデプロイする:

codedeploy-local --bundle-location s3://mybucket/bundle.tgz --type tgz

codedeploy-local --bundle-location s3://mybucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group

パブリック GitHub リポジトリからバンドルをデプロイする:

codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip

API バージョン 2014-10-06281

Page 290: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド例

codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip

codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip

codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip

複数のライフサイクルイベントを指定するバンドルをデプロイする:

codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck

ApplicationStop ライフサイクルイベントを使用して、以前にデプロイされたアプリケーションを停止する:

codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop

特定のデプロイグループ ID を使用してデプロイする:

codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca

codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca

API バージョン 2014-10-06282

Page 291: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド自動化ツール

AWS CodeDeploy のデプロイのモニタリング

モニタリングは、AWS CodeDeploy と AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。マルチポイント障害が発生した場合は、その障害をより簡単にデバッグできるように、AWS ソリューションのすべての部分からモニタリングデータを収集する必要があります。ただし、AWS CodeDeploy のモニタリングを開始する前に、以下の質問に対する回答を反映したモニタリング計画を作成する必要があります。

• どのような目的でモニタリングしますか?• モニタリングの対象となるリソースとは ?• どのくらいの頻度でこれらのリソースをモニタリングしますか?• 使用するモニタリングツールは?• 誰がモニタリングタスクを実行しますか?• 誰が問題が発生したときに通知を受け取りますか?

次のステップは、さまざまなタイミングと負荷条件でパフォーマンスを測定することにより、お客様の環境で通常の AWS CodeDeploy パフォーマンスのベースラインを確定することです。AWS CodeDeploy をモニタリングするとき、過去のモニタリングデータを保存し、現在のパフォーマンスデータと比較することで、パフォーマンスの通常パターンと異常パターンを特定し、問題に対処する方法を考案できるようにします。

たとえば、AWS CodeDeploy を使用すると、デプロイおよびターゲットインスタンスのステータスをモニタリングできます。デプロイまたはインスタンスが失敗すると、アプリケーション仕様ファイルの再設定、AWS CodeDeploy エージェントの再インストールまたは更新、アプリケーションまたはデプロイグループの設定の更新、インスタンスの設定または AppSpec ファイルの変更が必要が生じることがあります。

ベースラインを確立するには、少なくとも、次の項目をモニタリングする必要があります。

• デプロイイベントとステータス• インスタンスイベントとステータス

自動モニタリングツールAWS では、AWS CodeDeploy のモニタリングに使用できるさまざまなツールを提供しています。これらのツールの中には、自動モニタリングを設定できるものもあれば、手操作を必要とするものもあります。モニタリングタスクをできるだけ自動化することをお勧めします。

以下に示す自動化されたモニタリングツールを使用すると、AWS CodeDeploy がモニタリングされ、問題が検出されたときにレポートされます。

• [Amazon CloudWatch Alarms] – 指定された期間にわたって単一のメトリクスを監視し、複数の期間にわたり既定のしきい値に関連するメトリクス値に基づいて 1 つ以上のアクションを実行します。アクションは、Amazon Simple Notification Service (Amazon SNS) トピックまたは Amazon EC2 Auto Scalingポリシーに送信される通知です。CloudWatch アラームはそれが特定の状態にあるという理由だけではアクションを呼び出しません。アクションを呼び出すには、状態が変更され、その状態が特定の期間にわたって維持されている必要があります。詳細については、「Monitoring Deployments with AmazonCloudWatch Tools (p. 285)」を参照してください。

API バージョン 2014-10-06283

Page 292: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド手動ツール

CloudWatch アラームモニタリングを使用するサービスロールの更新に関する詳細については、「AWSCodeDeploy サービス ロールに CloudWatch アクセス許可を付与する (p. 286)」を参照してください。CloudWatch アラームモニタリングの AWS CodeDeploy オペレーションへの追加の詳細については、「AWS CodeDeploy でアプリケーションを作成 (p. 218)」、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」または「AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)」を参照してください。

• [Amazon CloudWatch Logs] – AWS CloudTrail またはその他のソースのログファイルの監視、保存、アクセスができます。詳細については、Amazon CloudWatch ユーザーガイドの「ログファイルのモニタリング」を参照してください。

CloudWatch コンソールを使用して AWS CodeDeploy ログを表示する方法については、「 CloudWatchLogs コンソールで AWS CodeDeploy ログを表示する」を参照してください。

• [Amazon CloudWatch Events] – イベントに一致し、1 つ以上のターゲット関数またはストリームにルーティングして変更を行い、状態情報を取得して、修正作業を行います。詳細については、AmazonCloudWatch ユーザーガイドの「Amazon CloudWatch イベントとは」を参照してください。

AWS CodeDeploy オペレーションでの CloudWatch イベント の使用に関する詳細については、「Amazon CloudWatch Events を使用したデプロイのモニタリング (p. 286)」を参照してください。

• [AWS CloudTrail Log Monitoring] – アカウント間でログファイルを共有し、CloudWatch Logs に送信してリアルタイムで CloudTrail ログファイルを監視し、Java でログを処理するアプリケーションを記述して、CloudTrail によって配信後にログファイルが変更されていないことを確認します。詳細については、AWS CloudTrail User Guideの「CloudTrail ログファイルを使用する」を参照してください。

AWS CodeDeploy を使用した CloudTrail の使用に関する詳細については、「Monitoring Deploymentswith AWS CloudTrail (p. 289)」を参照してください。

• Amazon Simple Notification Service — イベント駆動型のトリガーを設定して、成功または失敗など、デプロイおよびインスタンスイベントについての SMS や電子メール通知を受信します。詳細については、「トピックの作成」および「Amazon Simple Notification Service とは」を参照してください。。

AWS CodeDeploy の Amazon SNS 通知の設定に関する詳細については「Monitoring Deployments withAmazon SNS Event Notifications (p. 291)」を参照してください。

手動モニタリングツールAWS CodeDeploy のモニタリングにおけるもう 1 つの重要な部分は、CloudWatch アラームで網羅されていない項目を手動でモニタリングすることです。AWS CodeDeploy、CloudWatch、その他の AWS コンソールのダッシュボードには、AWS 環境の状態が一目でわかるビューが表示されます。AWS CodeDeploydeployments のログファイルを確認することもお勧めします。

• AWS CodeDeploy コンソールは以下を表示します。• デプロイのステータス• リビジョンのデプロイを最後に試みた日時と、最後に成功した日時• デプロイの成功、失敗、スキップ、進行中のインスタンス数• オンプレミスインスタンスのステータス• オンプレミスインスタンスが登録、または登録解除された日時

• CloudWatch ホーム ページは以下のように表示されます。• 現在のアラームとステータス• アラームとリソースのグラフ• サービス状態ステータス

さらに、CloudWatch を使用して次のことが行えます。• 重視するサービスをモニタリングするためのカスタマイズしたダッシュボードを作成する

API バージョン 2014-10-06284

Page 293: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon CloudWatch ツールを使用したデプロイのモニタリング

• メトリクスデータをグラフ化して、問題のトラブルシューティングを行い、傾向を確認する• AWS リソースのすべてのメトリクスを検索して、参照する• 問題があることを通知するアラームを作成/編集する

トピック

• Monitoring Deployments with Amazon CloudWatch Tools (p. 285)• Monitoring Deployments with AWS CloudTrail (p. 289)• Monitoring Deployments with Amazon SNS Event Notifications (p. 291)

Amazon CloudWatch ツールを使用したデプロイのモニタリング

次の CloudWatch ツールを使用して AWS CodeDeploy deployments をモニタリングできます。AmazonCloudWatch Events、CloudWatch アラーム、および、Amazon CloudWatch Logs。

作成 AWS CodeDeploy エージェントおよびデプロイによって作成されたログを確認することにより、デプロイメントの失敗の原因のトラブルシューティングを行うのに役立ちます。一度に 1 つのインスタンスでAWS CodeDeploy ログを確認する代わりに、CloudWatch Logs を使用して、中央のロケーションですべてのログをモニタリングすることができます。

CloudWatch コンソールを使用して AWS CodeDeploy ログを表示する方法については、「 CloudWatchLogs コンソールで AWS CodeDeploy ログを表示する」を参照してください。

AWS CodeDeploy deployments をモニタリングするための CloudWatch アラームおよび CloudWatch イベント の使用に関する詳細については、次のトピックを参照してください。

トピック• AWS CodeDeploy で CloudWatch アラームを使用したデプロイのモニタリング (p. 285)• Amazon CloudWatch Events を使用したデプロイのモニタリング (p. 286)

AWS CodeDeploy で CloudWatch アラームを使用したデプロイのモニタリングAWS CodeDeploy オペレーションで使用しているインスタンスまたは Amazon EC2 Auto Scaling グループの CloudWatch アラームを作成できます。アラームは、指定期間にわたって単一のメトリクスを監視し、その値と複数期間に対するしきい値との比較結果に基づいて 1 つ以上のアクションを実行します。CloudWatch アラームはそれが特定の状態にあるという理由だけではアクションを呼び出しません。アクションを呼び出すには、状態が変更され、その状態が特定の期間にわたって維持されている必要があります。

ネイティブ CloudWatch アラーム機能を使用して、Amazon SNS 通知の送信、インスタンスの停止、終了、再起動、復旧のようなデプロイで使用しているインスタンスが失敗したときに CloudWatch にサポートされている任意のアクションを指定できます。AWS CodeDeploy オペレーションでは、デプロイグループに関連付けた任意の CloudWatch アラームがアクティブ化されるたびにデプロイを停止するようにデプロイグループを設定できます。

最大 10 の CloudWatch アラームを AWS CodeDeploy デプロイグループに関連付けることができます。指定したアラームがアクティブ化した場合、デプロイは停止し、ステータスは [Stopped] に更新されます。このオプションを使用するには、AWS CodeDeploy サービスロールに CloudWatch アクセス許可を付与する必要があります。

API バージョン 2014-10-06285

Page 294: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon CloudWatch Events を

使用したデプロイのモニタリング

CloudWatch コンソールの CloudWatch アラームの設定に関する詳細については、「Amazon CloudWatchユーザーガイド」の「Amazon CloudWatch アラームの作成」を参照してください。

CloudWatch アラームを AWS CodeDeploy デプロイグループに関連付ける方法に関する詳細については、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」および「AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)」を参照してください。

トピック• AWS CodeDeploy サービス ロールに CloudWatch アクセス許可を付与する (p. 286)

AWS CodeDeploy サービス ロールに CloudWatch アクセス許可を付与するデプロイで CloudWatch アラームモニタリングを使用する前に、AWS CodeDeploy オペレーションで使用するサービスロールは、CloudWatch リソースへのアクセスするアクセス許可を付与する必要があります。

サービスロールに CloudWatch アクセス許可を付与するには

1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。3. AWS CodeDeploy オペレーションで使用するサービスロールの名前を選択します。4. [Permissions] タブの [Inline Policies] エリアで、[Create Role Policy] を選択します。

– または –

[Create Role Policy] ボタンを使用できない場合は、[Inline Policies] エリアを拡張して、[click here] を選択します。

5. [Set Permissions] ページで、[Custom Policy] を選択し、次に [Select] を選択します。6. [Review Policy] ページで、[Policy Name] フィールドに、このポリシーを識別するための名前

[CWAlarms] などを入力します。7. [Policy Document] フィールドに以下を貼り付けます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:DescribeAlarms", "Resource": "*" } ]}

8. [Apply Policy] を選択します。

Amazon CloudWatch Events を使用したデプロイのモニタリングAmazon CloudWatch Events を使用して、インスタンスの状態の変更、または AWS CodeDeploy オペレーションのデプロイ (イベント) を検出して対処できます。次に、作成したルールに基づいて CloudWatch イベント はデプロイまたはインスタンスが、ルールで指定した状態になると、1 つ以上のターゲットアクションを呼び出します。状態変更のタイプに応じて、通知を送信、状態情報を取得し、修正作業またはそ

API バージョン 2014-10-06286

Page 295: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon CloudWatch Events を

使用したデプロイのモニタリング

の他のアクションを取ることができます。AWS CodeDeploy オペレーションの一部として CloudWatch イベント を使用している場合は、以下のターゲットのタイプを選択できます。

• AWS Lambda 関数• Kinesis ストリーム• Amazon SQS キュー• 組み込みターゲット (CloudWatch アラームアクション)• Amazon SNS トピック

次にユースケースをいくつか示します。

• Lambda 機能を使用して、デプロイが失敗するたびに Slack チャネルに通知を配信します。• Kinesis ストリームにデプロイまたはインスタンスのデータをプッシュして、包括的でリアルタイムの状

態モニタリングをサポートします。• CloudWatch アラームアクションを使用して、指定したデプロイやインスタンスイベントが発生したと

きに、Amazon EC2 インスタンスを自動的に停止、終了、再起動、復旧します。

このトピックの残りの部分では、AWS CodeDeploy の CloudWatch イベント ルールを作成するための基本的な手順について説明します。ただし AWS CodeDeploy オペレーションで使用するイベントルールを作成する前に、以下のことを実行する必要があります。

• CloudWatch イベント 前提条件を完了します。詳細については、「Amazon CloudWatch Events の前提条件」を参照してください。

• CloudWatch イベント のイベント、ルール、ターゲットに精通しておいてください。詳細については、以下を参照してください。「Amazon CloudWatch Events とはなんですか」 および 「新しいCloudWatch イベント - AWS リソースの変化の追跡と対応」

• イベントのルールで使用するターゲットを作成します。

AWS CodeDeploy 用の CloudWatch イベント ルールを作成するには。

1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。2. ナビゲーションペインの [Events] を選択します。3. [Create rule] を選択してから、[Event selector] で [AWS CodeDeploy] を選択します。4. 詳細タイプを指定します。

• インスタンスとデプロイの両方のすべての状態変更に適用されるルールを作成するには、[Anydetail type] を選択してから、ステップ 6 に進んでください。

• インスタンスのみに適用するルールを作成するためには [Specific detail type] を選択してから、[CodeDeploy インスタンスの状態変更通知] を選択します。

• デプロイのみに適用するルールを作成するためには [Specific detail type] を選択してから、[CodeDeploy デプロイの状態変更通知] を選択します。

5. ルールを適用する状態変更を指定します。

• すべての状態変更に適用されるルールを作成するには、[Any state] を選択します。• いくつかの状態変更のみに適用されるルールを作成するためには、Specific state(s) を選択してか

ら、リストから 1 つ以上のステータス値を選択します。次の表は、使用できるステータス値を一覧表示します。

デプロイのステータス値 インスタンスのステータス値

FAILURE FAILURE

API バージョン 2014-10-06287

Page 296: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon CloudWatch Events を

使用したデプロイのモニタリング

デプロイのステータス値 インスタンスのステータス値開始

STOP

キュー

準備完了

SUCCESS

開始

準備完了

SUCCESS

6. ルールが適用される AWS CodeDeploy アプリケーションを指定します。

• すべてのアプリケーションに適用するルールを作成するためには、[Any application] を選択し、ステップ 8 に進んでください。

• 1 つのアプリケーションのみに適用するルールを作成するためには、[Specific application] を選択してから、リストからアプリケーション名を選択します。

7. ルールが適用されるデプロイを指定します。

• 選択したアプリケーションと関連付けられたすべてのデプロイグループに適用されるルールを作成するためには、[Any deployment group] を選択します。

• 選択したアプリケーションに関連付けられる 1 つのデプロイグループのみに適用されるルールを作成するためには、[Specific deployment group(s)] を選択してから、リストからデプロイグループ名を選択します。

8. ルール設定を確認して、イベントモニタリング要件を満たしていることを確認します。

次に、MyCodeDeployApp という名前のアプリケーションの MyDeploymentFleet デプロイグループ内で任意のインスタンスにデプロイが失敗するたびに処理されるイベントルールの設定を示します。

API バージョン 2014-10-06288

Page 297: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CloudTrail を使用したデプロイのモニタリング

9. [Targets] エリアで、[Add target*] を選択します。10. [Select target type] リストで、このルールを使用するために準備したターゲットのタイプを選択してか

ら、そのタイプに必要な追加オプションを設定します。11. [Configure details] を選択します。12. [Configure rule details] ページで、ルールの名前と説明を入力し、[State] ボックスを選択して、すぐに

ルールを有効化します。13. ルールが適切であることを確認したら、[Create rule] を選択します。

AWS CloudTrail を使用したデプロイのモニタリング

AWS CodeDeploy は CloudTrail と統合されています。これは、AWS アカウントで AWS CodeDeploy に代わって行われた API 呼び出しをキャプチャし、指定した Amazon S3 バケットにログファイルを送信するサービスです。CloudTrail は、AWS CodeDeploy コンソール、AWS CLI を通した AWS CodeDeploy コマンド、または AWS CodeDeploy API からの API 呼び出しを直接キャプチャします。CloudTrail によって収集された情報を使用して、AWS CodeDeploy に対してどのようなリクエストが行われたかを判断することができます。リクエストの作成元のソース IP アドレス、リクエストの実行者、リクエストの実行日時などです。CloudTrail の詳細については (設定する方法や有効にする方法などを含む) 「AWS CloudTrail UserGuide 」を参照してください。

CloudTrail での AWS CodeDeploy 情報AWS アカウントで CloudTrail のログ記録を有効にすると、AWS CodeDeploy アクションに対する API 呼び出しがログファイルに記録されます。AWS CodeDeploy レコードは、他の AWS サービスレコードと一

API バージョン 2014-10-06289

Page 298: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy ログファイルエントリの概要

緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

AWS CodeDeploy アクションすべては、「AWS CodeDeploy Command Line Reference」または「AWSCodeDeploy API Reference」で記録され、文書化されます。たとえば、デプロイを作成し、アプリケーションを削除し、アプリケーションリビジョンを登録する呼び出しは、CloudTrail ログファイルにエントリを生成します。

各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログのユーザー ID 情報により、リクエストが、ルートまたは IAM ユーザーの認証情報を使用して送信されたか、ロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して送信されたか、あるいは別のAWS のサービスによって送信されたかを確認できます。詳細については、CloudTrail Event Reference のuserIdentity フィールドを参照してください。

ログファイルは無期限に保管できますが、ログファイルを自動的にアーカイブまたは削除するようにAmazon S3 ライフサイクルルールを定義することもできます。 デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

新しいログファイルが配信されるときに、CloudTrail が Amazon SNS 通知を発行するようにできます。詳細については、CloudTrail 用の Amazon SNS 通知の構成を参照してください。

また、複数の AWS リージョンと複数の AWS アカウントからの AWS CodeDeploy ログファイルを 1 つのAmazon S3 バケットに集約することもできます。詳細については、「Receiving CloudTrail Log Files FromMultiple Regions」を参照してください。

AWS CodeDeploy ログファイルエントリの概要CloudTrail ログファイルには、複数の JSON 形式イベントで構成される 1 つ以上のログエントリが記録されます。ログエントリは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、パラメータ、アクションの日時などに関する情報を含みます。ログエントリは、特定の順序になるように生成されるわけではありません。つまり、パブリック API 呼び出しの順序付けられたスタックトレースではありません。

以下の例は、AWS CodeDeploy がデプロイグループのアクションを作成することを示す CloudTrail ログエントリを示しています。

{ "Records": [{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE:203.0.113.11", "arn": "arn:aws:sts::123456789012:assumed-role/example-role/203.0.113.11", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-27T03:57:36Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:role/example-role", "accountId": "123456789012", "userName": "example-role" } } }, "eventTime": "2014-11-27T03:57:36Z", "eventSource": "codedeploy.amazonaws.com", "eventName": "CreateDeploymentGroup",

API バージョン 2014-10-06290

Page 299: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAmazon SNS イベント通知を使用したデプロイのモニタリング

"awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.11", "userAgent": "example-user-agent-string", "requestParameters": { "applicationName": "ExampleApplication", "serviceRoleArn": "arn:aws:iam::123456789012:role/example-instance-group-role", "deploymentGroupName": "ExampleDeploymentGroup", "ec2TagFilters": [{ "value": "CodeDeployDemo", "type": "KEY_AND_VALUE", "key": "Name" }], "deploymentConfigName": "CodeDeployDefault.HalfAtATime" }, "responseElements": { "deploymentGroupId": "7d64e680-e6f4-4c07-b10a-9e117EXAMPLE" }, "requestID": "86168559-75e9-11e4-8cf8-75d18EXAMPLE", "eventID": "832b82d5-d474-44e8-a51d-093ccEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, ... additional entries ... ]}

Amazon SNS イベント通知を使用したデプロイのモニタリング

トリガーを AWS CodeDeploy デプロイグループに追加すると、そのデプロイグループのデプロイまたはインスタンスに関連するイベントに関する通知を受信できます。これらの通知は、トリガーのアクションの一部となった Amazon SNS トピックにサブスクライブされている受信者に送信されます。

SMS メッセージまたは電子メールメッセージで、AWS CodeDeploy イベントの通知を受信できます。また、Amazon SQS キューへのメッセージの送信、または AWS Lambda での関数の呼び出しなど、指定されたイベントが他の方法で発生したときに作成される JSON データを使用することもできます。デプロイおよびインスタンストリガーに提供される JSON データの構造については、「AWS CodeDeploy トリガーの JSON データの形式 (p. 300)」を参照してください。

次の場合に、トリガーを使用して通知を受け取ることもできます。

• トラブルシューティングできるように、デプロイが失敗または停止したときに知る必要がある開発者の場合。

• Amazon EC2 フリートの状態を監視するために、いくつのインスタンスが失敗したかを知る必要があるシステム管理者の場合。

• デスクトップの電子メールクライアントのフォルダに様々なタイプの通知をルーティングするフィルタリングルールを使用して、デプロイおよびインスタンスのイベントの数を一目で把握したいマネージャーの場合。

次のいずれかのイベントタイプに対して、AWS CodeDeploy デプロイグループごとに最大 10 のトリガーを作成できます。

デプロイイベント インスタンスイベント

• 成功• 失敗

• 成功• 失敗

API バージョン 2014-10-06291

Page 300: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドサービス ロールへの Amazon SNS アクセス許可の付与

デプロイイベント インスタンスイベント• Started• 停止• ロールバック• 準備完了¹• すべてのデプロイイベント

• Started• 準備完了¹• すべてのインスタンスイベント

¹Blue/Green デプロイにのみ適用されます。最新のアプリケーションのリビジョンが、置き換え先環境でインスタンスにインストールされており、元の環境からのトラフィックをロードバランサーの背後で再ルーティングすることができることを示します。詳細については、「AWS CodeDeploy でのデプロイの使用 (p. 255)」を参照してください。

トピック• AWS CodeDeploy サービス ロールへの Amazon SNS アクセス許可の付与 (p. 292)• AWS CodeDeploy イベントのトリガーを作成 (p. 293)• AWS CodeDeploy デプロイグループのトリガーの編集 (p. 297)• AWS CodeDeploy デプロイグループからトリガーを削除 (p. 299)• AWS CodeDeploy トリガーの JSON データの形式 (p. 300)

AWS CodeDeploy サービス ロールへの Amazon SNSアクセス許可の付与トリガーが通知を生成する前に、AWS CodeDeploy オペレーションで使用するサービスロールには、Amazon SNS リソースへのアクセス許可を付与する必要があります。

サービスロールに Amazon SNS アクセス許可を付与するには

1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。3. AWS CodeDeploy オペレーションで使用するサービスロールの名前を選択します。4. [Permissions] タブの [Inline Policies] エリアで、[Create Role Policy] を選択します。

– または –

[Create Role Policy] ボタンを使用できない場合は、[Inline Policies] エリアを拡張して、[click here] を選択します。

5. [Set Permissions] ページで、[Custom Policy] を選択し、次に [Select] を選択します。6. [Review Policy] ページで、[Policy Name] フィールドに、このポリシーを識別するための名前

[SNSPublish] などを入力します。7. [Policy Document] フィールドに以下を貼り付けます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "*" } ]

API バージョン 2014-10-06292

Page 301: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy イベントのトリガーを作成

}

8. [Apply Policy] を選択します。

AWS CodeDeploy イベントのトリガーを作成AWS CodeDeploy デプロイまたはインスタンスイベントの Amazon Simple Notification Service (AmazonSNS) トピックを発行するトリガーを作成できます。次に、そのイベントが発生した場合、関連付けられたトピックのすべてのサブスクライバーは、SMS メッセージまたは電子メールメッセージなどの、トピックで指定されたエンドポイントを経由して通知を受信します。Amazon SNS は、トピックをサブスクライブする複数のメソッドを提供します。

トリガーを作成する前に、トリガーが指す Amazon SNS トピックを設定する必要があります。詳細については、「トピックの作成」を参照してください。トピックを作成する際には、Topic-group-us-west-3-deploy-fail または Topic-group-project-2-instance-stop などの形式で、目的をわかりやすくする名前を付けることをお勧めします。

トリガーのために通知を送信する前に、AWS CodeDeploy サービスロールに Amazon SNS アクセス許可を付与する必要もあります。詳細については、AWS CodeDeploy サービス ロールへの Amazon SNS アクセス許可の付与 (p. 292) を参照してください。

トピックを作成した後、サブスクライバーを追加できます。トピックの作成、管理、およびサブスクライブについての詳細は、「Amazon Simple Notification Service とは」を参照してください。

AWS CodeDeploy イベント (コンソール) の通知を送信するトリガーの作成AWS CodeDeploy コンソールを使用して、AWS CodeDeploy イベント用のトリガーを作成できます。セットアッププロセスの最後に、アクセス許可およびトリガーの詳細の両方が正しくセットアップされていることを確認するためにテスト通知メッセージが送信されます。

AWS CodeDeploy イベントのトリガーを作成するには

1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページで、トリガーを送信するアプリケーションの名前を選択します。3. [Applications details] ページで、トリガーを送信するデプロイグループの横にある矢印を選択します。4. [Triggers ] エリアで、[Create trigger] を選択します。5. [Create trigger] ペインで、以下の作業を行います。

• [Trigger name] で、目的をわかりやすく示すトリガーの名前を入力します。Trigger-group-us-west-3-deploy-fail または Trigger-group-eu-central-instance-stop などの形式をお勧めします。

• イベントでは、通知を送信するために Amazon SNS トピックをトリガーするイベントタイプまたはタイプを選択します。

• Amazon SNS トピックで、このトリガーを送信するために作成したトピックの名前を選択します。6. [Create trigger] を選択します。

AWS CodeDeploy は、AWS CodeDeploy および Amazon SNS トピックとの間のアクセスを正しく設定したことを確認するためのテスト通知を送信します。トピックに対して選択したエンドポイントタ

API バージョン 2014-10-06293

Page 302: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy イベントのトリガーを作成

イプに応じて、トピックをサブスクライブしている場合は、SMS メッセージまたは電子メールメッセージで確認を受信します。

AWS CodeDeploy イベント (CLI) の通知を送信するためのトリガーの作成CLI を使用して、デプロイグループを作成するときにトリガーを含めることも、既存のデプロイグループにトリガーを追加することもできます。

新しいデプロイグループの通知を送信するためのトリガーを作成するには

デプロイグループを設定するための JSON ファイルを作成し、--cli-input-json オプションを使用して create-deployment-group コマンドを実行します。

JSON ファイルを作成する最も簡単な方法は、--generate-cli-skeleton オプションを使用してJSON 形式のコピーを取得し、プレーンテキストエディターで必要な値を指定することです。

1. 次のコマンドを実行し、結果をプレーンテキストエディターにコピーします。

aws deploy create-deployment-group --generate-cli-skeleton

2. 既存の AWS CodeDeploy アプリケーションの名前を追加します。

{ "applicationName": "TestApp-us-east-2", "deploymentGroupName": "", "deploymentConfigName": "", "ec2TagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "onPremisesInstanceTagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "autoScalingGroups": [ "" ], "serviceRoleArn": "", "triggerConfigurations": [ { "triggerName": "", "triggerTargetArn": "", "triggerEvents": [ "" ] } ]}

3. 設定するパラメーターの値を指定します。

create-deployment-group コマンドを使用する場合は、少なくとも次のパラメーター値を指定する必要があります。

API バージョン 2014-10-06294

Page 303: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy イベントのトリガーを作成

• applicationName: アカウントで既に作成されたアプリケーションの名前。• deploymentGroupName: 作成するデプロイグループの名前。• serviceRoleArn: アカウント内の AWS CodeDeploy 用にセットアップする既存のサービスロール

の ARN。詳細については、ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) を参照してください。

triggerConfigurations セクションで、次のパラメーターの値を指定します。

• triggerName: 簡単に識別できるように、トリガーに付与した名前。Trigger-group-us-west-3-deploy-fail または Trigger-group-eu-central-instance-stop などの形式をお勧めします。

• triggerTargetArn: トリガーに関連付けるために作成した Amazon SNS トピックの ARN で以下の形式: arn:aws:sns:us-east-2:80398EXAMPLE:NewTestTopic。

• triggerEvents: 通知をトリガーするイベントタイプまたはイベント。1 つ以上のイベントタイプを指定し、複数のイベントタイプ名をカンマで区切ることができます (たとえば、"triggerEvents":["DeploymentSuccess","DeploymentFailure","InstanceFailure"])。1 つ以上のイベントタイプを追加すると、これらのすべてのタイプの通知は、それぞれの異なるトピックではなく、指定したトピックに送信されます。次のイベントタイプから選択できます。• DeploymentStart• DeploymentSuccess• DeploymentFailure• DeploymentStop• DeploymentRollback• DeploymentReady (Blue/Green デプロイで置き換え先インスタンスにのみ適用します)• InstanceStart• InstanceSuccess• InstanceFailure• InstanceReady (Blue/Green デプロイで置き換え先インスタンスにのみ適用します)

次の設定例では、TestApp-us-east-2 という名前のアプリケーション用の dep-group-ghi-789-2 という名前のデプロイグループを作成し、デプロイの開始、成功、または失敗のたびに通知の送信を促すトリガーを作成します。

{ "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "deploymentGroupName": "dep-group-ghi-789-2", "ec2TagFilters": [ { "Key": "Name", "Value": "Project-ABC", "Type": "KEY_AND_VALUE" } ], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "triggerConfigurations": [ { "triggerName": "Trigger-group-us-east-2", "triggerTargetArn": "arn:aws:sns:us-east-2:80398EXAMPLE:us-east-deployments", "triggerEvents": [ "DeploymentStart", "DeploymentSuccess",

API バージョン 2014-10-06295

Page 304: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy イベントのトリガーを作成

"DeploymentFailure" ] } ]}

4. 更新を JSON ファイルとして保存し、create-deployment-group コマンドを実行するときに --cli-input-json オプションを使用してそのファイルを呼び出します。

Important

Be sure to include file:// before the file name. It is required in this command.

aws deploy create-deployment-group --cli-input-json file://filename.json

作成プロセスの最後に、アクセス許可およびトリガーの詳細の両方が正しく設定されていることを示すテスト通知メッセージを受信します。

既存のデプロイグループの通知を送信するためのトリガーを作成するには

AWS CLI を使用して、AWS CodeDeploy イベントのトリガーを既存のデプロイグループに追加するには、JSON ファイルを作成してデプロイグループを更新し、--cli-input-json オプションを使用してupdate-deployment-group コマンドを実行します。

JSON ファイルを作成する最も簡単な方法は、get-deployment-group コマンドを実行し、JSON 形式でデプロイグループの設定をコピーして、プレーンテキストエディターでパラメーター値を更新することです。

1. 次のコマンドを実行し、結果をプレーンテキストエディターにコピーします。

aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group

2. 出力から次のものを削除します。

• 出力の先頭の [{ "deploymentGroupInfo":] を削除します。• 出力の末尾の [}] を削除します。• [deploymentGroupId] を含む行を削除します。• [deploymentGroupName] を含む行を削除します。

テキストファイルのコンテンツは、次のようになります。

{ "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "autoScalingGroups": [], "ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Value": "Project-ABC", "Key": "Name" } ], "triggerConfigurations": [], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": []}

API バージョン 2014-10-06296

Page 305: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループのトリガーの編集

3. [triggerConfigurations] セクションで、[triggerEvents]、[triggerTargetArn]、および[triggerName] パラメーターのデータを追加します。トリガーの設定パラメーターについての詳細は、「TriggerConfig」を参照してください。

テキストファイルのコンテンツは、次のようになります。このコードは、デプロイの開始、成功、または失敗のたびに通知を送信するように求められます。

{ "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "autoScalingGroups": [], "ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Value": "Project-ABC", "Key": "Name" } ], "triggerConfigurations": [ { "triggerEvents": [ "DeploymentStart", "DeploymentSuccess", "DeploymentFailure" ], "triggerTargetArn": "arn:aws:sns:us-east-2:80398EXAMPLE:us-east-deployments", "triggerName": "Trigger-group-us-east-2" } ], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": []}

4. アップデートを JSON ファイルとして保存し、--cli-input-json オプションを使用して、update-deployment-group コマンドを実行します。必ず --current-deployment-group-name オプションを含めて、filename を JSON ファイルの名前に置き換えてください。

Important

Be sure to include file:// before the file name. It is required in this command.

aws deploy update-deployment-group --current-deployment-group-name deployment-group-name --cli-input-json file://filename.json

作成プロセスの最後に、アクセス許可およびトリガーの詳細の両方が正しく設定されていることを示すテスト通知メッセージを受信します。

AWS CodeDeploy デプロイグループのトリガーの編集通知の要件が変更された場合は、新しいトリガーを作成するのではなく、トリガーを変更することができます。

AWS CodeDeploy トリガー (コンソール) の変更1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

API バージョン 2014-10-06297

Page 306: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループのトリガーの編集

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページで、トリガーを変更するデプロイグループに関連付けられているアプリケーションの名前を選択します。

3. [Application Details] ページで、トリガーを編集するデプロイグループの横にある矢印を選択します。4. [Triggers] エリアで、変更するトリガーの名前を見つけて、その行の最後にある鉛筆アイコンを選択し

ます。5. トリガー名、選択したイベント、または Amazon SNS トピックを更新し、[保存] を選択します。

AWS CodeDeploy トリガー (CLI) の変更デプロイグループを更新するときに AWS CLI を使用して AWS CodeDeploy イベントのトリガーの詳細を変更するには、JSON ファイルを作成してデプロイグループのプロパティの変更を定義し、--cli-input-json オプションで、update-deployment-group コマンドを実行します。

JSON ファイルを作成する最も簡単な方法は、get-deployment-group コマンドを実行して現在のデプロイグループの詳細を JSON 形式で取得し、プレーンテキストエディターで必要な値を編集することです。

1. 以下のコマンドを実行します (アプリケーションおよびデプロイグループの名前を application および deployment-group に置き換えます)。

aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group

2. コマンド結果をプレーンテキストエディターにコピーし、次のものを削除します。

• 出力の先頭の [{ "deploymentGroupInfo":] を削除します。• 出力の末尾の [}] を削除します。• [deploymentGroupId] を含む行を削除します。• [deploymentGroupName] を含む行を削除します。

テキストファイルのコンテンツは、次のようになります。

{ "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "autoScalingGroups": [], "ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Value": "East-1-Instances", "Key": "Name" } ], "triggerConfigurations": [ { "triggerEvents": [ "DeploymentStart", "DeploymentSuccess", "DeploymentFailure", "DeploymentStop" ], "triggerTargetArn": "arn:aws:sns:us-east-2:111222333444:Trigger-group-us-east-2",

API バージョン 2014-10-06298

Page 307: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループからトリガーを削除

"triggerName": "Trigger-group-us-east-2" } ], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": []}

3. 必要に応じてパラメーターを変更します。トリガーの設定パラメーターについての詳細は、「TriggerConfig」を参照してください。

4. アップデートを JSON ファイルとして保存し、--cli-input-json オプションを使用して、update-deployment-group コマンドを実行します。必ず --current-deployment-group-name オプションを含めて、filename を JSON ファイルの名前に置き換えてください。

Important

Be sure to include file:// before the file name. It is required in this command.

aws deploy update-deployment-group --current-deployment-group-name deployment-group-name --cli-input-json file://filename.json

作成プロセスの最後に、アクセス許可およびトリガーの詳細の両方が正しく設定されていることを示すテスト通知メッセージを受信します。

AWS CodeDeploy デプロイグループからトリガーを削除デプロイグループごとに 10 個のトリガーの制限があるため、使用されなくなったトリガーを削除することをお勧めします。トリガーの削除は元に戻すことはできませんが、1 つを再作成することはできます。

デプロイグループ (コンソール) からトリガーを削除1. Sign in to the AWS マネジメントコンソール and open the AWS CodeDeploy console at https://

console.aws.amazon.com/codedeploy.

Note

Sign in with the same account or IAM user information you used in AWS CodeDeploy の使用開始 (p. 20).

2. [Applications] ページで、トリガーを削除するデプロイグループに関連付けられているアプリケーションを選択します。

3. [Application details] ページで、デプロイグループの横にある矢印を選択します。4.

[Triggers] エリアで、削除するトリガーの名前を見つけ、その行の最後にある ボタンを選択して、[Delete] を選択します。

デプロイグループ (CLI) からトリガーを削除CLI を使用してトリガーを削除するには、空のトリガー設定パラメーターを使用して、update-deployment-group コマンドを呼び出し、次のように指定します。

• デプロイグループに関連付けられたアプリケーションの名前。アプリケーション名のリストを表示するには、list-applications コマンドを呼び出します。

• アプリケーションに関連付けられたデプロイグループの名前。デプロイグループ名のリストを表示するには、list-deployment-groups コマンドを呼び出します。

API バージョン 2014-10-06299

Page 308: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドトリガーの JSON データの形式

以下に例を示します。

aws deploy update-deployment-group --application-name application-name --current-deployment-group-name deployment-group-name --trigger-configurations

AWS CodeDeploy トリガーの JSON データの形式デプロイまたはインスタンスのトリガーが、Amazon SQS キューへのメッセージの送信、または AWSLambda での関数の呼び出しなどのカスタム通知ワークフローでアクティブ化されたときに作成されるJSON 出力を使用できます。

Note

このガイドでは、JSON を使用して通知を設定する方法については説明していません。AmazonSNS を使用して Amazon SQS キューにメッセージを送信する方法についての詳細は、「AmazonSQS キューへの Amazon SNS メッセージの送信」を参照してください。Amazon SNS を使用して Lambda 関数を呼び出す方法の詳細については、「Amazon SNS 通知を使用した Lambda 関数の呼び出し」を参照してください。

次の例は、AWS CodeDeploy トリガーで使用可能な JSON 出力の構造を示しています。

インスタンスベースのトリガー用 JSON 出力のサンプル

{ "region": "us-east-2", "accountId": "111222333444", "eventTriggerName": "trigger-group-us-east-instance-succeeded", "deploymentId": "d-75I7MBT7C", "instanceId": "arn:aws:ec2:us-east-2:444455556666:instance/i-496589f7", "lastUpdatedAt": "1446744207.564", "instanceStatus": "Succeeded", "lifecycleEvents": [ { "LifecycleEvent": "ApplicationStop", "LifecycleEventStatus": "Succeeded", "StartTime": "1446744188.595", "EndTime": "1446744188.711" }, { "LifecycleEvent": "BeforeInstall", "LifecycleEventStatus": "Succeeded", "StartTime": "1446744189.827", "EndTime": "1446744190.402" }//More lifecycle events might be listed here ]}

デプロイベースのトリガー用 JSON 出力のサンプル

{ "region": "us-west-1", "accountId": "111222333444", "eventTriggerName": "Trigger-group-us-west-3-deploy-failed", "applicationName": "ProductionApp-us-west-3", "deploymentId": "d-75I7MBT7C", "deploymentGroupName": "dep-group-def-456", "createTime": "1446744188.595", "completeTime": "1446744190.402", "deploymentOverview": {

API バージョン 2014-10-06300

Page 309: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドトリガーの JSON データの形式

"Failed": "10", "InProgress": "0", "Pending": "0", "Skipped": "0", "Succeeded": "0" }, "status": "Failed", "errorInformation": { "ErrorCode": "IAM_ROLE_MISSING", "ErrorMessage": "IAM Role is missing for deployment group: dep-group-def-456" }}

API バージョン 2014-10-06301

Page 310: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド認証

AWS CodeDeploy に対する認証とアクセスコントロール

AWS CodeDeploy へのアクセスには、認証情報が必要です。これらの認証情報には Amazon S3 バケットからアプリケーションリビジョンを取得することや Amazon EC2 インスタンスでタグを読み取ることなど AWS リソースにアクセスするためのアクセス許可が必要です。次のセクションでは、AWS Identity andAccess Management (IAM) および AWS CodeDeploy を使用して、リソースへのアクセスをセキュリティで保護する方法について詳しく説明します。

• 認証 (p. 302)• アクセスコントロール (p. 303)

認証AWS には、次のタイプのアイデンティティでアクセスできます。

• AWS アカウントのルートユーザー – AWS にサインアップするときは、AWS アカウントに関連付けられた E メールアドレスとパスワードを指定します。これらはルート認証情報であり、これらの情報を使用すると、すべての AWS リソースへの完全なアクセスが可能になります。

Important

セキュリティ上の理由から、AWS アカウントへの完全なアクセス権限を持つ IAM ユーザーである管理者ユーザーを作成するためにのみ、ルート認証情報を使用することをお勧めします。その後、この管理者ユーザーを使用して、制限されたアクセス権限を持つ他の IAM ユーザーとロールを作成できます。詳細については、IAM ユーザーガイドの「IAM のベストプラクティス」および「管理者のユーザーおよびグループの作成」を参照してください。

• IAM ユーザー – IAM ユーザーは、特定のカスタム権限 (たとえば、AWS CodeDeploy でターゲットにイベントデータを送信するアクセス権限) を持つ AWS アカウント内の単なる ID です。IAM のユーザー名およびパスワードを使用して、AWS マネジメントコンソール、AWS ディスカッションフォーラム、AWS Support Center などの安全な AWS ウェブページにサインインできます。

 

ユーザー名とパスワードに加えて、各ユーザーのアクセスキーを生成することもできます。複数の SDKの 1 つを通してまたは AWS Command Line Interface (AWS CLI) を使用して、プログラムで AWS サービスにアクセスするときに、これらのキーを使用します。SDK と CLI ツールでは、アクセスキーを使用してリクエストが暗号で署名されます。AWS ツールを使用しない場合は、リクエストに自分で署名する必要があります。AWS CodeDeploy supports では、署名バージョン 4 がサポートされています。これは、インバウンド API リクエストを認証するためのプロトコルです。リクエストの認証の詳細については、AWS General Referenceの「署名バージョン 4 の署名プロセス」を参照してください。

 • IAM ロール – IAM ロールは、特定のアクセス権限を持ち、アカウントで作成できるもう 1 つの IAM ID

です。 これは IAM ユーザーに似ていますが、特定のユーザーに関連付けられていません。IAM ロールでは、AWS サービスおよびリソースにアクセスするために使用できる一時的なアクセスキーを取得することができます。IAM ロールと一時的な認証情報は、次の状況で役立ちます。

 

API バージョン 2014-10-06302

Page 311: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアクセスコントロール

• フェデレーティッドユーザーアクセス – IAM ユーザーを作成するのではなく、AWS DirectoryService、エンタープライズユーザーディレクトリ、またはウェブアイデンティティプロバイダーの既存のユーザーアイデンティティを使用することもできます。このようなユーザーはフェデレーティッドユーザーと呼ばれます。AWS では、ID プロバイダーを通じてアクセスがリクエストされたとき、フェデレーティッドユーザーにロールを割り当てます。フェデレーティッドユーザーの詳細については、IAM ユーザーガイドの「フェデレーティッドユーザーとロール」を参照してください。

 • クロスアカウントアクセス – アカウントの IAM ロールを使用して、アカウントのリソースにアクセ

スするための権限を別の AWS アカウントに付与することができます。この例については、IAM ユーザーガイドの「チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任」を参照してください。

 • AWS サービスのアクセス – アカウントで IAM ロールを使用して、アカウントのリソースにアクセス

するための AWS サービスのアクセス権限を付与できます。たとえば、Amazon Redshift がお客様に代わって Amazon S3 バケットにアクセスし、バケットに保存されたデータを Amazon Redshift クラスターにロードすることを許可するロールを作成できます。 詳細については、『IAM ユーザーガイド』の「AWS ユーザーにアクセス権限を委任するロールの作成」を参照してください。

 • Amazon EC2 で実行されるアプリケーション – インスタンスで実行され、AWS API リクエストを行

うアプリケーションによって使用するために EC2 インスタンス内にアクセスキーを格納する代わりに、IAM ロールを使用して、これらのアプリケーション用の一時認証情報を管理できます。AWS ロールを EC2 インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにするには、インスタンスにアタッチされたインスタンスプロファイルを作成します。インスタンスプロファイルにはロールが含まれ、EC2 インスタンスで実行されるプログラムは一時認証情報を取得することができます。詳細については、IAM ユーザーガイドの「Amazon EC2 上のアプリケーションに対するロールの使用」を参照してください。

アクセスコントロールリクエストを認証するために有効な認証情報を持つことができますが、アクセス許可を持っていなければAWS CodeDeploy リソースを作成またはアクセスすることはできません。たとえば、アプリケーション、デプロイ、デプロイ設定、デプロイグループの作成、表示、削除、またはオンプレミスのインスタンスへのタグの登録、登録解除、追加、オンプレミスのインスタンスからのタグの削除などには、アクセス権限が必要です。

以下のセクションでは、AWS CodeDeploy のアクセス権限を管理する方法について説明します。最初に概要のセクションを読むことをお勧めします。

• AWS CodeDeploy リソースへのアクセス権限の管理の概要 (p. 303)• AWS CodeDeploy でアイデンティティベースのポリシー (IAM ポリシー) を使用する (p. 308)• AWS CodeDeploy のアクセス権限のリファレンス (p. 312)

AWS CodeDeploy リソースへのアクセス権限の管理の概要

すべての AWS リソースは AWS アカウントによって所有され、リソースを作成またはアクセスするためのアクセス権限は、アクセス権限ポリシーによって管理されます。アカウント管理者は、アクセス権限ポリシーを IAM ID (ユーザー、グループ、ロール) にアタッチでき、一部のサービス (AWS Lambda など) では、アクセス権限ポリシーをリソースにアタッチすることをサポートしています。

API バージョン 2014-10-06303

Page 312: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースおよびオペレーション

Note

アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、IAM ユーザーガイド の「IAM のベストプラクティス」を参照してください。

アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象となるリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。

トピック• AWS CodeDeploy リソースおよびオペレーション (p. 304)• リソース所有権について (p. 305)• リソースへのアクセスの管理 (p. 305)• ポリシー要素の指定 : アクション、効果、プリンシパル (p. 307)• ポリシーでの条件の指定 (p. 308)

AWS CodeDeploy リソースおよびオペレーションAWS CodeDeploy では、プライマリリソースは deployment group です。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。AWS CodeDeploy は、アプリケーション、デプロイ設定、およびインスタンスを含む、deployment groups で使用できる他のリソースをサポートします。これらはサブリソースと呼ばれます。これらのリソースとサブリソースには、一意の Amazon リソースネーム (ARN) が関連付けられています。ARN の詳細については、『アマゾン ウェブサービス全般のリファレンス』の「Amazon リソースネーム (ARN) および AWS サービスの名前空間」を参照してください。

リソースタイプ ARN 形式

デプロイグループ arn:aws:codedeploy:region:account-id:deploymentgroup/deployment-group-name

アプリケーション arn:aws:codedeploy:region:account-id:application/application-name

デプロイ設定 arn:aws:codedeploy:region:account-id:deploymentconfig/deployment-configuration-name

インスタンス arn:aws:codedeploy:region:account-id:instance/instance-ID

すべての AWSCodeDeploy リソース

arn:aws:codedeploy:*

指定されたリージョンの指定されたアカウントが所有するすべての AWSCodeDeploy リソース

arn:aws:codedeploy:region:account-id:*

Note

AWS のほとんどのサービスでは、ARN 内のコロン (:) またはスラッシュ (/) は同じ文字として扱われます。ただし、AWS CodeDeploy では、リソースパターンおよびルールで完全一致が使用されます。イベントパターンの作成時に正しい ARN 文字を使用して、リソース内の ARN 構文とそれらの文字が一致する必要があります。

たとえば、以下のように ARN を使用して、ステートメント内で特定のデプロイグループ(myDeploymentGroup) を指定できます。

API バージョン 2014-10-06304

Page 313: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソース所有権について

"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup/myDeploymentGroup"

以下のようにワイルドカード文字 (*) を使用して、特定のアカウントに属するすべての deployment groupsを指定することもできます。

"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup/*"

すべてのリソースを指定する場合、または特定の API アクションが ARN をサポートしていない場合は、以下のようにリソース要素内でワイルドカード文字 (*) を使用します。

"Resource": "*"

一部の AWS CodeDeploy API アクションは、複数のリソース (たとえば、BatchGetDeploymentGroups) を受け入れます。単一のステートメントに複数のリソースを指定するには、以下のようにコンマで ARN を区切ります。

"Resource": ["arn1", "arn2"]

AWS CodeDeploy には、AWS CodeDeploy リソースを動作するための一連のオペレーションが用意されています。使用可能なオペレーションのリストについては、「AWS CodeDeploy のアクセス権限のリファレンス (p. 312)」を参照してください。

リソース所有権についてAWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ(ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例では、このしくみを示しています。

• AWS アカウントのルートアカウントの認証情報を使用してルールを作成する場合、AWS アカウントはAWS CodeDeploy リソースの所有者です。

• AWS アカウントに IAM ユーザーを作成し、そのユーザーに AWS CodeDeploy リソースを作成するためのアクセス権限を付与する場合、そのユーザーは AWS CodeDeploy リソースを作成できます。ただし、ユーザーが属する AWS アカウントは AWS CodeDeploy リソースを所有しています。

• AWS CodeDeploy リソースを作成するためのアクセス権限を持つ AWS アカウントに IAM ロールを作成する場合は、ロールを継承することのできるいずれのユーザーも AWS CodeDeploy リソースを作成できます。ロールが属する AWS アカウントは、AWS CodeDeploy リソースを所有しています。

リソースへのアクセスの管理アクセスポリシーでは、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権限のポリシーを作成するために使用可能なオプションについて説明します。

Note

このセクションでは、AWS CodeDeploy のコンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、「IAM とは?」 (IAM ユーザーガイド ) を参照してください。IAM ポリシー構文の詳細および説明については、IAM ユーザーガイドの「AWS IAM ポリシーリファレンス」を参照してください。

IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (IAM ポリシー) と呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。AWSCodeDeploy は、アイデンティティベース (IAM ポリシー) のみをサポートします。

トピック

API バージョン 2014-10-06305

Page 314: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースへのアクセスの管理

• アイデンティティベースのポリシー (IAM ポリシー) (p. 306)• リソースベースのポリシー (p. 307)

アイデンティティベースのポリシー (IAM ポリシー)ポリシーを IAM アイデンティティにアタッチできます。たとえば、次の操作を実行できます。

• アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – ユーザーに、アプリケーション、デプロイグループ、および AWS CodeDeploy コンソールの AWS CodeDeploy リソースを表示するアクセス権限を付与するためには、ユーザーが所属するユーザーまたはグループにアクセス権限ポリシーをアタッチできます。

 • アクセス権限ポリシーをロールにアタッチする (クロスアカウントのアクセス権限を付与) – アイデン

ティティベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントのアクセス権限を付与することができます。たとえば、アカウント A の管理者は、次のように別の AWS アカウント(たとえば、アカウント B) または AWS サービスにクロスアカウントアクセス権限を付与するロールを作成できます。

 1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに対するアクセス権限

を付与するロールに、アクセス権限ポリシーをアタッチします。

 2. アカウント A の管理者は、アカウント B (ロールを継承できるプリンシパル) を識別するロールに信頼

ポリシーをアタッチします。

 3. その後、アカウント B の管理者は、アカウント B のユーザーにロールを引き受けるアクセス権限を

委任できるようになります。これにより、アカウント B のユーザーは、アカウント A のリソースを作成またはアクセスできます。AWS サービスにロールを引き受けるアクセス権限を付与する場合は、信頼ポリシー内のプリンシパルも、AWS サービスのプリンシパルになります。

 

IAM を使用したアクセス権限の委任の詳細については、IAM ユーザーガイド の「アクセス管理」を参照してください。

AWS CodeDeploy で、アイデンティティベースのポリシーは、デプロイプロセスに関連するさまざまなリソースに対するアクセス権限を管理するために使用されます。次のすべてのリソースタイプへのアクセスをコントロールできます。

• アプリケーションおよびアプリケーションリビジョン• デプロイ• デプロイ設定• インスタンスとオンプレミスインスタンス

リソースベースのポリシーによって制御される機能は、次の表にあるように、リソースタイプによって異なります。

リソースタイプ 機能

すべて リソースの詳細の閲覧および一覧表示

API バージョン 2014-10-06306

Page 315: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドポリシー要素の指定 : アクション、効果、プリンシパル

リソースタイプ 機能

アプリケーション

デプロイ設定

デプロイグループ

リソースの作成

Delete resources

デプロイ デプロイの作成

デプロイの停止

アプリケーションリビジョン アプリケーションリビジョンの登録

アプリケーション

デプロイグループ

リソースの更新

オンプレミスインスタンス インスタンスにタグを追加する

インスタンスからタグを削除する

インスタンスを登録する

インスタンスを登録解除する

お客様のアカウントのユーザーがアクセスを許可される呼び出しとリソースを制限する IAM ポリシーを作成し、IAM ユーザーにそれらのポリシーをアタッチできます。IAM ロールを作成する方法、および AWSCodeDeploy の IAM ポリシーステートメントの例を調べる方法の詳細については、「AWS CodeDeploy リソースへのアクセス権限の管理の概要 (p. 303)」を参照してください。

リソースベースのポリシーAmazon S3 などの他のサービスでは、リソースベースのアクセス権限ポリシーもサポートされています。たとえば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス権限を管理できます。AWS CodeDeploy では、リソースベースのポリシーはサポートされていません。

ポリシー要素の指定 : アクション、効果、プリンシパルAWS CodeDeploy リソースの種類ごとに、このサービスは、一連の API オペレーションを定義します。これらの API オペレーションのアクセス権限を付与するために、AWS CodeDeploy は、ポリシー内に指定できる一連のアクションを定義します。一部の API オペレーションは、API オペレーションを実行するために複数のアクションに対するアクセス許可を要求できます。 リソースおよび API オペレーションに関する詳細については、「AWS CodeDeploy リソースおよびオペレーション (p. 304)」および「AWSCodeDeploy のアクセス権限のリファレンス (p. 312)」を参照してください。

以下は、基本的なポリシーの要素です。

• リソース - Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。詳細については、「AWS CodeDeploy リソースおよびオペレーション (p. 304)」を参照してください。

• アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、codedeploy:GetApplication 権限は、GetApplication オペレーションの実行をユーザーに許可します。

• 効果 - ユーザーが特定のアクションをリクエストする際の効果を指定します。許可または拒否のいずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されま

API バージョン 2014-10-06307

Page 316: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドポリシーでの条件の指定

す。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。

• プリンシパル - アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが暗黙のプリンシパルとなります。 リソースベースのポリシーでは、権限 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。

IAM ポリシーの構文と記述の詳細については、IAM ユーザーガイドの「AWS IAM ポリシーの参照」を確認してください。

すべての AWS CodeDeploy API アクションおよびそれに適用されるリソースを示す表については、「AWS CodeDeploy のアクセス権限のリファレンス (p. 312)」を参照してください。

ポリシーでの条件の指定アクセス権限を付与するとき、アクセスポリシー言語を使用して、ポリシーが有効になる必要がある条件を指定できます。たとえば、特定の日付の後にのみ適用されるポリシーが必要になる場合があります。ポリシー言語での条件の指定の詳細については、IAM ユーザーガイドの「条件」を参照してください。

条件を表すには、あらかじめ定義された条件キーを使用します。AWS CodeDeploy に固有の条件キーはありません。ただし、必要に応じて使用できる AWS 全体の条件キーがあります。AWS 全体のキーの完全なリストについては、IAM ユーザーガイドの「条件に利用可能なキー」を参照してください。

AWS CodeDeploy でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、およびロール) にアクセス権限ポリシーをアタッチし、AWS CodeDeploy リソースに対する操作を実行するためのアクセス権限を付与する方法を示すアイデンティティベースのポリシーの例を示します。AWS CodeDeploy を使用するために IAMユーザーにアタッチする必要があるポリシーについての詳細は、「ステップ 1: IAM ユーザーをプロビジョニングする (p. 20)」を参照してください。

Important

初めに、AWS CodeDeploy リソースへのアクセスを管理するための基本概念と使用可能なオプションについて説明する概要トピックを確認することをお勧めします。詳細については、「AWSCodeDeploy リソースへのアクセス権限の管理の概要 (p. 303)」を参照してください。

トピック• AWS CodeDeploy コンソールを使用するために必要なアクセス権限 (p. 309)• AWS CodeDeploy の AWS 管理 (定義済み) ポリシー (p. 309)• お客様が管理するポリシーの例 (p. 310)

次に、us-west-2 リージョンの WordPress_App という名前のアプリケーションに関連付けられたWordPress_DepGroup という名前のデプロイグループをユーザーが削除できるように許可するアクセス権限ポリシーの例を示します。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [

API バージョン 2014-10-06308

Page 317: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy コンソールを使用するために必要なアクセス権限

"codedeploy:DeleteDeploymentGroup" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] } ]}

AWS CodeDeploy コンソールを使用するために必要なアクセス権限ユーザーが AWS CodeDeploy コンソールで作業するには、そのユーザーには、AWS アカウント用に他のAWS リソースを記述できる最低限のアクセス権限が必要です。AWS CodeDeploy コンソールで完全に使用する AWS CodeDeploy を使用するには、次のサービスからのアクセス権限が必要です。

• Amazon EC2 Auto Scaling• AWS CodeDeploy• Amazon Elastic Compute Cloud• Elastic Load Balancing• AWS Identity and Access Management• Amazon Simple Storage Service• Amazon Simple Notification Service• Amazon CloudWatch

これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。 それらのユーザーがAWS CodeDeploy コンソールを引き続き使用するためには、AWS CodeDeploy の AWS 管理 (定義済み)ポリシー (p. 309) で説明されているように、AWSCodeDeployReadOnlyAccess 管理ポリシーをユーザーにもアタッチします。

AWS CLI または AWS CodeDeploy API のみを呼び出すユーザーには、最小限のコンソールアクセス権限を付与する必要はありません。

AWS CodeDeploy の AWS 管理 (定義済み) ポリシーAWS は、AWS によって作成および管理されるスタンドアロンの IAM ポリシーを提供することによって、多くの一般的ユースケースに対応します。これらの AWS 管理ポリシーでは、一般的なユースケースに必要なアクセス権限が付与されているため、どのアクセス権限が必要なのかを調べる必要がありません。詳細については、IAM ユーザーガイドの「AWS 管理ポリシー」を参照してください。

アカウントのユーザーにアタッチできる以下の AWS 管理ポリシーは、AWS CodeDeploy に固有のものです。

• AWSCodeDeployFullAccess – AWS CodeDeploy へのフルアクセスを付与します。

Note

AWSCodeDeployFullAccess は、Amazon EC2 および Amazon S3 などのアプリケーションをデプロイするために必要な他のサービスの操作にアクセス権限を提供しません。AWSCodeDeploy 固有の操作にのみアクセス権限を提供します。

• AWSCodeDeployDeployerAccess – IAM ユーザーにリビジョンの登録およびデプロイへのアクセスを付与します。

API バージョン 2014-10-06309

Page 318: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドお客様が管理するポリシーの例

 • AWSCodeDeployReadOnlyAccess – AWS CodeDeploy への読み取り専用アクセスを付与します。

 • AWSCodeDeployRole – AWS CodeDeploy に、Amazon EC2 タグまたは Auto Scaling グループ名によっ

て Amazon EC2 インスタンスおよびオンプレミスインスタンスタグによってオンプレミスインスタンスを識別し、それに応じてアプリケーションリビジョンをデプロイすることを許可します。Amazon SNSトピックに通知を発行し、CloudWatch からのアラームに関する情報を取得するために必要なアクセス権限を提供します。

• AWSCodeDeployRoleForLambda – AWS Lambda へのアクセス許可を AWS CodeDeploy に付与します。

デプロイプロセスの一部に対するアクセス権限は、IAM ユーザーではなく、AWS CodeDeploy に代わって動作する他の 2 つのロールタイプに付与されます。

• IAM instance profile: An IAM role that you attach to your Amazon EC2 instances. This profile includes thepermissions required to access the Amazon S3 buckets or GitHub repositories where the applicationsthat will be deployed by AWS CodeDeploy are stored. For more information, see ステップ 4: AmazonEC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26).

• Service role: An IAM role that grants permissions to an AWS service so it can access AWS resources.The policies you attach to the service role determine which AWS resources the service can access andthe actions it can perform with those resources. For AWS CodeDeploy, a service role is used for thefollowing:• To read either the tags applied to the instances or the Amazon EC2 Auto Scaling group names

associated with the instances. This enables AWS CodeDeploy to identify instances to which it candeploy applications.

• To perform operations on instances, Auto Scaling groups, and Elastic Load Balancing load balancers.• To publish information to Amazon SNS topics so that notifications can be sent when specified

deployment or instance events occur.• To retrieve information about CloudWatch alarms in order to set up alarm monitoring for deployments.

For more information, see ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22).

独自のカスタム IAM ポリシーを作成して、AWS CodeDeploy アクションとリソースのための権限を許可することもできます。これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。

お客様が管理するポリシーの例このセクションでは、さまざまな AWS CodeDeploy アクションのアクセス権限を付与するユーザーポリシー例を示しています。これらのポリシーは、AWS CodeDeploy API、AWS SDK、または AWS CLI を使用しているときに機能します。コンソールを使用している場合は、「AWS CodeDeploy コンソールを使用するために必要なアクセス権限 (p. 309)」で説明しているコンソールに固有の追加のアクセス権限を付与する必要があります。

以下の IAM ポリシーの例を使用して、IAM ユーザーおよびロールの AWS CodeDeploy アクセスを制限できます。

Note

すべての例で、米国西部 (オレゴン) リージョン (us-west-2) を使用し、架空のアカウント ID を含めています。

API バージョン 2014-10-06310

Page 319: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドお客様が管理するポリシーの例

• 例 1: ユーザーに単一のリージョンで AWS CodeDeploy オペレーションを実行することを許可する (p. 311)

• 例 2: ユーザーに 1 つのアプリケーションのリビジョンの登録を許可する (p. 311)• 例 3: ユーザーに単一のデプロイグループのデプロイの作成を許可する (p. 311)

例 1: ユーザーに単一のリージョンで AWS CodeDeploy オペレーションを実行することを許可する次の例では、us-west-2 リージョンでのみ AWS CodeDeploy オペレーションを実行するためのアクセス権限を付与します。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:*" ] } ]}

例 2: ユーザーに 1 つのアプリケーションのリビジョンの登録を許可する次の例では、us-west-2 リージョンの Test で始まるすべてのアプリケーションのアプリケーションリビジョンを登録するアクセス権限を付与します。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:RegisterApplicationRevision" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:application:Test*" ] } ]}

例 3: ユーザーに単一のデプロイグループのデプロイの作成を許可する次の例では、指定されたユーザーが、WordPress_App という名前のアプリケーションに関連付けられたWordPress_DepGroup という名前のデプロイグループのデプロイ、ThreeQuartersHealthy という名前のカスタムデプロイ設定、および WordPress_App という名前のアプリケーションに関連付けられたアプリケーションのリビジョンを作成できます。これらのリソースはすべて us-west-2 リージョンに関連付けられます。

API バージョン 2014-10-06311

Page 320: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:CreateDeployment" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetDeploymentConfig" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentconfig:ThreeQuartersHealthy" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetApplicationRevision" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:application:WordPress_App" ] } ]}

AWS CodeDeploy のアクセス権限のリファレンスアクセスコントロール (p. 303) をセットアップし、IAM アイデンティティにアタッチできるアクセス権限ポリシー (アイデンティティベースのポリシー) を作成するときは、以下の表をリファレンスとして使用できます。この表には、各 AWS CodeDeploy API オペレーション、アクションを実行するためのアクセス権限を付与できる対応するアクション、およびアクセス権限を付与するためのリソース ARN の形式が示されています。ポリシーの [Action] フィールドでアクションを指定し、ポリシーの [Resource] フィールドでリソース値としてワイルドカード文字 (*) を使用して、または使用せずに ARN を指定します。

AWS CodeDeploy ポリシーで AWS 全体の条件キーを使用して、条件を表すことができます。AWS 全体を対象とするキーの完全なリストについては、『IAM ユーザーガイド』の「利用可能なキー」を参照してください。

アクションを指定するには、API オペレーション名 (たとえば、codedeploy:GetApplication および codedeploy:CreateApplication) の前に codedeploy: プレフィックスを使用します。単一のステートメントに複数のアクションを指定するには、コンマで区切ります (たとえば、"Action":["codedeploy:action1", "codedeploy:action2"])。

ワイルドカード文字の使用

ARN でワイルドカード文字 (*) を使用して、複数のアクションまたはリソースを指定できます。たとえば、codedeploy:* は、すべての AWS CodeDeploy アクションを指定し、codedeploy:Get* は、Getという単語で始まるすべての AWS CodeDeploy アクションを指定します。次の例では、West で始まり、名前が Test で始まるアプリケーションに関連付けられている名前を持つすべてのデプロイグループにアクセス権限を付与します。

API バージョン 2014-10-06312

Page 321: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:Test*/West*

表に表示されている次のリソースでワイルドカードを使用できます。

• application-name

• deployment-group-name

• deployment-configuration-name

• instance-ID

ワイルドカードを region または account-id で使用することはできません。ワイルドカードの詳細については、『IAM ユーザーガイド』の「IAM ID」を参照してください。

AWS CodeDeploy を使用して IAM ポリシーで指定できるアクションは以下のとおりです。

Note

各アクションの ARN ではリソースの後にコロン (:) が続きます。また、リソースの後にスラッシュ (/) を使用できます。詳細については、「AWS CodeDeploy の ARN の例」を参照してください。

AWS CodeDeploy API オペレーションおよびアクションで必要なアクセス許可

AddTagsToOnPremisesInstances

アクション: codedeploy:AddTagsToOnPremisesInstances

1 つ以上のオンプレミスインスタンスにタグを追加するために必要です。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-IDBatchGetApplicationRevisions

アクション: codedeploy:BatchGetApplicationRevisions

IAM ユーザーに関連付けられた複数のアプリケーションリビジョンに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameBatchGetApplications

アクション: codedeploy:BatchGetApplications

IAM ユーザーに関連付けられた複数のアプリケーションに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:*BatchGetDeploymentGroups

アクション: codedeploy:BatchGetDeploymentGroups

IAM ユーザーに関連付けられた複数のデプロイグループに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

BatchGetDeploymentInstances

アクション: codedeploy:BatchGetDeploymentInstances

デプロイグループの一部である 1 つ以上のインスタンスに関する情報を取得するために必要です。

API バージョン 2014-10-06313

Page 322: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

BatchGetDeployments

アクション: codedeploy:BatchGetDeployments

IAM ユーザーに関連付けられた複数のデプロイに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

BatchGetOnPremisesInstances

アクション: codedeploy:BatchGetOnPremisesInstances

1 つ以上のオンプレミスインスタンスに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:*ContinueDeployment

アクション: codedeploy:ContinueDeployment

Elastic Load Balancing ロードバランサーを使用して、置き換え先環境にインスタンスを登録するために Blue/Green デプロイ中に必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

CreateApplication

アクション: codedeploy:CreateApplication

IAM ユーザーに関連付けられたアプリケーションを作成するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameCreateDeployment ¹

アクション: codedeploy:CreateDeployment

IAM ユーザーに関連付けられたアプリケーションのデプロイを作成するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

CreateDeploymentConfig

アクション: codedeploy:CreateDeploymentConfig

IAM ユーザーに関連付けられたカスタムデプロイ設定を作成するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentconfig/deployment-configuration-name

CreateDeploymentGroup

アクション: codedeploy:CreateDeploymentGroup

IAM ユーザーに関連付けられたアプリケーションのデプロイグループを作成するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

DeleteApplication

アクション: codedeploy:DeleteApplication

API バージョン 2014-10-06314

Page 323: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

IAM ユーザーに関連付けられたアプリケーションを削除するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameDeleteDeploymentConfig

アクション: codedeploy:DeleteDeploymentConfig

IAM ユーザーに関連付けられたカスタムデプロイ設定を削除するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentconfig/deployment-configuration-name

DeleteDeploymentGroup

アクション: codedeploy:DeleteDeploymentGroup

IAM ユーザーに関連付けられたアプリケーションのデプロイグループを削除するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

DeregisterOnPremisesInstance

アクション: codedeploy:DeregisterOnPremisesInstance

オンプレミスインスタンスを登録解除するために必要です。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-IDGetApplication

アクション: codedeploy:GetApplication

IAM ユーザーに関連付けられた単一のアプリケーションに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameGetApplicationRevision

アクション: codedeploy:GetApplicationRevision

IAM ユーザーに関連付けられたアプリケーションの単一のアプリケーションのリビジョンに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameGetDeployment

アクション: codedeploy:GetDeployment

IAM ユーザーに関連付けられたアプリケーションのデプロイグループへの単一のデプロイに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

GetDeploymentConfig

アクション: codedeploy:GetDeploymentConfig

IAM ユーザーに関連付けられた単一のデプロイ設定に関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentconfig/deployment-configuration-name

API バージョン 2014-10-06315

Page 324: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

GetDeploymentGroup

アクション: codedeploy:GetDeploymentGroup

IAM ユーザーに関連付けられたアプリケーションの単一のデプロイグループに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

GetDeploymentInstance

アクション: codedeploy:GetDeploymentInstance

IAM ユーザーに関連付けられたデプロイの単一のインスタンスに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

GetOnPremisesInstance

アクション: codedeploy:GetOnPremisesInstance

単一のオンプレミスインスタンスに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-IDListApplicationRevisions

アクション: codedeploy:ListApplicationRevisions

IAM ユーザーに関連付けられたアプリケーションのすべてのアプリケーションリビジョンに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:*ListApplications

アクション: codedeploy:ListApplications

IAM ユーザーに関連付けられたすべてのアプリケーションに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:*ListDeploymentConfigs

アクション: codedeploy:ListDeploymentConfigs

IAM ユーザーに関連付けられたすべてのデプロイ設定に関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentconfig/*ListDeploymentGroups

アクション: codedeploy:ListDeploymentGroups

IAM ユーザーに関連付けられたアプリケーションのすべてのデプロイグループに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/*

ListDeploymentInstances

アクション: codedeploy:ListDeploymentInstances

API バージョン 2014-10-06316

Page 325: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

AWS ユーザーまたは AWS アカウントに関連付けられたデプロイのすべてのインスタンスに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

ListDeployments

アクション: codedeploy:ListDeployments

IAM ユーザーに関連付けられたデプロイグループへのすべてのデプロイに関する情報、または IAMユーザーまたは AWS アカウントに関連付けられたすべてのデプロイに関する情報を取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

ListGitHubAccountTokenNames

アクション: codedeploy:ListGitHubAccountTokenNames

GitHub アカウントへの保存された接続の名前を一覧表示するために必要です。

リソース: arn:aws:codedeploy:region:account-id:*ListOnPremisesInstances

アクション: codedeploy:ListOnPremisesInstances

1 つ以上のオンプレミスインスタンス名のリストを取得するために必要です。

リソース: arn:aws:codedeploy:region:account-id:*RegisterApplicationRevision

アクション: codedeploy:RegisterApplicationRevision

IAM ユーザーに関連付けられたアプリケーションのアプリケーションリビジョンに関する情報を登録するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameRegisterOnPremisesInstance

アクション: codedeploy:RegisterOnPremisesInstance

オンプレミスインスタンスを AWS CodeDeploy で登録するために必要です。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-IDRemoveTagsFromOnPremisesInstances

アクション: codedeploy:RemoveTagsFromOnPremisesInstances

1 つ以上のオンプレミスインスタンスからタグを削除するために必要です。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-IDSkipWaitTimeForInstanceTermination

アクション: codedeploy:SkipWaitTimeForInstanceTermination

指定された待機時間をオーバーライドし、Blue/Green デプロイでトラフィックルーティングが正常に完了した直後に元の環境でインスタンスの削除を開始する必要があります。

リソース: arn:aws:codedeploy:region:account-id:instance/instance-ID

API バージョン 2014-10-06317

Page 326: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy のアクセス権限のリファレンス

StopDeployment

アクション: codedeploy:StopDeployment

IAM ユーザーに関連付けられたアプリケーションのデプロイグループへの進行中のデプロイを停止するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

UpdateApplication ³

アクション: codedeploy:UpdateApplication

IAM ユーザーに関連付けられたアプリケーションに関する情報を変更するために必要です。

リソース: arn:aws:codedeploy:region:account-id:application:application-nameUpdateDeploymentGroup ³

アクション: codedeploy:UpdateDeploymentGroup

IAM ユーザーに関連付けられたアプリケーションで単一のデプロイグループに関する情報を変更するために必要です。

リソース: arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name

¹ CreateDeployment のアクセス権限を指定するときは、デプロイ設定に対して GetDeploymentConfigのアクセス権限を指定し、アプリケーションリビジョンに対して GetApplicationRevision またはRegisterApplicationRevision のアクセス権限も指定する必要があります。

² 特定のデプロイグループを提供する場合、ListDeployments に有効ですが、IAM ユーザーに関連付けられたデプロイのすべてを一覧表示するときには有効ではありません。

³ UpdateApplication では、古いアプリケーション名と新しいアプリケーション名の両方に対する UpdateApplication のアクセス権限が必要です。デプロイグループの名前の変更を伴うUpdateDeploymentGroup のアクションの場合、古いグループ名および新しいグループ名の両方に対してUpdateDeploymentGroup のアクセス権限が必要です。

API バージョン 2014-10-06318

Page 327: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda コンピューティングプラットフォームの AppSpec ファイル

AWS CodeDeploy AppSpec File のリファレンス

このセクションは参照のみを目的としています。AppSpec file ファイルの概念の概要については、「Application Specification Files (p. 18)」を参照してください。

application specification file (AppSpec file) は、デプロイを管理するために AWS CodeDeploy によって使用される YAML 形式または JSON 形式ファイルです。

トピック• AWS Lambda コンピューティングプラットフォームの AppSpec ファイル (p. 319)• EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイル (p. 319)• AppSpec File の構造 (p. 320)• AppSpec File の例 (p. 339)• AppSpec File の間隔 (p. 342)• AppSpec File の検証とファイルの場所 (p. 343)

AWS Lambda コンピューティングプラットフォームの AppSpec ファイル

アプリケーションで AWS Lambda コンピューティングプラットフォームを選択します。 を使用している場合は AppSpec file が AWS CodeDeploy で使用され、以下が決定されます。

• デプロイする Lambda 関数のバージョン。• 検証テストとして使用する Lambda 関数。

AppSpec file は、YAML 形式または JSON 形式とすることができます。デプロイの作成時に、AppSpecfile の内容を直接 AWS CodeDeploy コンソールに入力することもできます。

EC2/オンプレミスコンピューティングプラットフォームの AppSpec ファイル

アプリケーションで EC2/オンプレミス コンピューティングプラットフォームを選択します。 を使用している場合は AppSpec file が AWS CodeDeploy で使用され、以下が決定されます。

• Amazon S3 または GitHub のアプリケーションリビジョンからインスタンスにインストールする必要があるもの。

• デプロイライフサイクルイベントに応じて実行するライフサイクルイベントフック。

API バージョン 2014-10-06319

Page 328: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec File の構造

AppSpec file は appspec.yml という名前の YAML 形式ファイルとし、アプリケーションのソースコードのディレクトリ構造のルートに配置する必要があります。それ以外の場合、デプロイは失敗します。

AppSpec file を完了したら、デプロイするコンテンツとともに、アーカイブファイル (zip、tar、または圧縮 tar) にバンドルします。詳細については、「AWS CodeDeploy 用のアプリケーションリビジョンの操作 (p. 242)」を参照してください。

Note

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported for WindowsServer instances.

アーカイブファイル (AWS CodeDeploy ではリビジョンと呼ばれます) をバンドルしたら、Amazon S3 バケットまたは Git レポジトリにアップロードします。次に、AWS CodeDeploy を使用してリビジョンをデプロイします。手順については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を参照してください。

EC2/オンプレミス コンピューティングプラットフォームを選択します。 デプロイの appspec.yml は、リビジョンのルートディレクトリに保存されます。詳細については、「EC2/オンプレミス デプロイ用に AppSpec ファイルを追加する (p. 244)」および「AWS CodeDeploy のリビジョンの計画を立てる (p. 242)」を参照してください。

AppSpec File の構造次に示すのは、AWS Lambda および EC2/オンプレミス コンピューティングプラットフォームへのデプロイに使用される、AppSpec file の構造の概要です。

文字列である YAML 形式の AppSpec file の値は、別途指定されている場合を除き、引用符 ("") で囲んではいけません。

AWS Lambda のデプロイ向けの AppSpec ファイル構造

Note

この AppSpec file は YAML で記述されますが、同じ構造を使用して JSON で Lambda デプロイの AppSpec file を記述することもできます。JSON 形式の AppSpec file の文字列は、常に引用符("") で囲みます。

version: 0.0resources: lambda-function-specificationshooks: deployment-lifecycle-event-mappings

この構造の説明

バージョン

このセクションでは、AppSpec file のバージョンを指定します。この値を変更しないでください。この値は必須です。現在許容されている値は 0.0 のみです。将来の利用のために AWS CodeDeploy で予約されています。

文字列で version を指定します。

API バージョン 2014-10-06320

Page 329: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス のデプロイ向けの AppSpec ファイル構造

リソース

このセクションでは、デプロイする Lambda 関数に関する情報を指定します。

詳細については、「AppSpec の「resources」セクション (AWS Lambda のデプロイのみ) (p. 325)」を参照してください。

hooks

このセクションでは、デプロイを検証するために特定のデプロイライフサイクルイベントで実行するLambda 関数を指定します。

詳細については、「AppSpec の「hooks」セクション (p. 330)」を参照してください。

EC2/オンプレミス のデプロイ向けの AppSpec ファイル構造version: 0.0os: operating-system-namefiles: source-destination-files-mappingspermissions:high permissions-specificationshooks: deployment-lifecycle-event-mappings

この構造の説明

バージョン

このセクションでは、AppSpec file のバージョンを指定します。この値を変更しないでください。この値は必須です。現在許容されている値は 0.0 のみです。将来の利用のために AWS CodeDeploy で予約されています。

文字列で version を指定します。os

このセクションでは、デプロイ先であるインスタンスのオペレーティングシステムの値を指定します。この値は必須です。次の値を指定できます。• linux – インスタンスは、Amazon Linux、Ubuntu Server、または RHEL インスタンスです。• windows – インスタンスは Windows Server インスタンスです。

文字列で os を指定します。

files

このセクションでは、デプロイの Install イベント中に、インスタンスにコピーするファイル名を指定します。

詳細については、「AppSpec の「files」セクション (EC2/オンプレミス のデプロイのみ) (p. 322)」を参照してください。

アクセス権限

このセクションでは、インスタンスへのコピー中に特別なアクセス権限をファイルの files セクションに適用する方法を指定します。このセクションは、Amazon Linux、Ubuntu Server、および Red HatEnterprise Linux (RHEL) インスタンスのみに適用されます。

API バージョン 2014-10-06321

Page 330: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「files」セクション

(EC2/オンプレミス のデプロイのみ)

詳細については、AppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ) (p. 326) を参照してください。

hooks

このセクションでは、デプロイ中に特定のデプロイライフサイクルイベントで実行するスクリプトを指定します。

詳細については、「AppSpec の「hooks」セクション (p. 330)」を参照してください。

トピック• AppSpec の「files」セクション (EC2/オンプレミス のデプロイのみ) (p. 322)• AppSpec の「resources」セクション (AWS Lambda のデプロイのみ) (p. 325)• AppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ) (p. 326)• AppSpec の「hooks」セクション (p. 330)

AppSpec の「files」セクション (EC2/オンプレミス のデプロイのみ)デプロイの Install イベント中にインスタンスにインストールする、アプリケーションリビジョンのファイルに関する情報を AWS CodeDeploy に提供します。このセクションは、デプロイ中にリビジョンからインスタンス上の場所にファイルをコピーする場合のみ必要です。

このセクションの構造は次のとおりです。

files: - source: source-file-location destination: destination-file-location

複数の source と destination のペアを設定できます。

source は、リビジョンからインスタンスにコピーするファイルまたはディレクトリを識別します。

• source はファイルを参照し、指定されたファイルのみがインスタンスにコピーされます。• source はディレクトリを参照し、そのディレクトリのすべてのファイルがインスタンスにコピーされま

す。• source が 1 つのスラッシュ (Amazon Linux、RHEL、Ubuntu Server のインスタンスでは "/"、Windows

Server のインスタンスでは "\") である場合、リビジョンのすべてのファイルがインスタンスにコピーされます。

source で使用されるパスは、リビジョンのルートから始まる相対パスです。

destination は、ファイルをコピーするインスタンス上の場所を識別します。これは完全修飾パスである必要があります。

source と destination はそれぞれ文字列で指定されます。

Amazon Linux、Ubuntu Server、または RHEL インスタンスでの files セクションの例を次に示します。

files: - source: Config/config.txt destination: /webapps/Config

API バージョン 2014-10-06322

Page 331: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「files」セクション

(EC2/オンプレミス のデプロイのみ)

- source: source destination: /webapps/myApp

この例では、次の 2 つのオペレーションが、Install イベント中に実行されます。

1. 使用するリビジョンの Config/config.txt ファイルをインスタンスの /webapps/Config/config.txt パスにコピーします。

2. リビジョンの source ディレクトリのすべてのファイルを、インスタンスの /webapps/myApp ディレクトリに再帰的にコピーします。

「files」セクションの例次の例は、files セクションを指定する方法を示しています。これらの例は、Windows Server ファイルとディレクトリ (フォルダ) 構造を示していますが、Amazon Linux、Ubuntu Server、および RHEL インスタンスに簡単に適用することができます。

Note

「files」セクションを使用するのは、EC2/オンプレミス のデプロイのみです。これは AWSLambda のデプロイには適用されません。

次の例では、以下のファイルが source のルートのバンドルに表示されることを前提としています。

• appspec.yml

• my-file.txt

• my-file-2.txt

• my-file-3.txt

✔ 1) Copy only my-file.txt to the destination folder c:\temp.✔files: - source: .\my-file.txt destination: c:\temp✔✔ Result:✔ c:\temp\my-file.txt✔✔ ---------------------✔✔ 2) Copy only my-file-2.txt and my-file-3.txt to the destination folder c:\temp.✔files: - source: my-file-2.txt destination: c:\temp - source: my-file-3.txt destination: c:\temp✔✔ Result:✔ c:\temp\my-file-2.txt✔ c:\temp\my-file-3.txt✔✔ ---------------------✔✔ 3) Copy my-file.txt, my-file-2.txt, and my-file-3.txt (along with the appspec.yml file) to the destination folder c:\temp.✔files: - source: \

API バージョン 2014-10-06323

Page 332: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「files」セクション

(EC2/オンプレミス のデプロイのみ)

destination: c:\temp✔✔ Result:✔ c:\temp\appspec.yml✔ c:\temp\my-file.txt✔ c:\temp\my-file-2.txt✔ c:\temp\my-file-3.txt

次の例では、appspec.yml が source のルートのバンドルに、3 つのファイルを含む my-folder という名前のフォルダとともに表示されることを前提としています。

• appspec.yml

• my-folder\my-file.txt

• my-folder\my-file-2.txt

• my-folder\my-file-3.txt

✔ 4) Copy the 3 files in my-folder (but do not copy my-folder itself) to the destination folder c:\temp. ✔files: - source: .\my-folder destination: c:\temp✔✔ Result:✔ c:\temp\my-file.txt✔ c:\temp\my-file-2.txt✔ c:\temp\my-file-3.txt✔✔ ---------------------✔✔ 5) Copy my-folder and its 3 files to my-folder within the destination folder c:\temp.✔files: - source: .\my-folder destination: c:\temp\my-folder✔✔ Result:✔ c:\temp\my-folder\my-file.txt✔ c:\temp\my-folder\my-file-2.txt✔ c:\temp\my-folder\my-file-3.txt✔✔ ---------------------✔✔ 6) Copy the 3 files in my-folder to other-folder within the destination folder c:\temp.✔files: - source: .\my-folder destination: c:\temp\other-folder✔✔ Result:✔ c:\temp\other-folder\my-file.txt✔ c:\temp\other-folder\my-file-2.txt✔ c:\temp\other-folder\my-file-3.txt ✔✔ ---------------------✔✔ 7) Copy only my-file-2.txt and my-file-3.txt to my-folder within the destination folder c:\temp.✔files: - source: .\my-folder\my-file-2.txt destination: c:\temp\my-folder

API バージョン 2014-10-06324

Page 333: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「resources」セクション (AWS Lambda のデプロイのみ)

- source: .\my-folder\my-file-3.txt destination: c:\temp\my-folder✔✔ Result:✔ c:\temp\my-folder\my-file-2.txt✔ c:\temp\my-folder\my-file-3.txt✔✔ ---------------------✔✔ 8) Copy only my-file-2.txt and my-file-3.txt to other-folder within the destination folder c:\temp.✔files: - source: .\my-folder\my-file-2.txt destination: c:\temp\other-folder - source: .\my-folder\my-file-3.txt destination: c:\temp\other-folder✔✔ Result:✔ c:\temp\other-folder\my-file-2.txt✔ c:\temp\other-folder\my-file-3.txt✔✔ ---------------------✔✔ 9) Copy my-folder and its 3 files (along with the appspec.yml file) to the destination folder c:\temp.✔files: - source: \ destination: c:\temp✔✔ Result:✔ c:\temp\appspec.yml✔ c:\temp\my-folder\my-file.txt✔ c:\temp\my-folder\my-file-2.txt✔ c:\temp\my-folder\my-file-3.txt

AppSpec の「resources」セクション (AWS Lambdaのデプロイのみ)「resources」セクションでは、デプロイする Lambda 関数を指定します。その構造は次のとおりです。

YAML:

resources: - name-of-function-to-deploy: type: "AWS::Lambda::Function" properties: name: name-of-lambda-function-to-deploy alias: alias-of-lambda-function-to-deploy currentversion: version-of-the-lambda-function-traffic-currently-points-to targetversion: version-of-the-lambda-function-to-shift-traffic-to

JSON:

"resources": [{ "name-of-function-to-deploy" { "type": "AWS::Lambda::Function" "properties": { "name": "name-of-lambda-function-to-deploy"

API バージョン 2014-10-06325

Page 334: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ)

"alias": "alias-of-lambda-function-to-deploy" "currentversion": "version-of-the-lambda-function-traffic-currently-points-to" "targetversion": "version-of-the-lambda-function-to-shift-traffic-to" } }}]

各プロパティは文字列で指定します。

• name – 必須。これはデプロイする Lambda 関数の名前です。• alias – 必須。これは Lambda 関数のエイリアスの名前です。• currentversion – 必須。これは、トラフィックが現在指している Lambda 関数のバージョンです。• targetversion – 必須。これは、トラフィックの移行先の Lambda 関数のバージョンです。

AppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ)「permissions」セクションでは、インスタンスへのコピー後に、特別なアクセス権限をファイルおよびディレクトリ/フォルダの「files」セクションに適用する方法を指定します。複数の object 手順を指定できます。このセクションはオプションです。Amazon Linux、Ubuntu Server、および RHEL インスタンスのみに適用されます。

Note

「permissions」セクションは EC2/オンプレミス のデプロイのみに使用されます。AWS Lambdaのデプロイには使用されません。

このセクションの構造は次のとおりです。

permissions: - object: object-specification pattern: pattern-specification except: exception-specification owner: owner-account-name group: group-name mode: mode-specification acls: - acls-specification context: user: user-specification type: type-specification range: range-specification type: - object-type

手順は次のとおりです。

• object – 必須。これは、インスタンスへのファイルシステムオブジェクトのコピー後に、指定されたアクセス権限を適用する一連のファイルシステムオブジェクト (ファイルまたはディレクトリ/フォルダ) です。

文字列で object を指定します。• pattern – オプション。アクセス権限を適用するパターンを指定します。指定しない場合、または特殊文

字 "**" で指定する場合、type に応じて一致するすべてのファイルまたはディレクトリに、指定されたアクセス権限が適用されます。

API バージョン 2014-10-06326

Page 335: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ)

引用符 ("") 付きの文字列で pattern を指定します。• except – オプション。pattern の例外とするファイルまたはディレクトリを指定します。

角括弧で囲った文字列のカンマ区切りリストで except を指定します。• owner – オプション。object の所有者の名前。指定しない場合、既存のすべての所有者が元のファイル

に適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。

文字列で owner を指定します。• group – オプション。object のグループ名。指定しない場合、既存のすべてのグループが元のファイルに

適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。

文字列で group を指定します。• mode – オプション。object に適用するアクセス権限の 8 進数モードを指定する整数。たとえば、644

は、所有者の読み書きのアクセス権限、グループの読み取り専用アクセス権限、およびその他すべてのユーザーの読み取り専用アクセス権限を表します。4755 は、setuid 属性が設定されていること、所有者のフルコントロールアクセス権限、グループの読み書きアクセス権限、およびその他すべてのユーザーの読み取りおよび実行アクセス権限を表します (その他の例については、Linux の chmod コマンドのドキュメントを参照してください)。mode を指定しない場合、既存のすべてのモードが元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。

文字列で mode を指定します。• acls – オプション。1 つ以上のアクセスコントロールリスト (ACL) エントリを表す文字列のリスト

が、object に適用されます。たとえば、u:bob:rw は、ユーザー bob の読み取りおよび書き込みアクセス権限を表します (その他の例については、Linux の setfacl コマンドドキュメントの ACL 入力形式の例を参照してください)。複数の ACL エントリを指定できます。acls を指定しない場合、既存のすべてのACL が元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。既存の ACL は置き換えられます。

acls を指定します。ダッシュ (-) の後にスペースを続け、その後に文字列を続けます (例: -u:jane:rw)。ACL が複数ある場合は、それぞれ個別の行で指定します。

Note

名前のないユーザー、名前のないグループ、またはその他の同様の ACL エントリを設定すると、AppSpec file は失敗します。これらのタイプのアクセス権限を指定するには、代わりにmode を使用します。

• context – オプション。Security-Enhanced Linux (SELinux) 対応インスタンスの場合、コピーしたオブジェクトに適用されるセキュリティ関連コンテキストラベルのリスト。ラベルは user、type、およびrange を含むキーとして指定します (詳細については、SELinux のドキュメントを参照してください)。各キーは文字列で入力します。指定しない場合、既存のすべてのラベルが元のファイルに適用されます。それ以外の場合、ディレクトリ/フォルダ構造は、コピーオペレーションによって変更されません。• user – オプション。SELinux ユーザー。• type – オプション。SELinux の型名。• range – オプション。SELinux の範囲指定子。マルチレベルセキュリティ (MLS) およびマルチカテゴ

リセキュリティ (MCS) がマシンで有効になっていない限り、この効果はありません。有効になっていない場合、range はデフォルトで s0 になります。

文字列で context を指定します。 ("user: unconfined_u" など)。各 context は個別の行で指定します。

• type – オプション。指定された権限を適用するオブジェクトのタイプ。type は文字列であり、file または directory に設定できます。file を指定した場合、アクセス権限は、コピーオペレーションの後に (object 自体ではなく) object 内に直接含まれるファイルのみに適用されます。directory を指定

API バージョン 2014-10-06327

Page 336: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ)

した場合、アクセス権限は、コピーオペレーションの後に (object 自体ではなく)、object 内のいずれかの場所にあるすべてのディレクトリ/フォルダに再帰的に適用されます。

type を指定します。ダッシュ (-) の後にスペースを続け、その後に文字列を続けます (例: - file)。

「permissions」セクションの例次の例では、object、pattern、except、owner、mode、および type で「permissions」セクションを指定する方法を示します。この例は、Amazon Linux、Ubuntu Server、および RHEL インスタンスのみに適用されます。この例では、次のファイルとフォルダが、この階層のインスタンスにコピーされることを前提としています。

/tmp `-- my-app |-- my-file-1.txt |-- my-file-2.txt |-- my-file-3.txt |-- my-folder-1 | |-- my-file-4.txt | |-- my-file-5.txt | `-- my-file-6.txt `-- my-folder-2 |-- my-file-7.txt |-- my-file-8.txt |-- my-file-9.txt `-- my-folder-3

次の AppSpec file は、コピー後にこれらのファイルとフォルダでアクセス権限を設定する方法を示しています。

version: 0.0os: linux✔ Copy over all of the folders and files with the permissions they✔ were originally assigned.files: - source: ./my-file-1.txt destination: /tmp/my-app - source: ./my-file-2.txt destination: /tmp/my-app - source: ./my-file-3.txt destination: /tmp/my-app - source: ./my-folder-1 destination: /tmp/my-app/my-folder-1 - source: ./my-folder-2 destination: /tmp/my-app/my-folder-2✔ 1) For all of the files in the /tmp/my-app folder ending in -3.txt✔ (for example, just my-file-3.txt), owner = adm, group = wheel, and✔ mode = 464 (-r--rw-r--).permissions: - object: /tmp/my-app pattern: "*-3.txt" owner: adm group: wheel mode: 464 type: - file✔ 2) For all of the files ending in .txt in the /tmp/my-app✔ folder, but not for the file my-file-3.txt (for example,✔ just my-file-1.txt and my-file-2.txt),✔ owner = ec2-user and mode = 444 (-r--r--r--). - object: /tmp/my-app

API バージョン 2014-10-06328

Page 337: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「permissions」セクション (EC2/オンプレミス のデプロイのみ)

pattern: "*.txt" except: [my-file-3.txt] owner: ec2-user mode: 444 type: - file✔ 3) For all the files in the /tmp/my-app/my-folder-1 folder except✔ for my-file-4.txt and my-file-5.txt, (for example,✔ just my-file-6.txt), owner = operator and mode = 646 (-rw-r--rw-). - object: /tmp/my-app/my-folder-1 pattern: "**" except: [my-file-4.txt, my-file-5.txt] owner: operator mode: 646 type: - file✔ 4) For all of the files that are immediately under✔ the /tmp/my-app/my-folder-2 folder except for my-file-8.txt,✔ (for example, just my-file-7.txt and✔ my-file-9.txt), owner = ec2-user and mode = 777 (-rwxrwxrwx). - object: /tmp/my-app/my-folder-2 pattern: "**" except: [my-file-8.txt] owner: ec2-user mode: 777 type: - file✔ 5) For all folders at any level under /tmp/my-app that contain✔ the name my-folder but not✔ /tmp/my-app/my-folder-2/my-folder-3 (for example, just✔ /tmp/my-app/my-folder-1 and /tmp/my-app/my-folder-2),✔ owner = ec2-user and mode = 555 (dr-xr-xr-x). - object: /tmp/my-app pattern: "*my-folder*" except: [tmp/my-app/my-folder-2/my-folder-3] owner: ec2-user mode: 555 type: - directory✔ 6) For the folder /tmp/my-app/my-folder-2/my-folder-3,✔ group = wheel and mode = 564 (dr-xrw-r--). - object: /tmp/my-app/my-folder-2/my-folder-3 group: wheel mode: 564 type: - directory

作成されるアクセス権限は次のとおりです。

-r--r--r-- ec2-user root my-file-1.txt-r--r--r-- ec2-user root my-file-2.txt-r--rw-r-- adm wheel my-file-3.txt

dr-xr-xr-x ec2-user root my-folder-1-rw-r--r-- root root my-file-4.txt-rw-r--r-- root root my-file-5.txt-rw-r--rw- operator root my-file-6.txt

dr-xr-xr-x ec2-user root my-folder-2-rwxrwxrwx ec2-user root my-file-7.txt-rw-r--r-- root root my-file-8.txt-rwxrwxrwx ec2-user root my-file-9.txt

dr-xrw-r-- root wheel my-folder-3

API バージョン 2014-10-06329

Page 338: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

次の例は、acls および context 手順を追加して、「permissions」セクションを指定する方法を示しています。この例は、Amazon Linux、Ubuntu Server、および RHEL インスタンスのみに適用されます。

permissions: - object: /var/www/html/WordPress pattern: "**" except: [/var/www/html/WordPress/ReadMe.txt] owner: bob group: writers mode: 644 acls: - u:mary:rw - u:sam:rw - m::rw context: user: unconfined_u type: httpd_sys_content_t range: s0 type: - file

AppSpec の「hooks」セクションAppSpec file の「hooks」セクションの内容は、デプロイの コンピューティングプラットフォームを選択します。 に応じて異なります。EC2/オンプレミス のデプロイの「hooks」セクションには、デプロイライフサイクルイベントフックを 1 つ以上のスクリプトにリンクするマッピングが含まれます。Lambda のデプロイの「hooks」セクションは、デプロイライフサイクルイベント中に実行する Lambda 検証の関数を指定します。イベントフックが存在しない場合、そのイベントに対してオペレーションは実行されません。このセクションは、デプロイの一部としてスクリプトまたは Lambda 検証の関数を実行する場合のみ必須です。

トピック• AWS Lambda のデプロイ向けの AppSpec の「hooks」セクション (p. 330)• EC2/オンプレミス のデプロイ向けの AppSpec の「hooks」セクション (p. 332)

AWS Lambda のデプロイ向けの AppSpec の「hooks」セクショントピック

• AWS Lambda のデプロイ向けのライフサイクルイベントフックのリスト (p. 330)• Lambda 関数のバージョンのデプロイでのフックの実行順 (p. 331)• 'hooks' セクションの構造 (p. 331)• Lambda のサンプル「フック」関数 (p. 331)

AWS Lambda のデプロイ向けのライフサイクルイベントフックのリスト

AWS Lambda フックは、ライフサイクルイベントの名前の後の新しい行に文字列で指定された 1 つのLambda 関数です。各フックはデプロイごとに 1 回実行されます。以下は、AppSpec ファイルに使用できるフックの説明です。

• BeforeAllowTraffic – これを使用して、トラフィックがデプロイされた Lambda 関数のバージョンに移行する前にタスクを実行します。

• AfterAllowTraffic – これを使用して、トラフィックがデプロイされた Lambda 関数のバージョンに移行した後でタスクを実行します。

API バージョン 2014-10-06330

Page 339: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

Lambda 関数のバージョンのデプロイでのフックの実行順サーバーレスの Lambda 関数のバージョンのデプロイでは、イベントフックは次の順序で実行されます。

Note

デプロイの Start、AllowTraffic、および End イベントはスクリプト化できません。このため、これらのイベントはこの図でグレーで表示されています。

'hooks' セクションの構造次の例は、「hooks」セクションの例を示します。

YAML の使用:

hooks: - BeforeAllowTraffic: BeforeAllowTrafficHookFunctionName - AfterAllowTraffic: AfterAllowTrafficHookFunctionName

JSON の使用:

"hooks": [{ "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName" "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName"}]

Lambda のサンプル「フック」関数「hooks」セクションを使用して、Lambda のデプロイを検証するために AWS CodeDeploy が呼び出すことができる Lambda 関数を指定します。BeforeAllowTraffic と AfterAllowTraffic デプロイライフサイクルには同じ関数または異なる関数を使用できます。検証テストが完了した後、Lambda 検証の関数は AWSCodeDeploy をコールバックし、「Succeeded」または「Failed」の結果を提供します。

Important

1 時間以内に Lambda 検証の関数から AWS CodeDeploy に通知がない場合、デプロイが失敗したとみなされます。

Lambda フック関数を呼び出す前に、サーバーはデプロイ ID およびライフサイクルイベントフック実行ID について通知される必要があります。

API バージョン 2014-10-06331

Page 340: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

aws deploy put-lifecycle-event-hook-execution-status --deployment-id <deployment-id> --status Succeeded --lifecycle-event-hook-execution-id <execution-id> --region <region>

次に示すのは、Node.js で記述されたサンプルの Lambda フック関数の例です。

'use strict';

const aws = require('aws-sdk');const codedeploy = new aws.CodeDeploy({apiVersion: '2014-10-06'});

exports.handler = (event, context, callback) => { //Read the DeploymentId from the event payload. var deploymentId = event.DeploymentId;

//Read the LifecycleEventHookExecutionId from the event payload var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;

/* Enter validation tests here. */

// Prepare the validation test results with the deploymentId and // the lifecycleEventHookExecutionId for AWS CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass AWS CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. callback('Validation test failed'); } else { // Validation succeeded. callback(null, 'Validation test succeeded'); } });};

EC2/オンプレミス のデプロイ向けの AppSpec の「hooks」セクショントピック

• ライフサイクルイベントフックのリスト (p. 332)• ライフサイクルイベントフックの可用性 (p. 334)• デプロイでのフックの実行順 (p. 335)• 'hooks' セクションの構造 (p. 337)• フックの環境変数の可用性 (p. 338)• hooks の例 (p. 339)

ライフサイクルイベントフックのリスト

EC2/オンプレミス のデプロイのフックは、デプロイごとに 1 回インスタンスに対して実行されます。フックには実行するスクリプトを 1 つまたは複数指定することができます。ライフサイクルイベントの各フックは、文字列で個別の行に指定します。以下は、AppSpec ファイルに使用できるフックの説明です。

API バージョン 2014-10-06332

Page 341: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

デプロイおよびロールバックの種類別の有効なライフサイクルフックの詳細については、「ライフサイクルイベントフックの可用性 (p. 334)」を参照してください。

• ApplicationStop – このデプロイライフサイクルイベントは、アプリケーションリビジョンがダウンロードされる前でも発生します。アプリケーションを適切に中止するか、現在インストールされているパッケージを削除してデプロイの準備をする場合は、このイベントのスクリプトを指定できます。このデプロイライフサイクルイベントに使用される AppSpec file とスクリプトは、前回正常にデプロイされたアプリケーションリビジョンのものです。

Note

AppSpec file は、デプロイする前にはインスタンスに存在しません。したがって、ApplicationStop フックは、初めてインスタンスにデプロイするときは実行されません。インスタンスに 2 回目にデプロイするときは、ApplicationStop フックを使用できます。

最後に正常にデプロイされたアプリケーションリビジョンの場所を特定するため、AWS CodeDeployエージェントは deployment-group-id_last_successful_install ファイルにリストされた場所を探します。このファイルは次の場所にあります。

Amazon Linux、Ubuntu Server、および RHEL Amazon EC2 インスタンスの /opt/codedeploy-agent/deployment-root/deployment-instructions フォルダ。

Windows Server Amazon EC2 インスタンスの C:\ProgramData\Amazon\CodeDeploy\deployment-instructions フォルダ。

ApplicationStop デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングする方法については、「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)」を参照してください。

• DownloadBundle – このデプロイライフサイクルイベント中に、AWS CodeDeploy エージェントはアプリケーションリビジョンファイルを一時的な場所にコピーします。

Amazon Linux、Ubuntu Server、および RHEL Amazon EC2 インスタンスの /opt/codedeploy-agent/deployment-root/deployment-group-id/deployment-id/deployment-archive フォルダ。

Windows Server Amazon EC2 インスタンスの C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archive フォルダ。

このイベントは AWS CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

DownloadBundle デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「「不明なエラー: 読み取り用に開いていません」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング (p. 365)」を参照してください。

• BeforeInstall – このデプロイライフサイクルイベントは、ファイルの復号や現在のバージョンのバックアップの作成などの事前インストールタスクに使用できます。

• Install – このデプロイライフサイクルイベント中に、AWS CodeDeploy エージェントは一時的な場所からリビジョンファイルを最終的な宛先フォルダにコピーします。このイベントは AWS CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

• AfterInstall –アプリケーションの設定や、ファイルのアクセス権限の変更などのタスクに、このデプロイライフサイクルイベントを使用できます。

• ApplicationStart – 通常、ApplicationStop 中に停止したサービスを再起動する場合に、このデプロイライフサイクルイベントを使用します。

• ValidateService – これは最後のデプロイライフサイクルイベントです。デプロイが正常に完了したことを確認するために使用されます。

• BeforeBlockTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーから登録解除される前のインスタンスでタスクを実行できます。

API バージョン 2014-10-06333

Page 342: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

BeforeBlockTraffic デプロイライフサイクルイベント中に失敗したデプロイのトラブルシューティング方法については、「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)」を参照してください。

• BlockTraffic – このデプロイライフサイクルイベント中は、現在トラフィックの処理中であるインスタンスに対するインターネットトラフィックのアクセスがブロックされます。このイベントは AWSCodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

• AfterBlockTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーから登録解除された後のインスタンスでタスクを実行できます。

AfterBlockTraffic デプロイライフサイクルイベント中に失敗したデプロイのトラブルシューティング方法については、「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)」を参照してください。

• BeforeAllowTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーに登録される前のインスタンスでタスクを実行できます。

• AllowTraffic – このデプロイライフサイクルイベント中は、デプロイ後のインスタンスに対するインターネットトラフィックのアクセスが許可されます。このイベントは AWS CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

• AfterAllowTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーに登録された後のインスタンスでタスクを実行できます。

ライフサイクルイベントフックの可用性

次の表に、各デプロイおよびロールバックシナリオで使用できるライフサイクルイベントフックを示します。

ライフサイクルイベント名

インプレースデプロイ¹

Blue/Green デプロイ: 元のインスタンス

Blue/Green デプロイ: 代替インスタンス

Blue/Green デプロイのロールバック: 元のインスタンス

Blue/Green デプロイのロールバック: 代替インスタンス

ApplicationStop ✓   ✓    

DownloadBundle² ✓   ✓    

BeforeInstall ✓   ✓    

インストール² ✓   ✓    

AfterInstall ✓   ✓    

ApplicationStart ✓   ✓    

ValidateService ✓   ✓    

BeforeBlockTraffic ✓ ✓     ✓

BlockTraffic² ✓ ✓     ✓

AfterBlockTraffic ✓ ✓     ✓

BeforeAllowTraffic ✓   ✓ ✓  

AllowTraffic² ✓   ✓ ✓  

AfterAllowTraffic ✓   ✓ ✓  

¹インプレースデプロイのロールバックにも適用されます。

API バージョン 2014-10-06334

Page 343: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

ライフサイクルイベント名

インプレースデプロイ¹

Blue/Green デプロイ: 元のインスタンス

Blue/Green デプロイ: 代替インスタンス

Blue/Green デプロイのロールバック: 元のインスタンス

Blue/Green デプロイのロールバック: 代替インスタンス

² AWS CodeDeploy オペレーション用に予約されています。スクリプトの実行には使用できません。

デプロイでのフックの実行順

インプレースデプロイ

インプレースデプロイのロールバックを含むインプレースデプロイで、イベントフックは次の順序で実行されます。

Note

インプレースデプロイの場合、トラフィックのブロックと許可に関する 6 つのフックは、ElasticLoad Balancing の Classic Load Balancer、Application Load Balancer、または Network LoadBalancer をデプロイグループに指定した場合にのみ適用されます。

API バージョン 2014-10-06335

Page 344: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

Note

デプロイの Start、DownloadBundle、Install、および End イベントはスクリプト化できません。このため、これらのイベントはこの図でグレーで表示されています。ただし、AppSpec file の「files」セクションを編集して、Install イベント中にインストールされるものを指定できます。

Blue/Green デプロイ

Blue/Green デプロイでは、イベントフックは次の順序で実行されます。

API バージョン 2014-10-06336

Page 345: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

Note

デプロイの Start、DownloadBundle、Install、BlockTraffic、AllowTraffic、および End イベントはスクリプト化できません。このため、これらのイベントはこの図でグレーで表示されています。ただし、AppSpec file の「files」セクションを編集して、Install イベント中にインストールされるものを指定できます。

'hooks' セクションの構造

「hooks」セクションの構造は次のとおりです。

hooks: deployment-lifecycle-event-name: - location: script-location timeout: timeout-in-seconds runas: user-name

API バージョン 2014-10-06337

Page 346: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec の「hooks」セクション

デプロイライフサイクルイベント名の後で、次の要素を hook エントリに含めることができます。

location

必須リビジョンのスクリプトファイルのバンドルでの位置。timeout

オプション。失敗と見なされる前にスクリプトの実行を許可する秒数。デフォルト値は 3600 秒 (1 時間) です。

Note

3600 秒 (1 時間) は、各デプロイライフサイクルイベントのスクリプト実行で許可される最大の時間です。スクリプトがこの制限を超過した場合、デプロイは停止し、インスタンスへのデプロイは失敗します。各デプロイライフサイクルイベントのすべてのスクリプトで、timeout に指定された合計秒数が、この制限を超えないようにします。

runas

オプション。スクリプトの実行時に偽装するユーザー。デフォルトでは、これはインスタンスで実行中の AWS CodeDeploy エージェントになります。AWS CodeDeploy はパスワードを保存しないため、runas ユーザーにパスワードが必要な場合、ユーザーを偽装できません。この要素は AmazonLinux および Ubuntu Server インスタンスのみに適用されます。

フックの環境変数の可用性

各デプロイライフサイクルイベントの間、フックスクリプトは次の環境変数にアクセスできます。

APPLICATION_NAME

現在のデプロイの一部である AWS CodeDeploy のアプリケーションの名前 (例: WordPress_App)。DEPLOYMENT_ID

ID AWS CodeDeploy が、現在のデプロイに割り当てられています (例: d-AB1CDEF23)。DEPLOYMENT_GROUP_NAME

現在のデプロイの一部である AWS CodeDeploy のデプロイグループの名前 (例:WordPress_DepGroup)。

DEPLOYMENT_GROUP_ID

現在のデプロイの一部である AWS CodeDeploy のデプロイグループの ID (例: b1a2189b-dd90-4ef5-8f40-4c1c5EXAMPLE)。

LIFECYCLE_EVENT

現在のデプロイライフサイクルイベントの名前 (例: AfterInstall)。

これらの環境変数は各デプロイライフサイクルイベントにローカルです。

以下のスクリプトは、DEPLOYMENT_GROUP_NAME の値が Staging と等しい場合に、Apache HTTPサーバーでリッスンするポートを 80 ではなく 9090 に変更します。このスクリプトは BeforeInstall デプロイライフサイクルイベント中に呼び出される必要があります。

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ]then sed -i -e 's/Listen 80/Listen 9090/g' /etc/httpd/conf/httpd.conffi

API バージョン 2014-10-06338

Page 347: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec File の例

次のスクリプトの例では、DEPLOYMENT_GROUP_NAME 環境変数の値が Staging に等しい場合に、エラーログに記録されるメッセージの詳細レベルを警告からデバッグに変更します。このスクリプトはBeforeInstall デプロイライフサイクルイベント中に呼び出される必要があります。

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ]then sed -i -e 's/LogLevel warn/LogLevel debug/g' /etc/httpd/conf/httpd.conffi

以下のスクリプトの例では、指定されたウェブページを、これらの環境変数の値を表示するテキストで置き換えます。このスクリプトは AfterInstall デプロイライフサイクルイベント中に呼び出される必要があります。

✔!/usr/bin/python

import os strToSearch="<h2>This application was deployed using AWS CodeDeploy.</h2>"strToReplace="<h2>This page for "+os.environ['APPLICATION_NAME']+" application and "+os.environ['DEPLOYMENT_GROUP_NAME']+" deployment group with "+os.environ['DEPLOYMENT_GROUP_ID']+" deployment group ID was generated by a "+os.environ['LIFECYCLE_EVENT']+" script during "+os.environ['DEPLOYMENT_ID']+" deployment.</h2>" fp=open("/var/www/html/index.html","r")buffer=fp.read()fp.close() fp=open("/var/www/html/index.html","w")fp.write(buffer.replace(strToSearch,strToReplace))fp.close()

hooks の例

hooks エントリの例を次に示します。AfterInstall ライフサイクルイベントに 2 つのフックを指定しています。

hooks: AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 - location: Scripts/PostDeploy.sh timeout: 180

デプロイプロセスの AfterInstall ステージ中に、Scripts/RunResourceTests.sh スクリプトが実行されます。スクリプトの実行に 180 秒 (3 分) 以上かかる場合、デプロイは成功しません。

「hooks」セクションで指定するスクリプトの場所は、アプリケーションリビジョンバンドルのルートに相対的な位置です。前述の例では、RunResourceTests.sh という名前のファイルが Scripts という名前のディレクトリにあります。Scripts ディレクトリはバンドルのルートレベルにあります。詳細については、「AWS CodeDeploy のリビジョンの計画を立てる (p. 242)」を参照してください。

AppSpec File の例このトピックでは、AWS Lambda および EC2/オンプレミス のデプロイ向けの AppSpec ファイルの例も提供します。

API バージョン 2014-10-06339

Page 348: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda のデプロイ向けの AppSpec File の例

トピック• AWS Lambda のデプロイ向けの AppSpec File の例 (p. 340)• EC2/オンプレミス のデプロイ向けの AppSpec File の例 (p. 341)

AWS Lambda のデプロイ向けの AppSpec File の例Lambda 関数のバージョンをデプロイするために YAML で書かれた AppSpec file の例を示します。

version: 0.0Resources: - myLambdaFunction: Type: AWS::Lambda::Function Properties: Name: "myLambdaFunction" Alias: "myLambdaFunctionAlias" CurrentVersion: "1" TargetVersion: "2"Hooks: - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift" - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"

JSON で書かれた前述の例のバージョンを示します。

{ "version": 0.0, "Resources": [{ "myLambdaFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "myLambdaFunction", "Alias": "myLambdaFunctionAlias", "CurrentVersion": "1", "TargetVersion": "2" } } }], "Hooks": [{ "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeTrafficShift" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterTrafficShift" } ] }

デプロイ中のイベントのシーケンスを次に示します。

1. myLambdaFunction という名前の Lambda 関数のバージョン 1 からのバージョン 2 にトラフィックを移行する前に、デプロイでトラフィックの移行を開始する準備が整っていることを確認する、LambdaFunctionToValidateBeforeTrafficShift という名前の Lambda 関数を実行します。

2. LambdaFunctionToValidateBeforeTrafficShift が終了コード 0 (成功) を返した場合は、myLambdaFunction のバージョン 2 へのトラフィックの移行を開始します。このデプロイのデプロイ設定により、トラフィックが移行するレートが決まります。

3. myLambdaFunction という名前の Lambda 関数のバージョン 1 からバージョン2 へのトラフィックの移行が完了したら、デプロイが正常に完了したことを確認する、LambdaFunctionToValidateAfterTrafficShift という名前の Lambda 関数を実行します。

API バージョン 2014-10-06340

Page 349: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス のデプロイ向けの AppSpec File の例

EC2/オンプレミス のデプロイ向けの AppSpec File の例Amazon Linux、Ubuntu Server、または RHEL インスタンスへのインプレイスデプロイのための AppSpecfile の例を次に示します。

Note

Windows Server インスタンスへのデプロイは runas 要素をサポートしていません。WindowsServer インスタンスにデプロイする場合は、AppSpec file にこの要素を含めないでください。

version: 0.0os: linuxfiles: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApphooks: BeforeInstall: - location: Scripts/UnzipResourceBundle.sh - location: Scripts/UnzipDataBundle.sh AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 ApplicationStart: - location: Scripts/RunFunctionalTests.sh timeout: 3600 ValidateService: - location: Scripts/MonitorService.sh timeout: 3600 runas: codedeployuser

Windows Server インスタンスの場合は、os: linux を os: windows に変更します。また、destination パスを完全に修飾する必要があります (例: c:\temp\webapps\Config、c:\temp\webapps\myApp)。runas エレメントは含めないでください。

デプロイ中のイベントのシーケンスを次に示します。

1. Scripts/UnzipResourceBundle.sh にあるスクリプトを実行します。2. 前のスクリプトが終了コード 0 (成功) を返した場合、Scripts/UnzipDataBundle.sh にあるスクリ

プトを実行します。3. ファイルを Config/config.txt のパスからパス /webapps/Config/config.txt にコピーしま

す。4. source ディレクトリのすべてのファイルを再帰的に /webapps/myApp ディレクトリにコピーしま

す。5. Scripts/RunResourceTests.sh にあるスクリプトを、180 秒 (3 分) のタイムアウトで実行しま

す。6. Scripts/RunFunctionalTests.sh にあるスクリプトを、3600 秒 (1 時間) のタイムアウトで実行し

ます。7. Scripts/MonitorService.sh にあるスクリプトを、ユーザー codedeploy として 3600 秒 (1 時間)

のタイムアウトで実行します。

API バージョン 2014-10-06341

Page 350: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec File の間隔

AppSpec File の間隔AppSpec file の間隔の正しい形式を以下に示します。角括弧に含まれた番号は、項目の間に必要なスペースの数を示します。たとえば、[4] は、項目間に 4 つのスペースを挿入することを意味します。AppSpecfile のスペースの場所と数が正しくない場合、AWS CodeDeploy はデバッグが困難なエラーを発生させます。

version:[1]version-numberos:[1]operating-system-namefiles:[2]-[1]source:[1]source-files-location[4]destination:[1]destination-files-locationpermissions:[2]-[1]object:[1]object-specification[4]pattern:[1]pattern-specification[4]except:[1]exception-specification[4]owner:[1]owner-account-name[4]group:[1]group-name[4]mode:[1]mode-specification[4]acls: [6]-[1]acls-specification [4]context:[6]user:[1]user-specification[6]type:[1]type-specification[6]range:[1]range-specification[4]type:[6]-[1]object-typehooks:[2]deployment-lifecycle-event-name:[4]-[1]location:[1]script-location[6]timeout:[1]timeout-in-seconds[6]runas:[1]user-name

正しい間隔が設定された spacedAppSpec file ファイルの例を次に示します。

version: 0.0os: linuxfiles: - source: / destination: /var/www/html/WordPresshooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh - location: scripts/create_test_db.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root

間隔の詳細については、YAML の仕様を参照してください。

API バージョン 2014-10-06342

Page 351: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAppSpec File の検証とファイルの場所

AppSpec File の検証とファイルの場所ファイル構文

AWS CodeDeploy には AppSpec File の内容を検証するツールは用意されていません。代わりに、YAMLLint や Online YAML Parser などのブラウザベースのツールを使用して YAML 構文を確認することを検討してください。

ファイルの場所

AppSpec file をアプリケーションのソースコンテンツのディレクトリ構造のルートディレクトリに配置したことを確認するには、次のいずれかのコマンドを実行します。

ローカル Linux, macOS, or Unix インスタンスの場合

ls path/to/root/directory/appspec.yml

AppSpec file ファイルがその場所にない場合、「No such file or directory」エラーが表示されます。

ローカル Windows インスタンスの場合

dir path\to\root\directory\appspec.yml

AppSpec file ファイルがその場所にない場合、「File Not Found」エラーが表示されます。

API バージョン 2014-10-06343

Page 352: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

AWS CodeDeploy エージェント設定リファレンス

AWS CodeDeploy エージェントがインストールされている場合、設定ファイルはインスタンスに配置されます。この設定ファイルでは、インスタンスとやり取りするときに使用する AWS CodeDeploy のディレクトリパスおよびその他の設定を指定します。ファイルの一部の設定オプションは変更できます。

Amazon Linux、Ubuntu Server、および Red Hat Enterprise Linux (RHEL) インスタンスの場合、設定ファイルの名前は codedeployagent.yml になります。ファイルは、/etc/codedeploy-agent/confディレクトリに配置されます。

Windows Server インスタンスの場合、設定ファイルは conf.yml という名前になります。ファイルは、C:\ProgramData\Amazon\CodeDeploy ディレクトリに配置されます。

設定には以下が含まれます。

:log_aws_wire: AWS CodeDeploy エージェントが Amazon S3 からワイヤログを取得し、:log_dir: 設定によって示された場所にある codedeploy-agent.wire.logという名前のファイルに書き込むには、true に設定します。

Warning

ワイヤログの取得に必要な時間のみ、:log_aws_wire: を true に設定する必要があります。codedeploy-agent.wire.log ファイルは非常に大きなサイズになる場合があります。このファイルのワイヤログ出力には、この設定が true に設定されている間に AmazonS3 との間で転送されたファイルのプレーンテキストの内容などの重要情報が含まれている場合があります。ワイヤログには、AWS CodeDeploy デプロイに関連するアクティビティだけでなく、この設定が true に設定されている間に AWS アカウントに関連付けられていたすべてのAmazon S3 アクティビティに関する情報が含まれます。

デフォルトの設定は、false です。

この設定は、すべてのインスタンスタイプに適用されます。この設定を使用できるようにするには、この設定を Windows Server インスタンスに追加する必要があります。

:log_dir: AWS CodeDeploy エージェントオペレーションに関連するログファイルが保存されるインスタンスのフォルダ。

デフォルト設定は、Amazon Linux、UbuntuServer、および RHEL インスタンスの場合は '/

API バージョン 2014-10-06344

Page 353: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

var/log/aws/codedeploy-agent'、WindowsServer インスタンスの場合は C:\ProgramData\Amazon\CodeDeploy\log です。

:pid_dir: codedeploy-agent.pid が保存されているフォルダ。

このファイルには、AWS CodeDeploy エージェントのプロセス ID (PID) が含まれます。デフォルトの設定は、'/opt/codedeploy-agent/state/.pid' です。

この設定は、Amazon Linux、Ubuntu Server、および RHEL インスタンスのみに適用されます。

:program_name: AWS CodeDeploy エージェントのプログラム名。

デフォルトの設定は、codedeploy-agent です。

この設定は、Amazon Linux、Ubuntu Server、および RHEL インスタンスのみに適用されます。

:root_dir: 関連するリビジョン、デプロイ履歴、およびインスタンスのデプロイスクリプトが保存されるフォルダ。

デフォルト設定は、Amazon Linux、UbuntuServer、および RHEL インスタンスの場合は'/opt/codedeploy-agent/deployment-root'、Windows Server インスタンスの場合はC:\ProgramData\Amazon\CodeDeploy です。

:verbose: AWS CodeDeploy エージェントでインスタンスのデバッグメッセージログファイルを表示する場合は、true に設定します。

デフォルト設定は、Amazon Linux、UbuntuServer、および RHEL インスタンスの場合はfalse、Windows Server インスタンスの場合はtrue です。

:wait_between_runs: 保留中のデプロイに対する AWS CodeDeploy エージェントによる AWS CodeDeploy のポーリング間隔 (秒)。

デフォルトの設定は、1 です。

API バージョン 2014-10-06345

Page 354: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド関連トピック

:on_premises_config_file: オンプレミスインスタンスの場合、codedeploy.onpremises.yml(Ubuntu Server および RHEL)、またはconf.onpremises.yml (Windows Server) という名前の設定ファイルの別の場所へのパス。

デフォルトでは、これらのファイルは Ubuntu Server および RHEL の場合は /etc/codedeploy-agent/conf/codedeploy.onpremises.yml、WindowsServer の場合は C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml に保存されます。

バージョン 1.0.1.686 以降のバージョンの AWSCodeDeploy エージェントで利用できます。

:proxy_uri: (オプション) AWS CodeDeploy オペレーション用に AWS CodeDeploy エージェントが AWS に接続するために経由する HTTP プロキシ。https://user:[email protected]:443/path?queryのような形式を使用します。

バージョン 1.0.1.824 以降のバージョンの AWSCodeDeploy で利用できます。

:max_revisions: (オプション) AWS CodeDeploy エージェントでアーカイブするデプロイグループ用のアプリケーションリビジョンの数。指定された数を超えるリビジョンは削除されます。

正の整数を入力します。値を指定しない場合、AWS CodeDeploy は現在デプロイされたリビジョンに加えて 5 つの最新のリビジョンを保持します。

バージョン 1.0.1.966 以降のバージョンの AWSCodeDeploy でサポートされます。

関連トピックAWS CodeDeploy エージェントの使用 (p. 132)

AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)

API バージョン 2014-10-06346

Page 355: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

AWS CodeDeploy リファレンス用のAWS CloudFormation テンプレート

AWS CodeDeploy で使用可能な他のメソッドに加えて、AWS CloudFormation テンプレートを使用して、以下のタスクを実行できます。

• アプリケーションを作成します。• デプロイグループを作成し、ターゲットリビジョンを指定します。• デプロイ設定を作成します。• Amazon EC2 インスタンスを作成します。

AWS CloudFormation は、テンプレートを使用して AWS リソースのモデル化およびセットアップに役立つサービスです。AWS CloudFormation テンプレートは、JSON 標準に準拠した形式のテキストファイルです。必要なすべての AWS リソースを説明するテンプレートを作成すれば、AWS CloudFormation がお客さまに代わってこれらのリソースのプロビジョニングや設定を処理します。

詳細については、以下を参照してください。「AWS CloudFormation とは」および『AWS CloudFormationユーザーガイド』の「AWS CloudFormation テンプレートを使用する」

組織内で、管理者として AWS CodeDeploy と互換性がある AWS CloudFormation テンプレートを使用する予定がある場合は、AWS CloudFormation が依存する AWS CloudFormation および AWS サービスとアクションにアクセス権を付与する必要があります。アプリケーション、デプロイグループ、デプロイ設定を作成するためにアクセス権を付与するには、AWS CloudFormation を使用する IAM ユーザーに以下のポリシーをアタッチします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ]}

管理ポリシーの詳細については、以下のトピックを参照してください。

• Amazon EC2 インスタンスを作成する IAM ユーザーにアタッチする必要があるポリシーを表示するには、「AWS CodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレート) (p. 169)」を参照してください。

• IAM ユーザーへのポリシーのアタッチの詳細については、『IAM ユーザーガイド』の「管理ポリシーの使用」を参照してください。

• AWS CodeDeploy アクションとリソースの制限されたセットにユーザーを制限する方法については、「AWS CodeDeploy の AWS 管理 (定義済み) ポリシー (p. 309)」を参照してください。

次の表は、AWS CloudFormation テンプレートがお客様に代わって実行できるアクションを表示し、AWSリソースタイプに関する詳細情報へのリンクおよび AWS CloudFormation テンプレートに追加できるプロパティの種類を含んでいます。

API バージョン 2014-10-06347

Page 356: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

アクション AWS CloudFormation リソースタイプ

AWS CodeDeploy アプリケーションを作成します。

AWS::CodeDeploy::Application

アプリケーションリビジョンをデプロイするのに使用されるデプロイグループの詳細を作成し、指定します。¹

AWS::CodeDeploy::DeploymentGroup

デプロイ中に AWS CodeDeploy が使用する一連のデプロイのルール、デプロイの成功条件、デプロイの失敗条件を作成します。

AWS::CodeDeploy::DeploymentConfig

Amazon EC2 インスタンスを作成します。² AWS::EC2::Instance

¹デプロイグループの一部としてデプロイするアプリケーションリビジョンのバージョンを指定した場合は、プロビジョニングプロセスが完了するとすぐに、ターゲットリビジョンがデプロイされます。テンプレートの設定の詳細については、『AWS CloudFormation ユーザーガイド』の「AWS CodeDeployDeploymentGroup Deployment Revision S3Location」および「AWS CodeDeploy DeploymentGroupDeployment Revision GitHubLocation」を参照してください。

²AWS CodeDeploy がサポートされているリージョンで、Amazon EC2 インスタンスを作成するのに使用できるテンプレートを提供します。これらのテンプレートの使用の詳細については、「AWSCodeDeploy 用の Amazon EC2 インスタンスの作成 (AWS CloudFormation テンプレート) (p. 169)」を参照してください。

API バージョン 2014-10-06348

Page 357: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリージョン別リソースキットバケット名

AWS CodeDeploy リソースキットのリファレンス

AWS CodeDeploy が依存しているファイルの多くは、一般的に利用可能な AWS のリージョン固有のAmazon S3 バケットに格納されています。このようなファイルには、AWS CodeDeploy エージェントのインストールファイル、テンプレート、サンプルアプリケーションファイルがあります。この一連のファイルを AWS CodeDeploy リソースキットと呼びます。

トピック• リージョン別リソースキットバケット名 (p. 349)• リソースキットの内容 (p. 350)• リソースキットのファイルのリストの表示 (p. 351)• リソースキットのファイルのダウンロード (p. 352)

リージョン別リソースキットバケット名この表は、本ガイドの一部の手順で必要な bucket-name を置換する名前の一覧です。これらは、AWSCodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。

リージョン名 bucket-name 置換 リージョン識別子

米国東部 (オハイオ) aws-codedeploy-us-east-2 us-east-2

米国東部(バージニア北部) aws-codedeploy-us-east-1 us-east-1

米国西部 (北カリフォルニア) aws-codedeploy-us-west-1 us-west-1

米国西部 (オレゴン) aws-codedeploy-us-west-2 us-west-2

カナダ (中部) aws-codedeploy-ca-central-1 ca-central-1

欧州 (アイルランド) aws-codedeploy-eu-west-1 eu-west-1

欧州 (ロンドン) aws-codedeploy-eu-west-2 eu-west-2

EU (パリ) aws-codedeploy-eu-west-3 eu-west-3

欧州 (フランクフルト) aws-codedeploy-eu-central-1 eu-central-1

アジアパシフィック (東京) aws-codedeploy-ap-northeast-1 ap-northeast-1

アジアパシフィック (ソウル) aws-codedeploy-ap-northeast-2 ap-northeast-2

アジアパシフィック (シンガポール)

aws-codedeploy-ap-southeast-1 ap-southeast-1

アジアパシフィック (シドニー) aws-codedeploy-ap-southeast-2 ap-southeast-2

アジアパシフィック (ムンバイ) aws-codedeploy-ap-south-1 ap-south-1

API バージョン 2014-10-06349

Page 358: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースキットの内容

リージョン名 bucket-name 置換 リージョン識別子

南米 (サンパウロ) aws-codedeploy-sa-east-1 sa-east-1

リソースキットの内容次の表に、AWS CodeDeploy リソースキットのファイルを一覧表示します。

ファイル 説明

VERSION インスタンスで実行されているときに AWSCodeDeploy エージェントが自身を更新するために使用するファイル。

codedeploy-agent.noarch.rpm Amazon Linux および Red Hat Enterprise Linux(RHEL) の AWS CodeDeploy エージェント。同じベースファイル名で、異なるバージョン (-1.0-0など) の複数のファイルが存在することがあります。

codedeploy-agent_all.deb Ubuntu Server の AWS CodeDeploy エージェント。同じベースファイル名で、異なるバージョン(_1.0-0 など) の複数のファイルが存在することがあります。

codedeploy-agent.msi Windows Server の AWS CodeDeploy エージェント。同じベースファイル名で、異なるバージョン(-1.0-0 など) の複数のファイルが存在することがあります。

install AWS CodeDeploy エージェントをより簡単にインストールするために使用できるファイル。

CodeDeploy_SampleCF_Template.json Amazon Linux または Windows Server を実行する1 つから 3 つの Amazon EC2 インスタンスを起動するために使用できる AWS CloudFormation テンプレート。同じベースファイル名で、異なるバージョン (-1.0.0 など) の複数のファイルが存在することがあります。

CodeDeploy_SampleCF_ELB_Integration.jsonApache ウェブサーバー上で実行される負荷分散されたサンプルウェブサイトの作成に使用できるAWS CloudFormation テンプレート。アプリケーションは、作成されたリージョン内のすべてのアベイラビリティーゾーンに分散されるように設定されます。これらのテンプレートでは、3 つのAmazon EC2 インスタンスと、Amazon S3、AutoScaling、AWS CloudFormation、および ElasticLoad Balancing のリソースへのアクセスをインスタンスに付与する IAM インスタンスプロファイルが作成されます。また、ロードバランサーと AWSCodeDeploy サービスロールも作成されます。

SampleApp_ELB_Integration.zip Elastic Load Balancing ロードバランサーに登録された Amazon EC2 インスタンスにデプロイできるサンプルアプリケーションリビジョン。

API バージョン 2014-10-06350

Page 359: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースキットのファイルのリストの表示

ファイル 説明

SampleApp_Linux.zip Amazon Linux を実行している Amazon EC2 インスタンス、Ubuntu Server または RHEL インスタンスにデプロイできるサンプルのアプリケーションリビジョン。同じベースファイル名で、異なるバージョン (-1.0 など) の複数のファイルが存在することがあります。

SampleApp2_Linux.zip Sample deployment wizard を実行したときに置換先インスタンスフリートにデプロイするサンプルアプリケーションリビジョン。

SampleApp_Windows.zip Windows Server インスタンスにデプロイできるサンプルのアプリケーションリビジョン。同じベースファイル名で、異なるバージョン (-1.0 など)の複数のファイルが存在することがあります。

リソースキットのファイルのリストの表示ファイルのリストを表示するには、リージョンの aws s3 ls コマンドを使用します。

Note

各バケットのファイルは、対応するリージョンのリソースで作業するように設計されています。

•aws s3 ls --recursive s3://aws-codedeploy-us-east-2

•aws s3 ls --recursive s3://aws-codedeploy-us-east-1

•aws s3 ls --recursive s3://aws-codedeploy-us-west-1

•aws s3 ls --recursive s3://aws-codedeploy-us-west-2

•aws s3 ls --recursive s3://aws-codedeploy-ca-central-1

•aws s3 ls --recursive s3://aws-codedeploy-eu-west-1

•aws s3 ls --recursive s3://aws-codedeploy-eu-west-2

•aws s3 ls --recursive s3://aws-codedeploy-eu-west-3

•aws s3 ls --recursive s3://aws-codedeploy-eu-central-1

•aws s3 ls --recursive s3://aws-codedeploy-ap-northeast-1

•aws s3 ls --recursive s3://aws-codedeploy-ap-northeast-2

•aws s3 ls --recursive s3://aws-codedeploy-ap-southeast-1

•aws s3 ls --recursive s3://aws-codedeploy-ap-southeast-2

API バージョン 2014-10-06351

Page 360: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースキットのファイルのダウンロード

•aws s3 ls --recursive s3://aws-codedeploy-ap-south-1

•aws s3 ls --recursive s3://aws-codedeploy-sa-east-1

リソースキットのファイルのダウンロードファイルをダウンロードするには、リージョンの aws s3 cp コマンドを使用します。

Note

最後にピリオド (.) を使用してください。このコマンドは、現在のディレクトリにファイルをダウンロードします。

たとえば、次のコマンドは、バケットの /samples/latest/ フォルダの 1 つからSampleApp_Linux.zip という名前の 1 つのファイルをダウンロードします。

•aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip . --region us-east-2

•aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip . --region us-east-1

•aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip . --region us-west-1

•aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip . --region us-west-2

•aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip . --region ca-central-1

•aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip . --region eu-west-1

•aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip . --region eu-west-2

•aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip . --region eu-west-3

•aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip . --region eu-central-1

•aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip . --region ap-northeast-1

•aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip . --region ap-northeast-2

•aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip . --region ap-southeast-1

API バージョン 2014-10-06352

Page 361: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリソースキットのファイルのダウンロード

•aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip . --region ap-southeast-2

•aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip . --region ap-south-1

•aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip . --region sa-east-1

すべてのファイルをダウンロードするには、リージョンで次のコマンドの 1 つを使用します。

•aws s3 cp --recursive s3://aws-codedeploy-us-east-2 . --region us-east-2

•aws s3 cp --recursive s3://aws-codedeploy-us-east-1 . --region us-east-1

•aws s3 cp --recursive s3://aws-codedeploy-us-west-1 . --region us-west-1

•aws s3 cp --recursive s3://aws-codedeploy-us-west-2 . --region us-west-2

•aws s3 cp --recursive s3://aws-codedeploy-ca-central-1 . --region ca-central-1

•aws s3 cp --recursive s3://aws-codedeploy-eu-west-1 . --region eu-west-1

•aws s3 cp --recursive s3://aws-codedeploy-eu-west-2 . --region eu-west-2

•aws s3 cp --recursive s3://aws-codedeploy-eu-west-3 . --region eu-west-3

•aws s3 cp --recursive s3://aws-codedeploy-eu-central-1 . --region eu-central-1

•aws s3 cp --recursive s3://aws-codedeploy-ap-northeast-1 . --region ap-northeast-1

•aws s3 cp --recursive s3://aws-codedeploy-ap-northeast-2 . --region ap-northeast-2

•aws s3 cp --recursive s3://aws-codedeploy-ap-southeast-1 . --region ap-southeast-1

•aws s3 cp --recursive s3://aws-codedeploy-ap-southeast-2 . --region ap-southeast-2

•aws s3 cp --recursive s3://aws-codedeploy-ap-south-1 . --region ap-south-1

•aws s3 cp --recursive s3://aws-codedeploy-sa-east-1 . --region sa-east-1

API バージョン 2014-10-06353

Page 362: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドアプリケーション

AWS CodeDeploy の制限以下の表では、AWS CodeDeploy の制限について説明します。

Note

アマゾン ウェブ サービス全般のリファレンス の 「AWS サービス制限」に記載されている AWSCodeDeploy の制限については、制限の引き上げをリクエストできます。デプロイで実行できる時間数の制限を引き上げることはできません。

トピック• アプリケーション (p. 354)• アプリケーションリビジョン (p. 354)• デプロイ (p. 355)• デプロイ設定 (p. 356)• デプロイグループ (p. 356)• インスタンス (p. 357)

アプリケーション

1 つのリージョン内の 1 つの AWS アカウントに関連付けられるアプリケーションの最大数

100

アプリケーション名の最大文字数 100

アプリケーション名に使用できる文字 文字 (a-z, A-Z)、数字 (0-9)、ピリオド (.)、アンダースコア (_)、+ (プラス記号)、= (等号)、, (コンマ)、@ (アットマーク)、- (マイナス記号)。

BatchGetApplications API アクションに渡すことができるアプリケーションの最大数

100

1 つの AWS アカウントの GitHub 接続トークンの最大数

25

アプリケーションリビジョン

アプリケーションリビジョン名の最大文字数 100

アプリケーションリビジョンに使用できるファイルタイプ

拡張子が .zip または .tar のアーカイブファイル、および拡張子が .tar.gz の圧縮アーカイブファイル。

API バージョン 2014-10-06354

Page 363: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ

AWS CodeDeploy と互換性のあるアーカイブまたは圧縮アーカイブファイルには、appspec.yml というファイル名の 1 つの application specificationfile (AppSpec file) が含まれている必要があります。

デプロイデプロイグループへの同時デプロイの最大数¹ 1

AWS アカウントに関連付けられる同時デプロイの最大数²

100

EC2/オンプレミス インプレースデプロイで実行できる最大時間数

8

EC2/オンプレミス の Blue/Green デプロイにおいてリビジョンをデプロイしてから置き換え先環境へトラフィックが移行されるまでの最大時間数

48

EC2/オンプレミス の Blue/Green デプロイにおいて、デプロイが完了してから元の環境が終了するまでの最大時間数

48

EC2/オンプレミス の Blue/Green デプロイで実行できる最大時間数

109 時間 (上記の 2 つの各制限に 48 時間) + 発生する可能性のある 13 のライフサイクルイベント に対して 1 時間

AWS Lambda インプレースデプロイで実行できる最大時間数³

50 時間 (最初からの最後のトラフィック移行までの最大時間 48 時間 + 発生する可能性のある 2 つのライフサイクルフックに 1 時間)

デプロイライフサイクルイベントが完了しなかった場合に失敗するまでの最大時間 (秒)

3600

デプロイの説明の最大文字数 256

BatchGetDeployments API アクションに渡すことができるデプロイの最大数

100

デプロイが失敗するまでの最大分数 (次の操作の後でライフサイクルイベントが開始しない場合):

• コンソールまたは AWS CLI create-deploymentコマンドを使用してデプロイがトリガーされた場合。

• 前のライフサイクルイベントが完了した場合。

5

Blue/Green デプロイがデプロイに成功した後、元のデプロイからインスタンスを終了するまでの最大待機時間 (分)

2800

¹この制限は、同じデプロイグループに対する同じアプリケーションによる誤った同時デプロイを防ぐためのものです。

²Auto Scaling のスケールアップされた Amazon EC2 インスタンスへの各デプロイは単一の同時デプロイとしてカウントされます。スケールアップされた Amazon EC2 インスタンスが複数のアプリケーション

API バージョン 2014-10-06355

Page 364: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ設定

に関連付けられている場合、各アプリケーションに対する追加の同時デプロイが生成されます。たとえば、5 つの Amazon EC2 インスタンスによってスケールアップされ、1 つのアプリケーションに関連付けられている Auto Scaling グループは 5 つの同時デプロイを生成します。同じ 5 つのスケールアップされた Amazon EC2 インスタンスが 2 つの追加アプリケーションに関連付けられている場合、10 の追加の同時デプロイを生成します。

デプロイ設定

AWS アカウントに関連付けられるカスタムデプロイ設定の最大数

25

HOST_COUNT の最小の正常なインスタンス設定に使用できる値

任意の正の整数または 0 (ゼロ)。ゼロ (0) の場合、すべてのインスタンスを一度にデプロイします。

FLEET_PERCENT の最小の正常なインスタンス設定に使用できる値

任意の 100 未満の正の整数か 0 (ゼロ)。ゼロ (0) の場合、すべてのインスタンスを一度にデプロイします。

カスタムデプロイ設定名の最大文字数 100

カスタムデプロイ設定名に使用できる文字 文字 (a-z, A-Z)、数字 (0-9)、ピリオド (.)、アンダースコア (_)、+ (プラス記号)、= (等号)、, (コンマ)、@ (アットマーク)、- (マイナス記号)。

カスタムデプロイ設定名に使用できないプレフィックス

CodeDeployDefault.

AWS Lambda の canary デプロイまたはリニアデプロイにおいて、最初のトラフィック移行から最後のトラフィック移行までの最大時間 (分)

2880

AWS Lambda デプロイにおいて、1 回の増分で移行できるトラフィックの最大割合

99

デプロイグループ

1 つのアプリケーションに関連付けられるデプロイグループの最大数

100

デプロイグループのタグの最大数 10

デプロイグループの Auto Scaling グループの最大数

10

デプロイグループ名の最大文字数 100

デプロイグループ名に使用できる文字 文字 (a-z, A-Z)、数字 (0-9)、ピリオド (.)、アンダースコア (_)、+ (プラス記号)、= (等号)、, (コンマ)、@ (アットマーク)、- (マイナス記号)。

デプロイグループのイベント通知トリガーの最大数

10

API バージョン 2014-10-06356

Page 365: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドインスタンス

インスタンス1 つのデプロイ内のインスタンスの最大数 500

タグキーの最大文字数 128

タグ値の最大文字数 256

BatchGetOnPremisesInstances API アクションに渡すことができるインスタンスの最大数

100

進行中かつ 1 つのアカウントに関連付けられている同時デプロイで使用できるインスタンスの最大数

500

Ruby (aws-sdk-core) の AWS SDK の必要なバージョン

2.1.2 またはそれ以前の 1.0.1.880 より前の AWSCodeDeploy エージェントのバージョン。

2.2 またはそれ以前の 1.0.1.880 より前の AWSCodeDeploy エージェントのバージョン、およびそれ以降。

API バージョン 2014-10-06357

Page 366: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド一般的なトラブルシューティングの問題

AWS CodeDeploy のトラブルシューティング

このセクションのトピックは、AWS CodeDeploy を使用するときに発生することがある問題やエラーの解決にお使いください。

Note

多くのデプロイ失敗の原因は、デプロイプロセス中に作成されたログファイルを確認して特定できます。分かりやすいように、インスタンス別に表示するのではなく、Amazon CloudWatchLogs を使用してログファイルを集中的にモニタリングすることをお勧めします。詳細については、「CloudWatch Logs コンソールでの AWS CodeDeploy ログの表示」を参照してください。

トピック• 一般的なトラブルシューティングの問題 (p. 358)• EC2/オンプレミス のデプロイ問題のトラブルシューティング (p. 362)• AWS Lambda のデプロイ問題のトラブルシューティング (p. 368)• デプロイグループの問題のトラブルシューティング (p. 369)• インスタンスの問題のトラブルシューティング (p. 369)• GitHub トークンの問題のトラブルシューティング (p. 371)• Auto Scaling の問題のトラブルシューティング (p. 371)• AWS CodeDeploy のエラーコード (p. 376)

一般的なトラブルシューティングの問題トピック

• 一般的なトラブルシューティングのチェックリスト (p. 358)• AWS CodeDeploy デプロイリソースは、特定のリージョンでのみサポートされています。 (p. 359)• 必要な IAM ロールを取得できない (p. 360)• 同じ Amazon EC2 インスタンスへの同時デプロイは避ける (p. 360)• 何らかのテキストエディタを使用して AppSpec ファイルとシェルスクリプトを作成すると、デプロイ

が失敗する場合がある (p. 361)• macOS の Finder を使用してアプリケーションリビジョンをバンドルすると、デプロイが失敗するこ

とがある (p. 361)

一般的なトラブルシューティングのチェックリスト次のチェックリストを使用して、失敗したデプロイをトラブルシューティングできます。

1. デプロイが失敗した理由を確認するには、「AWS CodeDeploy を使用したデプロイの詳細の表示 (p. 266)」および「View Instance Details (p. 206)」を参照してください。原因を判断できない場合は、このチェックリストの残りの項目に進みます。

2. インスタンスを正しく設定したかどうか確認します。• インスタンスは、指定された Amazon EC2 キーペアで起動されましたか? 詳細については、Linux イ

ンスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 のキーペア」を参照してください。

API バージョン 2014-10-06358

Page 367: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS CodeDeploy デプロイリソースは、特定のリージョンでのみサポートされています。

• 正しい IAM インスタンスプロファイルがインスタンスにアタッチされていますか? 詳細については、「AWS CodeDeploy と連動するように Amazon EC2 インスタンスを設定する (p. 176)」および「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)」を参照してください。

• インスタンスにタグが付けられていますか? 詳細については、Linux インスタンス用 Amazon EC2ユーザーガイドの「コンソールによるタグの操作」を参照してください。

• AWS CodeDeploy エージェントがインスタンスにインストールされ、実行されていますか? 詳細については、「AWS CodeDeploy エージェントのオペレーションの管理 (p. 139)」を参照してください。

3. アプリケーションとデプロイグループの設定を確認します。• アプリケーション設定を確認するには、「AWS CodeDeploy を使用してアプリケーションの詳細を表

示する (p. 226)」を参照してください。• デプロイグループの設定を確認するには、「AWS CodeDeploy を使用したデプロイグループの詳細の

表示 (p. 236)」を参照してください。4. アプリケーションリビジョンが正しく設定されていることを確認します

• AppSpec file の形式を確認します。詳細については、「AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243)」および「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」を参照してください。

• GitHub レポジトリで Amazon S3 バケットを調べ、アプリケーションリビジョンが予期されている場所にあることを確認します。

• AWS CodeDeploy アプリケーションリビジョンの詳細を調べ、正しく登録されていることを確認します。詳細については、AWS CodeDeploy を使用したアプリケーションリビジョンの詳細の表示 (p. 251) を参照してください。

• Amazon S3 からデプロイする場合は、Amazon S3 バケットを調べ、アプリケーションリビジョンをダウンロードするアクセス許可が AWS CodeDeploy に付与されていることを確認します。バケットポリシーの詳細については、「デプロイの前提条件 (p. 256)」を参照してください。

• GitHub からデプロイする場合、GitHub リポジトリを調べ、アプリケーションリビジョンをダウンロードするアクセス許可が AWS CodeDeploy に付与されていることを確認します。詳細については、「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」および「AWS CodeDeploy のアプリケーションを使用した GitHub の認証 (p. 56)」を参照してください。

5. サービスロールが正しく設定されているかどうか確認します。詳細については、ステップ 3: AWSCodeDeploy のサービスロールを作成する (p. 22) を参照してください。

6. 「AWS CodeDeploy の使用開始 (p. 20)」のステップに従って次の操作を行ったことを確認します。• IAM ユーザーにポリシーをアタッチする。• AWS CLI をインストールまたはアップグレードして設定する。• IAM インスタンスプロファイルとサービスロールを作成する。

詳細については、「AWS CodeDeploy に対する認証とアクセスコントロール (p. 302)」を参照してください。

7. AWS CLI バージョン 1.6.1 以降を使用していることを確認する。インストールしたバージョンを確認するには、aws --version を呼び出します。

それでも失敗したデプロイをトラブルシューティングできない場合は、このトピックの他の問題を確認します。

AWS CodeDeploy デプロイリソースは、特定のリージョンでのみサポートされています。アプリケーション、デプロイグループ、インスタンス、または他のデプロイリソースが、AWS CLI または AWS CodeDeploy コンソールから表示またはアクセスできない場合、AWS General Referenceの「リージョンとエンドポイント」に記載されているいずれかのリージョンを参照していることを確認します。

API バージョン 2014-10-06359

Page 368: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド必要な IAM ロールを取得できない

AWS CodeDeploy デプロイで使用される Amazon EC2 インスタンスと Auto Scaling グループは、これらのいずれかのリージョンで起動し、作成する必要があります。

AWS CLI を使用している場合は、AWS CLI から aws configure コマンドを実行します。次に、デフォルトのリージョンを表示および設定できます。

AWS CodeDeploy コンソールを使用している場合は、ナビゲーションバーのリージョンセレクタから、サポートされているいずれかのリージョンを選択します。

Important

中国 (北京) リージョン または 中国 (寧夏) リージョン のサービスを使用するには、各リージョンのアカウントと認証情報が必要です。他の AWS リージョンのアカウントおよび認証情報は 北京および寧夏リージョン では使用できず、その逆もまた同様です。中国リージョン の一部のリソースの情報 (AWS CodeDeploy リソースキットバケット名や AWSCodeDeploy エージェントのインストール手順) は、このエディションの AWS CodeDeploy ユーザーガイドには含まれていません。詳細については:

• 中国 (北京) リージョン での AWS の使用開始の「AWS CodeDeploy」• 中国リージョン の AWS CodeDeploy ユーザーガイド (英語版 | 中国語版)

必要な IAM ロールを取得できないAWS CloudFormation スタックの一部として作成された IAM インスタンスプロファイルまたはサービスロールに依存している場合は、スタックを削除すると、すべての IAM ロールも削除されます。これが、IAM ロールが IAM コンソールに表示されなくなり、AWS CodeDeploy が予期どおり動作しなくなる理由です。この問題を解決するには、削除された IAM ロールを再作成する必要があります。

同じ Amazon EC2 インスタンスへの同時デプロイは避けるAmazon EC2 インスタンスに対して同時に複数のデプロイを試みる状況は避けることをお勧めします。別のデプロイからのコマンドの実行が単一インスタンス上で競合する場合、デプロイは次の理由でタイムアウトし、失敗することがあります。

• 最初のライフサイクルイベントがデプロイのトリガーから 5 分以内に開始しない場合、AWSCodeDeploy がデプロイに失敗します。デプロイをトリガーするためにコンソールまたは AWS CLIcreate-deployment コマンドを使用できます。

• 前のライフサイクルイベントの終了後、ライフサイクルイベントが 5 分以内に開始しない場合は AWSCodeDeploy がデプロイに失敗します。

• AWS CodeDeploy エージェントは一度に 1 つのデプロイのみを処理できる。• 複数のデプロイが同時に実行を試みた場合、デプロイが発生する順序を制御することはできない。

Note

ライフサイクルイベントのスクリプトのデフォルトのタイムアウトは、30 分です。AppSpec fileでこのタイムアウトを異なる値に変更できます。詳細については、「EC2/オンプレミス デプロイ用に AppSpec ファイルを追加する (p. 244)」を参照してください。

デプロイプロセスが予期どおり実行している場合でも、そのステップが 5 分以内に完了しなかった場合、AWS CodeDeploy ロジックではデプロイが失敗したと見なされます。複数のデプロイからのコマンドが同時に AWS CodeDeploy エージェントに送信された場合は、5 分の制限を超える可能性があります。

API バージョン 2014-10-06360

Page 369: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド何らかのテキストエディタを使用して

AppSpec ファイルとシェルスクリプトを作成すると、デプロイが失敗する場合がある

Auto Scaling グループの同時デプロイで直面する可能性のあるその他の課題の詳細については、「複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける (p. 373)」を参照してください。

何らかのテキストエディタを使用して AppSpec ファイルとシェルスクリプトを作成すると、デプロイが失敗する場合があるテキストエディタによっては、不適合で非表示の文字がファイルに含まれる場合があります。テキストエディタを使用して AppSpec ファイルまたはスクリプトファイルを作成または変更し、AmazonLinux、Ubuntu Server、または RHEL インスタンスで実行する場合、これらのファイルに依存しているデプロイは失敗する可能性があります。AWS CodeDeploy がデプロイ中にこれらのファイルを使用するときに、このような文字が存在すると、トラブルシューティングが困難な AppSpec file の検証エラーにつながり、スクリプトの実行が失敗する可能性があります。

AWS CodeDeploy コンソールのデプロイのイベント詳細ページで、[View logs] を選択します (または、AWS CLI を使用して get-deployment-instance コマンドを呼び出します)。「無効な文字」、「コマンドが見つかりません」、「ファイルが見つかりません」などのエラーを探します。

この問題に対処するには、次のことをお勧めします。

• 改行 (^M 文字) などの非表示の文字を AppSpec ファイルとシェルスクリプトファイルに自動的に含めるテキストエディタは使用しない。

• AppSpec ファイルやシェルスクリプトファイルで改行など非表示の文字を表示するテキストエディタを使用し、自動的またはランダムに含まれる可能性のある文字を見つけ、削除できるようにする。このようなタイプのテキストエディタの例については、インターネットで「改行を表示するテキストエディタ」を検索します。

• Amazon Linux、Ubuntu Server、または RHEL インスタンスで実行するテキストエディタを使用して、Amazon Linux、Ubuntu Server、または RHEL インスタンスで実行されるシェルスクリプトファイルを作成する。このようなタイプのテキストエディタの例については、インターネットで「Linux シェルスクリプトエディタ」を検索します。

• Windows または Mac OS でテキストエディタを使用して、Amazon Linux、Ubuntu Server、またはRHEL インスタンスで実行するシェルスクリプトファイルを作成する必要がある場合は、Windows または Mac OS 形式のテキストを Unix 形式に変換するプログラムまたはユーティリティを使用する。このようなプログラムとユーティリティの例については、インターネットで「DOS から UNIX へ」または「Mac から UNIX へ」を検索します。必ず、ターゲットのオペレーティングシステムで、変換されたシェルスクリプトファイルをテストします。

macOS の Finder を使用してアプリケーションリビジョンをバンドルすると、デプロイが失敗することがあるMac の Finder グラフィカルユーザーインタフェース (GUI) アプリケーションを使用して AppSpec file および関連ファイルとスクリプトをアプリケーションリビジョンのアーカイブ (.zip) ファイルにバンドル(zip) すると、デプロイが失敗する場合があります。これは、Finder が .zip ファイルに中間の __MACOSXフォルダを作成し、そこにコンポーネントファイルを配置するためです。AWS CodeDeploy はコンポーネントファイルを見つけることができないため、デプロイは失敗します。

この問題に対応するには、AWS CLI を使用して push コマンドを呼び出すことをお勧めします。これにより、コンポーネントファイルは予期される構造に zip 形式で圧縮されます。または、GUI の代わりにターミナルを使用してコンポーネントファイルを zip 圧縮できます。ターミナルでは、中間の __MACOSX フォルダは作成されません。

API バージョン 2014-10-06361

Page 370: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドEC2/オンプレミス のデプロイ問題のトラブルシューティング

EC2/オンプレミス のデプロイ問題のトラブルシューティング

トピック• 「PKCS7 署名メッセージの検証に失敗しました」というメッセージでデプロイが失敗する (p. 362)• 同じデプロイ先のインスタンスに対する同じファイルのデプロイや再デプロイは失敗し、「指定

したファイルはこの場所に既に存在するため、デプロイに失敗しました」というエラーが返されます。 (p. 362)

• AllowTraffic ライフサイクルイベントが失敗し、デプロイログにエラーが報告されない場合のトラブルシューティング (p. 364)

• 失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)

• 「不明なエラー: 読み取り用に開いていません」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング (p. 365)

• Windows PowerShell スクリプトで、デフォルトで 64 ビットバージョンの Windows PowerShell スクリプトを使用できない (p. 366)

• 長時間実行されているプロセスにより、デプロイが失敗することがある (p. 367)

Note

多くのデプロイ失敗の原因は、デプロイプロセス中に作成されたログファイルを確認して特定できます。分かりやすいように、インスタンス別に表示するのではなく、Amazon CloudWatchLogs を使用してログファイルを集中的にモニタリングすることをお勧めします。詳細については、「CloudWatch Logs コンソールでの AWS CodeDeploy ログの表示」を参照してください。

「PKCS7 署名メッセージの検証に失敗しました」というメッセージでデプロイが失敗するこのエラーメッセージは、SHA-1 ハッシュアルゴリズムのみをサポートするバージョンの AWSCodeDeploy エージェントをインスタンスが実行していることを示します。SHA-2 ハッシュアルゴリズムのサポートは、2015 年 11 月にリリースされたバージョン 1.0.1.854 の AWS CodeDeploy エージェントで導入されました。2016 年 10 月 17 日から、バージョン 1.0.1.854 以前の AWS CodeDeploy エージェントがインストールされている場合、デプロイは失敗します。詳細については、「AWS to Switch toSHA256 Hash Algorithm for SSL Certificates」、「NOTICE: Retiring AWS CodeDeploy host agents olderthan version 1.0.1.85」、および「AWS CodeDeploy エージェントの更新 (p. 148)」を参照してください。

同じデプロイ先のインスタンスに対する同じファイルのデプロイや再デプロイは失敗し、「指定したファイルはこの場所に既に存在するため、デプロイに失敗しました」というエラーが返されます。AWS CodeDeploy でファイルをデプロイしようとして、指定したデプロイ先のインスタンスに同じファイルが既に存在している場合、そのインスタンスへのデプロイは失敗する場合があります。「指定したファイルはこの場所 (location-name) に既に存在しているため、デプロイに失敗しました」というエラーメッセージが返される場合があります。このエラーが発生するのは、デプロイごとに AWS CodeDeploy では最初にクリーンアップログファイルにリストされているすべてのファイルを以前のデプロイから削除するためです。このクリーンアップファイルにリストされていないファイルがデプロイ先のフォルダにある

API バージョン 2014-10-06362

Page 371: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド同じデプロイ先のインスタンスに対する同じファイルのデプロイや再デプロイは失敗し、「指定したファイルはこの場所に既に存在するため、デプ

ロイに失敗しました」というエラーが返されます。と、AWS CodeDeploy エージェントでは、デフォルトで、これをエラーと解釈し、デプロイを失敗させます。

Note

Amazon Linux、RHEL、および Ubuntu Server の各インスタンスでは、クリーンアップファイルは /opt/codedeploy-agent/deployment-root/deployment-instructions/ にあります。Windows Server インスタンスでは、C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\ にあります。

このエラーを最も簡単に回避するには、デプロイを失敗させるデフォルト動作とは別のオプションを指定します。デプロイごとに、デプロイを失敗させるか、クリーンアップファイルにリストされていないファイルを上書きするか、インスタンスの既存ファイルを保持するかを選択できます。

上書きオプションは、最後のデプロイ後に手動でインスタンスに追加した同じ名前のファイルを、次回のアプリケーションリビジョンにも追加する場合などに便利です。

保持オプションは、次回のデプロイでインスタンスに追加するファイルを、アプリケーションリビジョンパッケージには追加する必要がない場合に選択できます。保持オプションは、アプリケーションファイルが既に本番稼働環境にあり、これらを AWS CodeDeploy を使用して初めてデプロイする場合にも便利です。詳細については、「EC2/オンプレミス コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 260)」および「既存のコンテンツでのロールバック動作 (p. 272)」を参照してください。

デプロイエラー「指定したファイルはこの場所に既に存在するため、デプロイに失敗しました」のトラブルシューティングAWS CodeDeploy がデプロイ先で検出したコンテンツを上書きまたは保持するオプションを指定しない場合 (または既存のコンテンツを処理するデプロイオプションをプログラムによるコマンドで指定しない場合)、エラーのトラブルシューティングを行うことを選択できます。

次の情報は、コンテンツを保持または上書きしないことを選択した場合にのみ該当します。

同じ名前と場所のファイルを再デプロイを試みる場合、以前に使用した基になるデプロイグループ IDのアプリケーション名およびデプロイグループを指定すると、成功する可能性が高まります。AWSCodeDeploy は、再デプロイ前に削除する、基になるデプロイグループ ID と ID ファイルを使用します。

新しいファイルのデプロイや、インスタンスの同じ場所への同じファイルの再デプロイは、次の理由により失敗することがあります。

• 同じリビジョンの同じインスタンスへの再デプロイのため、別のアプリケーション名を指定した。デプロイグループ名が同じでも、別のアプリケーション名を使用することは、基になる別のデプロイグループ ID が使用されることを意味するため、再デプロイは失敗します。

• アプリケーションのデプロイグループを削除して再作成し、同じリビジョンをデプロイグループに対して再デプロイしようとした。デプロイグループ名が同じでも、AWS CodeDeploy は基になるデプロイグループ ID を参照するため、再デプロイは失敗します。

• AWS CodeDeploy のアプリケーションとデプロイグループを削除し、削除したものと同じ名前の新しいアプリケーションとデプロイグループを作成した。その後、以前のデプロイグループにデプロイされていたリビジョンを、同じ名前の新しいデプロイグループに再デプロイしようとした。アプリケーション名とデプロイグループ名が同じであっても、AWS CodeDeploy は削除したデプロイグループの ID を引き続き参照するため、再デプロイは失敗します。

• リビジョンをデプロイグループにデプロイし、同じリビジョンを同じインスタンスの別のデプロイグループにデプロイした。AWS CodeDeploy は別の基になるデプロイグループ ID を参照するため、2 番目のデプロイは失敗します。

• リビジョンを 1 つのデプロイグループにデプロイし、別のリビジョンを同じインスタンスの別のデプロイグループにデプロイした。2 番目のデプロイグループがデプロイを試みる同じ名前と場所のファイルが、少なくとも 1 つある。AWS CodeDeploy は 2 番目のデプロイが開始される前に既存のファイルを削

API バージョン 2014-10-06363

Page 372: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAllowTraffic ライフサイクルイベントが失敗し、デプロイログにエラーが報告されない場合のトラブルシューティング

除しないため、2 番目のデプロイは失敗します。両方のデプロイは、異なるデプロイグループ ID を参照します。

• AWS CodeDeploy でリビジョンデプロイしたが、同じ名前と場所のファイルが少なくとも 1 つある。デフォルトでは、AWS CodeDeploy はデプロイが開始される前に既存のファイルを削除しないため、デプロイは失敗します。

これらの状況に対応するには、次のいずれかを実行します。

• 以前のデプロイされた場所とインスタンスからファイルを削除してから、もう一度デプロイを試みます。

• リビジョンの AppSpec file の ApplicationStop、または BeforeInstall デプロイライフサイクルイベントで、リビジョンでインストールするファイルに一致する場所にあるファイルを削除するカスタムスクリプトを指定します。

• 以前のデプロイの一部ではない場所またはインスタンスにファイルをデプロイまたは再デプロイします。

• アプリケーションまたはデプロイグループを削除する前に、インスタンスにコピーするファイルを指定しない AppSpec file を含むリビジョンをデプロイします。このデプロイの場合、削除しようとしているものと同じ、基になるアプリケーションおよびデプロイグループ ID を使用するアプリケーション名とデプロイグループ名を指定します (get-deployment-group コマンドを使用してデプロイグループ ID を取得できます)。AWS CodeDeploy は基になるデプロイグループ ID と AppSpec file を使用して、前の成功したデプロイでインストールしたすべてのファイルを削除します。

AllowTraffic ライフサイクルイベントが失敗し、デプロイログにエラーが報告されない場合のトラブルシューティングAllowTraffic ライフサイクルイベント中に Blue/Green デプロイが失敗し、失敗の原因がデプロイログに示されない場合があります。

通常、この失敗は、デプロイグループへのトラフィック管理に使用される Classic LoadBalancer、Application Load Balancer、または Network Load Balancer のヘルスチェックが Elastic LoadBalancing で間違って設定されていることが原因です。

この問題を解決するには、ロードバランサーのヘルスチェックの設定エラーを確認して修正します。

Classic Load Balancer の場合は、クラシックロードバランサー 用ユーザーガイドのヘルスチェックを設定するおよび Elastic Load Balancing API Reference version 2012-06-01 の ConfigureHealthCheck を参照してください。

Application Load Balancer の場合は、Application Load Balancer 用ユーザーガイドのターゲットグループのヘルスチェックを参照してください。

Network Load Balancer の場合は、Network Load Balancer ユーザーガイドの「ターゲットグループのヘルスチェック」を参照してください。

失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティングデプロイ時に、AWS CodeDeploy エージェントは ApplicationStop、BeforeBlockTraffic、およびAfterBlockTraffic に対して前回の正常なデプロイで AppSpec ファイルに指定されていたスクリプトを実行

API バージョン 2014-10-06364

Page 373: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド「不明なエラー: 読み取り用に開いていませ

ん」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング

します (他のすべてのスクリプトは、現在のデプロイの AppSpec ファイルから実行されます)。これらのスクリプトのいずれかにエラーがあって正常に実行されない場合、デプロイに失敗することがあります。

これらの失敗の原因としては以下のようなことが考えられます。

• AWS CodeDeploy エージェントは deployment-group-id_last_successful_install ファイルを正しい場所で見つけたが、deployment-group-id_last_successful_install ファイルにリストされている場所が存在しない。

Amazon Linux、Ubuntu Server、および RHEL の各インスタンスでは、このファイルは /opt/codedeploy-agent/deployment-root/deployment-instructions に存在する必要があります。

Windows Server インスタンスでは、このファイルは C:\ProgramData\Amazon\CodeDeploy\deployment-instructions フォルダに保存されている必要があります。

• deployment-group-id_last_successful_install ファイルに示された場所で、AppSpec file が無効であるか、スクリプトが正常に実行されない。

• スクリプトに修正できないエラーがあるため、正常に実行されることはありません。

AWS CodeDeploy コンソールを使用して、これらのいずれかのイベント中にデプロイが失敗した理由を調査します。デプロイの詳細ページで、[View events] を選択します。インスタンスの詳細ページの[ApplicationStop] 行、[BeforeBlockTraffic] 行、または [AfterBlockTraffic] 行で、[View logs] を選択します。または、AWS CLI を使用して get-deployment-instance コマンドを呼び出します。

前回の正常なデプロイのスクリプトが正常に実行されないために失敗した場合は、新しいデプロイを作成して [ApplicationStop]、[BeforeBlockTraffic]、および [AfterBlockTraffic] のエラーを無視するように指定します。これには 2 つの方法があります。

• AWS CodeDeploy コンソールを使用してデプロイを作成します。[Create deployment] ページの[ApplicationStop lifecycle event failure] で、[Don't fail the deployment to an instance if this lifecycle eventon the instance fails] を選択します。

• AWS CLI を使用して create-deployment コマンドを呼び出し、--ignore-application-stop-failures オプションを含めます。

アプリケーションリビジョンを再度デプロイすると、これら 3 つのライフサイクルイベントのいずれが失敗してもデプロイは続行されます。これらのライフサイクルイベントの修正済みスクリプトが新しいリビジョンに含まれている場合は、この修正を適用しなくても以降のデプロイは正常に実行されます。

「不明なエラー: 読み取り用に開いていません」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティングAmazon S3 からアプリケーションリビジョンのデプロイを試みていて、DownloadBundle デプロイライフサイクルイベント中に「不明なエラー: 読み取り用に開いていません」というエラーでデプロイが失敗する場合:

• Amazon S3 の内部サーバーエラーが発生しました。アプリケーションリビジョンをもう一度デプロイします。

• Amazon EC2 インスタンスの IAM インスタンスプロファイルに、Amazon S3 のアプリケーションリビジョンにアクセスするアクセス許可がありません。Amazon S3 バケットポリシーの詳細については、「AWS CodeDeploy のリビジョンを Amazon S3 にプッシュします。 (p. 248)」および「デプロイの前提条件 (p. 256)」を参照してください。

• デプロイするインスタンスは 1 つのリージョン (例: 米国西部 (オレゴン)) に関連付けられますが、アプリケーションリビジョンを含む Amazon S3 バケットは別のリージョン (例: 米国東部(バージニア北

API バージョン 2014-10-06365

Page 374: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドWindows PowerShell スクリプトで、デフォ

ルトで 64 ビットバージョンの WindowsPowerShell スクリプトを使用できない

部)) に関連付けられます。アプリケーションリビジョンが、インスタンスと同じリージョンに関連付けられた Amazon S3 バケットにあることを確認します。

デプロイのイベント詳細ページの [Download bundle] 行で、[View logs] を選択します。または、AWS CLIを使用して get-deployment-instance コマンドを呼び出します。このエラーが発生した場合、エラーコード「UnknownError」とエラーメッセージ「not opened for reading」のエラーが出力に表示されます。

このエラーの原因を特定するには:

1. インスタンスの少なくとも 1 つでワイヤログを有効にして、もう一度アプリケーションリビジョンをデプロイします。

2. ワイヤログファイルを調べてエラーを見つけます。この問題の一般的なエラーメッセージには、「access denied」という語句が含まれます。

3. ログファイルを確認した後、ワイヤログを無効にして、ログファイルサイズと、今後インスタンスでプレーンテキストで出力に表示される可能性がある機密情報の量を減らすことをお勧めします。

ワイヤログファイルを見つけ、ワイヤログを有効または無効にする方法については、「AWS CodeDeployエージェントの使用 (p. 132)」の「:log_aws_wire:」を参照してください。

Windows PowerShell スクリプトで、デフォルトで 64ビットバージョンの Windows PowerShell スクリプトを使用できないデプロイの一部として実行中の Windows PowerShell スクリプトが 64 ビットの機能に依存している場合(たとえば、32 ビットアプリケーションで許可されるよりも多くのメモリを消費する、64 ビットバージョンのみで提供されるライブラリを呼び出すなど)、スクリプトはクラッシュするか、予期どおりに実行されない可能性があります。これは、AWS CodeDeploy はデフォルトで 32 ビットバージョンの WindowsPowerShell を使用して、アプリケーションリビジョンの一部である Windows PowerShell スクリプトを実行するためです。

64 ビットバージョンの Windows PowerShell で実行する必要があるスクリプトの先頭に、次のようなコードを追加します。

✔ Are you running in 32-bit mode?✔ (\SysWOW64\ = 32-bit mode)

if ($PSHOME -like "*SysWOW64*"){ Write-Warning "Restarting this script under 64-bit Windows PowerShell."

✔ Restart this script under 64-bit Windows PowerShell. ✔ (\SysNative\ redirects to \System32\ for 64-bit mode)

& (Join-Path ($PSHOME -replace "SysWOW64", "SysNative") powershell.exe) -File ` (Join-Path $PSScriptRoot $MyInvocation.MyCommand) @args

✔ Exit 32-bit script.

Exit $LastExitCode}

✔ Was restart successful?Write-Warning "Hello from $PSHOME"Write-Warning " (\SysWOW64\ = 32-bit mode, \System32\ = 64-bit mode)"Write-Warning "Original arguments (if any): $args"

API バージョン 2014-10-06366

Page 375: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド長時間実行されているプロセスにより、デプロイが失敗することがある

✔ Your 64-bit script code follows here...✔ ...

このコードのファイルパス情報を直観的にはわかりにくいかもしれませんが、32 ビットの WindowsPowerShell では次のようなパスが使用されます。

c:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

64 ビットの Windows PowerShell では次のようなパスが使用されます。

c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

長時間実行されているプロセスにより、デプロイが失敗することがあるAmazon Linux、Ubuntu Server、および RHEL インスタンスへのデプロイでは、長時間実行されるプロセスを開始するデプロイスクリプトがある場合、AWS CodeDeploy はデプロイライフサイクルイベントでの待機に長い時間かかり、その後デプロイに失敗することがあります。これは、そのイベントのフォアグラウンドおよびバックグラウンドで予期されるよりも長くプロセスが実行される場合、プロセスがまだ予期どおり実行されていても、AWS CodeDeploy によってデプロイは中止され、失敗するためです。

たとえば、アプリケーションリビジョンのルートに 2 つのファイル (after-install.sh およびsleep.sh) が含まれているとします。その AppSpec file には次の指示が含まれています。

version: 0.0os: linuxfiles: - source: ./sleep.sh destination: /tmphooks: AfterInstall: - location: after-install.sh timeout: 60

after-install.sh ファイルは AfterInstall アプリケーションライフサイクルイベント中に実行されます。そのコンテンツは次のとおりです。

✔!/bin/bash/tmp/sleep.sh

sleep.sh ファイルには以下が含まれます。これはプログラムの実行を 3 分 (180 秒) 停止し、長時間実行されるプロセスをシミュレートします。

✔!/bin/bashsleep 180

after-install.sh が sleep.sh を呼び出すと、sleep.sh が起動し、3 分 (180 秒) 実行を継続します。これは AWS CodeDeploy が sleep.sh (および関連で after-install.sh) の実行停止を予期している時間を 2 分 (120 秒) 過ぎています。1 分 (60 秒) のタイムアウト後、 が予期どおり実行を継続しますが、AWS CodeDeploy は停止し、AfterInstallsleep.sh アプリケーションライフサイクルイベントでデプロイに失敗します。次のエラーが表示されます。

Script at specified location: after-install.sh failed to complete in 60seconds。

API バージョン 2014-10-06367

Page 376: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS Lambda のデプロイ問題のトラブルシューティング

単純に & でアンパサンド (after-install.sh) を追加して、バックグラウンドで sleep.sh を実行することはできません。

✔!/bin/bash✔ Do not do this./tmp/sleep.sh &

この操作を行うと、デプロイは最大でデフォルトの 1 時間のデプロイライフサイクルイベントのタイムアウト期間まで保留状態になり、その後 AWS CodeDeploy は以前のように AfterInstall アプリケーションライフサイクルイベントでデプロイを停止し、失敗させます。

after-install.sh で、次のように sleep.sh を呼び出します。これにより、AWS CodeDeploy はプロセスが実行を開始した後に続行することができます。

✔!/bin/bash/tmp/sleep.sh > /dev/null 2> /dev/null < /dev/null &

前の呼び出しで、sleep.sh はバックグラウンドで実行を開始し、stdout、stderr、および stdin を /dev/null にリダイレクトするプロセスの名前です。

AWS Lambda のデプロイ問題のトラブルシューティング

トピック• 設定されたロールバックがない場合に Lambda デプロイを手動で停止すると、AWS Lambda デプロイ

は失敗します。 (p. 368)

設定されたロールバックがない場合に Lambda デプロイを手動で停止すると、AWS Lambda デプロイは失敗します。場合によっては、デプロイで指定された Lambda 関数のエイリアスで、2 つの異なる関数バージョンが参照されることがあります。そのため、Lambda 関数をデプロイしようとすると失敗します。Lambda デプロイでは、ロールバックが設定されていない場合に手動で停止すると、この状態で取得できます。続行するには、AWS Lambda コンソールを使用して、関数が 2 つのバージョン間でトラフィックが移行される設定になっていないことを確認します。

1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/lambda/ にある AWSLambda コンソールを開きます。

2. 左側のペインで、[Functions] を選択します。3. AWS CodeDeploy デプロイ内にある Lambda 関数の名前を選択します。4. [Qualifiers] から、AWS CodeDeploy デプロイで使用するエイリアスを選択します。5. [Additional Version] から [<none>] を選択します。これにより、このエイリアスで、トラフィックの

割合やウェイトが 2 つ以上のバージョンに移行されることはありません。[Version] ドロップダウンメニューで選択したバージョンを書き留めます。

6. [Save and test] を選択します。7. AWS CodeDeploy コンソールを開き、ステップ 5 のドロップダウンメニューで表示されているバー

ジョンをデプロイします。

API バージョン 2014-10-06368

Page 377: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイグループの問題のトラブルシューティング

デプロイグループの問題のトラブルシューティングデプロイグループの一部としてインスタンスにタグを付けても、アプリケーションが自動的に新しいインスタンスにデプロイされないAWS CodeDeploy は新しくタグが付けられたインスタンスに自動的にアプリケーションをデプロイしません。デプロイグループで新しいデプロイを作成する必要があります。

AWS CodeDeploy を使用して、Auto Scaling グループの新しい Amazon EC2 インスタンスへの自動デプロイを有効にできます。詳細については、「AWS CodeDeploy と Auto Scaling の統合 (p. 46)」を参照してください。

インスタンスの問題のトラブルシューティングトピック

• タグは正しく設定する必要がある (p. 369)• AWS CodeDeploy エージェントをインスタンスにインストールして実行する必要がある (p. 369)• デプロイ中にインスタンスを削除した場合、デプロイは最大 1 時間は失敗しません。 (p. 370)• ログファイルの分析によるインスタンスでのデプロイの失敗の調査 (p. 370)• 誤って削除した場合は、新しい AWS CodeDeploy ログファイルを作成します。 (p. 370)• 「InvalidSignatureException – Signature expired: [time] is now earlier than [time]」デプロイエラーのト

ラブルシューティング (p. 370)

タグは正しく設定する必要があるデプロイに使用されるインスタンスに正しくタグが付けられていることを確認するには、list-deployment-instances コマンドを使用します。出力に Amazon EC2 インスタンスがない場合は、Amazon EC2 コンソールを使用して、インスタンスにタグが設定されていることを確認します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「コンソールによるタグの操作」を参照してください。

Note

インスタンスにタグを付け、直後に AWS CodeDeploy を使用してそのインスタンスにアプリケーションをデプロイする場合、インスタンスはデプロイに含まれないこともあります。これは、AWS CodeDeploy がタグを読み込むまでに数分かかることがあるためです。インスタンスにタグを付けてから、そのインスタンスへのデプロイを試みるまでに、少なくとも 5 分待つことをお勧めします。

AWS CodeDeploy エージェントをインスタンスにインストールして実行する必要があるインスタンスに AWS CodeDeploy エージェントがインストール、実行されていることを確認する方法については、「AWS CodeDeploy エージェントの実行の確認 (p. 139)」を参照してください。

AWS CodeDeploy エージェントをインストール、アンインストール、または再インストールする方法については、「AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142)」を参照してください。

API バージョン 2014-10-06369

Page 378: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドデプロイ中にインスタンスを削除した場

合、デプロイは最大 1 時間は失敗しません。

デプロイ中にインスタンスを削除した場合、デプロイは最大 1 時間は失敗しません。AWS CodeDeploy は、各デプロイライフサイクルイベントの実行が完了するまでに 1 時間の枠を設定しています。これにより、実行時間が長いスクリプトにも十分な時間が提供されます。

ライフサイクルイベントの進行中に、スクリプト実行の完了を妨げるようなことが起こった場合 (たとえば、インスタンスが削除された、AWS CodeDeploy がシャットダウンされたなど)、デプロイのステータスが Failed になるまで、最大で 1 時間かかることがあります。スクリプトに指定されたタイムアウト時間が 1 時間未満である場合も同様です。これは、インスタンスが削除された場合、AWS CodeDeploy エージェントはシャットダウンされ、追加のスクリプトを処理できなくなるためです。

ただし、インスタンスがライフサイクル間、または最初のライフサイクルイベントのステップが開始する前に削除された場合、タイムアウトはわずか 5 分後に発生します。

ログファイルの分析によるインスタンスでのデプロイの失敗の調査デプロイのインスタンスのステータスが Succeeded 以外のいずれかである場合は、デプロイのログファイルデータを確認すると、問題の特定に役立ちます。デプロイのログデータへのアクセス方法については、「AWS CodeDeploy デプロイのログデータの表示 (p. 267)」を参照してください。

誤って削除した場合は、新しい AWS CodeDeploy ログファイルを作成します。誤ってインスタンスのデプロイログファイルを削除した場合、AWS CodeDeploy は代わりのログファイルを作成しません。新しいログファイルを作成するには、インスタンスにサインインし、以下のコマンドを実行します。

Amazon Linux、Ubuntu Server、または RHEL インスタンスの場合、以下のコマンドをこの順序で 1 つずつ実行します。

sudo service codedeploy-agent stop

sudo service codedeploy-agent

Windows Server インスタンスの場合:

powershell.exe -Command Restart-Service -Name codedeployagent

「InvalidSignatureException – Signature expired:[time] is now earlier than [time]」デプロイエラーのトラブルシューティングAWS CodeDeploy では、オペレーションを実行するために正確な時間の参照が必要です。インスタンスの日時が正しく設定されていない場合、デプロイリクエストの署名と一致しないことがあり、その場合はAWS CodeDeploy によってリクエストが却下されます。

API バージョン 2014-10-06370

Page 379: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドGitHub トークンの問題のトラブルシューティング

誤った時間設定に関連するデプロイの失敗を回避する方法については、次のトピックを参照してください。

• Linux インスタンスの時刻の設定• Windows インスタンスの時刻を設定する

GitHub トークンの問題のトラブルシューティングGitHub OAuth トークンが無効です2017 年 6 月以降に作成された AWS CodeDeploy アプリケーションは、AWS リージョンごとに GitHubOAuth トークンを使用します。特定のリージョンに関連付けられたトークンを使用することで、GitHub リポジトリにアクセスできる AWS CodeDeploy アプリケーションをより詳細に制御できます。

GitHub トークンエラーが発生した場合は、すでに無効になっている古いトークンの場合があります。

無効な GitHub OAuth トークンを修正するには:

1. DeleteGitHubAccountToken を使用して古いトークンを削除します。2. 新しい OAuth トークンを追加します。詳細については、「AWS CodeDeploy と GitHub の統

合 (p. 55)」を参照してください。

GitHub OAuth トークンの最大数を超えましたAWS CodeDeploy デプロイを作成する際に許可されている GitHub トークンの最大数は 10 です。GitHubOAuth トークンに関するエラーが発生した場合、トークンが 10 個以下であることを確認します。トークンが 10 個以上ある場合は、最初に作成されたトークンが無効になります。たとえば、トークンが 11 個ある場合、最初に作成したトークンが無効になります。トークンが 12 個ある場合、最初に作成した 2 個のトークンが無効になります。AWS CodeDeploy API を使用して古いトークンを削除する方法については、「DeleteGitHubAccountToken」を参照してください。

Auto Scaling の問題のトラブルシューティングトピック

• 一般的な Auto Scaling のトラブルシューティング (p. 371)• Auto Scaling グループのインスタンスのプロビジョニングと終了が繰り返されてリビジョンをデプロ

イできない (p. 372)• Auto Scaling インスタンスの削除または再起動すると、デプロイが失敗する場合がある (p. 373)• 複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける (p. 373)• Auto Scaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビートのタイムアウ

ト」というエラーが表示される (p. 374)• 不一致の Auto Scaling ライフサイクルフックにより、Auto Scaling グループへの自動デプロイが停止

または失敗する場合がある (p. 375)

一般的な Auto Scaling のトラブルシューティングAuto Scaling グループの Amazon EC2 インスタンスへのデプロイは、次の理由で失敗する場合があります。

API バージョン 2014-10-06371

Page 380: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling グループのインスタンスのプロビジョニングと終了が繰り返されてリビジョンをデプロイできない

• Auto Scaling は継続的に Amazon EC2 インスタンスを起動し、削除します。 AWS CodeDeploy がアプリケーションリビジョンを自動的にデプロイできない場合、Auto Scaling は継続的に Amazon EC2 インスタンスを起動および削除します。

AWS CodeDeploy デプロイグループから Auto Scaling グループの関連付けを解除するか、Auto Scalingグループの設定を変更し、必要なインスタンス数が現在のインスタンス数に一致するようにします (これにより、Auto Scaling がそれ以上の Amazon EC2 インスタンスを起動できないようにします)。詳細については、「AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)」または「Auto Scaling グループの設定」を参照してください。

• AWS CodeDeploy エージェントが応答しない。 Amazon EC2 インスタンスの起動または開始直後に実行された初期化スクリプト (cloud-init スクリプトなど) の実行に 1 時間以上かかっている場合、AWSCodeDeploy エージェントはインストールされないことがあります。AWS CodeDeploy には、保留中のデプロイに AWS CodeDeploy エージェントが応答するまでに 1 時間のタイムアウトがあります。この問題に対応するには、AWS CodeDeploy アプリケーションリビジョンに初期化スクリプトを移動します。

• Auto Scaling グループの Amazon EC2 インスタンスがデプロイ中に再起動する。 デプロイ中に AmazonEC2 インスタンスが再起動したか、デプロイコマンドの処理中に AWS CodeDeploy エージェントがシャットダウンした場合、デプロイは失敗することがあります。詳細については、「Auto Scaling インスタンスの削除または再起動すると、デプロイが失敗する場合がある (p. 373)」を参照してください。

• 複数のアプリケーションリビジョンが Auto Scaling グループの同じ Amazon EC2 インスタンスに同時にデプロイされた。 Auto Scaling グループの同じ Amazon EC2 インスタンスに複数のアプリケーションリビジョンをデプロイする場合、デプロイの 1 つに数分以上実行されるスクリプトがあると、失敗することがあります。Auto Scaling グループの同じ Amazon EC2 インスタンスに複数のアプリケーションリビジョンをデプロイしないでください。

• Auto Scaling グループの一部として起動された新しい Amazon EC2 インスタンスに対して、デプロイが失敗する。 通常、このシナリオでは、デプロイでスクリプトを実行すると、Auto Scaling グループでAmazon EC2 インスタンスを起動できなくなる場合があります (Auto Scaling グループの他の AmazonEC2 インスタンスは正常に実行中に見える場合があります)。この問題に対応するには、最初にその他のすべてのスクリプトが完了していることを確認します。• AWS CodeDeploy エージェントを AMI に含めない場合: 新しいインスタンスの起動中に cfn-init コマ

ンドを使用して AWS CodeDeploy エージェントをインストールする場合、エージェントのインストールスクリプトを AWS CloudFormation テンプレートの cfn-init セクションの最後に配置します。

• AWS CodeDeploy エージェントを AMI に含める場合: AMI に AWS CodeDeploy エージェントを含める場合、インスタンスの作成時にエージェントが Stopped 状態になるように設定し、次に cfn-init スクリプトライブラリの最終ステップとして、エージェントを起動するスクリプトを含めます

Auto Scaling グループのインスタンスのプロビジョニングと終了が繰り返されてリビジョンをデプロイできないエラーが原因で、Auto Scaling グループ内の新しくプロビジョニングされたインスタンスに正常にデプロイできない場合があります。その結果として、インスタンスは正常な状態にならず、デプロイは失敗します。デプロイが正常に実行または完了されないため、インスタンスは作成後すぐに終了されます。この場合、Auto Scaling グループの設定により、正常なホスト数の最小要件を満たすために別のバッチのインスタンスがプロビジョニングされます。このバッチも終了され、同じサイクルが繰り返されます。

エラーの原因として以下が考えられます。

• Auto Scaling グループのヘルスチェックに失敗した• アプリケーションリビジョンのエラー

API バージョン 2014-10-06372

Page 381: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling インスタンスの削除または再

起動すると、デプロイが失敗する場合がある

この問題を回避するには、次の手順に従います。

1. Auto Scaling グループの一部ではない Amazon EC2 インスタンスを手動で作成します。インスタンスに一意の EC2 インスタンスタグを付けます。

2. 新しいインスタンスを該当するデプロイグループに追加します。3. 新しい、エラーのないアプリケーションリビジョンをデプロイグループにデプロイします。

これにより、Auto Scaling グループ内の今後のインスタンスにアプリケーションリビジョンがデプロイされるようになります。

Note

デプロイが成功したことを確認したら、作成したインスタンスを削除して以後の課金を回避します。

Auto Scaling インスタンスの削除または再起動すると、デプロイが失敗する場合があるAmazon EC2 インスタンスが Auto Scaling を通じて起動され、その後で削除または再起動されると、そのインスタンスへのデプロイは、次の理由で失敗する場合があります。

• 進行中のデプロイで、スケールインイベントまたはその他の終了イベントにより、インスタンスは AutoScaling グループからデタッチされた後に削除されます。デプロイは完了できないため、失敗します。

• インスタンスが再起動されたが、その起動に 5 分間以上かかる。AWS CodeDeploy はこれをタイムアウトと見なします。サービスにより、インスタンスに対する現在およびそれ以降のすべてのデプロイが失敗します。

この問題に対応するには:

• 一般的に、インスタンスが削除または再起動される前に、すべてのデプロイが完了したことを確認します。インスタンスの起動または再起動後に、すべてのデプロイが開始されることを確認します。

• Auto Scaling 設定で Windows Server の基本 Amazon Machine Image (AMI) を指定し、EC2Config サービスを使用して、インスタンスのコンピュータ名を設定すると、この動作によりデプロイが失敗する場合があります。この動作を無効にするには、Windows Server の基本 AMI で、[Ec2 Service Properties]ダイアログボックスの [General] タブにある [Set Computer Name] ボックスをオフにします。このボックスをオフにすると、この動作は、その Windows Server の基本 AMI で起動されたすべての新しいWindows Server Auto Scaling インスタンスに対して無効になります。この動作が有効になっているWindows Server Auto Scaling インスタンスでは、このボックスをオフにする必要はありません。再起動後に、失敗したデプロイをこれらのインスタンスに再デプロイします。

複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける各 Auto Scaling グループには 1 つのデプロイグループのみを関連付けることをお勧めします。

これは、複数のデプロイグループに関連付けられたフックを持つインスタンスを Auto Scaling がスケールアップする場合、すべてのフックに対して一度に通知を送信するためです。これにより、各インスタンスの複数のデプロイが同時に開始されます。複数のデプロイが同時に AWS CodeDeploy エージェントへコマンドを送信すると、ライフサイクルイベントとデプロイの開始または前のライフサイクルイベント終了の間に 5 分間のタイムアウトに達する場合があります。その場合は、予想通りにデプロイがプロセスされていてもデプロイが失敗します。)

API バージョン 2014-10-06373

Page 382: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAuto Scaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビート

のタイムアウト」というエラーが表示されるNote

ライフサイクルイベントのスクリプトのデフォルトのタイムアウトは、30 分です。AppSpec fileでこのタイムアウトを異なる値に変更できます。詳細については、「EC2/オンプレミス デプロイ用に AppSpec ファイルを追加する (p. 244)」を参照してください。

複数のデプロイが同時に実行を試みた場合、デプロイが発生する順序を制御することはできない。

最後に、インスタンスへのデプロイが失敗した場合、Auto Scaling は直ちにインスタンスを削除します。その最初のインスタンスがシャットダウンすると、実行中の他のデプロイも失敗し始めます。AWSCodeDeploy には、AWS CodeDeploy エージェントが保留中のデプロイに応答するための 1 時間のタイムアウトがあるため、各インスタンスのタイムアウトは最大 60 分かかる場合があります。

インスタンスに複数のデプロイを同時に試みる場合の問題の詳細については、「同じ Amazon EC2 インスタンスへの同時デプロイは避ける (p. 360)」を参照してください。

Auto Scaling の詳細については、「Under the Hood: AWS CodeDeploy and Auto Scaling Integration」を参照してください。

Auto Scaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビートのタイムアウト」というエラーが表示されるAuto Scaling グループが新しい Amazon EC2 インスタンスの起動に失敗し、次のようなメッセージを生成する場合があります。

Launching a new Amazon EC2 instance <instance-Id>. Status Reason: Instancefailed to complete user's Lifecycle Action: Lifecycle Action with token<token-Id> was abandoned: Heartbeat Timeout。

このメッセージは通常、以下のいずれかを示します。

• AWS アカウントに関連付けられている同時デプロイの最大数に達した。デプロイの制限の詳細については、「AWS CodeDeploy の制限 (p. 354)」を参照してください。

• 関連付けられたデプロイグループが更新または削除される前に、AWS CodeDeploy のアプリケーションが削除された。

アプリケーションまたはデプロイグループを削除すると、AWS CodeDeploy はそれに関連付けられていた Auto Scaling フックのクリーンアップを試みますが、一部のフックが残る場合があります。デプロイグループを削除するコマンドを実行すると、残ったフックは出力で返されます。ただし、アプリケーションを削除するコマンドを実行すると、残ったフックは出力に表示されません。

したがって、アプリケーションを削除する前に、アプリケーションと関連付けられたすべてのデプロイグループを削除することをお勧めします。コマンド出力を使用して、手動で削除する必要があるライフサイクルフックを識別できます。

「ハートビートのタイムアウト」エラーメッセージが表示される場合は、次の操作を行って残っているライフサイクルフックが原因かどうかを特定し、問題を解決できます。

1. update-deployment-group コマンドまたは delete-deployment-group コマンドを実行します。呼び出しの出力を確認します。出力に hooksNotCleanedUp 構造と Auto Scaling ライフサイクルフックの一覧が含まれている場合、残っているライフサイクルフックが、おそらくエラーの原因です。

2. describe-lifecycle-hooks コマンドを呼び出し、起動に失敗した Amazon EC2 インスタンスに関連付けられている Auto Scaling グループの名前を指定します。出力で、ステップ 1 で確認したhooksNotCleanedUp 構造に対応する Auto Scaling ライフサイクルフック名を探します。または、デプロイグループの名前を含む Auto Scaling ライフサイクルフック名を探します。

API バージョン 2014-10-06374

Page 383: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド不一致の Auto Scaling ライフサイクルフックにより、Auto Scaling グループへの自動デプロイが停止または失敗する場合がある

3. 各 Auto Scaling ライフサイクルに対して delete-lifecycle-hook コマンドを呼び出します。Auto Scalingグループとライフサイクルフックを指定します。

(Auto Scaling グループから) AWS CodeDeploy によって作成されたすべての Auto Scaling ライフサイクルフックを削除すると、AWS CodeDeploy は、Auto Scaling グループの一部としてスケールアップされたAmazon EC2 インスタンスにデプロイを実行しなくなります。

不一致の Auto Scaling ライフサイクルフックにより、Auto Scaling グループへの自動デプロイが停止または失敗する場合があるAuto Scaling と AWS CodeDeploy はライフサイクルフックを使用して、Auto Scaling グループで起動された後にデプロイするアプリケーションリビジョンと、そのデプロイ先の Amazon EC2 インスタンスを判断します。ライフサイクルフックとそれに関する情報が Auto Scaling と AWS CodeDeploy で正確に一致しない場合、自動デプロイは停止または失敗することがあります。

Auto Scaling グループへのデプロイが失敗する場合は、Auto Scaling と AWS CodeDeploy のライフサイクル名が一致するかどうか確認します。一致しない場合は、次の AWS CLI コマンド呼び出しを使用します。

最初に、Auto Scaling グループとデプロイグループの両方のライフサイクルフック名の一覧を取得します。

1. describe-lifecycle-hooks コマンドを呼び出し、AWS CodeDeploy のデプロイグループに関連付けられた Auto Scaling グループの名前を指定します。出力の LifecycleHooks リストで、LifecycleHookName のそれぞれの値を書き留めます。

2. get-deployment-group コマンドを呼び出し、Auto Scaling グループに関連付けられたデプロイグループの名前を指定します。出力の autoScalingGroups リストで、名前の値が Auto Scaling グループ名と一致する項目を見つけ、対応する hook の値を書き留めます。

ここで、2 セットのライフサイクルフック名を比較します。それらが 1 文字ずつ正確に一致する場合は、これが問題ではありません。このセクションの他の場所で説明されているトラブルシューティングステップを試してください。

ただし、2 セットのライフサイクルフック名が 1 文字ずつ正確に一致しない場合は、次の操作を行います。

1. get-deployment-group コマンド出力にもないライフサイクルフック名が describe-lifecycle-hooks コマンド出力にある場合は、次の操作を行います。

a. describe-lifecycle-hooks コマンド出力のライフサイクルフック名ごとに、delete-lifecycle-hook コマンドを呼び出します。

b. update-deployment-group コマンドを呼び出し、元の Auto Scaling グループの名前を指定します。AWS CodeDeploy は新しい代替のライフサイクルフックを Auto Scaling グループに作成し、ライフサイクルフックを開発グループに関連付けます。これで、Auto Scaling グループに新しいインスタンスを追加すると、自動デプロイが開始されます。

2. describe-lifecycle-hooks コマンド出力にもないライフサイクルフック名が get-deployment-group コマンド出力にある場合は、次の操作を行います。

a. update-deployment-group コマンドを呼び出します。ただし、元の Auto Scaling グループの名前を指定しないでください。

b. もう一度 update-deployment-group コマンドを呼び出しますが、今回は元の Auto Scaling グループの名前を指定します。AWS CodeDeploy は Auto Scaling グループで、見つからないライフサ

API バージョン 2014-10-06375

Page 384: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドエラーコード

イクルフックを再作成します。これで、Auto Scaling グループに新しいインスタンスを追加すると、自動デプロイが開始されます。

1 文字ごとに正確に一致する 2 セットのライフサイクルフック名を取得したら、アプリケーションリビジョンをもう一度デプロイしますが、Auto Scaling グループに追加されるときに新しいインスタンスのみにデプロイします。既に Auto Scaling グループにあるインスタンスに対しては、デプロイは自動的に行われません。

AWS CodeDeploy のエラーコードこのトピックでは、AWS CodeDeploy エラーに関するリファレンス情報を提供します。

エラーコード 説明

AGENT_ISSUE

デプロイは、AWS CodeDeploy エージェントの問題により失敗しました。このデプロイグループのすべてのインスタンスで、エージェントがインストールされ、実行されていることを確認します。

詳細はこちら:

• AWS CodeDeploy エージェントの実行の確認 (p. 139)

• AWS CodeDeploy エージェントのインストールまたは再インストール (p. 142)

• AWS CodeDeploy エージェントの使用 (p. 132)

HEALTH_CONSTRAINTS

デプロイに失敗した個別のインスタンスが多すぎる、デプロイに使用できる正常なインスタンスが少なすぎる、またはデプロイグループの一部のインスタンスで問題が発生しているため、全体的なデプロイが失敗しました。

詳細はこちら:

• Instance Health (p. 208)• インスタンスの問題のトラブルシューティン

グ (p. 369)• EC2/オンプレミス のデプロイ問題のトラブル

シューティング (p. 362)

HEALTH_CONSTRAINTS_INVALID

デプロイ設定で定義されている正常なインスタンスの最小数が利用できないため、デプロイを開始できません。デプロイ設定を更新するか、このデプロイグループのインスタンス数を増やすことで、正常なインスタンスの必要な数を減らすことができます。

詳細はこちら:

• Instance Health (p. 208)• AWS CodeDeploy のインスタンスの使

用 (p. 154)

API バージョン 2014-10-06376

Page 385: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドエラーコード

エラーコード 説明

IAM_ROLE_MISSING

デプロイグループに指定された名前のサービスロールが存在しないため、デプロイに失敗しました。正しいサービスロール名を使用していることを確認します。

詳細はこちら:

• ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)

• AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)

IAM_ROLE_PERMISSIONS

AWS CodeDeploy にロールを引き受けるために必要なアクセス権限がないか、使用している IAMロールに、AWS のサービスでオペレーションを実行するアクセス権限がありません。

詳細はこちら:

• ステップ 1: IAM ユーザーをプロビジョニングする (p. 20)

• ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)

• ステップ 4: Amazon EC2 インスタンス用の IAMインスタンスプロファイルを作成する (p. 26)

AUTO_SCALING_IAM_ROLE_PERMISSIONS

デプロイグループに関連付けられたサービスロールに、次の AWS のサービスでオペレーションを実行するために必要なアクセス権限がありません。

詳細はこちら:

• ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)

• AWS のサービスにアクセス許可を委任するロールの作成

OVER_MAX_INSTANCES

デプロイの対象となるインスタンス数が、アカウントで許可されるインスタンス数より多いため、デプロイに失敗しました。このデプロイの対象となるインスタンスの数を減らすには、このデプロイグループのタグ設定を更新するか、対象インスタンスの一部を削除します。または、AWS サポートに問い合わせて、制限の引き上げをリクエストできます。

詳細はこちら:

• AWS CodeDeploy を使用して、デプロイグループの設定を変更します。 (p. 237)

• AWS CodeDeploy の制限 (p. 354)• 制限の引き上げのリクエスト

API バージョン 2014-10-06377

Page 386: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド関連トピック

エラーコード 説明

THROTTLED

IAM ロールによって AWS CodeDeploy で許可されるよりも多くのリクエストが行われたため、デプロイに失敗しました。リクエスト数を減らしてみてください。

詳細はこちら:

• クエリ API リクエスト率

UNABLE_TO_SEND_ASG

デプロイグループが Auto Scaling グループに対して正しく設定されていないため、デプロイに失敗しました。AWS CodeDeploy コンソールで、デプロイグループから Auto Scaling グループを削除し、もう一度追加します。

詳細はこちら:

• Under the Hood: AWS CodeDeploy and AutoScaling Integration

関連トピックAWS CodeDeploy のトラブルシューティング (p. 358)

API バージョン 2014-10-06378

Page 387: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドリファレンスガイドとサポートリソース

AWS CodeDeploy リソースAWS CodeDeploy を利用する際に役立つ関連リソースは以下の通りです。

リファレンスガイドとサポートリソース• AWS CodeDeploy API Reference – AWS CodeDeploy アクションとデータ型に関する説明、構文、およ

び使用例。一般的なパラメータやエラーコードが含まれます。• AWS CodeDeploy テクニカル FAQ – AWS CodeDeployに関するお客様からのよくある質問。• AWS CodeDeploy リリースノート – 現在および過去のリリースのハイレベルな概要、特に新機能、修

正、既知の問題に関するメモ。• AWS サポートセンター – AWS サポートケースを作成および管理するためのハブです。フォーラム、技

術上のよくある質問、サービス状態ステータス、AWS Trusted Advisor などその他のリソースへのリンクも含まれています。

• AWS サポートプラン – AWS サポートプランに関する情報のメインのウェブページです。• お問い合わせ – AWS 請求、アカウント、イベント、不正使用、およびその他の問題に関する問い合わせ

先です。• AWS サイトの利用規約 – 当社の著作権、商標、お客様のアカウント、ライセンス、サイトへのアクセ

ス、およびその他のトピックに関する詳細情報です。

サンプル• AWS CodeDeploy GitHubのサンプル – AWS CodeDeploy 用のサンプルおよびテンプレートのシナリ

オ。• AWS CodeDeploy Jenkins プラグイン – AWS CodeDeploy 用の Jenkins プラグイン。• AWS CodeDeploy エージェント – AWS CodeDeploy エージェントのオープンソースバージョン。

ブログ• AWS DevOps Blog – 開発者、システム管理者、アーキテクトへの洞察。

AWS ソフトウェア開発キット、ツール以下の AWS SDK およびツールは、AWS CodeDeploy を使用したソリューション開発をサポートします。

• AWS SDK for .NET• AWS SDK for Java• AWS SDK for JavaScript• AWS SDK for PHP• AWS SDK for Python (Boto)• AWS SDK for Ruby• AWS Toolkit for Eclipse – パート 1、2、および 3。

API バージョン 2014-10-06379

Page 388: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイドAWS ソフトウェア開発キット、ツール

• AWS Tools for Windows PowerShell – PowerShell 環境での AWS SDK for .NET の機能を公開するWindows PowerShell コマンドレットのセット。

• PowerShell 用の AWS ツールの AWS CodeDeploy コマンドレット – PowerShell 環境での AWSCodeDeploy の機能を公開する Windows PowerShell コマンドレットのセット。

• AWS Command Line Interface – AWS のサービスにアクセスするための統一コマンドライン構文。AWSCLI は、サポートされているすべてのサービスにアクセスできるように、単一セットアッププロセスを使用します。

• AWS 開発者用ツール – 開発者用ツール、およびドキュメント、コード例、リリースノート、およびAWS CodeDeploy と AWS を利用した革新的なアプリケーションの構築に役立つその他の情報を含むリソースへのリンクです。

API バージョン 2014-10-06380

Page 389: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

ドキュメント履歴次の表は、AWS CodeDeploy ユーザーガイドの最新版リリース以降の、新しく拡張された機能をサポートするために行われた、このユーザーガイドの重要な変更点について説明しています。

• API バージョン: 2014-10-06• ドキュメントの最新更新日: 2017 年 12 月 19 日

変更 説明 変更日

トピックの更新 AWS CodeDeploy は (eu-west-3) で使用できるようになりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2017 年 19 月12 日

トピックの更新 AWS CodeDeploy が 中国 (寧夏) リージョン で利用可能になりました。

中国 (北京) リージョン または 中国 (寧夏) リージョン のサービスを使用するには、各リージョンのアカウントと認証情報が必要です。他の AWS リージョンのアカウントおよび認証情報は北京および寧夏リージョン では使用できず、その逆もまた同様です。

中国リージョン の一部のリソースの情報 (AWS CodeDeploy リソースキットバケット名や AWS CodeDeploy エージェントのインストール手順) は、このエディションの AWS CodeDeployユーザーガイドには含まれていません。

詳細については:

• 中国 (北京) リージョン での AWS の使用開始の「AWSCodeDeploy」

• 中国リージョン の AWS CodeDeploy ユーザーガイド (英語版 | 中国語版)

2017 年 12 月11 日

トピックの更新 AWS CodeDeploy が Lambda 関数のデプロイをサポートするようになりました。AWS Lambda のデプロイは、既存のLambda 関数からの着信トラフィックを、更新された Lambda関数バージョンにシフトします。デプロイ設定を選択または作成して、デプロイでのトラフィックのシフト間隔と、各間隔でトラフィックをシフトする割合を指定します。AWSLambda のデプロイは AWS サーバーレスアプリケーションモデル (AWS SAM) でサポートされるため、AWS SAM のデプロイ設定を使用して、AWS Lambda のデプロイ中にトラフィックをシフトする方法を管理できます。複数のトピックが追加および更新されており、「AWS CodeDeploy コンピューティングプラットフォームを選択します。 の概要 (p. 2)」、「AWSLambda コンピューティングプラットフォームを選択します。のデプロイ (p. 10)」、「AWS Lambda コンピューティングプラットフォームを選択します。 のデプロイの作成 (コンソール) (p. 258)」、「 AWS Lambda 関数デプロイ用のアプリケーションを作成 (コンソール) (p. 224)」、「AWS Lambda デプロ

2017 年 11 月28 日

API バージョン 2014-10-06381

Page 390: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日イ向けに AppSpec ファイルを追加する (p. 243)」など、この変更が反映されています。

新しいトピック AWS CodeDeploy は、AWS CodeDeploy エージェントがインストールされているローカルマシンまたはインスタンスへの直接的なデプロイをサポートするようになりました。ローカルにデプロイをテストし、エラーがある場合は、AWS CodeDeployエージェントのエラーログを使用してデバッグできます。また、ローカルデプロイを使用してアプリケーションリビジョンの整合性、AppSpec file のコンテンツなどをテストできます。詳細については、「AWS CodeDeploy エージェントを使用してローカルマシン上のデプロイパッケージを検証する (p. 277)」を参照してください。

2017 年 11 月16 日

トピックの更新 AWS CodeDeploy でのデプロイグループ内の Elastic LoadBalancing ロードバランサーのサポートが拡張され、Blue/Green デプロイおよびインプレースデプロイの両方でNetwork Load Balancer が含まれました。デプロイグループで Application Load Balancer、Classic Load Balancer、または Network Load Balancer のいずれかを選択できるようになりました。ロードバランサーは Blue/Green デプロイでは必須、インプレースデプロイでは任意です。「Integrating AWSCodeDeploy with Elastic Load Balancing (p. 49)」、「インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)」、「デプロイの前提条件 (p. 256)」、「IntegratingAWS CodeDeploy with Elastic Load Balancing (p. 49)」、および「インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)」を含む、数多くのトピックが更新され、この追加サポートが反映されています。

2017 年 9 月12 日

トピックの更新 AWS CodeDeploy でのデプロイグループ内の Elastic LoadBalancing ロードバランサーのサポートが拡張され、Blue/Green デプロイおよびインプレースデプロイの両方でApplication Load Balancer が含まれました。デプロイグループで Application Load Balancer および Classic Load Balancer のいずれかを選択できるようになりました。ロードバランサーは Blue/Green デプロイでは必須、インプレースデプロイでは任意です。「Integrating AWS CodeDeploy with Elastic LoadBalancing (p. 49)」、「AWS CodeDeploy でアプリケーションを作成 (p. 218)」、「AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)」を含むトピックが更新され、この追加サポートが反映されています。

2017 年 8 月10 日

API バージョン 2014-10-06382

Page 391: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

新しく更新されたトピック

AWS CodeDeploy で、デプロイグループに含まれるインスタンスの結合と交差の識別に複数のタググループを使用できるようになりました。単一のタググループを使用する場合は、グループ内の少なくとも 1 つのタグによって識別されたインスタンスがデプロイグループに含まれます。複数のタググループを使用する場合は、タググループそれぞれの少なくとも 1 つのタグによって識別されたインスタンスのみが含まれます。でプログループにインスタンスを追加する新しい方法の詳細については、「Tagging Instances for AWS CodeDeployDeployments (p. 156)」を参照してください。このサポートを反映するように更新されたその他のトピックには、「インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)」、「Blue/Green デプロイ (コンソール) のアプリケーションを作成します。 (p. 221)」、「インプレースデプロイ用のデプロイグループを作成する (コンソール) (p. 230)」、「Blue/Green デプロイ用のデプロイグループを作成する (コンソール) (p. 232)」、「Deployments (p. 10)」、および チュートリアル: AWS CodeDeploy を使用して GitHub からアプリケーションをデプロイする (p. 118) の ステップ 5: アプリケーションおよびデプロイグループの作成 (p. 124) があります。

2017 年 7 月31 日

トピックの更新 Windows Server インスタンスで AWS CodeDeploy エージェントをインストールする 2 つの方法が「Windows Server の AWSCodeDeploy エージェントのインストールまたは再インストール (p. 144)」に追加されました。Windows PowerShell コマンドに加えて、インストールファイルのダウンロードに、直接HTTPS リンクを使用する方法と Amazon S3 コピーコマンドを使用する方法の説明が追加されました。ファイルがインスタンスにダウンロードまたはコピーされた後、手動でインストールを実行できます。

2017 年 7 月12 日

トピックの更新 AWS CodeDeploy で GitHub アカウントおよびリポジトリへの接続を管理する方法を改善しました。AWS CodeDeploy アプリケーションを GitHub リポジトリに関連付けるために、GitHubアカウントへの接続を最大 25 まで作成して保存できるようになりました。各接続は複数のリポジトリをサポートできます。最大 25 個の異なる GitHub アカウントへの接続を作成できます。また、1 つのアカウントへの複数の接続を作成できます。アプリケーションを GitHub アカウントに接続すると、必要なアクセス権限が AWS CodeDeploy で管理されるため、ユーザー側のアクションは一切不要です。このサポートを反映するために「GitHub リポジトリに格納されているリビジョンについての情報を指定します (p. 262)」、「AWS CodeDeployと GitHub の統合 (p. 55)」、および「チュートリアル: AWSCodeDeploy を使用して GitHub からアプリケーションをデプロイする (p. 118)」を更新しました。

2017 年 5 月30 日

API バージョン 2014-10-06383

Page 392: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 以前は、AWS CodeDeploy エージェントが、前回の成功したデプロイのアプリケーションリビジョンに含まれていないファイルをデプロイ先で検出すると、現行のデプロイはデフォルトで失敗しました。今は、これらのファイルをエージェントで処理する方法として、デプロイを失敗させる、コンテンツを保持する、またはコンテンツを上書きするというオプションが AWSCodeDeploy で提供されるようになりました。このサポートを反映するために「AWS CodeDeploy を使用してデプロイを作成する (p. 256)」を更新し、新しいセクション「既存のコンテンツでのロールバック動作 (p. 272)」を「AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)」に追加しました。

2017 年 5 月16 日

トピックの更新 AWS CodeDeploy コンソールまたは AWS CLI を使用してElastic Load Balancing の Classic Load Balancer をデプロイグループに割り当てることができるようになりました。インプレースデプロイ中は、ロードバランサーにより、デプロイ先のインスタンスに対するインターネットトラフィックのルーティングがブロックされ、そのインスタンスへのデプロイが完了した時点でインスタンスに対するトラフィックのルーティングが再開されます。この新しいサポートを反映するために、「他の AWS のサービスとの統合 (p. 42)」、「IntegratingAWS CodeDeploy with Elastic Load Balancing (p. 49)」、「インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)」、「インプレースデプロイ用のデプロイグループを作成する (コンソール) (p. 230)」、「AppSpec の「hooks」セクション (p. 330)」など、いくつかのトピックを更新しました。トラブルシューティングガイドに新しいセクション「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)」を追加しました。

2017 年 4 月27 日

トピックの更新 AWS CodeDeploy コンソールまたは AWS CLI を使用してElastic Load Balancing の Classic Load Balancer をデプロイグループに割り当てることができるようになりました。インプレースデプロイ中は、ロードバランサーにより、デプロイ先のインスタンスに対するインターネットトラフィックのルーティングがブロックされ、そのインスタンスへのデプロイが完了した時点でインスタンスに対するトラフィックのルーティングが再開されます。この新しいサポートを反映するために、「他の AWS のサービスとの統合 (p. 42)」、「IntegratingAWS CodeDeploy with Elastic Load Balancing (p. 49)」、「インプレースデプロイ (コンソール) 用のアプリケーションを作成 (p. 220)」、「インプレースデプロイ用のデプロイグループを作成する (コンソール) (p. 230)」、「AppSpec の「hooks」セクション (p. 330)」など、いくつかのトピックを更新しました。トラブルシューティングガイドに新しいセクション「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)」を追加しました。

2017 年 5 月1 日

API バージョン 2014-10-06384

Page 393: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy が 中国 (北京) リージョン で利用可能になりました。

中国 (北京) リージョン または 中国 (寧夏) リージョン のサービスを使用するには、各リージョンのアカウントと認証情報が必要です。他の AWS リージョンのアカウントおよび認証情報は北京および寧夏リージョン では使用できず、その逆もまた同様です。

中国リージョン の一部のリソースの情報 (AWS CodeDeploy リソースキットバケット名や AWS CodeDeploy エージェントのインストール手順) は、このエディションの AWS CodeDeployユーザーガイドには含まれていません。

詳細については:

• 中国 (北京) リージョン での AWS の使用開始の「AWSCodeDeploy」

• 中国リージョン の AWS CodeDeploy ユーザーガイド (英語版 | 中国語版)

2017 年 29 月3 日

新しく更新されたトピック

Blue/Green デプロイの新しい AWS CodeDeploy サポートを反映させるいくつかの新しいトピックが導入され、その中では、デプロイグループのインスタンス (元の環境) が、別の一連のインスタンス (置き換え先環境) で置き換えられます。Blue/Greenデプロイの概要 (p. 5) は、AWS CodeDeploy が使用する Blue/Green 手法の高レベルな説明を提供します。AWS CodeDeployでサンプル Blue/Green デプロイを試す (p. 33) は、Blue/Greenデプロイ用の新しい Sample deployment wizard の使用のためのガイドを提供します。新しい追加トピックには、「Blue/Green デプロイ (コンソール) のアプリケーションを作成します。 (p. 221)」が含まれます。Blue/Green デプロイ用のデプロイグループを作成する (コンソール) (p. 232), およびAWS CodeDeploy デプロイ用の Load Balancer を Elastic LoadBalancing で設定する (p. 234).

AWS CodeDeploy を使用してデプロイを作成する (p. 256)、AWS CodeDeploy でデプロイ設定を使用する (p. 212)、AWS CodeDeploy でアプリケーションを作成 (p. 218)、AWS CodeDeploy でのデプロイグループの使用 (p. 229)、AWS CodeDeploy でのデプロイの使用 (p. 255)、AppSpec の「hooks」セクション (p. 330) を含む、数多くのトピックも更新されました。

2017 年 1 月25 日

新しく更新されたトピック

新しいトピック register-on-premises-instance コマンド (IAMセッション ARN) を使用してオンプレミスインスタンスを登録する (p. 195) は、AWS Security Token Service を通して生成される定期的に更新された一時認証情報を使用してオンプレミスのインスタンスを認証し登録する方法を説明します 。この方法により、各インスタンスで静的 IAM ユーザーの認証情報だけを使用するより、オンプレミスインスタンスの大規模フリートをサポートするためのより良いサポートが提供されます。Working with On-Premises Instances (p. 179) は更新され、この新しいサポートが反映されています。

2016 年 28 月12 日

API バージョン 2014-10-06385

Page 394: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy は 欧州 (ロンドン) リージョン (eu-west-2)で使用できるようになりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2016 年 12 月13 日

トピックの更新 AWS CodeDeploy が カナダ (中部) リージョン (ca-central-1) で利用可能になりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2016 年 12 月8 日

トピックの更新 AWS CodeDeploy は、米国東部 (オハイオ) リージョン (us-east-2) で使用できるようになりました。AWS CodeDeployエージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2016 年 10 月17 日

新しいトピック 新しいセクション AWS CodeDeploy に対する認証とアクセスコントロール (p. 302) は、認証情報の使用を通してリソースへのアクセスをセキュリティで保護するのに役立つ AWS Identityand Access Management (IAM) および AWS CodeDeploy の使用についての包括的な情報を提供します。これらの認証情報はAmazon S3 バケットからアプリケーションリビジョンを取得することや Amazon EC2 インスタンスでタグを読むことなどAWS リソースにアクセスするために必要なアクセス許可を提供します。

2016 年 10 月11 日

トピックの更新 Windows Server での AWS CodeDeploy エージェントの更新 (p. 149) は、Windows Server 用の新しい AWS CodeDeployエージェントアップデーターの可用性を反映するよう更新されています。Windows Server インスタンスにインストールすると、アップデーターは新しいバージョンを定期的に確認します。新しいバージョンが検出された場合、アップデーターは、最新バージョンをインストールする前に、インストールされている場合はエージェントの現在のバージョンをアンインストールします。

2016 年 10 月4 日

トピックの更新 AWS CodeDeploy は Amazon CloudWatch アラームと統合し、アラームしきい値で指定されているとおり、連続した期間の数、指定したアラームの状態に変更がある場合、デプロイを停止できるようにします。

AWS CodeDeploy は、デプロイの失敗やアクティブ化されたアラームのような特定の条件が満たされている場合、デプロイの自動的なロールバックをサポートしています。

いくつかのトピックは AWS CodeDeploy でアプリケーションを作成 (p. 218)、AWS CodeDeploy を使用してデプロイグループを作成する (p. 230)、AWS CodeDeployを使用して、デプロイグループの設定を変更します。 (p. 237)、Deployments (p. 10)、AWS CodeDeploy を使用した再デプロイおよびデプロイのロールバック (p. 271)、製品とサービスを AWS CodeDeployと統合する (p. 42) を含め、新しいトピック AWS CodeDeploy で CloudWatch アラームを使用したデプロイのモニタリング (p. 285) と共にこれらの変更を反映するよう更新されています。

2016 年 9 月15 日

API バージョン 2014-10-06386

Page 395: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

新しく更新されたトピック

AWS CodeDeploy では、Amazon CloudWatch Events との統合が提供されるようになりました。AWS CodeDeploy デプロイグループに属するデプロイの状態またはインスタンスの状態の変更が検出された場合に、CloudWatch イベント を使用して1 つまたは複数のアクションを開始できるようになりました。Amazon SQS キューに対してメッセージをプッシュし、または、CloudWatch アラームアクションをトリガーする Kinesisストリームまたは Amazon SNS トピックに対して発行するAWS Lambda 関数を呼び出すアクションを組み込むことができます。詳細については、「Amazon CloudWatch Events を使用したデプロイのモニタリング (p. 286)」を参照してください。

2016 年 9 月9 日

トピックの更新 トピック Integrating AWS CodeDeploy with Elastic LoadBalancing (p. 49) および 他の AWS のサービスとの統合 (p. 42) は、追加の負荷分散オプションを反映するように更新されます。Elastic Load Balancing で使用可能な ClassicLoad Balancer および Application Load Balancer が AWSCodeDeploy でサポートされるようになりました。

2016 年 8 月11 日

トピックの更新 AWS CodeDeploy が アジアパシフィック (ムンバイ) リージョン (ap-south-1) で利用可能になりました。AWS CodeDeployエージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2016 年 6 月27 日

トピックの更新 AWS CodeDeploy が アジアパシフィック (ソウル) リージョン(ap-northeast-2) で利用可能になりました。AWS CodeDeployエージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

目次はインスタンス、デプロイ設定、アプリケーション、デプロイグループ、リビジョン、およびデプロイのセクションを含めるように再編成されました。新しいセクションは AWSCodeDeploy チュートリアルに追加されています。より使いやすくするため、AWS CodeDeploy AppSpec File のリファレンス (p. 319) および AWS CodeDeploy のトラブルシューティング (p. 358) を含むいくつかの長いトピックは、短いトピックに分割されています。AWS CodeDeploy エージェントの設定情報は新しいトピック AWS CodeDeploy エージェント設定リファレンス (p. 344) に移動されました。

2016 年 6 月15 日

API バージョン 2014-10-06387

Page 396: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

新しく更新されたトピック

AWS CodeDeploy のエラーコード (p. 376) は、AWSCodeDeploy デプロイが失敗したときに表示される可能性のある一部のエラーメッセージについての情報を提供します。AWS CodeDeploy のトラブルシューティング (p. 358) の以下のセクションは、デプロイの問題の解決により役立つよう更新されました。

• Auto Scaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビートのタイムアウト」というエラーが表示される (p. 374)

• 同じ Amazon EC2 インスタンスへの同時デプロイは避ける (p. 360)

• 複数のデプロイグループを 1 つの Auto Scaling グループに関連付けることは避ける (p. 373)

2016 年 4 月20 日

トピックの更新 AWS CodeDeploy は 南米 (サンパウロ) リージョン (sa-east-1)で使用できるようになりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

AWS CodeDeploy エージェントの使用 (p. 132) は、新しい max_revisions: を反映するように更新されました。これは、AWS CodeDeploy エージェントがアーカイブするデプロイグループのアプリケーションリビジョンの数を指定するために使用します。

2016 年 3 月10 日

新しく更新されたトピック

AWS CodeDeploy は、デプロイグループへのトリガーの追加をサポートし、デプロイグループのデプロイまたはインスタンスに関連するイベントに関する通知を受信するようになりました。これらの通知は、トリガーのアクションの一部にしたAmazon Simple Notification Service トピックをサブスクライブする受信者に送信されます。カスタマイズされた通知のワークフローでトリガーが発生した場合に作成される JSON データも使用できます。詳細については、「Monitoring Deploymentswith Amazon SNS Event Notifications (p. 291)」を参照してください。

手順は [Application details] ページの再設計を反映するように更新されています。

AWS CodeDeploy のトラブルシューティング (p. 358) の デプロイ中にインスタンスを削除した場合、デプロイは最大 1 時間は失敗しません。 (p. 370) セクションが更新されました。

AWS CodeDeploy の制限 (p. 354) は、改訂された 1 つのアプリケーションに関連付けられるデプロイグループの数の制限、最小の正常なインスタンス設定の許可される値、AWS SDK forRuby (aws-sdk-core) の必要なバージョンを反映するように更新されました。

2016 年 2 月17 日

API バージョン 2014-10-06388

Page 397: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

新しく更新されたトピック

AWS CodeDeploy は 米国西部 (北カリフォルニア) region (us-west-1) で利用可能になりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの追加を反映するように更新されています。

AWS CodeDeploy リポジトリタイプの選択 (p. 247) は、AWSCodeDeploy にサポートされているリポジトリタイプを一覧表示し、説明しています。この新しいトピックは、他のリポジトリタイプのサポートの導入に合わせて更新されます。

AWS CodeDeploy エージェントのオペレーションの管理 (p. 139) は、エージェントのサポートされたバージョンに関する情報と同様、AWS CodeDeploy エージェントの現在のバージョンを報告するためにインスタンスに追加された新しい.version ファイルに関する情報が更新されました。

JSON、および YAML の例を含め、コードサンプルを強調する構文がユーザーガイドに追加されています。

AWS CodeDeploy のリビジョンにアプリケーション仕様ファイルを追加 (p. 243) は、詳しい手順として再編成されました。

2016 年 1 月20 日

新しいトピック 異なる AWS アカウントでアプリケーションをデプロイする (p. 274) は、他のアカウントの認証情報のフルセットを必要とせずに、組織の別のアカウントに属するデプロイを開始するためのセットアップ要件およびプロセスを説明します。これにより、開発およびテスト環境に関連付けたものや本稼働環境に関連付けたものなど、複数のアカウントをさまざまな目的で使用する組織にとって非常に便利です。

2015 年 12 月30 日

トピックの更新 製品とサービスを AWS CodeDeployと統合する (p. 42) トピックは再設計されています。AWS CodeDeploy 統合に関連するブログ投稿や動画の例のリストがあるコミュニティからの統合の例についてのセクションが含まれます。

2015 年 12 月16 日

トピックの更新 AWS CodeDeploy が アジアパシフィック (シンガポール)リージョン (ap-southeast-1) で利用可能になりました。AWSCodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2015 年 12 月9 日

トピックの更新 AWS CodeDeploy エージェントの使用 (p. 132) は、AWSCodeDeploy エージェント設定ファイルの新しい:proxy_uri: オプションを反映するように更新されています。AWS CodeDeploy AppSpec File のリファレンス (p. 319) では、フックスクリプトがデプロイライフサイクルイベント中にアクセスできる新しい環境変数 DEPLOYMENT_GROUP_ID の使用に関する情報が更新されました。

2015 年 12 月1 日

トピックの更新 ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22) は、AWS CodeDeploy のサービスロールの作成の新しい手順を反映し、他の改善を組み込むために更新されています。

2015 年 13 月11 日

API バージョン 2014-10-06389

Page 398: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy が 欧州 (フランクフルト) リージョン (eu-central-1) で利用可能になりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

AWS CodeDeploy のトラブルシューティング (p. 358) トピックでは、インスタンスの時間設定の正確さを確認することに関する情報が更新されました。

2015 年 10 月19 日

新しいトピック AWS CodeDeploy リファレンス用の AWS CloudFormation テンプレート (p. 347) は、AWS CodeDeploy アクションの新しいAWS CloudFormation サポートを反映するように発行されました。

Primary Components (p. 8) トピックを作成し、ターゲットリビジョンの定義を紹介します。

2015 年 10 月1 日

トピックの更新 AWS CodeDeploy を使用してデプロイグループを作成する (p. 230) は、ワイルドカード検索を使用してデプロイグループのインスタンスを探す機能を反映するように更新されています。

Instance Health (p. 208) は、正常なインスタンスの最小数の概念を明確にするために更新されています。

2015 年 8 月31 日

トピックの更新 AWS CodeDeploy が アジアパシフィック (東京) リージョン(ap-northeast-1) で利用可能になりました。AWS CodeDeployエージェントのセットアップの手順が含まれているいくつかのトピックは、この新しいリージョンの可用性を反映するように更新されています。

2015 年 8 月19 日

トピックの更新 AWS CodeDeploy は、Red Hat Enterprise Linux (RHEL) オンプレミスインスタンスと Amazon EC2 へのデプロイをサポートします。詳細については、次のトピックを参照してください。

• AWS CodeDeploy エージェントでサポートされているオペレーティングシステム (p. 132)

• AWS CodeDeploy のインスタンスの使用 (p. 154)• チュートリアル: WordPress を Amazon EC2 インスタン

ス (Amazon Linux または Red Hat Enterprise Linux およびLinux, macOS, or Unix) にデプロイする (p. 60)

• チュートリアル: AWS CodeDeploy によるオンプレミスインスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat EnterpriseLinux) (p. 95)

2015 年 6 月23 日

API バージョン 2014-10-06390

Page 399: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy では、デプロイのスクリプトがデプロイ中に使用できる一連の環境変数を提供されるようになりました。これらの環境変数には、現在の AWS CodeDeploy アプリケーションの名前、デプロイグループ、デプロイライフサイクルイベント、および現在の AWS CodeDeploy デプロイ識別子のような情報を含まれます。詳細については、『AWS CodeDeploy AppSpec File のリファレンス (p. 319)』の「AppSpec の「hooks」セクション (p. 330)」の最後を参照してください。

2015 年 5 月29 日

トピックの更新 AWS CodeDeploy は、同等のポリシーを手動で独自に作成する代わりに使用できる IAM の一連の AWS 管理ポリシーを提供するようになりました。具体的には次のとおりです。

• IAM ユーザーが AWS CodeDeploy のみを使用してリビジョンを登録し、AWS CodeDeploy を通してそれらをデプロイできるようにするポリシー。

• IAM ユーザー の AWS CodeDeploy ポリシーへのフルアクセスを提供するポリシー。

• IAM ユーザーの AWS CodeDeploy リソースへのポリシーへの読み取り専用アクセスを提供するポリシー。

• AWS CodeDeploy が Amazon EC2 タグ、オンプレミスインスタンスタグ、または Auto Scaling グループ名によってAmazon EC2 インスタンスを特定し、アプリケーションリビジョンをそれぞれに応じてデプロイできるようにサービスロールにアタッチするポリシー。

詳細については、「AWS CodeDeploy に対する認証とアクセスコントロール (p. 302)」の「お客様が管理するポリシーの例 (p. 310)」セクションを参照してください。

2015 年 5 月29 日

トピックの更新 AWS CodeDeploy は、欧州 (アイルランド) リージョン (eu-west-1) および アジアパシフィック (シドニー) リージョン (ap-southeast-2) で利用可能になりました。AWS CodeDeploy エージェントのセットアップの手順が含まれているいくつかのトピックは、これら新しいリージョンの可用性を反映するように更新されています。

2015 年 5 月7 日

新しいトピック AWS CodeDeploy は、オンプレミスインスタンスと AmazonEC2 インスタンスへのデプロイをサポートするようになりました。以下のトピックは、この新しいサポートを説明するために追加されました。

• Working with On-Premises Instances (p. 179)• チュートリアル: AWS CodeDeploy によるオンプレミス

インスタンスへのアプリケーションのデプロイ (WindowsServer、Ubuntu Server、または Red Hat EnterpriseLinux) (p. 95)

• Working with On-Premises Instances (p. 179)

2015 年 4 月2 日

新しいトピック 「AWS CodeDeploy リソース (p. 379)」が追加されました。 2015 年 4 月2 日

API バージョン 2014-10-06391

Page 400: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy のトラブルシューティング (p. 358) が更新されました。

• 新しい 長時間実行されているプロセスにより、デプロイが失敗することがある (p. 367) セクションでは、長期プロセスのデプロイの障害を特定し、対処するために実行できるステップについて説明します。

• 一般的な Auto Scaling のトラブルシューティング (p. 371) セクションは、AWS CodeDeploy が、AWS CodeDeploy エージェントに対して Auto Scaling タイムアウトロジックを 5 分から 1 時間に拡大したことを表示するように更新されています。

• 新しい 不一致の Auto Scaling ライフサイクルフックにより、Auto Scaling グループへの自動デプロイが停止または失敗する場合がある (p. 375) セクションでは、Auto Scaling グループに対して障害が発生した自動デプロイを特定し、対処するために実行できるステップについて説明します。

2015 年 4 月2 日

トピックの更新 以下のトピックは、独自のカスタムポリシーを作成し、それらを IAM のユーザーとロールにアタッチするための新しい推奨事項を反映するように更新されました。

• AWS CodeDeploy と連動するように Amazon EC2 インスタンスを設定する (p. 176)

• ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する (p. 26)

• ステップ 3: AWS CodeDeploy のサービスロールを作成する (p. 22)

• AWS CodeDeploy に対する認証とアクセスコントロール (p. 302)

AWS CodeDeploy のトラブルシューティング (p. 358) に 2 つのセクションが追加されました。

• 一般的なトラブルシューティングのチェックリスト (p. 358)• Windows PowerShell スクリプトで、デフォルトで 64 ビット

バージョンの Windows PowerShell スクリプトを使用できない (p. 366)

「AWS CodeDeploy AppSpec File のリファレンス (p. 319)」のAppSpec の「hooks」セクション (p. 330) セクションは、利用可能なデプロイライフサイクルイベントをより正確に説明するために更新されました。

2015 年 2 月12 日

トピックの更新 AWS CodeDeploy のトラブルシューティング (p. 358): AutoScaling グループの Amazon EC2 インスタンスが起動に失敗し、「ハートビートのタイムアウト」というエラーが表示される (p. 374) に新しいセクションが追加されました。

製品とサービスを AWS CodeDeployと統合する (p. 42) にCloudBees セクションが追加されました。

2015 年 1 月28 日

API バージョン 2014-10-06392

Page 401: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 AWS CodeDeploy のトラブルシューティング (p. 358) に以下のセクションが追加されました。

• 何らかのテキストエディタを使用して AppSpec ファイルとシェルスクリプトを作成すると、デプロイが失敗する場合がある (p. 361)

• macOS の Finder を使用してアプリケーションリビジョンをバンドルすると、デプロイが失敗することがある (p. 361)

• 失敗した ApplicationStop、BeforeBlockTraffic、およびAfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング (p. 364)

• 「不明なエラー: 読み取り用に開いていません」で失敗したDownloadBundle デプロイライフサイクルイベントのトラブルシューティング (p. 365)

• 一般的な Auto Scaling のトラブルシューティング (p. 371)

IAM ユーザーを特別に呼び出すために特定のアクセス許可が必要なことを明確にするため ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30) に情報が追加されました。

• ステップ 3: インスタンスを設定する (p. 37) は、ウォークスルーの AWS CloudFormation テンプレートを使用するには特定のアクセス許可が必要になることを確認します。

• ステップ 7: サービスロールの選択 (p. 39) は、ウォークスルーの一部としてサービスロールを作成するには特定のアクセス許可が必要になることを確認します。

• ステップ 9: デプロイの詳細を確認する (p. 40) は、アプリケーションおよびデプロイグループの作成とアプリケーションのデプロイには特定のアクセス許可が必要であることを確認します。

必要なアクセス許可の詳細については、「前提条件 (p. 31)」を参照してください。

2015 年 1 月20 日

新しいトピック 製品とサービスを AWS CodeDeployと統合する (p. 42) セクションでは、次のトピックを含めるように更新されました。

• AWS CodeDeploy と Auto Scaling の統合 (p. 46)• チュートリアル: AWS CodeDeploy を使用して Auto Scaling

グループにアプリケーションをデプロイする (p. 102)• Monitoring Deployments with AWS CloudTrail (p. 289)• Integrating AWS CodeDeploy with Elastic Load

Balancing (p. 49)• AWS CodeDeploy と GitHub の統合 (p. 55)• チュートリアル: AWS CodeDeploy を使用して GitHub から

アプリケーションをデプロイする (p. 118)

2015 年 1 月9 日

API バージョン 2014-10-06393

Page 402: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

変更 説明 変更日

トピックの更新 • AWS CodeDeploy を使用して、GitHub から自動的にデプロイする (p. 58) セクションが AWS CodeDeploy と GitHubの統合 (p. 55) に追加されました。そのリポジトリのソースコードが変更されるたびに、自動的に GitHub リポジトリからデプロイをトリガーできます。

• Auto Scaling の問題のトラブルシューティング (p. 371) セクションが AWS CodeDeploy のトラブルシューティング (p. 358) に追加されました。この新しいセクションでは、Auto Scaling グループへのデプロイに関してよくある問題のトラブルシューティングを行う方法について説明します。

• 新しいサブセクションの「ファイル例」が、『AWSCodeDeploy AppSpec File のリファレンス (p. 319)』の「AppSpec の「files」セクション (EC2/オンプレミス のデプロイのみ) (p. 322)」セクションに追加されています。この新しいサブセクションには、デプロイの間に特定のファイル/フォルダを Amazon EC2 インスタンスの特定の場所にコピーするように AWS CodeDeploy に指示する AppSpec fileの files セクションの使用方法のさまざまな例が含まれます。

2015 年 1 月8 日

新しいトピック 「Monitoring Deployments with AWS CloudTrail (p. 289)」が追加されました。AWS CodeDeploy は AWS CloudTrail (AWSアカウントで AWS CodeDeploy によって、または、AWSCodeDeploy に代わって行われた API 呼び出しをキャプチャし、指定した Amazon S3 バケットにログファイルを渡すサービス) と統合されています。

2014 年 12 月17 日

トピックの更新 『ステップ 5: AWS CodeDeploy サンプルデプロイウィザードを試す (p. 30)』の「ステップ 3: インスタンスを設定する (p. 37)」セクションが更新されました。

2014 年 12 月3 日

初回一般リリース これは、AWS CodeDeploy ユーザーガイド の最初の一般リリースです。

2014 年 11 月12 日

API バージョン 2014-10-06394

Page 403: AWS CodeDeploy - ユーザーガイド A name that uniquely identifies the application you want to deploy. AWS CodeDeploy uses this name, which functions as a container, to ensure

AWS CodeDeploy ユーザーガイド

AWS の用語集最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してください。

API バージョン 2014-10-06395