

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

# AWS CodeBuild で AWS CodePipeline を使用してコードをテストし、ビルドを実行する
<a name="how-to-create-pipeline"></a>

 AWS CodePipeline を使用してコードをテストし、 でビルドを実行することで、リリースプロセスを自動化できます AWS CodeBuild。

次の表に示しているのは、タスクとその実行に使用できるメソッドです。これらのタスクを AWS SDK で達成する方法については、このトピックの対象外です。


****  

| タスク | 使用可能なアプローチ | このトピックで説明するアプローチ | 
| --- | --- | --- | 
| CodeBuild でビルドを自動化する CodePipeline を使用して、継続的な配信 (CD) パイプラインを作成する |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/how-to-create-pipeline.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/how-to-create-pipeline.html)  | 
| 既存の CodePipeline のパイプラインに CodeBuild でのテストおよびビルドの自動化を追加する |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/how-to-create-pipeline.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/how-to-create-pipeline.html)  | 

**Topics**
+ [

## 前提条件
](#how-to-create-pipeline-prerequisites)
+ [

# CodeBuild を使用するパイプラインを作成する (CodePipeline コンソール)
](how-to-create-pipeline-console.md)
+ [

# CodeBuild を使用するパイプラインの作成 (AWS CLI)
](how-to-create-pipeline-cli.md)
+ [

# CodeBuild ビルドアクションをパイプラインに追加する (CodePipeline コンソール)
](how-to-create-pipeline-add.md)
+ [

# CodeBuild テストアクションをパイプラインに追加する (CodePipeline コンソール)
](how-to-create-pipeline-add-test.md)

## 前提条件
<a name="how-to-create-pipeline-prerequisites"></a>

1. [ビルドを計画する](planning.md) の質問に答えます。

1.  AWS ルートアカウントまたは管理者ユーザーの代わりに ユーザーを使用して CodePipeline にアクセスする場合は、 という名前の管理ポリシー`AWSCodePipelineFullAccess`をユーザー (またはユーザーが属する IAM グループ) にアタッチします。 AWS ルートアカウントの使用はお勧めしません。このポリシーは、CodePipeline でパイプラインを作成するためのアクセス許可をユーザーに付与します。詳細については、*ユーザーガイド*の「[管理ポリシーをアタッチする](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)」を参照してください。
**注記**  
ポリシーをユーザー (またはユーザーが属する IAM グループ) にアタッチする IAM エンティティは、ポリシーをアタッチするために IAM でのアクセス許可を持っている必要があります。詳細については、*ユーザーガイド*の「[IAM ユーザー、グループ、および認証情報を管理するためのアクセス許可の委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_delegate-permissions.html)」を参照してください。

1.  AWS アカウントに CodePipeline のサービスロールがまだない場合は、作成します。CodePipeline はこのサービスロールを使用して、 AWS CodeBuildユーザーに代わって を含む他の AWS サービスとやり取りします。たとえば、 を使用して CodePipeline サービスロール AWS CLI を作成するには、IAM `create-role` コマンドを実行します。

   Linux、macOS、Unix の場合:

   ```
   aws iam create-role --role-name AWS-CodePipeline-CodeBuild-Service-Role --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement":{"Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"},"Action":"sts:AssumeRole"}}'
   ```

   Windows の場合:

   ```
   aws iam create-role --role-name AWS-CodePipeline-CodeBuild-Service-Role --assume-role-policy-document "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codepipeline.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}}"
   ```
**注記**  
この CodePipeline のサービスロールを作成する IAM エンティティは、サービスロールを作成するために IAM のアクセス許可を持っている必要があります。

1. CodePipeline サービスロールを作成した後、または既存のサービスロールを識別した後、*AWS CodePipeline ユーザーガイド*の[デフォルトの CodePipeline サービスロールポリシーを確認する](https://docs.aws.amazon.com/codepipeline/latest/userguide/iam-identity-based-access-control.html#how-to-custom-role)で説明されているように、デフォルトの CodePipeline サービスロールポリシーをサービスロールに追加する必要があります (ロールのポリシーの一部になっていない場合)。
**注記**  
この CodePipeline サービスロールのポリシーを追加する IAM エンティティは、サービスロールポリシーをサービスロールに追加するために IAM のアクセス許可を持っている必要があります。

1. CodeCommit、Amazon S3、Bitbucket、GitHub など、CodeBuild と CodePipeline でサポートされているリポジトリタイプにソースコードを作成してアップロードします。ソースコードには buildspec ファイルが含まれている必要がありますが、このトピックの後半でビルドプロジェクトを定義するときにそのファイルを宣言できます。詳細については、「[ビルド仕様 (buildspec) に関するリファレンス](build-spec-ref.md)」を参照してください。
**重要**  
パイプラインを使用してビルド済みのソースコードをデプロイする場合、ビルド出力アーティファクトには、使用するデプロイシステムとの互換性が必要です。  
については OpsWorks、*OpsWorks 「 ユーザーガイド*」の[「アプリケーションソース](https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-source)」と「 [での CodePipeline の使用 OpsWorks](https://docs.aws.amazon.com/opsworks/latest/userguide/other-services-cp.html)」を参照してください。

# CodeBuild を使用するパイプラインを作成する (CodePipeline コンソール)
<a name="how-to-create-pipeline-console"></a>

CodeBuild を使用してソースコードをビルドおよびデプロイするパイプラインを作成するには、次の手順を実行します。

ソースコードのみをテストするパイプラインを作成するには、以下の操作を行います。
+ 次の手順を使用してパイプラインを作成し、パイプラインからビルドステージとベータステージを削除します。次に、このトピックの「[CodeBuild テストアクションをパイプラインに追加する (CodePipeline コンソール)](how-to-create-pipeline-add-test.md)」の手順を使用して、CodeBuild を使用するテストアクションをパイプラインに追加します。
+ このトピックの他の手順のいずれかを使用してパイプラインを作成した後、このトピックの「[CodeBuild テストアクションをパイプラインに追加する (CodePipeline コンソール)](how-to-create-pipeline-add-test.md)」の手順を使用して CodeBuild を使用するテストアクションをパイプラインに追加します。

**CodePipeline でパイプライン作成ウィザードを使用して、CodeBuild を使用するパイプラインを作成するには**

1. 以下を使用して にサインイン AWS マネジメントコンソール します。
   +  AWS ルートアカウント。これは推奨されません。詳細については、*ユーザーガイド*の「[アカウントルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。
   +  AWS アカウントの管理者ユーザー。詳細については、「 *ユーザーガイド*[」の「最初の AWS アカウント ルートユーザーとグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)」を参照してください。
   + 以下の最小アクションセットを使用するアクセス許可を持つ AWS アカウントのユーザー。

     ```
     codepipeline:*
     iam:ListRoles
     iam:PassRole
     s3:CreateBucket
     s3:GetBucketPolicy
     s3:GetObject
     s3:ListAllMyBuckets
     s3:ListBucket
     s3:PutBucketPolicy
     codecommit:ListBranches
     codecommit:ListRepositories
     codedeploy:GetApplication
     codedeploy:GetDeploymentGroup
     codedeploy:ListApplications
     codedeploy:ListDeploymentGroups
     elasticbeanstalk:DescribeApplications
     elasticbeanstalk:DescribeEnvironments
     lambda:GetFunctionConfiguration
     lambda:ListFunctions
     opsworks:DescribeStacks
     opsworks:DescribeApps
     opsworks:DescribeLayers
     ```

1. [https://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) で AWS CodePipeline コンソールを開きます。

1.  AWS リージョンセレクターで、ビルドプロジェクト AWS リソースがある AWS リージョンを選択します。これは、CodeBuild がサポートされている AWS リージョンである必要があります。詳細については、「*Amazon Web Services 全般のリファレンス*」の「[AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)」を参照してください。

1. パイプラインを作成する CodePipeline 情報ページが表示されたら、**[Create pipeline]** (パイプラインの作成) を選択します。[**Pipelines (パイプライン)**] ページが表示された場合は、[**Create pipeline (パイプラインの作成)**] を選択します。

1. [**Step 1: Choose pipeline settings (ステップ 1: パイプラインの設定の選択)**] ページで、[**Pipeline name (パイプライン名)**] にパイプラインの名前を入力します (例: **CodeBuildDemoPipeline**)。別の名前を選択した場合は、この手順全体でそれを使用してください。

1. [**Role name (ロール名)**] として、以下のいずれかの操作を行います。

   [**New service role (新しいサービスロール)**] を選択し、[**Role Name (ロール名)**] に、新しいサービスロールの名前を入力します。

   **[Existing service role]** (既存のサービスロール) を選択し、このトピックの前提条件の一部として作成または特定した CodePipeline​ サービスロールを選択します。

1. [**Artifact store (アーティファクトストア)**] で、次のいずれかの操作を行います。
   + **デフォルトロケーション**を選択して、デフォルトとして指定された S3 アーティファクトバケットなどのデフォルトのアーティファクトストアを、パイプライン用に選択した AWS リージョンのパイプラインに使用します。
   + パイプラインと同じ AWS リージョンに S3 アーティファクトバケットなど、作成した既存のアーティファクトストアがある場合は、**カスタムロケーション**を選択します。
**注記**  
これはパイプラインのソースコードのソースバケットではありません。パイプラインのアーティファクトストアです。S3 バケットなどの個別のアーティファクトストアは、パイプラインと同じ AWS リージョン内のパイプラインごとに必要です。

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

1. [**Step 2: Add source stage (ステップ 2: ソースステージの追加)**] ページの [**ソースプロバイダ**] で、次のいずれかの操作を行います。
   + ソースコードの保存先が S3 バケットである場合は、**[Amazon S3]** を選択します。[**バケット**] で、ソースコードが含まれている S3 バケットを選択します。[**S3 オブジェクトキー**] に、ソースコードを含むファイルの名前 (例: `file-name.zip`) を入力します。[**次へ**] を選択します。
   + ソースコードが AWS CodeCommit リポジトリに保存されている場合は、**CodeCommit** を選択します。[**Repository name**] で、ソースコードが含まれているリポジトリの名前を選択します。[**ブランチ名**] で、ビルドするソースコードのバージョンが含まれているブランチの名前を選択します。[**次へ**] を選択します。
   + ソースコードが GitHub リポジトリに保存されている場合は、[**GitHub**] を選択します。[**Connect to GitHub**] を選択し、手順に従って GitHub に対して認証します。[**Repository**] で、ソースコードが含まれているリポジトリの名前を選択します。[**ブランチ**] で、ビルドするソースコードのバージョンが含まれているブランチの名前を選択します。

   [**次へ**] を選択します。

1. **[Step 3: Add build stage]** (ステップ 3: ビルドステージを追加する) ページで、**[Build provider]** (ビルドプロバイダー) として **[CodeBuild]** を選択します。

1. 既存のビルドプロジェクトを使用する場合は、**[Project name]** (プロジェクト名) で、ビルドプロジェクトの名前を選択し、この手順の次のステップにスキップします。

   新しい CodeBuild ビルドプロジェクトを作成する必要がある場合は、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」の手順に従ってから、この手順に戻ります。

   既存のビルドプロジェクトを選択した場合、ビルド出力アーティファクトの設定がすでに定義されている必要があります (ただし、CodePipeline によってビルド出力の設定が上書きされます)。詳細については、「[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)」を参照してください。
**重要**  
CodeBuild プロジェクトのウェブフックを有効にして、プロジェクトを CodePipeline のビルドステップとして使用すると、コミットごとに 2 つの等しいビルドが作成されます。1 つのビルドはウェブフックを通じてトリガーされ、別の 1 つは CodePipeline を通じてトリガーされます。請求はビルド単位で発生するため、両方のビルドに対して課金されます。したがって、CodePipeline を使用する場合は、CodeBuild でウェブフックを無効にすることをお勧めします。 AWS CodeBuild コンソールで、[**Webhook**] ボックスをオフにします。詳細については、「[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)」を参照してください。

1. [**Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)**] ページで、次のいずれかの操作を行います。
   + ビルド出力アーティファクトをデプロイしない場合は、[**Skip (スキップ)**] を選択し、プロンプトが表示されたら、これを選択したことを確認します。
   + ビルド出力アーティファクトをデプロイする場合は、[**Deployment provider (デプロイプロバイダ)**] でデプロイプロバイダを選択し、次にプロンプトに応じて設定を指定します。

   [**次へ**] を選択します。

1. [**確認**] ページで、選択内容を確認し、[**パイプラインの作成**] を選択します。

1. パイプラインが正常に実行されたら、ビルド出力アーティファクトを取得できます。CodePipeline コンソールにパイプラインを表示した状態で、**[Build]** (ビルド) アクションでツールヒントを選択します。[**Output artifact**] の値をメモします (例: **MyAppBuild**)。
**注記**  
ビルド出力アーティファクトを取得するには、CodeBuild コンソールのビルドの詳細ページで **[Build artifacts]** (ビルドアーティファクト) リンクを選択することもできます。このページを表示するには、この手順の残りのステップを省略して、「[ビルドの詳細の表示 (コンソール)](view-build-details.md#view-build-details-console)」を参照してください。

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. バケットのリストで、パイプラインで使用されるバケットを開きます。バケット名は、`codepipeline-region-ID-random-number` の形式に従う必要があります。を使用して CodePipeline **get-pipeline** コマンド AWS CLI を実行し、バケットの名前を取得できます。*my-pipeline-name* はパイプラインの表示名です。

   ```
   aws codepipeline get-pipeline --name my-pipeline-name
   ```

    出力では、`pipeline` オブジェクトには `artifactStore` オブジェクトが含まれ、それには、バケットの名前と `location` の値が含まれます。

1. パイプラインの名前と一致するフォルダを開きます (パイプライン名の長さによってはフォルダ名が切り詰められている場合があります)。次に、前に書き留めた [**出力アーティファクト**] の値と一致するフォルダを開きます。

1.  ファイルの内容を展開します。そのフォルダに複数のファイルがある場合は、[**Last Modified**] タイムスタンプが最新であるファイルの内容を抽出します。(システムの ZIP ユーティリティで操作できるように、必要に応じて、ファイルに `.zip` 拡張子を付けます。) ビルド出力アーティファクトは、展開されたファイルの内容に含まれます。

1. CodePipeline にビルド出力アーティファクトをデプロイするよう指示した場合は、デプロイプロバイダの説明を活用してデプロイターゲットのビルド出力アーティファクトを取得します。

# CodeBuild を使用するパイプラインの作成 (AWS CLI)
<a name="how-to-create-pipeline-cli"></a>

CodeBuild を使用してソースコードをビルドするパイプラインを作成するには、次の手順を実行します。

を使用して、ビルドされたソースコードをデプロイするパイプライン、またはソースコードのみをテストするパイプライン AWS CLI を作成するには、*AWS CodePipeline 「 ユーザーガイド*」の[「パイプラインの編集 (AWS CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-edit-pipelines.html#how-to-edit-pipelines-cli)」および[CodePipeline パイプライン構造リファレンス](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)」の手順を調整します。

1. CodeBuild でビルドプロジェクトを作成または識別します。詳細については、「[ビルドプロジェクトの作成](create-project.md)」を参照してください。
**重要**  
ビルドプロジェクトは、ビルド出力アーティファクトの設定を定義する必要があります (ただし、CodePipeline によって上書きされます)。詳細については、「`artifacts`」で [ビルドプロジェクトの作成 (AWS CLI)](create-project.md#create-project-cli) の説明を参照してください。

1. このトピックで説明されている IAM エンティティのいずれかに対応する AWS アクセスキーと AWS シークレットアクセスキー AWS CLI で が設定されていることを確認します。詳細については、*AWS Command Line Interface ユーザーガイド*の [AWS Command Line Interfaceのセットアップ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)を参照してください。

1. パイプラインの構造を表す JSON 形式のファイルを作成します。ファイルに `create-pipeline.json` のような名前を付けます。たとえば、この JSON 形式の構造では、S3 入力バケットを参照するソースアクションと CodeBuild を使用するビルドアクションを使用してパイプラインを作成します。

   ```
   {
     "pipeline": {
       "roleArn": "arn:aws:iam::<account-id>:role/<AWS-CodePipeline-service-role-name>",
       "stages": [
         {
           "name": "Source",
           "actions": [
             {
               "inputArtifacts": [],
               "name": "Source",
               "actionTypeId": {
                 "category": "Source",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "S3"
               },
               "outputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "configuration": {
                 "S3Bucket": "<bucket-name>",
                 "S3ObjectKey": "<source-code-file-name.zip>"
               },
               "runOrder": 1
             }
           ]
         },
         {
           "name": "Build",
           "actions": [
             {
               "inputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "name": "Build",
               "actionTypeId": {
                 "category": "Build",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "CodeBuild"
               },
               "outputArtifacts": [
                 {
                   "name": "default"
                 }
               ],
               "configuration": {
                 "ProjectName": "<build-project-name>"
               },
               "runOrder": 1
             }
           ]
         }
       ],
       "artifactStore": {
         "type": "S3",
         "location": "<CodePipeline-internal-bucket-name>"
       },
       "name": "<my-pipeline-name>",
       "version": 1
     }
   }
   ```

   この JSON 形式のデータは以下のようになっています。
   + `roleArn` の値は、前提条件の一部として作成または特定した CodePipeline のサービスロールの ARN と一致する必要があります。
   + `S3Bucket` の `S3ObjectKey` と `configuration` の値は、ソースコードの保存先が S3 バケットであることを前提としています。その他のソースコードのリポジトリタイプの設定については、*AWS CodePipeline ユーザーガイド*の [CodePipeline のパイプライン構造リファレンス](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)を参照してください。
   + `ProjectName` の値は、この手順の前半で作成した CodeBuild ビルドプロジェクトの名前です。
   + `location` の値は、このパイプラインで使用する S3 バケットの名前です。詳細については、*AWS CodePipeline ユーザーガイド*の [CodePipelineのアーティファクトストアとして使用する S3 バケットのポリシーを作成する](https://docs.aws.amazon.com/codepipeline/latest/userguide/access-permissions.html#how-to-create-bucket-policy)を参照してください。
   + `name` の値は、このパイプラインの名前です。すべてのパイプラインの名前はアカウントに対して一意である必要があります。

   このデータはソースアクションとビルドアクションのみを記述しますが、テスト、ビルド出力アーティファクトのデプロイ、 AWS Lambda 関数の呼び出しなどに関連するアクティビティのアクションを追加できます。詳細については、*AWS CodePipeline ユーザーガイド*の [AWS CodePipeline のパイプライン構造リファレンス](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)を参照してください。

1. JSON ファイルが保存されているフォルダに切り替え、 CodePipeline の「**[create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html)**」コマンドを実行し、ファイル名を指定します。

   ```
   aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
   ```
**注記**  
CodeBuild がサポートされている AWS リージョンでパイプラインを作成する必要があります。詳細については、「*Amazon Web Services 全般のリファレンス*」の「[AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)」を参照してください。

   JSON 形式のデータが出力に表示され、CodePipeline がパイプラインを作成します。

1. パイプラインのステータスに関する情報を取得するには、パイプラインの名前を指定して CodePipeline の **[get-pipeline-state](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html)** コマンドを実行します。

   ```
   aws codepipeline get-pipeline-state --name <my-pipeline-name>
   ```

   出力で、ビルドが成功したことを確認する情報を探します。省略記号 (`...`) は、簡潔にするために省略されたデータを表すために使用されます。

   ```
   {
     ...
     "stageStates": [
       ...  
       {
         "actionStates": [
           {
             "actionName": "CodeBuild",
             "latestExecution": {
               "status": "SUCCEEDED",
               ...
             },
             ...
           }
         ]
       }
     ]
   }
   ```

   このコマンドをあまりに早く実行すると、ビルドアクションに関する情報が表示されないことがあります。パイプラインがビルドアクションの実行を終了するまで、このコマンドを複数回実行する必要があります。

1. ビルドが成功したら、次の手順に従ってビルド出力アーティファクトを取得します。Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。
**注記**  
ビルド出力アーティファクトを取得するには、CodeBuild コンソールの関連するビルドの詳細ページで **[ビルドアーティファクト]** リンクを選択することもできます。このページを表示するには、この手順の残りのステップを省略して、「[ビルドの詳細の表示 (コンソール)](view-build-details.md#view-build-details-console)」を参照してください。

1. バケットのリストで、パイプラインで使用されるバケットを開きます。バケット名は、`codepipeline-<region-ID>-<random-number>` の形式に従う必要があります。バケット名は、`create-pipeline.json` ファイルから取得するか、CodePipelineの **get-pipeline** コマンドを実行して取得できます。

   ```
   aws codepipeline get-pipeline --name <pipeline-name>
   ```

    出力では、`pipeline` オブジェクトには `artifactStore` オブジェクトが含まれ、それには、バケットの名前と `location` の値が含まれます。

1. パイプラインの名前と一致するフォルダを開きます (例:`<pipeline-name>`)。

1. そのフォルダで、`default` という名前のフォルダを開きます。

1.  ファイルの内容を展開します。そのフォルダに複数のファイルがある場合は、[**Last Modified**] タイムスタンプが最新であるファイルの内容を抽出します。(システムの ZIP ユーティリティで操作できるように、必要に応じて、ファイルに `.zip` 拡張子を付けます。) ビルド出力アーティファクトは、展開されたファイルの内容に含まれます。

# CodeBuild ビルドアクションをパイプラインに追加する (CodePipeline コンソール)
<a name="how-to-create-pipeline-add"></a>

1. 以下を使用して にサインイン AWS マネジメントコンソール します。
   +  AWS ルートアカウント。これは推奨されません。詳細については、*ユーザーガイド*の「[アカウントルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。
   +  AWS アカウントの管理者ユーザー。詳細については、「 *ユーザーガイド*[」の「最初の AWS アカウント ルートユーザーとグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)」を参照してください。
   + 以下の最小アクションセットを実行するアクセス許可を持つ AWS アカウントのユーザー。

     ```
     codepipeline:*
     iam:ListRoles
     iam:PassRole
     s3:CreateBucket
     s3:GetBucketPolicy
     s3:GetObject
     s3:ListAllMyBuckets
     s3:ListBucket
     s3:PutBucketPolicy
     codecommit:ListBranches
     codecommit:ListRepositories
     codedeploy:GetApplication
     codedeploy:GetDeploymentGroup
     codedeploy:ListApplications
     codedeploy:ListDeploymentGroups
     elasticbeanstalk:DescribeApplications
     elasticbeanstalk:DescribeEnvironments
     lambda:GetFunctionConfiguration
     lambda:ListFunctions
     opsworks:DescribeStacks
     opsworks:DescribeApps
     opsworks:DescribeLayers
     ```

1. CodePipeline コンソール ([http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)) を開きます。

1.  AWS リージョンセレクタで、パイプラインがある AWS リージョンを選択します。このリージョンでは、CodeBuild をサポートしている必要があります。詳細については、「*Amazon Web Services 全般のリファレンス*」の「[CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)」を参照してください。

1. [**Pipelines (パイプライン)**] ページで、パイプラインの名前を選択します。

1. パイプラインの詳細ページの [**ソース**] アクションで、ツールヒントを選択します。[**Output artifact (出力アーティファクト)**] の値 (例: **MyApp**) をメモします。
**注記**  
この手順では、[**Source**] ステージと [**Beta**] ステージの間のビルドステージ内にビルドアクションを追加する方法について説明します。ビルドアクションを別の場所に追加する場合は、ビルドアクションを追加する場所の直前のアクションのツールヒントを選択し、[**Output artifact (出力アーティファクト)**] の値をメモします。

1. **[編集]** を選択します。

1. [**ソース**] と [**ベータ**] ステージの間で、[**Add (追加)**] を選択します。
**注記**  
この手順では、パイプラインの [**Source**] ステージと [**Beta**] ステージの間にビルドアクションを追加する方法について説明します。既存のステージにビルドアクションを追加するには、ステージで [**Edit stage (ステージを編集)**] を選択し、この手順のステップ 8 に進みます。ビルドステージを別の場所に追加するには、目的の場所で [**Add stage (ステージの追加)**] を選択します。

     
![\[パイプラインの [ソース] ステージと [ベータ] ステージの間にビルドステージを追加する方法について説明します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/create-stage.png)

   

1. [**Stage name (ステージ名)**] に、ビルドステージの名前 (例: **Build**) を入力します。別の名前を選択する場合は、この手順全体でそれを使用します。

1. 選択したステージの中で、[**アクションの追加**] を選択します。
**注記**  
この手順では、ビルドステージの中にビルドアクションを追加する方法について説明します。ビルドアクションを別の場所に追加するには、目的の場所で [**Add action (アクションの追加)**] を選択します。まず、ビルドアクションを追加する既存のステージで [**Edit stage (ステージを編集)**] アイコンを選択する必要があります。

1. [**アクションの編集**] の [**アクション名**] に、アクションの名前 (例: **CodeBuild**) を入力します。別の名前を選択する場合は、この手順全体でそれを使用します。

1. **[Action provider]** (アクションプロバイダー) で、**[CodeBuild]** を選択します。

1. 既存のビルドプロジェクトを使用する場合は、**[Project name]** (プロジェクト名) で、ビルドプロジェクトの名前を選択し、この手順の次のステップにスキップします。

   新しい CodeBuild ビルドプロジェクトを作成する必要がある場合は、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」の手順に従ってから、この手順に戻ります。

   既存のビルドプロジェクトを選択した場合、ビルド出力アーティファクトの設定がすでに定義されている必要があります (ただし、CodePipeline によってビルド出力の設定が上書きされます)。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)」にある「**アーティファクト**」の説明を参照してください。
**重要**  
CodeBuild プロジェクトのウェブフックを有効にして、プロジェクトを CodePipeline のビルドステップとして使用すると、コミットごとに 2 つの等しいビルドが作成されます。1 つのビルドはウェブフックを通じてトリガーされ、別の 1 つは CodePipeline を通じてトリガーされます。請求はビルド単位で発生するため、両方のビルドに対して課金されます。したがって、CodePipeline を使用する場合は、CodeBuild でウェブフックを無効にすることをお勧めします。CodeBuild コンソールで、**[Webhook]** ボックスをオフにします。詳細については、[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)を参照してください。

1. [**入力アーティファクト**] で、この手順で前に書き留めた出力アーティファクトを選択します。

1. [**出力アーティファクト**] で、出力アーティファクトの名前を入力します (例: **MyAppBuild**)。

1. [**Add action**] を選択します。

1. [**Save (保存)**]、[**Save (保存)**] の順に選択し、パイプラインの変更を保存します。

1. [**Release change**] を選択します。

1. パイプラインが正常に実行されたら、ビルド出力アーティファクトを取得できます。CodePipeline コンソールにパイプラインを表示した状態で、**[Build]** (ビルド) アクションでツールヒントを選択します。[**Output artifact**] の値をメモします (例: **MyAppBuild**)。
**注記**  
ビルド出力アーティファクトを取得するには、CodeBuild コンソールのビルドの詳細ページで **[Build artifacts]** (ビルドアーティファクト) リンクを選択することもできます。このページの内容を表示するには、「[ビルドの詳細の表示 (コンソール)](view-build-details.md#view-build-details-console)」を参照して、この手順のステップ 31 に進みます。

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. バケットのリストで、パイプラインで使用されるバケットを開きます。バケット名は、`codepipeline-region-ID-random-number` の形式に従う必要があります。を使用して CodePipeline **get-pipeline** コマンド AWS CLI を実行し、バケットの名前を取得できます。

   ```
   aws codepipeline get-pipeline --name my-pipeline-name
   ```

    出力では、`pipeline` オブジェクトには `artifactStore` オブジェクトが含まれ、それには、バケットの名前と `location` の値が含まれます。

1. パイプラインの名前と一致するフォルダを開きます (パイプライン名の長さによってはフォルダ名が切り詰められている場合があります)。次に、この手順で前に書き留めた [**出力アーティファクト**] の値と一致するフォルダを開きます。

1.  ファイルの内容を展開します。そのフォルダに複数のファイルがある場合は、[**Last Modified**] タイムスタンプが最新であるファイルの内容を抽出します。(システムの ZIP ユーティリティで操作できるように、必要に応じて、ファイルに `.zip` 拡張子を付けます。) ビルド出力アーティファクトは、展開されたファイルの内容に含まれます。

1. CodePipeline にビルド出力アーティファクトをデプロイするよう指示した場合は、デプロイプロバイダの説明を活用してデプロイターゲットのビルド出力アーティファクトを取得します。

# CodeBuild テストアクションをパイプラインに追加する (CodePipeline コンソール)
<a name="how-to-create-pipeline-add-test"></a>

1. 以下を使用して にサインイン AWS マネジメントコンソール します。
   +  AWS ルートアカウント。これは推奨されません。詳細については、*ユーザーガイド*の「[アカウントルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。
   +  AWS アカウントの管理者ユーザー。詳細については、「 *ユーザーガイド*[」の「最初の AWS アカウント ルートユーザーとグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)」を参照してください。
   + 以下の最小アクションセットを実行するアクセス許可を持つ AWS アカウントのユーザー。

     ```
     codepipeline:*
     iam:ListRoles
     iam:PassRole
     s3:CreateBucket
     s3:GetBucketPolicy
     s3:GetObject
     s3:ListAllMyBuckets
     s3:ListBucket
     s3:PutBucketPolicy
     codecommit:ListBranches
     codecommit:ListRepositories
     codedeploy:GetApplication
     codedeploy:GetDeploymentGroup
     codedeploy:ListApplications
     codedeploy:ListDeploymentGroups
     elasticbeanstalk:DescribeApplications
     elasticbeanstalk:DescribeEnvironments
     lambda:GetFunctionConfiguration
     lambda:ListFunctions
     opsworks:DescribeStacks
     opsworks:DescribeApps
     opsworks:DescribeLayers
     ```

1. CodePipeline コンソール ([http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)) を開きます。

1.  AWS リージョンセレクタで、パイプラインがある AWS リージョンを選択します。これは、CodeBuild がサポートされている AWS リージョンである必要があります。詳細については、「*Amazon Web Services 全般のリファレンス*」の「[AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)」を参照してください。

1. [**Pipelines (パイプライン)**] ページで、パイプラインの名前を選択します。

1. パイプラインの詳細ページの [**ソース**] アクションで、ツールヒントを選択します。[**Output artifact (出力アーティファクト)**] の値 (例: **MyApp**) をメモします。
**注記**  
この手順では、[**Source**] ステージと [**Beta**] ステージの間のテストステージ内にテストアクションを追加する方法について説明します。テストアクションを別の場所に追加する場合は、直前のアクションにマウスポインタを合わせ、[**Output artifact**] の値をメモします。

1. **[編集]** を選択します。

1. [**ソース**] ステージのすぐ後で、[**Add stage (ステージの追加)**] を選択します。
**注記**  
この手順では、パイプラインの [**Source**] ステージの直後にテストステージを追加する方法を示します。既存のステージにテストアクションを追加するには、ステージで [**Edit stage (ステージを編集)**] を選択し、この手順のステップ 8 に進みます。テストステージを別の場所に追加するには、目的の場所で [**Add stage (ステージの追加)**] を選択します。  
![\[パイプラインの [ソース] ステージの直後にテストステージを追加する方法を示します。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/create-stage.png)

   

1. [**ステージ名**] に、テストステージの名前 (例: **Test**) を入力します。別の名前を選択する場合は、この手順全体でそれを使用します。

1. 選択されたステージで、[**アクションの追加**] を選択します。
**注記**  
この手順は、テストステージにテストアクションを追加する方法を示します。テストアクションを別の場所に追加するには、目的の場所で [**Add action (アクションの追加)**] を選択します。まず、テストアクションを追加する既存のステージで [**Edit (編集)**] アイコンを選択する必要があります。

1. [**アクションの編集**] の [**アクション名**] に、アクションの名前 (例: **Test**) を入力します。別の名前を選択する場合は、この手順全体でそれを使用します。

1. **[Action provider]** (アクションプロバイダー) の **[Test]** (テスト) で、**[CodeBuild]** を選択します。

1. 既存のビルドプロジェクトを使用する場合は、**[Project name]** (プロジェクト名) で、ビルドプロジェクトの名前を選択し、この手順の次のステップにスキップします。

   新しい CodeBuild ビルドプロジェクトを作成する必要がある場合は、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」の手順に従ってから、この手順に戻ります。
**重要**  
CodeBuild プロジェクトのウェブフックを有効にして、プロジェクトを CodePipeline のビルドステップとして使用すると、コミットごとに 2 つの等しいビルドが作成されます。1 つのビルドはウェブフックを通じてトリガーされ、別の 1 つは CodePipeline を通じてトリガーされます。請求はビルド単位で発生するため、両方のビルドに対して課金されます。したがって、CodePipeline を使用する場合は、CodeBuild でウェブフックを無効にすることをお勧めします。CodeBuild コンソールで、**[Webhook]** ボックスをオフにします。詳細については、[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)を参照してください。

1. [**入力アーティファクト**] で、この手順で前に書き留めた [**出力アーティファクト**] の値を選択します。

1. (オプション) テストアクションで出力アーティファクトを生成し、それに応じてビルド仕様を設定する場合は、出力アーティファクトに割り当てる値を [**出力アーティファクト**] に入力します。

1. **[保存]** を選択します。

1. [**Release change**] を選択します。

1. パイプラインが正常に実行された後、テスト結果を取得できます。パイプラインの **[Test]** (テスト) ステージで **[CodeBuild]** ハイパーリンクを選択し、CodeBuild コンソールで関連するビルドプロジェクトのページを開きます。

   

1. ビルドプロジェクトページの [**Build history**] エリアで、[**Build run**] ハイパーリンクを選択します。

1. ビルドの実行ページの **[Build logs]** (ビルドログ) エリアで、**[View entire log]** (ログ全体の表示) ハイパーリンクを選択し、Amazon CloudWatch コンソールでビルドログを開きます。

1. ビルドログをスクロールして、テスト結果を表示します。