授予 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取權 - Amazon Lightsail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

授予 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取權

Amazon Elastic Container Registry (Amazon ECR) 是一種 AWS 受管容器映像登錄服務,支援具有以資源為基礎的許可的私有儲存庫,使用 AWS Identity and Access Management (IAM)。您可以讓 Amazon Lightsail 容器服務存取您的 Amazon ECR私有儲存庫 AWS 區域。然後,可以將映像從私有儲存庫部署至容器服務。

您可以使用 Lightsail 主控台或 AWS Command Line Interface () 來管理 Lightsail 容器服務和 Amazon ECR私有儲存庫的存取權AWS CLI。不過,我們建議您使用 Lightsail 主控台,因為它可簡化程序。

如需有關容器服務的詳細資訊,請參閱容器服務。如需 Amazon 的詳細資訊ECR,請參閱 Amazon ECR使用者指南

內容

所需的許可

將管理 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取權的使用者,必須在 中具有下列其中一個許可政策IAM。如需詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的新增和移除IAM身分許可

授予對任何 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私有儲存庫的存取權

下列許可政策授予使用者許可,以設定對特定 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 主控台來管理 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取。

  1. 登入 Lightsail 主控台

  2. 在左側導覽窗格中,選擇容器

  3. 選擇您要設定 Amazon ECR私有儲存庫存取權的容器服務名稱。

    Lightsail 主控台中的容器服務
  4. 選擇 Images (映像) 索引標籤。

    Lightsail 主控台容器服務管理頁面中的映像索引標籤
  5. 選擇新增儲存庫,將容器服務的存取權授予 Amazon ECR私有儲存庫。

    注意

    您可以選擇移除,從先前新增的 Amazon ECR私有儲存庫中移除容器服務的存取權。

    映像索引標籤的 Amazon ECR私有儲存庫區段
  6. 在顯示的下拉式選單中,選擇要存取的私有儲存器,然後選擇 Add (新增)。

    Amazon ECR私有儲存庫下拉式清單選擇

    Lightsail 需要一些時間來為您的容器服務啟用 Amazon ECR映像提取器IAM角色,其中包含主體 Amazon Resource Name (ARN)。接著 Lightsail 會自動將IAM角色主體新增至您選取的 Amazon ECR私有儲存庫的ARN許可政策。這將授予容器服務對私有儲存庫及其映像的存取權。強制回應視窗出現並表明程序已完成且您可以選擇 Continue (繼續) 之前,請勿關閉瀏覽器視窗。

    確認許可已新增至 Amazon ECR私有儲存庫的修改
  7. 啟用完成後,請選擇 Continue (繼續)。

    新增選取的 Amazon ECR私有儲存庫後,它會列在頁面的 Amazon ECR私有儲存庫區段中。此頁面包含如何將映像從私有儲存庫部署到 Lightsail 容器服務的指示。若要使用私有儲存庫中的映像,請在建立容器服務部署時,指定頁面上顯示的URI格式做為映像值。在您URI指定的 中,將範例取代{image tag}為您要部署之映像的標籤。如需詳細資訊,請參閱建立和管理容器服務部署

    新增 Amazon ECR私有儲存庫後的後續步驟

使用 AWS CLI 管理私有儲存庫的存取權

使用 AWS Command Line Interface (AWS CLI) 管理 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取需要下列步驟:

重要

我們建議您使用 Lightsail 主控台來管理 Lightsail 容器服務對 Amazon ECR私有儲存庫的存取,因為它可簡化程序。如需詳細資訊,請參閱本指南稍早的使用 Lightsail 主控台來管理私有儲存庫的存取

  1. 啟用或停用 Amazon ECR映像提取器IAM角色 — AWS CLI update-container-service使用 Lightsail 的 命令來啟用或停用 Amazon ECR映像提取器IAM角色。當您啟用時,會為 Amazon ECR映像提取器IAM角色建立主體 Amazon Resource Name (ARN)。如需詳細資訊,請參閱本指南的啟用或停用 Amazon ECR映像提取器IAM角色一節。

  2. 判斷您的 Amazon ECR私有儲存庫是否具有政策陳述式 — 在您啟用 Amazon ECR映像提取器IAM角色之後,您需要判斷要使用容器服務存取的 Amazon ECR私有儲存庫是否具有現有的政策陳述式。如需詳細資訊,請參閱本指南稍後的判斷您的 Amazon ECR私有儲存庫是否具有政策陳述式。

    視ARN您的儲存庫是否具有現有政策陳述式而定,您可以使用下列其中一種方法來將IAM角色主體新增至儲存庫:

    1. 將政策新增至沒有政策陳述式的私有儲存庫:使用 AWS CLI set-repository-policy命令讓 Amazon ECR將ARN容器服務的 Amazon ECR映像提取器角色主體新增至具有現有政策的私有儲存庫。如需詳細資訊,請參閱本指南後述的將政策新增至沒有政策陳述式的私有儲存庫章節。

    2. 將政策新增至具有政策陳述式的私有儲存庫:使用 AWS CLI set-repository-policy命令讓 Amazon 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 設定它,才能繼續此程序。如需詳細資訊,請參閱設定 AWS CLI 以使用 Lightsail

  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角色主體新增至 Amazon ECR私有儲存庫的ARN許可政策,您應該將該許可政策從您的儲存庫中移除。如需詳細資訊,請參閱《Amazon ECR使用者指南》中的刪除私有儲存庫政策陳述式。

  4. 輸入下列命令以取得容器服務的 Amazon ECR映像提取器IAM角色ARN主體。

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

    將命令中的以下範例文字取代為自訂文字:

    • ContainerServiceName — 要取得 Amazon ECR Image puller 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私有儲存庫是否具有政策陳述式。您可以使用 AWS CLI get-repository-policyAmazon 的 命令ECR。如需詳細資訊,請參閱 AWS CLI 命令參考中的 update-container-service

注意

您必須安裝 AWS CLI 並為 Amazon 設定,ECR才能繼續此程序。如需詳細資訊,請參閱《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私有儲存庫。您新增的政策必須包含 ARN Lightsail 容器服務的 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

注意

您必須安裝 AWS CLI 並為 Amazon 設定它,ECR才能繼續此程序。如需詳細資訊,請參閱《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" ] } ] }

    在文字中,IamRolePrincipalArn將 取代為您先前在本指南中取得ARN的容器服務的 Amazon ECR映像提取器IAM角色主體。

  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私有儲存庫。您新增的政策必須包含現有政策,以及包含 ARN Lightsail 容器服務的 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

注意

您必須安裝 AWS CLI 並為 Amazon 設定,ECR才能繼續此程序。如需詳細資訊,請參閱《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. 在文字中,IamRolePrincipalArn將 取代為您先前在本指南中取得ARN的容器服務的 Amazon ECR映像提取器IAM角色主體。

    結果應如下列範例所示。

    範例完整政策陳述式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