我们已经在 aws elasticbeanstalk (nginx/puma) 上部署了一个 Rails 应用程序
用户可以自由设置自己的自定义域名,我们要求他们添加一条 cname 记录以指向我们的 elasticbeanstalk 域。
但是我们还需要使用 aws ACM 为自定义域生成 ssl 证书。 (如何通过 aws api 做到这一点?) 一旦我们这样做了,我们就可以向用户显示 cname 记录以添加到他们的 dns 提供商以进行域名验证。
那我要调用哪个aws api看ssl证书是否可以使用 以及如何将ssl证书附加到elasticbeanstalk环境(负载均衡器?)
我必须调用哪个 aws api 来查看 ssl 证书是否可以使用
您必须使用 DescribeCertificate 并检查其 Status 是否为
ISSUED
.
通常,你必须实现一个循环来迭代查询状态,例如每 15 秒,直到它发出。但是一些 AWS SDK 为此提供了“服务员”。在红宝石中,您有CertificateValidated服务员。
以及如何将ssl证书附加到elasticbeanstalk环境
要将 SSL 证书添加到 ALB,您必须使用 AddListenerCertificates API 到您的 EB 的负载均衡器。
AWS Certificate Manager (ACM) 有一个 RequestCertificate API,可用于请求证书。 需要特别注意 DnsValidationOption,这也可以通过电子邮件或 DNS-Record 完成。两者都有不同的用户流量。
AWS 页面还显示了有关如何调用 API 的示例。调用 API 后,ARN 为被调用方所知。 ARN 可用于描述和检查当前状态。这必须通过重复轮询(如其他问题所述)来完成,或者您可以通过 EventBridge 获取事件。 后一个特别有用,因为它还包含以下事件:
您可以在这里找到活动信息。
AWS 文档还在底部包含指向 SDK 的链接,例如 Ruby。
我认为您正在寻找的是用于实施的无服务器解决方案。
这是我的快速思考解决方案,您可以尝试:
API Gateway --> Lambda (Request) --> SQS --> Lambda (Verify) --> SNS (E-mail) --> Lambda (Attach)
您可以使用 REST/HTTP API 创建一个简单的后端,例如
/request
代理对用于请求 ACM 证书的 Lambda 函数的请求。您可以尝试使用 ValidationMethod 的 Python3/Boto3 成为 EMAIL
。完成后,将消息发送到 SQS 延迟队列(即:10 分钟)。
然后,用于验证的 Lambda 函数将能够检查您的客户是否在允许的时间(10 分钟)内接受了验证,然后您可以向他们发送 SNS 通知 或任何电子邮件机制以获取
Success
状态。
您还可以订阅另一个 Lambda 函数来处理您的 ElasticBeanstalk 负载均衡器 修改的后续步骤。