![](/img/trans.png)
[英]Copy a AWS ECR image from one repository to another in the same account and region by lambda function
[英]Unable to access ecr repository in my registry when deploying aws lambda function
問題陳述:
我正在嘗試使用構建的 docker 容器映像並將其用作 AWS lambda function 的源。 但是,每當我構建 lambda function 並部署它時,我每次都會收到此錯誤。
The repository with name 'xxxxxxxxx' does not exist in the registry
with id '########'.
我做了一些健全性檢查,以確保我的 serverless.yml 文件創建正確,拼寫正確,並且這個存儲庫確實存在於 ECR 中。
serverless.yml
provider:
name: aws
runtime: python3.8
stage: ${env:BRANCH_NAME}
region: us-west-2
role: arn:aws:iam::#########:role/current-role
vpc:
securityGroupIds:
- ${env:SG_ID}
subnetIds:
- ${env:SUBNET_ID}
tracing:
lambda: true
environment:
REGION_NAME: us-west-1
PYTHONPATH: '/var/task/packages:/var/runtime'
S5_QUEUE_URL: ${env:S5_QUEUE_URL}
SECRET_NAME: ${env:SECRET_NAME}
iamRoleStatements:
- Effect: Allow
Action:
- 'ecr:SetRepositoryPolicy'
- 'ecr:GetRepositoryPolicy'
Resource: 'arn:aws:ecr:us-west-2:########:xxxxxxxxx/directory/'
functions:
function1:
image: '#######.dkr.ecr.us-west-2.amazonaws.com/xxxxxxxxx/directory:tag'
但是,由於某種原因,無論我對 serverless.yml 文件進行了哪些更改,我仍然無法訪問此存儲庫。 起初,我認為這可能是權限問題,但我沒有看到我聲明的權限有任何問題......有人可以幫忙嗎?
將運行時從python3.8
更改為provided
,請參閱使用無服務器框架的自定義運行時
根據該錯誤,您的帳戶和您要查找的區域中沒有此類注冊表。
話雖如此,您的圖像 URI 看起來有點奇怪:
'#######.dkr.ecr.us-west-2.amazonaws.com/xxxxxxxxx/directory:tag'
如果 xxxxxxxxx 是您的存儲庫(注冊表)名稱,那么我不確定該目錄來自何處。 如果目錄是您的存儲庫名稱,那么您需要省略 xxxxxxxx。 您的政策聲明中的 ARN 具有相同的含義。
如果,正如您所說,您已確保存儲庫確實存在於您的帳戶中,請復制它的 Image URI 並將其與您在 serverless.yml 中的內容進行比較
通常可見的 ECR 圖像 URI 構造是:
<account_ID>.dkr.ecr.<region>.amazonaws.com/<repo_name>:tag
無服務器博客文章中有關該主題的代碼片段:
functions:
someFunction:
image: <account>.dkr.ecr.<region>.amazonaws.com/<repository>@<digest>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.