17

ECS'ye yüklenen özel bir docker görüntüm var. Bu sorunu çözmeye çalışmak için gerekli izinleri açtım (bunu işe alabildiğim zaman tekrar kilitleyeceğim). Docker görüntüsünü elastik fasülyeye dağıtmaya çalışıyorum. Bir docker özellikli elastik fasülye ortamı oluşturdum. AWS dokümanlarına göre, eğer görüntümü AWS'den çekiyorsam, kimlik bilgilerini geçmem gerekmiyor. Bu yüzden Dockerrun.aws.json dosyamı yükledim ve yüklemeyi denedim. Bu hata ile başarısız:AWS Docker kurulumu

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 bilgiler içinde kullanışlı hiçbir ilgisi yoktur. Ayrıca S3 dockercfg.json dosyası ile kimlik doğrulaması ekleyerek denedim

{ 
    "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" 
} 

:

İşte benim Dockerrun.aws.json dosya. Benim için de işe yaramadı.

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

Teşekkürler!

Güncelleme: Şu anda kullanıcımın tüm izinleri var, bu nedenle izin alma konusunda hiçbir şey olmamalı.

+0

Buradaki ECR veri havuzu ayarlarını/izinlerini şu şekilde kontrol edin: https://media.amazonwebservices.com/blog/2015/ecr_permissions_1.png –

+0

Ayrıca, IAM rolünün fasulyeye bağlı olduğundan emin olun. (çekmeyi çalıştıran örnek), IAM izinleri aracılığıyla hem ECR'ye hem de ECS'ye erişebilir: http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_IAM_policies.html –

+0

Teşekkürler @MarcYoung. düzgün bir şekilde zaten –

cevap

38

Aynı problemi yaşıyordum.

Çözüm: AWS -> IAM -> Roles - > içinde fasulyenizin kullandığı rolü seçin. ECR olarak AmazonEC2ContainerRegistryReadOnly

bu role herhangi izinleri vermek gerek yoktur: Benim durumumda

o rol için İzinleri altında aws-elasticbeanstalk-ec2-role

olarak ayarlandı, ilkeyi ekleyin.

+0

Harikasınız! Bu tam olarak eksik olduğum şey. AWS Elastic Beanstalk yönetim konsolunda bir ortam başlattığınızda, –

+2

"aws-elasticbeanstalk-ec2-role" varsayılan örnek profildir. - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html –

+0

'AmazonEC2ContainerRegistryReadOnly' izni kullanılan belgelere LInk: http://docs.aws.amazon.com/ elasticbeanstalk/son/dg/create_deploy_docker.container.console.html – zatziky

0

Gerekli servis rollerini başlatılamadığı olabilir elastik beanstalk için (aws-elasticbeanstalk-EC2-rolü, aws-elasticbeanstalk-hizmet rolü, AWSServiceRoleForECS) Elastik Beanstalk ait yeni konsolunu kullanarak. Her AWS hesabına bu yalnızca bir kez yapmak zorunda:

  • Elastik beanstalk konsoluna gidin.
  • "Yeni tasarım" ı kabul edin: konsolun en üst kısmında, "yeni bir tasarımı test ediyoruz" mesajını görürseniz, konsolun yeni sürümünü kullanmak için kabul etmeyi tercih edin. Uyarı, eski konsola geri dönüşü yapılamıyor gibi görünüyor.
  • Yeni Uygulama Oluştur sihirbazını başlatın ve teknolojide varsayılan bir örnek uygulama kullanın.
  • Devam etinceye kadar sihirbazın tüm adımlarını tamamlayın ve Güvenlik paneline bakın: "aws-elasticbeanstalk-ec2-role" ve "aws-elasticbeanstalk-service-role" rollerini görürsünüz. Ve örnek uygulamayı oluşturmak için sihirbazı sonlandırın. Bir süre sonra
  • , uygulama Acil durumlarda
  • çalışıyor olması gerekir, IAM konsola gidip rolleriyle de aws-elasticbeanstalk-EC2-rol ve aws-elasticbeanstalk-hizmet rol silip tekrar sihirbazı çalıştırın.

"Komutu örnekte başarısız oldu."Dönüş kodu: 1 Çıktı: kayıt için ECR ile kimlik doğrulanamadı "ve başka bir garip hata (" Sağladığınız AWS Erişim Anahtarı Kimliği kayıtlarımızda mevcut değil. (ElasticBeanstalk :: ManifestDownloadError) ") ​​YENİ konsolu kullanarak.