如何从 Cloud Formation 获取 Elastic Container Repository URI?
How to get Elastic Container Repository URI from Cloud Formation?
我正在尝试从 Cloud Formation 创建弹性容器服务 (ECS) 设置。
但是我不希望 ECS 存储库具有难看的自动生成的 URI:
111111111.dkr.ecr.us-东-1.amazonaws.com/docker-repo.company.com
但我希望它有一个漂亮而闪亮的
docker-repo.company.com
存储库本身不允许设置 URI 或 even a CNAME。所以我正在尝试设置一个 S3 存储桶以重定向到回购协议。但是,除非我遗漏了什么,否则 Cloud Formation 不支持此功能,因为使用 !Ref 或 !GetAtt 我无法在 AWS::ECR::Repository 对象中查询任何内容,这将给我存储库 URI。
我错过了什么吗?谢谢!
这有点傻,但最后您似乎无法引用 ECR 的 URI,因为 Cloud Formation 不支持它。
有 no attribute for the URI, even though funnily enough their Ruby SDK does support it and even the third-party, cross-cloud Terraform supports it.
但是,您可以解决这个问题,因为存储库 URI 是稳定的,它不包含任何随机部分,因此您可以从已有的内容中组合 URI:
HostName: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
或者不太酷的老派版本:
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: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
HostName: !Join [ ".", [ !Ref "AWS::AccountId", "dkr.ecr", !Ref "AWS::Region", !Join [ "/", [ "amazonaws.com", !Ref "dockerrepocompanycom" ] ] ] ]
更简洁的方式如下:
HostName: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
(添加为单独的答案,因为我缺少信誉点来评论以前的答案)
我正在尝试从 Cloud Formation 创建弹性容器服务 (ECS) 设置。
但是我不希望 ECS 存储库具有难看的自动生成的 URI:
111111111.dkr.ecr.us-东-1.amazonaws.com/docker-repo.company.com
但我希望它有一个漂亮而闪亮的
docker-repo.company.com
存储库本身不允许设置 URI 或 even a CNAME。所以我正在尝试设置一个 S3 存储桶以重定向到回购协议。但是,除非我遗漏了什么,否则 Cloud Formation 不支持此功能,因为使用 !Ref 或 !GetAtt 我无法在 AWS::ECR::Repository 对象中查询任何内容,这将给我存储库 URI。
我错过了什么吗?谢谢!
这有点傻,但最后您似乎无法引用 ECR 的 URI,因为 Cloud Formation 不支持它。
有 no attribute for the URI, even though funnily enough their Ruby SDK does support it and even the third-party, cross-cloud Terraform supports it.
但是,您可以解决这个问题,因为存储库 URI 是稳定的,它不包含任何随机部分,因此您可以从已有的内容中组合 URI:
HostName: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
或者不太酷的老派版本:
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: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
HostName: !Join [ ".", [ !Ref "AWS::AccountId", "dkr.ecr", !Ref "AWS::Region", !Join [ "/", [ "amazonaws.com", !Ref "dockerrepocompanycom" ] ] ] ]
更简洁的方式如下:
HostName: !Sub "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${dockerrepocompanycom}"
(添加为单独的答案,因为我缺少信誉点来评论以前的答案)