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 プライベートリポジトリ へのアクセスを許可できます AWS リージョン。その後、プライベートリポジトリからコンテナサービスにイメージをデプロイすることができます。

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

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

目次

必要なアクセス許可

Amazon ECR プライベートリポジトリへの Lightsail コンテナサービスへのアクセスを管理するユーザーには、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/*" } ] }

ポリシーで、 を AWS アカウント ID 番号AwsAccountIdに置き換えます。

特定の 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 コンソールを使用して、Amazon ECR プライベートリポジトリへの Lightsail コンテナサービスのアクセスを管理するには、以下の手順を実行します。

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

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

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

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

    Lightsail コンソールのコンテナサービス管理ページのイメージタブ
  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) を使用して Lightsail コンテナサービスから Amazon ECR プライベートリポジトリへのアクセスを管理するには、次のステップが必要です。

重要

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

  1. Amazon ECR イメージプーラー IAM ロールを有効または無効にする AWS CLI update-container-service — Lightsail の コマンドを使用して、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 の set-repository-policy コマンドを使用して AWS CLI 、コンテナサービスの Amazon ECR イメージプーラーロールプリンシパル ARN を、既存のポリシーを持つプライベートリポジトリに追加します。詳細については、本ガイドの後半にある「ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する」を参照してください。

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

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

Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロールをアクティブ化または非アクティブ化するには、次の手順を実行します。Lightsail の update-container-service コマンドを使用して、Amazon ECR イメージプーラー IAM ロールを AWS CLI アクティブ化または非アクティブ化できます。詳細については、「 コマンドリファレンスupdate-container-service」の「」を参照してください。 AWS CLI

注記

この手順を続行する前に、 をインストール 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を使用できます。詳細については、 コマンドリファレンスupdate-container-serviceの「」を参照してください。 AWS CLI

注記

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

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

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

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

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

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

    • AwsRegionCode — 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 コマンドでそのファイルを参照します。詳細については、 コマンドリファレンスset-repository-policyの「」を参照してください。 AWS CLI

注記

この手順を続行する前に、 をインストール 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" ] } ] }

    テキストで、 を、このガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールプリンシパル ARN IamRolePrincipalArnに置き換えます。

  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 ファイルへのパスです。

    • AwsRegionCode — 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 番号。

    • AwsRegionCode — 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 コマンドで参照します。詳細については、 コマンドリファレンスset-repository-policyの「」を参照してください。 AWS CLI

注記

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

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

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

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

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

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

    • AwsRegionCode — 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. テキストで、 を、このガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールプリンシパル ARN IamRolePrincipalArnに置き換えます。

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

    完成したポリシーステートメント 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 ファイルへのパスです。

    • AwsRegionCode — 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 番号。

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

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

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

    例:

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