gpt4 book ai didi

amazon-web-services - AWS CloudFormation - 将新证书添加到现有监听器

转载 作者:行者123 更新时间:2023-12-04 08:12:06 25 4
gpt4 key购买 nike

我拥有的是一个平台堆栈,可能还有多个 Web 应用程序堆栈(每个堆栈代表一个 Web 应用程序)。平台堆栈部署了一个 ECS 平台,允许托管多个 Web 应用程序,但实际上没有任何 Web 应用程序。这只是一个平台。那么,每个Web应用程序堆栈代表一个Web应用程序。

我的平台堆栈模板中的 HTTPS 监听器之一是这样的。基本上,我在端口 443 上有一个 HTTPS 监听器,并将携带一个默认证书(根据要求,您至少需要一个证书来创建 https 监听器):

"BsAlbListenerHttps": {
"Type": "AWS::ElasticLoadBalancingV2::Listener",
"Properties": {
"Certificates": [{
"CertificateArn": {
"Ref": "BsCertificate1"
}
}],
...
"Port": "443",
"Protocol": "HTTPS"
}
},
...

现在,假设我想创建一个新的 Web 应用程序(例如 www.example.com),我部署 Web 应用程序堆栈,指定一些参数,显然,我必须创建一堆新的资源。但与此同时,我必须修改当前的“BsAlbListenerHttps”。

我能够将当前监听器(使用导入和导出)导入到我的 Web 应用程序堆栈中。但我想做的是将 www.example.com 的新证书添加到监听器。

我尝试环顾四周,但未能找到任何答案。

有人知道该怎么做吗?感谢您的帮助。谢谢!

最佳答案

在类似情况下,我所做的就是为整个区域仅使用一个证书,并在添加不同域上的应用程序/监听器时向其中添加域。我也根据环境执行此操作,因此我在两个不同的模板中都有一个临时证书和一个生产证书。但对于每个证书堆栈,您都可以定义一个独立的证书堆栈,例如,称为certificate-development.json,但使用堆栈名称作为“证书”,以便无论环境如何,堆栈引用都是一致的:

{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "SSL certificates for production V2",

"Resources" : {
"Certificate" : {
"Type": "AWS::CertificateManager::Certificate",
"Properties": {
"DomainName": "*.example.com",
"SubjectAlternativeNames" : [ "*.example2.com","*.someotherdomain.com" ]
}
}
},

"Outputs": {
"CertificateId" : {
"Value" : {"Ref":"Certificate"},
"Description" : "Certificate ID",
"Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-CertificateId" }}
}
}
}

正如您通过使用 SubjectAlternativeNames 属性所看到的,该证书将服务 3 个通配符域。这样,我可以在添加服务时更新域,并重新运行堆栈。依赖监听器无论如何都不会更改 - 它们始终引用该区域中的单个应用程序证书。

一个警告:当您在 CloudFormation 中更新证书时,它会向给定域([email protected] 等)上的所有主机管理员发送电子邮件。每个域名都会收到一封确认电子邮件,并且每封电子邮件都必须再次确认。如果所有域都没有以这种方式确认,那么堆栈将无法创建/更新。

使用这种技术,我可以毫无问题地管理所有应用程序的 SSL,同时可以轻松地为新域添加新的 ssl 端点。

我在主 VPC 堆栈之后立即创建证书堆栈,因此所有后续堆栈都可以通过导出引用此处定义的证书 ID。

关于amazon-web-services - AWS CloudFormation - 将新证书添加到现有监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com