Lightsail の Amazon ECR プライベートリポジトリへのアクセスを管理する - Amazon Lightsail

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

Lightsail の Amazon ECR プライベートリポジトリへのアクセスを管理する

Amazon Elastic Container Registry (Amazon ECR) は AWS Identity and Access Management (IAM) を使用したリソースベースのアクセス権限によるプライベートリポジトリをサポートする AWS マネージドコンテナイメージレジストリサービスです。Amazon Lightsail コンテナサービスに対して、Amazon ECR プライベートリポジトリへのアクセスを許可することができます。その後、プライベートリポジトリからコンテナサービスにイメージをデプロイすることができます。

Lightsail コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Lightsail コンテナサービスと Amazon ECR プライベートリポジトリのアクセスを管理できます。ただし、プロセスを簡素化するため Lightsail コンソールの使用をお勧めします。

コンテナサービスの詳細については、「コンテナサービス」を参照してください。Amazon ECR の詳細については、「Amazon ECR ユーザーガイド」を参照してください。

目次

必要なアクセス許可

Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理するユーザーは、IAM で以下のいずれかのアクセス許可ポリシーを持つ必要があります。詳細については、[AWS Identity and Access Management ユーザーガイド]の「IAM ID アクセス許可の追加と削除」を参照してください。

任意の Amazon ECR プライベートリポジトリにアクセス権を付与する

以下のアクセス許可ポリシーは、任意の Amazon ECR プライベートリポジトリへのアクセスを設定する権限をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:*:AwsAccountId:repository/*" } ] }

ポリシー内で、AwsAccountId をお使いの AWS アカウント ID ナンバーに置き換えます。

特定の Amazon ECR プライベートリポジトリにアクセス権を付与する

以下のアクセス許可ポリシーは、特定の AWS リージョン 内の特定の Amazon ECR プライベートリポジトリへのアクセスを設定する権限をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:AwsRegion:AwsAccountId:repository/RepositoryName" } ] }

ポリシー内で、次のサンプルテキストを独自のテキストに置き換えます。

  • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1)。Lightsail コンテナサービスが、アクセスするプライベートリポジトリと同じ AWS リージョン に存在する必要があります。

  • AwsAccountId — AWS アカウント ID ナンバー。

  • RepositoryName — アクセスを管理するプライベートリポジトリの名前。

以下は、アクセス許可ポリシーに例の値を入力した一例です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-private-repo" } ] }

Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する

Lightsail コンソールを使用して Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理するには、次の手順を実行します。

  1. Lightsail コンソールにサインインします。

  2. Lightsail コンソールのホームページで、[Containers] (コンテナ) タブを選択します。

  3. Amazon ECR プライベートリポジトリへのアクセスを設定したいコンテナサービスの名前を選択します。

    
                        Lightsail コンソールのコンテナサービス
  4. [Images] (イメージ) タブを選択します。

    
                        Lightsail コンソールのコンテナサービス管理ページにある [Images] (イメージ) タブ
  5. [リポジトリの追加] を選択すると、コンテナサービスの Amazon ECR プライベートリポジトリへのアクセス権が付与されます。

    注記

    [削除] を選択すると、以前に追加した Amazon ECR プライベートリポジトリからコンテナサービスのアクセスが削除されます。

    
                        [イメージ] タブの「Amazon ECR プライベートリポジトリ」セクション
  6. 表示されるドロップダウンから、アクセスするプライベートリポジトリを選択し、[Add] (追加) を選択します。

    
                        Amazon ECR プライベートリポジトリドロップダウンの選択

    Lightsail プリンシパル Amazon リソースネーム (ARN) を含むコンテナサービスの Amazon ECR イメージプーラー IAM ロールを有効にするまでに時間がかかります。Lightsail は選択した Amazon ECR プライベートリポジトリのアクセス権限ポリシーに IAM ロールプリンシパル ARN を自動的に追加します。これにより、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。プロセスが完了し、[Continue] (続行) を選択できることを示すモーダルが表示されるまで、ブラウザウィンドウは閉じないでください。

    
                        アクセス許可が Amazon ECR プライベートリポジトリに追加されていることを確認するモーダル  
  7. アクティベーションが完了したら、[Continue] (続行) を選択します。

    選択した Amazon ECR プライベートリポジトリが追加されると、このページの [Amazon ECR プライベートリポジトリ] セクションに表示されます。このページには、プライベートリポジトリから Lightsail コンテナサービスにイメージをデプロイする方法の手順が含まれています。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイの作成時に、ページに [Image] (イメージ) の値として表示される URI 形式を指定します。指定する URI では、イメージタグの例を、デプロイしたいイメージのタグに置き換えます。詳細については、「コンテナサービスのデプロイの作成と管理」を参照してください。

    
                        Amazon ECR プライベートリポジトリを追加した後の次のステップ

AWS CLI を使用してプライベートリポジトリへのアクセスを管理する

AWS Command Line Interface (AWS CLI) を使用して、Amazon ECR プライベートリポジトリへの Lightsail コンテナサービスのアクセスを管理するには、以下の手順が必要です。

重要

Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理する際には、プロセスが簡潔になるため Lightsail コンソールを使用することを推奨します。詳細については、本ガイドの前半の「Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する」を参照してください。

  1. Amazon ECR イメージプーラー IAM ロールを有効または無効化する — Lightsail の AWS CLI update-container-service コマンドを使用して Amazon ECR イメージプーラー IAM ロールを有効または無効にします。有効にすると、Amazon ECR イメージプーラー IAM ロールにプリンシパル Amazon リソースネーム (ARN) が作成されます。詳細については、このガイドの「Amazon ECR イメージプーラー IAM ロールを有効または無効にする」セクションを参照してください。

  2. Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを判断する — Amazon ECR イメージプーラー IAM ロールを有効にした後、コンテナサービスでアクセスしたい Amazon ECR プライベートリポジトリに既存のポリシーステートメントがあるかどうかを判断する必要があります。詳細については、このガイドの後半にある「Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを判断する」を参照してください。

    リポジトリに既存のポリシーステートメントがあるかどうかに応じて、次のいずれかの方法を使用して IAM ロールプリンシパル ARN をリポジトリに追加します。

    1. ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する — Amazon ECR の AWS CLI set-repository-policy コマンドを使用して、コンテナサービスの Amazon ECR イメージプーラーロールプリンシパル ARN を既存のポリシーを有するプライベートリポジトリに追加することができます。詳細については、本ガイドの後半にある「ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する」を参照してください。

    2. ポリシーステートメントを持っているプライベートリポジトリにポリシーを追加する — Amazon ECR の AWS CLI set-repository-policy コマンドを使用して、コンテナサービスの Amazon ECR イメージプーラーロールを既存のポリシーを持たないプライベートリポジトリに追加することができます。詳細については、本ガイドの後半にある「ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する」を参照してください。

Amazon ECR イメージプラー IAM ロールを有効または無効にする

以下の手順を完了し、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロールを有効または無効にします。Lightsail の AWS CLI update-container-service コマンドを使用することで、Amazon ECR イメージプーラー IAM ロールを有効または無効にすることができます。詳細については、「AWS CLI コマンドリファレンス」の「update-container-service」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 次のコマンドを入力して、コンテナサービスを更新し、Amazon ECR イメージプーラー IAM ロールを有効または無効にします。

    aws lightsail update-container-service --service-name ContainerServiceName --private-registry-access ecrImagePullerRole={isActive=RoleActivationState} --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • ContainerServiceName — Amazon ECR イメージプーラー IAM ロールを有効または無効にするコンテナサービスの名前です。

    • RoleActivationState — Amazon ECR イメージプーラー IAM ロールのアクティブ化状態です。ロールを有効にするには true を指定し、無効にするには false を指定します。

    • AwsRegionCode — コンテナサービスの AWS リージョンコード (例えば、us-east-1)。

    例:

    • Amazon ECR イメージプーラー IAM ロールを有効にするには:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
    • Amazon ECR イメージプーラー IAM ロールを無効にするには:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=false} --region us-east-1
  3. オプション:

    • Amazon ECR イメージプーラーロールを有効にした場合 — 前のレスポンスを取得後は、少なくとも 30 秒待機します。その後、次のステップに進んで、コンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得します。

    • Amazon ECR イメージプーラーロールを無効にした場合 — 以前に Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を Amazon ECR プライベートリポジトリのアクセス許可ポリシーに追加している場合、リポジトリからこのアクセス許可ポリシーを削除する必要があります。詳細については、「Amazon ECR ユーザーガイド」の「プライベートリポジトリポリシーステートメントを削除する」を参照してください。

  4. 次のコマンドを入力して、コンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得します。

    aws lightsail get-container-services --service-name ContainerServiceName --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • ContainerServiceName — Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得するためのコンテナサービスの名前です。

    • AwsRegionCode — コンテナサービスの AWS リージョンコード (例えば、us-east-1)。

    例:

    aws lightsail get-container-services --service-name my-container-service --region us-east-1

    レスポンスに ECR イメージプーラー IAM ロールのプリンシパル ARN がないか探します。ロールがリストにある場合は、コピーして書き留めます。本ガイドの次のセクションで必要になります。次に、コンテナサービスでアクセスしたい Amazon ECR プライベートリポジトリに、既存のポリシーステートメントがあるかどうかを見極める必要があります。本ガイドの「Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極める」のセクションに進んでください。

Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極める

以下の手順で、Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極めます。Amazon ECR 用の AWS CLI get-repository-policy コマンドを使用できます。詳細については、「AWS CLI コマンドリファレンス」の「update-container-service」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Amazon ECR 用に設定する必要があります。詳細については、「Amazon ECR ユーザーガイド」の「Amazon ECR でのセットアップ」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、特定のプライベートリポジトリのポリシーステートメントを取得します。

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • RepositoryName — Lightsail コンテナサービスへのアクセスを設定するプライベートリポジトリの名前です。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    例:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1

    以下のレスポンスのいずれかが表示されます。

ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する

以下の手順に従って、ポリシーステートメントを持たない Amazon ECR プライベートリポジトリにポリシーを追加します。追加するポリシーには、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロール プリンシパル ARN を含める必要があります。これにより、コンテナサービスにアクセス権が付与され、プライベートリポジトリからイメージをデプロイできるようになります。

重要

Lightsail コンソールを使用してアクセスを設定すると、Lightsail は Amazon ECR イメージプーラーロールを Amazon ECR プライベートリポジトリに自動的に追加します。この場合、このセクションの手順を使用して、プライベートリポジトリに Amazon ECR イメージプーラーロールを手動で追加する必要はありません。詳細については、本ガイドの前半の「Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する」を参照してください。

AWS CLI を使用して、プライベートリポジトリにポリシーを追加できます。これを行うには、ポリシーを含む JSON ファイルを作成し、Amazon ECR の set-repository-policy コマンドでそのファイルを参照します。詳細については、「AWS CLI コマンドリファレンス」の「set-repository-policy」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Amazon ECR 用に設定する必要があります。詳細については、「Amazon ECR ユーザーガイド」の「Amazon ECR でのセットアップ」を参照してください。

  1. テキストエディタを開き、次のポリシーステートメントを新しいテキストファイルに貼り付けます。

    { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

    テキストファイル内では、IamRolePrincipalArn を、本ガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN に置き換えてください。

  2. ファイルを ecr-policy.json という名前で、コンピュータ上のアクセス可能な場所 (例: Windows では C:\Temp\ecr-policy.json、macOS や Linux では /tmp/ecr-policy.json) に保存します。

  3. 作成された ecr-policy.json ファイルのファイルパスの場所を書き留めます。この手順の後半に出てくるコマンドで、これを指定します。

  4. ターミナルまたはコマンドプロントウィンドウを開きます。

  5. 以下のコマンドを入力して、コンテナサービスを使ってアクセスしたいプライベートリポジトリのポリシーステートメントを設定します。

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • RepositoryName — ポリシーを追加するプライベートリポジトリの名前です。

    • path/to/ — 本ガイドの前半部分で作成した、コンピュータ上の ecr-policy.json ファイルへのパスです。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    例:

    • Windows の場合:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • macOS または Linux の場合:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    これで、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイのイメージ値として以下の URI を指定します。URI 内のタグ例を、デプロイしたいイメージのタグに置き換えます。詳細については、「コンテナサービスのデプロイの作成と管理」を参照してください。

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    URI 内の次のサンプルテキストを自身が使用するテキストに置き換えます。

    • AwsAccountId — AWS アカウント ID ナンバー。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    • RepositoryName — コンテナイメージをデプロイするプライベートリポジトリの名前です。

    • ImageTag — コンテナサービスにデプロイするプライベートリポジトリのコンテナイメージのタグです。

    例:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage

ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する

以下の手順に従って、ポリシーステートメントを有する Amazon ECR プライベートリポジトリにポリシーを追加します。追加するポリシーには、既存のポリシーと、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロール プリンシパル ARN が含まれる新しいポリシーを含める必要があります。これにより、プライベートリポジトリ上にある既存のアクセス許可が維持されながら、同時にプライベートリポジトリからイメージをデプロイするためのコンテナサービスへのアクセス権も付与されます。

重要

Lightsail コンソールを使用してアクセスを設定すると、Lightsail は Amazon ECR イメージプーラーロールを Amazon ECR プライベートリポジトリに自動的に追加します。この場合、このセクションの手順を使用して、プライベートリポジトリに Amazon ECR イメージプーラーロールを手動で追加する必要はありません。詳細については、本ガイドの前半の「Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する」を参照してください。

AWS CLI を使用して、プライベートリポジトリにポリシーを追加できます。これを行うには、既存のポリシーと新しいポリシーが含まれる JSON ファイルを作成します。その後、そのファイルを Amazon ECR の set-repository-policy コマンドで参照します。詳細については、「AWS CLI コマンドリファレンス」の「set-repository-policy」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Amazon ECR 用に設定する必要があります。詳細については、「Amazon ECR ユーザーガイド」の「Amazon ECR でのセットアップ」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、特定のプライベートリポジトリのポリシーステートメントを取得します。

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • RepositoryName — Lightsail コンテナサービスへのアクセスを設定するプライベートリポジトリの名前です。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    例:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
  3. レスポンスに、既存のポリシーをコピーし、次のステップに進みます。

    次の例でハイライトされている部分のように、二重引用符で囲まれた policyText の内容のみをコピーする必要があります。

    
                            ポリシーステートメントを持たないプライベートリポジトリの get-repository-policy コマンドへのレスポンス
  4. テキストエディタを開き、前の手順でコピーしたプライベートリポジトリの既存のポリシーを貼り付けます。

    結果は次の例のようになります。

    
                            ポリシーステートメント JSON ファイルの例
  5. 貼り付けたテキスト内の \n を改行に置き換え、残りの \ は削除します。

    結果は次の例のようになります。

    
                            編集されたポリシーステートメント JSON ファイルの例
  6. テキストファイルの末尾に、次のポリシーステートメントを貼り付けます。

    , { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
  7. テキストファイル内では、IamRolePrincipalArn を、本ガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN に置き換えてください。

    結果は次の例のようになります。

    
                            完成したポリシーステートメント JSON ファイルの例
  8. ファイルを ecr-policy.json という名前で、コンピュータ上のアクセス可能な場所 (例: Windows では C:\Temp\ecr-policy.json、macOS や Linux では /tmp/ecr-policy.json) に保存します。

  9. ecr-policy.json ファイルのファイルパスの場所を書き留めます。この手順の後半に出てくるコマンドで、これを指定します。

  10. ターミナルまたはコマンドプロントウィンドウを開きます。

  11. 以下のコマンドを入力して、コンテナサービスを使ってアクセスしたいプライベートリポジトリのポリシーステートメントを設定します。

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • RepositoryName — ポリシーを追加するプライベートリポジトリの名前です。

    • path/to/ — 本ガイドの前半部分で作成した、コンピュータ上の ecr-policy.json ファイルへのパスです。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    例:

    • Windows の場合:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • macOS または Linux の場合:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    次の例に示すようなレスポンスが表示されます。

    
                            set-repository-policy コマンドに対するレスポンス

    get-repository-policy コマンドをもう一度実行すると、プライベートリポジトリに新しく追加されたポリシーステートメントが表示されます。これで、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイのイメージ値として以下の URI を指定します。URI 内のタグ例を、デプロイしたいイメージのタグに置き換えます。詳細については、「コンテナサービスのデプロイの作成と管理」を参照してください。

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    URI 内の次のサンプルテキストを自身が使用するテキストに置き換えます。

    • AwsAccountId — AWS アカウント ID ナンバー。

    • AwsRegion — プライベートリポジトリの AWS リージョン コード (例: us-east-1) です。 

    • RepositoryName — コンテナイメージをデプロイするプライベートリポジトリの名前です。

    • ImageTag — コンテナサービスにデプロイするプライベートリポジトリのコンテナイメージのタグです。

    例:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage