

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

# CodeBuild AWS Secrets Manager のサンプルを含むプライベートレジストリ
<a name="sample-private-registry"></a>

 このサンプルでは、プライベートレジストリに保存されている Docker イメージを AWS CodeBuild ランタイム環境として使用する方法を示します。プライベートレジストリの認証情報は AWS Secrets Managerに保存されています。CodeBuild では任意のプライベートレジストリを使用できます。このサンプルでは Docker Hub を使用します。

**注記**  
シークレットはアクションに表示され、ファイルに書き込まれる際にマスクされません。

**Topics**
+ [プライベートレジストリのサンプルの要件](#sample-private-registry-requirements)
+ [プライベートレジストリを使用した CodeBuild プロジェクトの作成](private-registry-sample-create-project.md)
+ [セルフホスト型ランナーのプライベートレジストリ認証情報を設定する](private-registry-sample-configure-runners.md)

## プライベートレジストリのサンプルの要件
<a name="sample-private-registry-requirements"></a>

 でプライベートレジストリを使用するには AWS CodeBuild、以下が必要です。
+  Docker Hub 認証情報を保存する Secrets Manager シークレット。この認証情報を使用してプライベートリポジトリにアクセスします。
**注記**  
作成したシークレットに対して料金が発生します。
+  プライベートリポジトリまたはアカウント。
+  Secrets Manager シークレットへのアクセス許可を付与する CodeBuild サービスロールの IAM ポリシー。

 これらのリソースを作成し、プライベートレジストリに保存されている Docker イメージを使用して CodeBuild ビルドプロジェクトを作成するには、以下の手順に従います。

# プライベートレジストリを使用した CodeBuild プロジェクトの作成
<a name="private-registry-sample-create-project"></a>

1. 無料のプライベートリポジトリを作成する方法については、[Docker Hub のリポジトリ](https://docs.docker.com/docker-hub/repos/)に関するページを参照してください。ターミナルで以下のコマンドを実行して、イメージのプル、ID の取得、新しいリポジトリへのプッシュを行うこともできます。

   ```
   docker pull amazonlinux
   docker images amazonlinux --format {{.ID}}
   docker tag image-id your-username/repository-name:tag
   docker login
   docker push your-username/repository-name
   ```

1.  *AWS Secrets Manager 「 ユーザーガイド*」の「 [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」の手順に従います。

   

   1.  ステップ 3 の **[シークレットのタイプを選択]** で、**[他の種類のシークレット]** を選択します。

   1. **[キー/値のペア]** で、Docker Hub ユーザー名として 1 つのキーと値のペアを作成し、Docker Hub パスワードとして 1 つのキーと値のペアを作成します 

   1.  「 [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」の手順に従ってください。

   1.  ステップ 5 の **[自動ローテーションの設定]** ページで、自動ローテーションをオフにします。キーは Docker Hub の認証情報に対応しているためです。

   1.  「 [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」のステップに従います。

    詳細については、「[What is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)」を参照してください。

1.  コンソールで AWS CodeBuild プロジェクトを作成すると、CodeBuild は必要なアクセス許可をアタッチします。以外の AWS KMS キーを使用する場合は`DefaultEncryptionKey`、サービスロールに追加する必要があります。詳細については、『[g852]IAM ユーザーガイド[/g852]』の「[g851]ロールの修正 (コンソール)[/g851]」を参照してください。

    Secrets Manager で使用するサービスロールには、少なくとも `secretsmanager:GetSecretValue` アクセス許可が必要です。  
![\[サービスロールの設定。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  コンソールでプライベートレジストリに保存されている環境を使用してプロジェクトを作成するには、プロジェクトの作成時に以下の操作を行います。詳細については、[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console) を参照してください。
**注記**  
 プライベートレジストリが VPC 内にある場合は、パブリックインターネットアクセスが必要です。CodeBuild は、VPC 内のプライベート IP アドレスからイメージを取得できません。

   1.  **[環境イメージ]** で、**[カスタムイメージ]** を選択します。

   1.  [**Environment type (環境タイプ)**] で、[**Linux**] または [**Windows**] を選択します。

   1.  **[イメージレジストリ]** で、**[その他のレジストリ]** を選択します。

   1.  **[外部レジストリの URL]** で、画像の場所を入力し、**[レジストリの認証情報 - オプション]** で Secrets Manager の認証情報の ARN または名前を入力します。
**注記**  
 認証情報が現在のリージョンに存在しない場合は、ARN を使用する必要があります。認証情報が別のリージョンに存在する場合、認証情報の名前は使用できません。

# セルフホスト型ランナーのプライベートレジストリ認証情報を設定する
<a name="private-registry-sample-configure-runners"></a>

セルフホスト型ランナーのレジストリ認証情報を設定するには、次の手順に従います。

**注記**  
これらの認証情報は、イメージがプライベートレジストリのイメージで上書きされている場合にのみ使用されることに注意してください。

------
#### [ AWS Management Console ]

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

1. ビルドプロジェクトを作成するか、既存のプロジェクトを選択します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[ビルドプロジェクトの設定の変更 (コンソール)](change-project.md#change-project-console)」を参照してください。

1.  **[環境]** で、**[追加設定]** を選択します。

1.  **追加設定**で、レジストリ認証情報 AWS Secrets Manager の からシークレットの名前または ARN を入力します。オプションです。 ****  
![\[レジストリ認証情報の設定。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/registry-credential.png)

------
#### [ AWS CLI ]

1. 新しいプロジェクトを作成する場合は、**create-project** コマンドを実行します。

   ```
   aws codebuild create-project \
       --name project-name \
       --source type=source-type,location=source-location \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn},imagePullCredentialsType=CODEBUILD|SERVICE_ROLE" \
       --artifacts type=artifacts-type \
       --service-role arn:aws:iam::account-ID:role/service-role/service-role-name
   ```

1. 既存のプロジェクトを更新する場合は、**update-project** コマンドを実行します。

   ```
   aws codebuild update-project \
       --name project-name \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn}"
   ```

------