

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

# 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` 拡張子を付けます。) ビルド出力アーティファクトは、展開されたファイルの内容に含まれます。