AppSpec 「フック」セクション - AWS CodeDeploy

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

AppSpec 「フック」セクション

AppSpec ファイル'hooks'のセクションの内容は、デプロイのコンピューティングプラットフォームによって異なります。EC2/オンプレミスデプロイ'hooks'のセクションには、デプロイライフサイクルイベントフックを 1 つ以上のスクリプトにリンクするマッピングが含まれています。Lambda または Amazon ECSデプロイ'hooks'のセクションでは、デプロイライフサイクルイベント中に実行する Lambda 検証関数を指定します。イベントフックが存在しない場合、そのイベントに対してオペレーションは実行されません。このセクションは、デプロイの一部としてスクリプトまたは Lambda 検証の関数を実行する場合のみ必須です。

AppSpec Amazon ECSデプロイの「フック」セクション

Amazon ECSデプロイのライフサイクルイベントフックのリスト

AWS Lambda フックは、ライフサイクルイベントの名前の後に新しい行に文字列で指定された 1 つの Lambda 関数です。各フックはデプロイごとに 1 回実行されます。以下は、Amazon ECSデプロイ中にフックを実行できるライフサイクルイベントの説明です。

  • BeforeInstall 置き換えタスクセットが作成される前にタスクを実行するために使用します。1 つのターゲットグループが元のタスクセットに関連付けられています。オプションのテストリスナーが指定されている場合、それは元のタスクセットに関連付けられます。この時点で、ロールバックはできません。

  • AfterInstall 置き換えタスクセットが作成され、ターゲットグループの 1 つがそれに関連付けられた後、タスクを実行するために使用します。オプションのテストリスナーが指定されている場合、それは元のタスクセットに関連付けられます。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

  • AfterAllowTestTraffic テストリスナーが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用します。この時点でのフック関数の結果により、ロールバックをトリガーできます。

  • BeforeAllowTraffic 2 番目のターゲットグループが置き換えタスクセットに関連付けられた後、かつ、トラフィックが置き換えタスクセットに移行される前に、タスクを実行するために使用します。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

  • AfterAllowTraffic 2 番目のターゲットグループが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用します。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

詳細については、「Amazon ECSデプロイ中に発生すること」および「チュートリアル: 検証テストを使用して Amazon ECSサービスをデプロイする」を参照してください。

Amazon ECSデプロイでフックの順序を実行します。

Amazon ECSデプロイでは、イベントフックは次の順序で実行されます。

Amazon ECSデプロイのイベントフックの順序。
注記

デプロイの開始 インストール TestTrafficAllowTraffic、、、終了イベントはスクリプト化できないため、この図ではグレーで表示されます。

「hooks」 セクションの構造

次の例は、'hooks' セクションの構造の例を示します。

の使用YAML:

Hooks: - BeforeInstall: "BeforeInstallHookFunctionName" - AfterInstall: "AfterInstallHookFunctionName" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

の使用JSON:

"Hooks": [ { "BeforeInstall": "BeforeInstallHookFunctionName" }, { "AfterInstall": "AfterInstallHookFunctionName" }, { "AfterAllowTestTraffic": "AfterAllowTestTrafficHookFunctionName" }, { "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName" } ] }

Lambda の「フック」関数のサンプル

'hooks' セクションを使用して、 を呼び出して Amazon ECSデプロイを検証 CodeDeploy できる Lambda 関数を指定します。、BeforeInstall、、AfterInstallAfterAllowTestTrafficBeforeAllowTraffic、および AfterAllowTraffic デプロイライフサイクルイベントには、同じ関数または別の関数を使用できます。検証テストが完了すると、Lambda AfterAllowTraffic関数は または Succeeded の結果を呼び出して CodeDeploy配信しますFailed

重要

が 1 時間以内に Lambda 検証関数から通知されない場合、デプロイ CodeDeploy は失敗したと見なされます。

Lambda フック関数を呼び出す前に、サーバーは putLifecycleEventHookExecutionStatus コマンドを使用して、デプロイ ID およびライフサイクルイベントフック実行 ID について通知される必要があります。

次に示すのは、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 CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass 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'); } }); };

AppSpec AWS Lambda デプロイの「フック」セクション

AWS Lambda デプロイのライフサイクルイベントフックのリスト

AWS Lambda フックは、ライフサイクルイベントの名前の後に新しい行に文字列で指定された 1 つの Lambda 関数です。各フックはデプロイごとに 1 回実行されます。ファイルで使用できるフックの説明を次に示します AppSpec 。

  • BeforeAllowTraffic – トラフィックがデプロイされた Lambda 関数バージョンに移行する前にタスクを実行するために を使用します。

  • AfterAllowTraffic – すべてのトラフィックがデプロイされた Lambda 関数バージョンに移行された後にタスクを実行する場合に使用します。

Lambda 関数のバージョンのデプロイでのフックの実行順

サーバーレスの Lambda 関数のバージョンのデプロイでは、イベントフックは次の順序で実行されます。

Lambda デプロイのイベントフックの順序。
注記

デプロイの開始 AllowTraffic終了イベントはスクリプト化できないため、この図ではグレーで表示されます。

「hooks」 セクションの構造

次の例は、「hooks」セクションの例を示します。

の使用YAML:

hooks: - BeforeAllowTraffic: BeforeAllowTrafficHookFunctionName - AfterAllowTraffic: AfterAllowTrafficHookFunctionName

の使用JSON:

"hooks": [{ "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName" }]

Lambda の「フック」関数のサンプル

「フック」セクションを使用して、Lambda デプロイを検証するために を呼び CodeDeploy 出すことができる Lambda 関数を指定します。BeforeAllowTraffic および AfterAllowTrafficデプロイライフサイクルイベントには、同じ関数または別の関数を使用できます。検証テストが完了すると、Lambda 検証関数は CodeDeploy または Succeeded の結果を呼び出して配信しますFailed

重要

が 1 時間以内に Lambda 検証関数から通知されない場合、デプロイ CodeDeploy は失敗したと見なされます。

Lambda フック関数を呼び出す前に、サーバーは putLifecycleEventHookExecutionStatus コマンドを使用して、デプロイ ID およびライフサイクルイベントフック実行 ID について通知される必要があります。

次に示すのは、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 CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass 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'); } }); };

AppSpec EC2/オンプレミスデプロイの「フック」セクション

ライフサイクルイベントフックのリスト

EC2/オンプレミスデプロイフックは、インスタンスへのデプロイごとに 1 回実行されます。フックには実行するスクリプトを 1 つまたは複数指定することができます。ライフサイクルイベントの各フックは、文字列で個別の行に指定します。ファイルで使用できるフックの説明を次に示します AppSpec 。

デプロイおよびロールバックの種類別の有効なライフサイクルフックの詳細については、「ライフサイクルイベントフックの可用性」を参照してください。

  • ApplicationStop このデプロイライフサイクルイベントは、アプリケーションリビジョンがダウンロードされる前でも発生します。アプリケーションを適切に中止するか、現在インストールされているパッケージを削除してデプロイの準備をする場合は、このイベントのスクリプトを指定できます。このデプロイライフサイクルイベントに使用される AppSpec ファイルとスクリプトは、以前に正常にデプロイされたアプリケーションリビジョンのものです。

    注記

    デプロイする前に、インスタンスに AppSpec ファイルが存在しません。したがって、ApplicationStop フックは、初めてインスタンスにデプロイするときは実行されません。インスタンスに 2 回目にデプロイするときは、ApplicationStop フックを使用できます。

    最後に正常にデプロイされたアプリケーションリビジョンの場所を決定するために、 CodeDeploy エージェントは deployment-group-id_last_successful_install ファイルに記載されている場所を検索します。このファイルは次の場所にあります。

    /opt/codedeploy-agent/deployment-root/deployment-instructions Amazon Linux、Ubuntu Server、RHELAmazon EC2インスタンスの フォルダ。

    C:\ProgramData\Amazon\CodeDeploy\deployment-instructions Windows Server Amazon EC2インスタンスの フォルダ。

    ApplicationStop デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「障害が発生した ApplicationStop、 BeforeBlockTraffic、または AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

  • DownloadBundle – このデプロイライフサイクルイベント中、 CodeDeploy エージェントはアプリケーションリビジョンファイルを一時的な場所にコピーします。

    /opt/codedeploy-agent/deployment-root/deployment-group-id/deployment-id/deployment-archive Amazon Linux、Ubuntu Server、RHELAmazon EC2インスタンスの フォルダ。

    C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archive Windows Server Amazon EC2インスタンスの フォルダ。

    このイベントは CodeDeploy エージェント用に予約されており、スクリプトの実行には使用できません。

    DownloadBundle デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング UnknownError: 読み取り用に開かれていない」を参照してください。

  • BeforeInstall このデプロイライフサイクルイベントは、ファイルの復号や現在のバージョンのバックアップの作成などの事前インストールタスクに使用できます。

  • Install – このデプロイライフサイクルイベント中、エージェントは CodeDeployリビジョンファイルを一時的な場所から最終送信先フォルダにコピーします。このイベントは CodeDeploy エージェント用に予約されており、スクリプトの実行には使用できません。

  • AfterInstall アプリケーションの設定やファイルのアクセス許可の変更などのタスクに、このデプロイライフサイクルイベントを使用できます。

  • ApplicationStart 通常、このデプロイライフサイクルイベントを使用して、ApplicationStop 中に停止されたサービスを再起動します。

  • ValidateService これが最後のデプロイライフサイクルイベントです。デプロイが正常に完了したことを確認するために使用されます。

  • BeforeBlockTraffic このデプロイライフサイクルイベントを使用して、ロードバランサーから登録解除される前のインスタンスでタスクを実行できます。

    BeforeBlockTraffic デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「障害が発生した ApplicationStop、 BeforeBlockTraffic、または AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

  • BlockTraffic このデプロイライフサイクルイベント中は、現在トラフィックの処理中であるインスタンスに対するインターネットトラフィックのアクセスがブロックされます。このイベントは CodeDeploy エージェント用に予約されており、スクリプトの実行には使用できません。

  • AfterBlockTraffic このデプロイライフサイクルイベントを使用して、それぞれのロードバランサーから登録解除された後のインスタンスでタスクを実行できます。

    AfterBlockTraffic デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「障害が発生した ApplicationStop、 BeforeBlockTraffic、または AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

  • BeforeAllowTraffic このデプロイライフサイクルイベントを使用して、ロードバランサーに登録される前のインスタンスでタスクを実行できます。

  • AllowTraffic このデプロイライフサイクルイベント中は、デプロイ後のインスタンスに対するインターネットトラフィックのアクセスが許可されます。このイベントは CodeDeploy エージェント用に予約されており、スクリプトの実行には使用できません。

  • AfterAllowTraffic このデプロイライフサイクルイベントを使用して、ロードバランサーに登録された後のインスタンスでタスクを実行できます。

ライフサイクルイベントフックの可用性

次の表に、各デプロイおよびロールバックシナリオで使用できるライフサイクルイベントフックを示します。

ライフサイクルイベント名 Auto Scaling 起動デプロイ¹ Auto Scaling 終了デプロイ¹ インプレースデプロイ¹ Blue/Green デプロイ: 元のインスタンス Blue/Green デプロイ: 代替インスタンス Blue/Green デプロイのロールバック: 元のインスタンス Blue/Green デプロイのロールバック: 代替インスタンス
ApplicationStop
DownloadBundle3
BeforeInstall
Install³
AfterInstall
ApplicationStart
ValidateService
BeforeBlockTraffic
BlockTraffic3
AfterBlockTraffic
BeforeAllowTraffic
AllowTraffic3
AfterAllowTraffic

1 Amazon EC2 Auto Scaling デプロイの詳細については、「」を参照してくださいAmazon EC2 Auto Scaling と の連携方法 CodeDeploy

² インプレースデプロイのロールバックにも適用されます。

3 CodeDeploy オペレーション用に予約されています。スクリプトの実行には使用できません。

デプロイでのフックの実行順

Auto Scaling 起動デプロイ

Auto Scaling 起動デプロイ中に、 はイベントフックを次の順序で CodeDeploy 実行します。

Auto Scaling 起動デプロイの詳細については、「Amazon EC2 Auto Scaling と の連携方法 CodeDeploy」を参照してください。

Auto Scaling 起動デプロイ中のイベントフックの順序。
注記

デプロイの開始 DownloadBundleインストール AllowTraffic、、終了イベントはスクリプト化できないため、この図ではグレーで表示されます。ただし、 AppSpec ファイルの 'files'セクションを編集して、インストールイベント中にインストールされるものを指定できます。

Auto Scaling 終了デプロイ

Auto Scaling 終了デプロイ中、 はイベントフックを次の順序で CodeDeploy 実行します。

Auto Scaling 終了デプロイの詳細については、「Auto Scaling スケールインイベント中の終了デプロイの有効化」を参照してください。

Auto Scaling 終了デプロイ中のイベントフックの順序。
注記

デプロイの開始 BlockTraffic終了イベントはスクリプト化できないため、この図ではグレーで表示されます。

インプレースデプロイ

インプレースデプロイのロールバックを含むインプレースデプロイで、イベントフックは次の順序で実行されます。

注記

インプレースデプロイの場合、トラフィックのブロックと許可に関する 6 つのフックは、 デプロイグループに Elastic Load Balancing から Classic Load Balancer、Application Load Balancer、または Network Load Balancer を指定した場合のみ適用されます。

インプレースデプロイのロールバック中のイベントフックの順序。
注記

デプロイの開始 DownloadBundleインストール 終了イベントはスクリプト化できないため、この図ではグレーで表示されます。ただし、 AppSpec ファイルの 'files'セクションを編集して、インストールイベント中にインストールされるものを指定できます。

Blue/Green デプロイ

Blue/Green デプロイでは、イベントフックは次の順序で実行されます。

ブルー/グリーンデプロイのイベントフックの順序。
注記

デプロイの開始イベントDownloadBundleインストールイベント、BlockTrafficAllowTraffic、終了イベントはスクリプト化できないため、この図ではグレーで表示されます。ただし、 AppSpec ファイルの「ファイル」セクションを編集して、インストールイベント中にインストールされるものを指定できます。

「hooks」 セクションの構造

'hooks' セクションは以下の構造を持ちます。

hooks: deployment-lifecycle-event-name: - location: script-location timeout: timeout-in-seconds runas: user-name

デプロイライフサイクルイベント名の後で、次の要素を hook エントリに含めることができます。

ロケーション

必須。リビジョンのスクリプトファイルのバンドルでの位置。hooks セクションで指定するスクリプトの場所は、アプリケーションリビジョンバンドルのルートから相対的な位置です。詳細については、「のリビジョンを計画する CodeDeploy」を参照してください。

timeout

オプション。失敗と見なされる前にスクリプトの実行を許可する秒数。デフォルト値は 3600 秒 (1 時間) です。

注記

3600 秒 (1 時間) は、各デプロイライフサイクルイベントのスクリプト実行で許可される最大の時間です。スクリプトがこの制限を超過した場合、デプロイは停止し、インスタンスへのデプロイは失敗します。各デプロイライフサイクルイベントのすべてのスクリプトで、timeout に指定された合計秒数が、この制限を超えないようにします。

runas

オプション。スクリプトの実行時に偽装するユーザー。デフォルトでは、これは instance で実行されている CodeDeploy エージェントです。 CodeDeploy はパスワードを保存しないため、Runas ユーザーがパスワードを必要とする場合、ユーザーを偽装することはできません。この要素は、Amazon Linux、Ubuntu Server、RHEL インスタンスにのみ適用されます。

フックスクリプトでのファイルの参照

の説明に従ってスクリプトを CodeDeploy ライフサイクルイベントに接続しAppSpec 「フック」セクション、スクリプトでファイル (例: helper.sh) を参照する場合は、以下helper.shを使用して を指定する必要があります。

絶対パスの使用

絶対パスを使用してファイルを参照するには、次のいずれかを行うことができます。

デプロイアーカイブの場所

DownloadBundle ライフサイクルイベント中、 CodeDeploy エージェントはデプロイのリビジョンを次の形式のディレクトリに抽出します。

root-directory/deployment-group-id/deployment-id/deployment-archive

- root-directory パスの 部分は、常に次の表に示すデフォルトに設定されるか、:root_dir設定によって制御されます。構成設定の詳細については、「CodeDeploy エージェント設定リファレンス」を参照してください。

エージェントプラットフォーム デフォルトのルートディレクトリ
Linux — すべての rpm ディストリビューション /opt/codedeploy-agent/deployment-root
Ubuntu サーバー — すべての deb ディストリビューション /opt/codedeploy-agent/deployment-root
Windows Server %ProgramData%\Amazon\CodeDeploy

フックスクリプトから、ルートディレクトリパスおよび環境変数 (DEPLOYMENT_IDDEPLOYMENT_GROUP_ID) を使用して現在のデプロイアーカイブにアクセスできます。使用できる変数の詳細については、「フックの環境変数の可用性」を参照してください。

例えば、Linux のリビジョンのルートにある data.json ファイルにアクセスする方法は次のとおりです。

#!/bin/bash rootDirectory="/opt/codedeploy-agent/deployment-root" # note: this will be different if you # customize the :root_dir configuration dataFile="$rootDirectory/$DEPLOYMENT_GROUP_ID/$DEPLOYMENT_ID/deployment-archive/data.json" data=$(cat dataFile)

別の例として、Windows の Powershell を使用してリビジョンのルートにある data.json ファイルにアクセスする方法は次のとおりです。

$rootDirectory="$env:ProgramData\Amazon\CodeDeploy" # note: this will be different if you # customize the :root_dir configuration $dataFile="$rootDirectory\$env:DEPLOYMENT_GROUP_ID\$env:DEPLOYMENT_ID\deployment-archive\data.json" $data=(Get-Content $dataFile)

相対パスの使用

相対パスを使用してファイルを参照するには、 CodeDeploy エージェントの作業ディレクトリを知る必要があります。ファイルパスは、このディレクトリからの相対パスです。

次の表は、 CodeDeploy エージェントのサポートされている各プラットフォームの作業ディレクトリを示しています。

エージェントプラットフォーム プロセス管理メソッド ライフサイクルイベントスクリプトの作業ディレクトリ
Linux — すべての rpm ディストリビューション systemd (デフォルト) /
init.d — 詳細はこちら /opt/codedeploy-agent
Ubuntu サーバー — すべての debian ディストリビューション すべて /opt/codedeploy-agent
Windows Server 該当なし C:\Windows\System32

フックの環境変数の可用性

各デプロイライフサイクルイベントの間、フックスクリプトは次の環境変数にアクセスできます。

APPLICATION_NAME

現在のデプロイの一部 CodeDeploy である のアプリケーションの名前 (例: WordPress_App)。

DEPLOYMENT_ID

ID CodeDeploy が現在のデプロイ (例: ) に割り当てられていますd-AB1CDEF23

DEPLOYMENT_GROUP_NAME

現在のデプロイの一部 CodeDeploy である のデプロイグループの名前 (例: WordPress_DepGroup)。

DEPLOYMENT_GROUP_ID

現在のデプロイの一部 CodeDeploy である のデプロイグループの ID (例: b1a2189b-dd90-4ef5-8f40-4c1c5EXAMPLE)。

LIFECYCLE_EVENT

現在のデプロイライフサイクルイベントの名前 (例: AfterInstall)。

これらの環境変数は各デプロイライフサイクルイベントにローカルです。

デプロイバンドルのソースに応じて、スクリプトをフックできる環境変数が他にもあります。

Amazon S3 からのバンドル

  • BUNDLE_BUCKET

    デプロイバンドルがダウンロードされた Amazon S3 バケットの名前 (例: my-s3-bucket)。

  • BUNDLE_KEY

    Amazon S3 バケット内のダウンロードされたバンドル用のオブジェクトキー (例: WordPress_App.zip)。

  • BUNDLE_VERSION

    バンドル用のオブジェクトバージョン (例: 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo)。この変数は Amazon S3 バケットでオブジェクトバージョニングが有効になっている場合にのみ設定されます。

  • BUNDLE_ETAG

    バンドル用のオブジェクト Etag (例: b10a8db164e0754105b7a99be72e3fe5-4)。

からのバンドル GitHub

  • BUNDLE_COMMIT

    Git によって生成されたバンドルのSHA256コミットハッシュ (例: d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26)。

次のスクリプトは、DEPLOYMENT_GROUP_NAME の値が に等しい場合、Apache HTTPサーバーのリッスンポートを 80 ではなく 9090 に変更しますStaging。このスクリプトは BeforeInstall デプロイライフサイクルイベント中に呼び出される必要があります。

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/Listen 80/Listen 9090/g' /etc/httpd/conf/httpd.conf fi

次のスクリプト例では、DEPLOYMENT_GROUP_NAME 環境変数の値が に等しい場合、エラーログに記録されたメッセージの冗長性レベルを警告からデバッグに変更しますStaging。このスクリプトは BeforeInstall デプロイライフサイクルイベント中に呼び出される必要があります。

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/LogLevel warn/LogLevel debug/g' /etc/httpd/conf/httpd.conf fi

以下のスクリプトの例では、指定されたウェブページを、これらの環境変数の値を表示するテキストで置き換えます。このスクリプトは AfterInstall デプロイライフサイクルイベント中に呼び出される必要があります。

#!/usr/bin/python import os strToSearch="<h2>This application was deployed using 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 ディレクトリはバンドルのルートレベルにあります。詳細については、「のリビジョンを計画する CodeDeploy」を参照してください。