1

我正嘗試從Cloud Formation創建一個彈性容器服務(ECS)設置。如何從Cloud Formation獲取Elastic Container Repository URI?

不過,我不希望ECS庫有醜自動生成的URI:

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

,而是我希望它有一個很好的光澤

docker-repo.company.com

的庫本身不允許設置的URI或even a CNAME。所以我試圖設置一個S3存儲桶來重定向到repo。但是,除非我錯過了某些東西,否則Cloud Formation不支持此操作,因爲使用!Ref或!GetAtt沒有任何可以在AWS :: ECR :: Repository對象中查詢的東西,它將爲我提供存儲庫URI。

我錯過了什麼嗎?謝謝!

+0

也許只是運行[註冊表](https://hub.docker.com/_/registry/)?他們很[很容易設置](https://docs.docker.com/registry/) – Matt

+0

是的,但是如果我們打算使用ECS,那麼它又有什麼意義呢?這樣AWS爲我們管理它,我們儘量減少自己管理的服務數量。 – oblio

+0

是的,只有當ECR特定設置之外的要求對你來說是值得的。 – Matt

回答

4

這實在是太愚蠢了,但最終看起來你不能引用ECR的URI,因爲Cloud Formation不支持它。

no attribute for the URI,即使有趣的他們Ruby SDK does support it甚至third-party, cross-cloud Terraform supports it

但是,你能砍解決這個因爲庫URI是穩定的,它不包含任何隨機的一部分,這樣你就可以從事物構成URI你已經有:

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

的全部工作配置創建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

男人,這是一個令人失望的答案。 –

+0

你知道什麼更讓人失望?必須在AWS上使用全球分佈式基礎架構(Cloud Front)進行涉及自定義域名和HTTPS的任何設置。除非我錯過了一些東西:(我之所以這樣說,是因爲S3設置不能滿足我們的要求,所以我不得不求助於Cloud Front。 – oblio