Lightsail コンテナサービスに Amazon ECRプライベートリポジトリへのアクセスを許可する - Amazon Lightsail

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

Lightsail コンテナサービスに Amazon ECRプライベートリポジトリへのアクセスを許可する

Amazon Elastic Container Registry (Amazon ECR) は、 AWS Identity and Access Management () を使用したリソースベースのアクセス許可を持つプライベートリポジトリをサポートする AWS マネージドコンテナイメージレジストリサービスですIAM。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プライベートリポジトリへのアクセスを許可する

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

{ "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. 左側のナビゲーションペインで [コンテナ] を選択します。

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

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

    Lightsail コンソールのコンテナサービス管理ページのイメージタブ
  5. リポジトリの追加 を選択して、コンテナサービスへのアクセスを Amazon ECRプライベートリポジトリに付与します。

    注記

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

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

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

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

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

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

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

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

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

重要

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プライベートリポジトリにポリシーステートメントがあるかどうかの判断」を参照してください。

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

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

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

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

Lightsail コンテナサービスの Amazon ECRイメージプーラーIAMロールを有効または無効にするには、次の手順を実行します。Lightsail の update-container-service コマンドを使用して、Amazon ECRイメージプーラーIAMロールを AWS CLI アクティブ化または非アクティブ化できます。詳細については、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プライベートリポジトリのアクセス許可ポリシーARNに Amazon ECRイメージプーラーIAMロールプリンシパルを以前に追加した場合は、そのアクセス許可ポリシーをリポジトリから削除する必要があります。詳細については、「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

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

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

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

注記

この手順を続行するECR前に、 をインストール AWS CLI して Amazon 用に設定する必要があります。詳細については、「Amazon ユーザーガイド」の「Amazon でのセットアップECR」を参照してください。 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プライベートリポジトリにポリシーを追加するには、次の手順を実行します。追加するポリシーには、ARNLightsail コンテナサービスの Amazon ECRイメージプーラーIAMロールプリンシパルが含まれている必要があります。これにより、コンテナサービスにアクセス権が付与され、プライベートリポジトリからイメージをデプロイできるようになります。

重要

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

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

注記

この手順を続行するECR前に、 をインストール AWS CLI し、Amazon 用に設定する必要があります。詳細については、「Amazon ユーザーガイド」の「Amazon でのセットアップECR」を参照してください。 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ロールプリンシパルIamRolePrincipalArnに置き換え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ファイルへのパス。

    • 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、例をデプロイするイメージの tag タグに置き換えます。詳細については、「コンテナサービスのデプロイの作成と管理」を参照してください。

    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プライベートリポジトリにポリシーを追加するには、次の手順を実行します。追加するポリシーには、既存のポリシーと、ARNLightsail コンテナサービスの Amazon ECRイメージプーラーIAMロールプリンシパルを含む新しいポリシーが含まれている必要があります。これにより、プライベートリポジトリ上にある既存のアクセス許可が維持されながら、同時にプライベートリポジトリからイメージをデプロイするためのコンテナサービスへのアクセス権も付与されます。

重要

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

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

注記

この手順を続行するECR前に、 をインストール AWS CLI して Amazon 用に設定する必要があります。詳細については、「Amazon ユーザーガイド」の「Amazon でのセットアップECR」を参照してください。 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ロールプリンシパルIamRolePrincipalArnに置き換え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ファイルへのパス。

    • 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、例をデプロイするイメージの tag タグに置き換えます。詳細については、「コンテナサービスのデプロイの作成と管理」を参照してください。

    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