ステップ 2: パイプラインの編集
以下の例では、ExternalDeploy という名前のデプロイアクションを追加する JSON を示していま す。また、Staging という名前のステージで AccountB で作成された AWS CodeDeploy リソースを 使用しています。以下の例では、AccountB の ARN は 012ID_ACCOUNT_B です。
, {
"name": "Staging", "actions": [ {
"inputArtifacts": [ {
"name": "MyAppBuild"
} ],
"name": "ExternalDeploy", "actionTypeId": {
"category": "Deploy", "owner": "AWS", "version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [], "configuration": {
"ApplicationName": "AccountBApplicationName",
"DeploymentGroupName": "AccountBApplicationGroupName"
},
"runOrder": 1, "roleArn":
"arn:aws:iam::012ID_ACCOUNT_B:role/CrossAccount_Role"
} ] }
Note
これは、パイプライン全体の JSON ではなく、ステージでのアクションの構造です。
4. ファイルを保存します。
5. 変更を適用するには、以下のように、パイプライン JSON ファイルを指定して、update-pipeline コマ ンドを実行します。
Important
ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
このコマンドは、編集したパイプラインの構造全体を返します。
別の AWS アカウントに関連付けられているリソースを使用するパイプラインをテストするには
1. ターミナル (Linux, macOS, or Unix) またはコマンドプロンプト (Windows) で、以下のように、パイプラインの名前を指定して、start-pipeline-execution コマンドを実行します。
aws codepipeline start-pipeline-execution --name MyFirstPipeline
詳細については、「AWS CodePipeline でパイプラインを手動で開始する (p. 110)」を参照してくだ さい。
ステップ 2: パイプラインの編集
2. AccountA を使用して、AWS マネジメントコンソール にサインインし、http://
console.aws.amazon.com/codepipeline で AWS CodePipeline コンソールを開きます。
AWS アカウントに関連付けられているすべてのパイプラインの名前が表示されます。
3. [Name] で、先ほど編集したパイプラインの名前を選択します。これにより、パイプラインの詳細 ビューが開いて、パイプラインの各ステージの各アクションの状態などがわかります。
4. パイプラインの進行状況を監視します。別の AWS アカウントに関連付けられているリソースを使用 するアクションの成功メッセージを待ちます。
Note
AccountA を使用してサインインしている間にアクションの詳細を表示しようとする と、エラーが発生します。サインアウトしてから、AccountB でサインインして、AWS CodeDeploy でデプロイの詳細を表示します。
パイプラインのカスタムアクションの作成
AWS CodePipeline でのアクションの 操作
AWS CodePipeline で、アクションはパイプラインのステージのシーケンスの一部です。また、そのス テージのアーティファクトで実行されるタスクです。パイプラインのアクションは、ステージ設定の定義 に従い、指定された順序で順番に、または同時に実行されます。
AWS CodePipeline では、6 種類のアクションをサポートしています。
• 送信元
• ビルド
• テスト
• デプロイ
• 承認
• 呼び出し
アクションの種類に基づいてパイプラインに統合できる AWS サービスや、そのパートナー製品および サービスの詳細については、「AWS CodePipeline アクションの種類との統合 (p. 11)」を参照してくださ い。
トピック
• AWS CodePipeline でのカスタムアクションの作成と追加 (p. 146)
• AWS CodePipeline で パイプラインに AWS Lambda 関数を呼び出す (p. 156)
• AWS CodePipeline で失敗したアクションを再試行する (p. 173)
• AWS CodePipeline で承認アクションを管理する (p. 175)
AWS CodePipeline でのカスタムアクションの作成 と追加
AWS CodePipeline には、自動リリースプロセスの構築、テストおよびデプロイリソースを設定する手助 けとなるアクションが複数含まれています。社内で開発したビルドプロセスやテストスイート等、デフォ ルトアクションに含まれていないアクティビティがリリースプロセスに含まれる場合、その目的のために カスタムアクションを作成し、パイプラインに含めることができます。AWS CLI を使って、AWS アカウ ントに関連付けられたパイプラインにカスタムアクションを作成できます。
カスタムアクションは次のカテゴリに分類されます:
• 項目を構築または変換するビルドアクション
• 項目を 1 つ以上のサーバー、ウェブサイトまたはリポジトリにデプロイするデプロイアクション
• 自動テストを設定して実行するテストアクション
• 関数を実行する呼び出しアクション
カスタムアクション を作成する際、この カスタムアクション のジョブリクエストの AWS CodePipeline をポーリングするジョブワーカーを作成し、ジョブを実行してステータス結果を AWS CodePipeline に 返す必要があります。このジョブワーカーは、AWS CodePipeline のパブリックエンドポイントにアクセ スできる限り、どのコンピュータまたはリソースにあっても構いません。簡単にアクセスおよびセキュリ
カスタムアクション (CLI) の作成
ティを管理するために、ジョブワーカーを Amazon EC2 インスタンスにホストすることを考慮してくださ い。
次の図では、カスタム構築アクションを含むパイプラインの高レベルビューを示します:
パイプラインにステージに一部として カスタムアクション が含まれる場合、パイプラインはジョブリクエ ストを作成します。カスタムジョブワーカーはそのリクエストを検出し、そのジョブを実行します (この 例では、サードパーティ構築ソフトウェアを使用するカスタムプロセス)。アクションが完了すると、ジョ ブワーカーは成功結果または失敗結果を返します。成功結果を受け取ると、パイプラインはリビジョンと その アーティファクト を次のアクションに 移行 します。失敗が返された場合、パイプラインはリビジョ ンを次のアクションに 移行 しません。
Note
これらの手順では、すでにAWS CodePipeline の使用開始 (p. 9)のステップを完了していることを 前提としています。
トピック
• カスタムアクション (CLI) の作成 (p. 147)
• カスタムアクションのジョブワーカーの作成 (p. 150)
• パイプラインにカスタムアクションを追加する (p. 154)
カスタムアクション (CLI) の作成
AWS CLI を使用したカスタムアクションの作成
1. テキストエディタを開き、アクションカテゴリ、アクションプロバイダー、およびカスタムアクショ ンで必要な設定を含む、カスタムアクションの JSON ファイルを作成します。たとえば、1 つのプロ パティのみを必要とするカスタムビルドアクションを作成する場合、JSON ファイルは次のようにな ります。
{
"category": "Build",
"provider": "My-Build-Provider-Name", "version": "1",
"settings": {
カスタムアクション (CLI) の作成
"entityUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/", "executionUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/
lastSuccessfulBuild/{ExternalExecutionId}/"
},
"configurationProperties": [{
"name": "ProjectName", "required": true, "key": true, "secret": false, "queryable": false,
"description": "The name of the build project must be provided when this action is added to the pipeline.",
"type": "String"
}],
"inputArtifactDetails": { "maximumCount": integer, "minimumCount": integer },
"outputArtifactDetails": { "maximumCount": integer, "minimumCount": integer }
}
entityUrlTemplate および executionUrlTemplate を含む 2 つのプロパティが、JSON ファイ ルに含まれています。設定プロパティが必須で、かつシークレットではない限り、{Config:name}
形式に従って、URL テンプレート内のカスタムアクションの設定プロパティで名前を参照できます。
たとえば、上の例では、entityUrlTemplate の値は設定プロパティ ProjectName を参照します。
• entityUrlTemplate: アクションのサービスプロバイダーに関する情報を提供する静的リンク。
この例では、ビルドシステムには、各ビルドプロジェクトへの静的リンクが含まれます。リンク形 式は、ビルドプロバイダー (または、テストなど別のアクションタイプを作成する場合はその他の サービスプロバイダー) に応じて変わります。このリンク形式を指定し、カスタムアクションが追 加されたときに、ユーザーはこのリンクを選択してブラウザを開き、ビルドプロジェクト (または テスト環境) の詳細を提供するウェブサイト上のページに移動できるようにする必要があります。
• executionUrlTemplate: アクションの現在の実行または最新の実行に関する情報で更新される動 的リンク。カスタムジョブワーカーがジョブのステータス (成功、失敗、進行中など) を更新すると きに、リンクを完了するために使用される externalExecutionId も提供されます。このリンク を使用して、アクションの実行に関する詳細を提供できます。
たとえば、パイプラインでアクションを表示すると、次の 2 つのリンクが表示されます。
カスタムアクション (CLI) の作成
この静的リンクは、カスタムアクションを追加し、entityUrlTemplate でアドレスを指 した後で表示されます (カスタムアクションを作成するときに指定します)。
この動的なリンクは、アクションを実行し、executionUrlTemplate でアドレスを指す たびに更新されます (カスタムアクションを作成するときに指定します)。
これらのリンクタイプ、および RevisionURLTemplate と ThirdPartyURL の詳細 については、「AWS CodePipeline API リファレンス」の「ActionTypeSettings」および
「CreateCustomActionType」を参照してください。アクション構造の要件とアクションの作成方法の 詳細については、「AWS CodePipeline パイプライン構造のリファレンス (p. 244)」を参照してくだ さい。
2. JSON ファイルを保存し、簡単に覚えることができる名前 (MyCustomAction.json など) を付けま す。
3. AWS CLI をインストールしたコンピュータで、ターミナルセッション (Linux、OS X、Unix) またはコ マンドプロンプト (Windows) を開きます。
4. AWS CLI を使用して、aws codepipeline create-custom-action-type コマンドを実行して、先ほど作成 した JSON ファイルの名前を指定します。
たとえば、ビルド カスタムアクション を作成するには以下のようにします。
Important
ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。
aws codepipeline create-custom-action-type --cli-input-json file://MyCustomAction.json 5. このコマンドは、作成したカスタムアクションの構造全体、および追加された JobList アクション 設定プロパティを返します。パイプラインにカスタムアクションを追加するときは、JobList を使用 して、プロバイダーからのプロジェクトのうちジョブをポーリングできるものを指定できます。これ を設定しない場合、カスタムジョブワーカーがジョブをポーリングするときに、使用可能なすべての ジョブが返されます。
たとえば、前のコマンドは、次のような構造を返します。
{ "actionType": {
"inputArtifactDetails": { "maximumCount": 1, "minimumCount": 1
},
"actionConfigurationProperties": [ {
"secret": false, "required": true, "name": "ProjectName", "key": true,
"description": "The name of the build project must be provided when this action is added to the pipeline."
} ],
"outputArtifactDetails": { "maximumCount": 0, "minimumCount": 0
},