17

我有一個自定義的docker鏡像上傳到ECS。我打開了權限來嘗試解決這個問題(一旦我能夠完成這個工作,我將再次鎖定它)。我試圖將docker映像部署到彈性beanstalk。我有一個docker啓用彈性beanstalk環境設置。根據AWS文檔,如果我從AWS內部拉取我的映像,我不需要傳入證書。所以我上傳我的Dockerrun.aws.json文件並嘗試安裝它。它失敗,錯誤如下:AWS Docker部署

Command failed on instance. Return code: 1 Output: Failed to authenticate with ECR for registry '434875166128' in 'us-east-1'. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

/var/log/eb-activity.log信息沒有用處。

這是我的Dockerrun.aws.json文件:

{ 
    "AWSEBDockerrunVersion": "1", 
    "Image": { 
    "Name": "{id000xxxx}.dkr.ecr.us-east-1.amazonaws.com/my-repo:1.0.0", 
    "Update": "true" 
    }, 
    "Ports": [ 
    { 
     "ContainerPort": "4000" 
    } 
    ], 
    "Logging": "/var/log/app-name" 
} 

我也試圖與S3的dockercfg.json文件中添加認證。它也不適合我。

Note that I am using a business account instead of a personal account, so there may be some unknown variances as well.

謝謝!

更新:我的用戶此刻也擁有完整的權限,所以不應該有任何權限明智的阻礙。

+0

檢查ECR存儲庫設置/權限像這裏:https://media.amazonwebservices.com/blog/2015/ecr_permissions_1.png –

+0

也請確保IAM角色附加到豆莖(運行拉的實例)可以通過IAM權限訪問ECR和ECS:http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_IAM_policies.html –

+0

Thanks @MarcYoung。我確實已經設置了這些 –

回答

38

我遇到了同樣的問題。

解決方案: 在AWS -> IAM -> Roles - >選擇您的beanstalk正在使用的角色。

在我的情況下,它被設置爲aws-elasticbeanstalk-ec2-role

權限的作用,重視政策:AmazonEC2ContainerRegistryReadOnly

在ECR沒有必要給任何權限這個角色。

+0

你太棒了!這正是我所錯過的。 –

+2

當您在AWS Elastic Beanstalk管理控制檯中啓動環境時,'aws-elasticbeanstalk-ec2-role'是默認的實例配置文件。 - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html –

+0

將文檔LInk添加到使用權限「AmazonEC2ContainerRegistryReadOnly」的文檔中:http://docs.aws.amazon.com/ elasticbeanstalk /最新/ DG/create_deploy_docker.container.console.html – zatziky

0

可以intialize必要的服務角色彈性魔豆(AWS-elasticbeanstalk-EC2角色,AWS-elasticbeanstalk服務角色,AWSServiceRoleForECS)通過彈性魔豆的控制檯。 您必須在每個AWS賬戶上只執行一次:

  • 轉至Elastic beanstalk控制檯。
  • 接受「新設計」:在控制檯的頂部,如果看到消息「我們正在測試新設計」,請選擇接受使用新版本的控制檯。警告,它似乎不能回滾到舊的控制檯。
  • 啓動「創建新應用程序」嚮導,並在該技術中使用默認示例應用程序。
  • 完成嚮導的所有步驟直到簡歷出現,並查看安全平臺:您將看到「aws-elasticbeanbean -alk-ec2-role」和「aws-elasticbeanstalk-service-role」這兩個角色。並終止嚮導以創建示例應用程序。
  • 一段時間後,應用程序應該運行
  • 在緊急情況下,進入IAM控制檯和刪除角色AWS-elasticbeanstalk-EC2角色和AWS-elasticbeanstalk服務角色,然後再次運行該向導。

我修正了「命令在實例上失敗。返回代碼:1輸出:無法使用ECR進行註冊表驗證「和另一個奇怪的錯誤(」您提供的AWS訪問密鑰ID在我們的記錄中不存在(ElasticBeanstalk :: ManifestDownloadError)「)。仍然有這個錯誤與舊的。