1

J'essaie de créer une configuration Elastic Container Service (ECS) à partir de Cloud Formation.Comment faire pour obtenir Elastic Container Repository URI de Cloud Formation?

Cependant, je ne veux pas le dépôt ECS d'avoir le laid URI autogenerated:

111111111.dkr.ecr.us-east-1.amazonaws.com/docker-repo.company.com

mais je veux qu'il y ait une belle et brillante

docker-repo.company.com

le dépôt lui-même ne permet pas la mise en l'URI ou even a CNAME. Donc j'essaye de configurer un seau S3 pour rediriger vers le repo. Cependant, à moins que je ne manque quelque chose, Cloud Formation ne supporte pas cela car depuis! Ref ou! GetAtt il n'y a rien que je puisse interroger dans l'objet AWS :: ECR :: Repository qui me donnera l'URI du dépôt.

Ai-je raté quelque chose? Merci!

+0

Peut-être suffit-il de lancer un [registre] (https://hub.docker.com/_/registry/)? Ils sont jolis [simple à installer] (https://docs.docker.com/registry/) – Matt

+0

C'est vrai, mais quel serait le point si nous prévoyons d'utiliser ECS de toute façon? De cette façon, AWS le gère pour nous, nous minimisons le nombre de services que nous devons gérer nous-mêmes. – oblio

+0

Ouais, seulement si les exigences qui ne correspondent pas à la configuration spécifique d'un ECR valent la peine pour vous. – Matt

Répondre

4

C'est un peu idiot, mais à la fin, il semble que vous ne puissiez pas vous référer à l'URI d'un ECR car Cloud Formation ne le supporte pas.

Il y a no attribute for the URI, même si c'est curieusement leur Ruby SDK does support it et même le third-party, cross-cloud Terraform supports it.

Cependant, vous pouvez pirater autour de cela parce que l'URI du référentiel est stable, il ne contient aucune partie aléatoire, de sorte que vous pouvez composer l'URI de choses que vous avez déjà:

HostName: !Join [ ".", [ !Ref "AWS::AccountId", "dkr.ecr", !Ref "AWS::Region", !Join [ "/", [ "amazonaws.com", !Ref "dockerrepocompanycom" ] ] ] ] 

configuration de travail complet pour création du compartiment S3:

s3dockerrepo1redirect: 
    Type: AWS::S3::Bucket 
    Properties: 
     BucketName: "docker-repo.company.com" 
     WebsiteConfiguration: 
      RedirectAllRequestsTo: 
       HostName: !Join [ ".", [ !Ref "AWS::AccountId", "dkr.ecr", !Ref "AWS::Region", !Join [ "/", [ "amazonaws.com", !Ref "dockerrepocompanycom" ] ] ] ] 
+0

Man, c'est une réponse un peu décevante. –

+0

Vous savez ce qui est encore plus décevant? Avoir à utiliser une infrastructure distribuée globalement (Cloud Front) pour tout type de configuration impliquant des noms de domaine personnalisés et HTTPS, sur AWS. Sauf si j'ai raté quelque chose :(Je dis cela parce que la configuration S3 n'a pas fonctionné à la fin de nos exigences et j'ai dû recourir à Cloud Front. – oblio