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

CodeDeploy エージェントの使用

CodeDeploy エージェントソフトウェアパッケージをインスタンスにインストールして設定すると、そのインスタンスを CodeDeploy デプロイで使用できるようになります。バージョン 1.0.1.1458 以降を使用する必要があります。それ以前のバージョンを使用している場合、インスタンスへのデプロイが失敗する可能性があります。

注記

CodeDeploy エージェントは、EC2/オンプレミス compute platform にデプロイする場合にのみ必要です。Amazon ECS または AWS Lambda compute platform を使用するデプロイでは、このエージェントは必要ありません。

エージェントがインストールされている場合、設定ファイルはインスタンスに配置されます。このファイルは、エージェントの動作を指定するために使用されます。この設定ファイルは、インスタンスとやり取りするときに使用する AWS CodeDeploy のディレクトリパスおよびその他の設定を指定します。ファイルの一部の設定オプションは変更できます。CodeDeploy エージェント設定ファイルの使用の詳細については、「CodeDeploy エージェント設定リファレンス」を参照してください。

CodeDeploy エージェントの使用の詳細 (インストール、更新、バージョン検証の各ステップなど) については、「CodeDeploy エージェントのオペレーションの管理」を参照してください。

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

サポートされる Amazon EC2 AMI オペレーティングシステム

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 14.04 LTS、16.04 LTS、18.04 LTS

  • Microsoft Windows Server 2016、2012 R2、および 2008 R2

  • Red Hat Enterprise Linux (RHEL) 7.x

CodeDeploy エージェントは、ニーズに適応できるようオープンソースとして利用できます。他の Amazon EC2 AMI オペレーティングシステムで使用できます。詳細については、GitHub の CodeDeploy エージェントリポジトリを参照してください。

サポートされているオンプレミスオペレーティングシステム

CodeDeploy エージェントは次のオンプレミスオペレーティングシステムでテスト済みです。

  • Ubuntu Server 14.04 LTS

  • Microsoft Windows Server 2016、2012 R2、および 2008 R2

  • Red Hat Enterprise Linux (RHEL) 7.x

CodeDeploy エージェントは、ニーズに適応できるようオープンソースとして利用できます。他のオンプレミスインスタンスオペレーティングシステムで使用できます。詳細については、GitHub の CodeDeploy エージェントリポジトリを参照してください。

CodeDeploy エージェントの通信プロトコルとポート

CodeDeploy エージェントはポート 443 経由で HTTPS を使用してアウトバウンドの通信をします。

CodeDeploy エージェントのバージョン履歴

インスタンスが CodeDeploy エージェントのサポートされているバージョンを実行している必要があります。現在サポートされている最小バージョンは 1.0.1.1458 です。それ以前のバージョンを実行している場合、インスタンスへのデプロイが失敗する可能性があります。

次の表は、CodeDeploy エージェントのすべてのリリースと、各バージョンに含まれている機能や機能強化を示しています。

Version リリース日 詳細

1.0.1.1597

2018 年 11 月 15 日

機能強化: CodeDeploy は Ubuntu 18.04 をサポートします。

機能強化: CodeDeploy は Ruby 2.5 をサポートします。

機能強化: CodeDeploy は FIPS エンドポイントをサポートします。FIPS エンドポイントの詳細については、「FIPS 140-2 の概要」を参照してください。CodeBuild で使用可能なエンドポイントについては、「CodeDeploy のリージョンとエンドポイント」を参照してください。

1.0.1.1518

2018 年 6 月 12 日

機能強化: ポールリクエストの受け入れ中に CodeDeploy エージェントを閉じたときにエラーが発生する問題が修正されました。

機能強化: デプロイの進行中に CodeDeploy エージェントを閉じることができないようにするデプロイ追跡機能が追加されました。

機能強化: ファイルを削除する際のパフォーマンスが改善されました。

1.0.1.1458

2018 年 3 月 6 日

重要

CodeDeploy エージェントでサポートされている最小バージョンは 1.0.1.1458 です。以前のバージョンの CodeDeploy エージェントを使用すると、デプロイが失敗することがあります。

機能強化: より多くの信頼された機関をサポートするため、証明書の検証を改善しました。

機能強化: ローカル CLI が BeforeInstall ライフサイクルイベントを含むデプロイに失敗していた問題を修正しました。

機能強化: CodeDeploy エージェントの更新に伴ってアクティブなデプロイが失敗する問題を修正しました。

1.0.1.1352

2017 年 11 月 16 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

特徴: CodeDeploy エージェントがインストールされているローカルマシンまたはインスタンスで、EC2/オンプレミス のデプロイをテストおよびデバッグする新機能が導入されました。

1.0.1.1106

2017 年 5 月 16 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

特徴: 前回の成功したデプロイのアプリケーションリビジョンの一部ではない、デプロイ先のコンテンツを処理する新しいサポートを導入しました。既存のコンテンツのデプロイオプションとして、コンテンツの保持、コンテンツの上書き、またはデプロイの失敗が追加されました。

機能強化: CodeDeploy エージェントがバージョン 2.9.2 の AWS SDK for Ruby (aws-sdk-core 2.9.2) に対応するようになりました。

1.0.1.1095

2017 年 3 月 29 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

機能強化: 中国 (北京) リージョン の CodeDeploy エージェントに対するサポートを導入しました。

機能強化: ライフサイクルイベントフックから呼び出されたときに Windows Server インスタンスで Puppet が実行されるようになりました。

機能強化: untar オペレーションの処理が改善されました。

1.0.1.1067 2017 年 1 月 6 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

機能強化: 多くのエラーメッセージを改訂し、デプロイの失敗に関するより具体的な原因を含めました。

機能強化: CodeDeploy エージェントが一部のデプロイ中にデプロイする正しいアプリケーションリビジョンを特定できない問題を修正しました。

機能強化: untar オペレーションの前後の pushdpopd の使用を元に戻しました。

1.0.1.1045 2016 年 11 月 21 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

機能強化: 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 インスタンスの CodeDeploy エージェントを更新して、以下の変更を反映しました。Windows Server インスタンスの最新バージョンは 1.0.1.998 のままです。

機能強化: エージェントは、インスタンスにインストールされている Ruby のバージョンを特定し、そのバージョンを使用して codedeploy-agent スクリプトを呼び出すことができるようになりました。

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 インスタンスの CodeDeploy エージェントを更新して、以下の変更を反映しました。Windows Server インスタンスの最新バージョンは 1.0.1.998 のままです。

特徴: systemd init システムが使用されているオペレーティングシステムで、Bash シェルを使用して CodeDeploy エージェントを呼び出すサポートが追加されました。

機能強化: CodeDeploy エージェントおよび CodeDeploy エージェントアップデータですべてのバージョンの Ruby 2.x に対するサポートが有効になりました。更新された CodeDeploy エージェントは、Ruby 2.0 のみに依存しなくなりました(deb および rpm バージョンの CodeDeploy エージェントインストーラでは、Ruby 2.0 が引き続き必要です)。
1.0.1.998 2016 年 7 月 11 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

機能強化: root 以外のユーザープロファイルで CodeDeploy エージェントを実行するためのサポートを修正しました。環境変数の競合を回避するため、USER いう名前の変数は CODEDEPLOY_USER で置き換えられました。

1.0.1.966 2016 年 6 月 16 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

特徴: root 以外のユーザープロファイルで CodeDeploy エージェントを実行するためのサポートが導入されました。

機能強化: デプロイグループに対して CodeDeploy エージェントでアーカイブするアプリケーションリビジョンの数を指定するサポートを修正しました。

機能強化: CodeDeploy エージェントがバージョン 2.3 の AWS SDK for Ruby (aws-sdk-core 2.3) に対応するようになりました。

機能強化: デプロイ中の UTF-8 エンコードに関する問題が修正されました。

機能強化: プロセス名を確認する際の精度が向上しました。

1.0.1.950 2016 年 3 月 24 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

機能: インストールプロキシのサポートを追加しました。

機能強化: インストールスクリプトを更新し、最新バージョンがインストール済みの場合に、CodeDeploy エージェントをダウンロードしないようにしました。

1.0.1.934 2016 年 2 月 11 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

特徴: デプロイグループに対して CodeDeploy エージェントでアーカイブするアプリケーションリビジョンの数を指定するサポートが導入されました。

1.0.1.880 2016 年 1 月 11 日

: このバージョンは現在サポートされていないため、デプロイに失敗する可能性があります。

機能強化: CodeDeploy エージェントがバージョン 2.2 の AWS SDK for Ruby (aws-sdk-core 2.2) に対応するようになりました。バージョン 2.1.2 は引き続きサポートされます。

1.0.1.854 2015 年 11 月 17 日

: このバージョンは現在サポートされていません。このバージョンを使用すると、デプロイに失敗することがあります。

特徴: SHA-256 ハッシュアルゴリズムのサポートが導入されました。

機能: .version ファイルでバージョンの追跡サポートが導入されました。

特徴: 環境変数の使用を通じて、デプロイグループ ID を利用できるようになりました。

強化機能: Amazon CloudWatch Logs を使用した CodeDeploy エージェントログのモニタリングのサポートを追加しました。

関連情報については、以下を参照してください。

CodeDeploy エージェントのバージョン履歴については、GitHub のリリースリポジトリを参照してください。

アプリケーションリビジョンとログファイルのクリーンアップ

CodeDeploy エージェントはリビジョンとログファイルをインスタンスにアーカイブします。CodeDeploy エージェントは、これらのアーティファクトをクリーンアップしてディスク容量を節約します。

アプリケーションリビジョンのデプロイログ: エージェント設定ファイルの : max_revisions: オプションを使用して、アーカイブするアプリケーションリビジョンの数を正の整数で指定できます。CodeDeploy は、これらのリビジョンのログファイルもアーカイブします。その他すべては、最後に成功したデプロイのログファイルを除いて削除されます。失敗したデプロイの数が、保持されているバージョンの数を超えた場合でも、そのログファイルは常に保持されます。値を指定しない場合、CodeDeploy は現在デプロイされたリビジョンに加えて 5 つの最新のリビジョンを保持します。

CodeDeploy ログ: Amazon Linux、Ubuntu Server、および RHEL インスタンスの場合、CodeDeploy エージェントは /var/log/aws/codedeploy-agent フォルダの下のログファイルを更新します。ログファイルは、毎日 00:00:00 (インスタンス時間) にローテーションされます。ログファイルは 7 日を経過した時点で削除されます。ローテーションされたログファイルの名前付けパターンは codedeploy-agent.YYYYMMDD.log です。

CodeDeploy エージェントがインストールしたファイル

CodeDeploy エージェントはリビジョン、デプロイ履歴、デプロイスクリプトをインスタンスのルートディレクトリに保存します。このディレクトリのデフォルトの名前と場所:

'/opt/codedeploy-agent/deployment-root' (Amazon Linux、Ubuntu Server、および RHEL インスタンスの場合)。

'C:\ProgramData\Amazon\CodeDeploy' (Windows Server インスタンスの場合)。

CodeDeploy エージェントの設定ファイルにある root_dir 設定を使用して、ディレクトリの名前と場所を設定できます。詳細については、「CodeDeploy エージェント設定リファレンス」を参照してください。

次の例は、ルートディレクトリ内のファイルとディレクトリの構造を示しています。この構造は 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 | |-- [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 を検索できます。

  • デプロイ ID フォルダはデプロイグループの各デプロイを示します。各デプロイディレクトリの名前はその ID です。各フォルダには以下が含まれています。

    • bundle.tar はデプロイのリビジョンのコンテンツを含む圧縮ファイルです。リビジョンを表示する場合は、zip 圧縮解除ユーティリティを使用してください。

    • deployment-archive はデプロイのリビジョンのコンテンツを含むディレクトリです。

    • logsscripts.log ファイルを含むディレクトリです。このファイルはデプロイの AppSpec file で指定されたスクリプトすべての出力をリストにしています。

    デプロイのフォルダを探す際に、そのデプロイ ID またはデプロイグループ ID がわからない場合は AWS CodeDeploy コンソールまたは AWS CLI を使用して検索できます。詳細については、「CodeDeploy デプロイの詳細の表示 」を参照してください。

    デプロイグループでアーカイブできるデプロイのデフォルト最大数は 5 件です。最大数に達すると、その後のデプロイがアーカイブされ、一番古いアーカイブは削除されます。CodeDeploy エージェントの設定ファイルで max_revisions 設定を使用すればデフォルトを変更できます。詳細については、「CodeDeploy エージェント設定リファレンス」を参照してください。

    注記

    アーカイブしたデプロイが使用したハードディスク容量を復元するには、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 は、最後に成功したデプロイのアーカイブディレクトリを示すテキストファイルです。これは CodeDeploy エージェントがデプロイアプリケーションのファイルすべてをインスタンスにコピーした時に作成されたファイルです。次回のデプロイで、ApplicationStop スクリプトと BeforeInstall スクリプトのどちらを実行するか決定するために 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-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 が最大サイズに達した場合、CodeDeploy エージェントは古いコンテンツを削除しながら引き続き書き込みを実行します。