CodeDeploy エージェントを使用してローカルマシンのデプロイパッケージを検証する - AWS CodeDeploy

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

CodeDeploy エージェントを使用してローカルマシンのデプロイパッケージを検証する

CodeDeploy エージェントを使用すると、ログインしているインスタンスにコンテンツをデプロイできます。これにより、デプロイで使用するアプリケーション仕様ファイル (AppSpec ファイル) とデプロイするコンテンツの完全性をテストできます。

アプリケーションおよびデプロイグループを作成する必要はありません。ローカルインスタンスに保存されているコンテンツをデプロイする場合は、 AWS アカウントも必要ありません。最も簡単なテストでは、デプロイする AppSpec ファイルとコンテンツを含むディレクトリで、オプションを指定せずに codedeploy-local コマンドを実行できます。このツールには、他のテストケースのオプションが含まれています。

ローカルマシン上のデプロイパッケージを検証することで、以下を行うことができます。

  • アプリケーションリビジョンの整合性の検証。

  • AppSpec ファイルの内容を検証します。

  • 既存のアプリケーションコードで CodeDeploy 初めて試してください。

  • コンテンツの迅速なデプロイ (インスタンスにすでにログインしている場合)。

ローカルインスタンスまたはサポートされているリモートリポジトリタイプ (Amazon S3 バケットまたはパブリック GitHub リポジトリ) に保存されているデプロイコンテンツを使用できます。

前提条件

ローカルのデプロイを開始する前に、以下の手順を行います。

  • CodeDeploy エージェントでサポートされているインスタンスタイプを作成または使用します。詳細については、 CodeDeploy エージェントでサポートされているオペレーティングシステム を参照してください。

  • CodeDeploy エージェントのバージョン 1.0.1.1352 以降をインストールします。詳細については、 CodeDeploy エージェントをインストールする を参照してください。

  • Amazon S3 バケットまたは GitHub リポジトリからコンテンツをデプロイする場合は、 で使用するユーザーをプロビジョニングします CodeDeploy。詳細については、ステップ 1: セットアップ を参照してください。

  • Amazon S3 バケットからアプリケーションリビジョンをデプロイする場合は、作業をしているリージョンで Amazon S3 バケットを作成し、このバケットに Amazon S3 バケットポリシーを適用します。このポリシーでは、アプリケーションリビジョンをダウンロードするために必要なアクセス許可をインスタンスに付与します。

    例えば、次の Amazon S3 バケットポリシーでは、 を含むIAMインスタンスプロファイルEC2がアタッチされた Amazon インスタンスが、 という名前の Amazon S3 バケットの任意の場所からダウンロードARNarn:aws:iam::444455556666:role/CodeDeployDemoすることを許可していますamzn-s3-demo-bucket

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }

    次の Amazon S3 バケットポリシーでは、 を含む関連付けられたIAMユーザーを持つオンプレミスインスタンスを、 という名前の Amazon S3 バケットの任意の場所からダウンロードARNarn:aws:iam::444455556666:user/CodeDeployUserすることを許可しますamzn-s3-demo-bucket

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/CodeDeployUser" ] } } ] }

    Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

  • Amazon S3 バケットまたは GitHubリポジトリからアプリケーションリビジョンをデプロイする場合は、IAMインスタンスプロファイルを設定し、インスタンスにアタッチします。詳細については、「ステップ 4: Amazon IAMインスタンスのEC2インスタンスプロファイルを作成する」、「用の Amazon EC2 インスタンスを作成する CodeDeploy (AWS CLI または Amazon EC2 コンソール)」、および「用の Amazon EC2 インスタンスを作成する CodeDeploy (AWS CloudFormation テンプレート)」を参照してください。

  • からコンテンツをデプロイする場合は GitHub、 GitHub アカウントとパブリックリポジトリを作成します。 GitHub アカウントを作成するには、「 を結合する GitHub」を参照してください。リポジトリを作成するには、 GitHub「リポジトリの作成」を参照してください。

    注記

    プライベートリポジトリは、現在サポートされていません。コンテンツがプライベート GitHub リポジトリに保存されている場合は、インスタンスにダウンロードし、 --bundle-locationオプションを使用してローカルパスを指定できます。

  • インスタンスにデプロイするコンテンツ ( AppSpec ファイルを含む) を準備し、ローカルインスタンス、Amazon S3 バケット、または GitHub リポジトリに配置します。詳細については、のアプリケーションリビジョンの使用 CodeDeploy を参照してください。

  • 他の設定オプションにデフォルト以外の値を使用する場合は、設定ファイルを作成し、インスタンスに配置します (/etc/codedeploy-agent/conf/codedeployagent.ymlAmazon Linux、、または Ubuntu Server インスタンスの場合RHEL、または Windows Server インスタンスC:\ProgramData\Amazon\CodeDeploy\conf.ymlの場合)。詳細については、CodeDeploy エージェント設定リファレンス を参照してください。

    注記

    Amazon Linux、、RHELまたは Ubuntu Server インスタンスで設定ファイルを使用する場合は、次のいずれかを行う必要があります。

    • :root_dir: 変数および :log_dir: 変数を使用して、デプロイルートおよびログディレクトリフォルダでデフォルト以外の場所を指定する。

    • sudo を使用して CodeDeploy エージェントコマンドを実行します。

ローカルのデプロイを作成する。

ローカルデプロイを作成するインスタンスで、ターミナルセッション (Amazon Linux、、または Ubuntu Server インスタンス) RHELまたはコマンドプロンプト (Windows Server) を開いてツールコマンドを実行します。

注記

codedeploy-local コマンドは、以下の場所にインストールされます。

  • 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>] [--appspec-filename <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://amzn-s3-demo-bucket/bundle.tar

  • GitHub リポジトリ: https://github.com/account-name/repository-name/

-t--type

アプリケーションリビジョンバンドルの形式。サポートされるタイプには tgztarzipdirectory などがあります。タイプを指定しない場合は、デフォルトで directory が使用されます。--type に値を指定する場合、--bundle-location の値も指定する必要があります。

-b --file-exists-behavior

デプロイのターゲット場所に存在しているが、デプロイが正常に完了していないファイルを処理する方法について説明します。オプションにはDISALLOW、、OVERWRITE、 が含まれますRETAIN。詳細については、「 リファレンスfileExistsBehavior」の「」を参照してください。 AWS CodeDeploy API

-g--deployment-group

デプロイされるコンテンツのターゲット場所を示すフォルダへのパス。フォルダを指定しない場合、ツールはデプロイルートディレクトリdefault-local-deployment-group内に という名前のフォルダを作成します。ローカルデプロイを作成する度に、d-98761234-local のような名前のサブディレクトリがこのフォルダ内に作成されます。

-e--events

AppSpec ファイルに記載されているイベントの代わりに、実行する一連のオーバーライドライフサイクルイベントフックを順番に実行します。フックが複数ある場合は、カンマ区切りで指定できます。このオプションは以下の場合に使用できます。

  • AppSpec ファイルを更新せずに、異なる一連のイベントを実行したい。

  • など、 AppSpec ファイル内のものに対する例外として、単一のイベントフックを実行するとしますApplicationStop

オーバーライドリストでイベントを指定DownloadBundleおよびインストールしない場合、指定したすべてのイベントフックの前に実行されます。--events オプションのリストに DownloadBundleをインストール を含める場合は、 CodeDeploy デプロイで通常実行されるイベントが先行する必要があります。詳細については、AppSpec 「フック」セクション を参照してください。

-c --agent-configuration-file

デプロイに使用する設定ファイルの場所 (デフォルト以外の場所に設定ファイルを保存している場合)。設定ファイルは、デプロイ向けに別のデフォルト値および動作を指定します。

デフォルトでは、設定ファイルは /etc/codedeploy-agent/conf/codedeployagent.yml (Amazon Linux、RHEL、または Ubuntu Server インスタンス) または C:/ProgramData/Amazon/CodeDeploy/conf.yml (Windows Server) に保存されます。詳細については、「CodeDeploy エージェント設定リファレンス」を参照してください。

-A, --appspec-filename

AppSpec ファイルの名前。ローカルデプロイの場合、許容される値は appspec.ymlappspec.yaml です。デフォルトでは、 AppSpec ファイルは と呼ばれますappspec.yml

-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://amzn-s3-demo-bucket/bundle.tgz --type tgz
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/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
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