CodeBuild 用の AWS Secrets Manager を使用したプライベートレジストリのサンプル - AWS CodeBuild

CodeBuild 用の AWS Secrets Manager を使用したプライベートレジストリのサンプル

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

注記

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

プライベートレジストリのサンプルの要件

AWS CodeBuild でプライベートレジストリを使用するには、以下が必要です。

  • Docker Hub 認証情報を保存する Secrets Manager シークレット。この認証情報を使用してプライベートリポジトリにアクセスします。

  • プライベートリポジトリまたはアカウント。

  • Secrets Manager シークレットへのアクセス許可を付与する CodeBuild サービスロールの IAM ポリシー。

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

プライベートレジストリを使用した CodeBuild プロジェクトの作成

  1. 無料のプライベートリポジトリを作成する方法については、Docker Hub のリポジトリに関するページを参照してください。ターミナルで以下のコマンドを実行して、イメージのプル、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
  2. 基本的なシークレットを作成する」 (AWS Secrets Manager ユーザーガイド) の手順に従います。ステップ 3 の [シークレットタイプの選択] で、以下の操作を行います。

    1. [他の種類のシークレット] を選択します。

    2. [シークレットキー/値] で、Docker Hub ユーザー名用の 1 つのキーと値のペアを作成し、Docker Hub パスワード用の 1 つのキーと値のペアを作成します

    3. [シークレット名] に「dockerhub」などの名前を入力します。これが Docker Hub のシークレットであることを忘れないようにオプションの説明を入力できます。

    4. キーは Docker Hub の認証情報に対応しているため、[自動ローテーションを無効化] は選択したままにします。

    5. [シークレットの保存] を選択します。

    6. 設定内容を確認したら、ARN を書き留めます。このサンプルで後ほど使用します。

    詳細については、「AWS Secrets Manager とは」を参照してください。

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

    Secrets Manager で使用するサービスロールには、少なくとも secretsmanager:GetSecretValue アクセス許可が必要です。

  4. コンソールでプライベートレジストリに保存されている環境を使用してプロジェクトを作成するには、プロジェクトの作成時に以下の操作を行います。詳細については、ビルドプロジェクトの作成 (コンソール) を参照してください。

    注記

    プライベートレジストリが VPC 内にある場合は、パブリックインターネットアクセスが必要です。CodeBuild は、VPC 内のプライベート IP アドレスからイメージを取得できません。

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

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

    3. [Custom image type (カスタムイメージタイプ)] で、[Other location (他の場所)] を選択します。

    4. [Other location (他の場所)] に、イメージの場所と Secrets Manager の認証情報の ARN または名前を入力します。

      注記

      認証情報が現在のリージョンに存在しない場合は、ARN を使用する必要があります。認証情報が別のリージョンに存在する場合、認証情報の名前は使用できません。