17

Mam niestandardowy obraz dokowania przesłany do ECS. Otworzyłem uprawnienia, aby spróbować przejść przez ten problem (zablokuję go ponownie, gdy będę mógł to uruchomić). Próbuję wdrożyć obraz dokowania do elastycznej fasoli. Mam skonfigurowane środowisko elastycznego komponentu beanstalk. Według dokumentów AWS, jeśli ściągam mój obraz z AWS, nie muszę przekazywać danych uwierzytelniających. Przesyłam więc mój plik Dockerrun.aws.json i próbuję go zainstalować. Błąd kończy się niepowodzeniem:AWS Docker deployment

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.

Informacja /var/log/eb-activity.log nie ma w tym nic użytecznego.

Oto mój plik 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" 
} 

Próbowałem również dodawanie uwierzytelniania z plikiem dockercfg.json w S3. To też nie działało dla mnie.

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

Dzięki!

Aktualizacja: Mój użytkownik ma teraz w tej chwili pełne uprawnienia, więc nie powinno być nic, co mogłoby przeszkadzać.

+0

Sprawdź ustawienia lub uprawnienia do repozytorium ECR, jak tutaj: https://media.amazonwebservices.com/blog/2015/ecr_permissions_1.png –

+0

Upewnij się także, że rola IAM jest dołączona do łodygi fasoli (instancja uruchamiająca pull) ma dostęp do ECR i ECS poprzez uprawnienia IAM: http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_IAM_policies.html –

+0

Dzięki @MarcYoung. –

Odpowiedz

38

Miałem ten sam problem.

Rozwiązanie: W AWS -> IAM -> Roles - > wybierz rolę, której używa twoja fasola.

W moim przypadku była ona ustawiona na aws-elasticbeanstalk-ec2-role

Pod Uprawnienia do roli, należy dołączyć zasadę: AmazonEC2ContainerRegistryReadOnly

W Zbiorze nie ma potrzeby, aby dać żadnych uprawnień do tej roli.

+0

Jesteś niesamowity! Właśnie tego mi brakowało. –

+2

'aws-elasticbeanstalk-ec2-role' jest domyślnym profilem instancji po uruchomieniu środowiska w konsoli zarządzania AWS Elastic Beanstalk. - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html –

+0

Wywiad z dokumentacją, w której użyto uprawnienia 'AmazonEC2ContainerRegistryReadOnly': http://docs.aws.amazon.com/ elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html – zatziky

0

Można intialize niezbędne funkcje usługowe dla elastycznej beanstalk (AWS-elasticbeanstalk-EC2-role, AWS-elasticbeanstalk-service-rola, AWSServiceRoleForECS) za pomocą nowy konsolę Elastic Beanstalk. Trzeba to zrobić tylko raz na każdym koncie AWS:

  • Przejdź do Elastic konsoli beanstalk.
  • Zaakceptuj "nowy projekt": w górnej części konsoli, jeśli zobaczysz komunikat "testujemy nowy projekt", zdecyduj się na użycie nowej wersji konsoli. Ostrzeżenie, wygląda na to, że nie można wycofać do starej konsoli.
  • Uruchom kreatora Utwórz nową aplikację i użyj domyślnej przykładowej aplikacji w tej technologii.
  • Wykonaj wszystkie kroki kreatora do momentu wznowienia i spójrz na panel zabezpieczeń: zobaczysz dwie role "aws-elasticbeanstalk-ec2-role" i "aws-elasticbeanstalk-service-role". I zakończyć kreatora, aby utworzyć przykładową aplikację.
  • Po pewnym czasie, wniosek powinien być uruchomiony
  • W razie wypadku, przejdź do konsoli IAM i usuwać role AWS-elasticbeanstalk-EC2-rolę i AWS-elasticbeanstalk-Service-rolę i ponownie uruchom kreatora.

Naprawiłem "Polecenie nie powiodło się na instancji.Kod powrotu: 1 Dane wyjściowe: nieudane uwierzytelnienie za pomocą rejestru ECR dla rejestru "i inny dziwny błąd (" Podany identyfikator klucza dostępu AWS nie istnieje w naszych rekordach (ElasticBeanstalk :: ManifestDownloadError) ") ​​przy użyciu nowej konsoli. Nadal występował ten błąd w starym: