簡體   English   中英

部署 aws lambda function 時無法訪問我的注冊表中的 ecr 存儲庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM