如何从Cloud Formation获得Elastic Container Repository URI?

我正尝试从Cloud Formation创build一个弹性容器服务(ECS)设置。

不过,我不希望ECS存储库有丑陋的自动生成的URI:

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

但相反,我希望它有一个很好,有光泽

docker-repo.company.com

存储库本身不允许设置URI 甚至是CNAME 。 所以我试图设置一个S3存储桶redirect到回购。 但是除非我错过了一些东西,Cloud Formation不支持这个,因为使用!Ref或!GetAtt没有任何我可以在AWS :: ECR :: Repository对象中查询的东西,它会给我一个存储库URI。

我错过了什么吗? 谢谢!

这实在是太愚蠢了,但最后看来你不能引用ECR的URI,因为Cloud Formation不支持它。

URI没有任何属性 ,即使有趣的Ruby SDK也支持它 ,即使是第三方的跨云Terraform也支持它 。

然而,你可以绕过这个,因为存储库URI是稳定的,它不包含任何随机部分,所以你可以从你已经拥有的东西组成的URI:

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

用于创buildS3存储桶的完整工作configuration:

  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" ] ] ] ]