带有Route 53和ACM的AWS S3 CloudFront部署中的鸡和鸡蛋

时间:2019-10-04 16:39:54

标签: amazon-web-services amazon-s3 amazon-cloudfront amazon-route53

我正在自动将静态站点部署到AWS,包括以下内容:

  1. 将静态内容上传到S3存储桶。
  2. 在Route 53中创建托管区域。
  3. 在ACM中创建SSL / TLS证书。
  4. 将证书验证记录放置在Route 53中。
  5. 使用ACM证书创建CloudFront分配。
  6. 添加Route 53记录以指向CloudFront分布。

一切似乎都可以自动化,但是有一点障碍:在步骤5,创建CloudFront发行版,证书刚刚创建并且尚未验证,因此CloudFront发行版的创建失败。此外,即使等待验证也无济于事,因为要进行验证,必须将域的DNS更新为指向托管区域的名称服务器,直到创建托管区域的第2步才知道。 >

由于我使用的是第三方域名注册商,因此在执行步骤2之前,我不知道预先为域名指定什么名称。但是,步骤5直到证书通过验证后才能完成,这需要使用我的域名注册商更新名称服务器。所以我有一个鸡和蛋的问题。

即使域“无效”(尚未验证),有什么方法可以告诉CloudFound创建发行版,以便在完成所有操作后,我可以使用创建的托管区域的名称服务器来更新我的域注册商?还是必须在创建托管区域后在中间停止此自动化过程,然后在更新名称服务器后再回来完成它?

还有其他解决此问题的方法吗? (是的,我知道我也可以使用Route 53来注册域,然后可能会自动更新名称服务器,但是我希望我的自动化工具能够与第三方注册商一起使用。)

2 个答案:

答案 0 :(得分:2)

我不相信您将无法配置Cloudfront,除非注册了域并且AWS可以验证您控制DNS。

AWS一直在努力解决一些安全问题-请参阅https://aws.amazon.com/blogs/security/enhanced-domain-protections-for-amazon-cloudfront-requests/-听起来您将被阻止做您想做的事情。

答案 1 :(得分:1)

我建议您执行以下步骤:

  1. 创建S3存储桶

  2. 将静态内容上传到存储桶。

  3. 使用步骤1中的存储桶创建“占位符” CloudFront分配(无需证书;这是您的卵)

  4. 在Route 53中创建托管区域。(旧步骤2)

  5. 在ACM中创建SSL / TLS证书。 (旧步骤3)

  6. 将证书验证记录放置在Route 53中(旧步骤4)

  7. 完成证书后,更新在步骤3中创建的CloudFront分配。你的鸡!

  8. 以及其他要完成的自动化步骤

创建CloudFront Web分发的最低要求很小。一桶就可以。进入控制台,自己尝试,很简单。创建发行版后,它可以闲置,直到与AWS和第三方注册商完成其他步骤为止。然后,您使用完全烘焙的证书更新发行版。由于可以通过控制台进行操作,并且所有控制台操作均由API调用支持,因此您可以自动执行此操作。

看看create CloudFront API call requirements compared to the update CloudFront API requirements。您可以create没有有效证书的发行版。但是,对于该占位符分布的updates,您将需要所有必填字段,以包含ViewerCertificate

在构建自动化工具时要牢记,如果您对API感到困惑,请尝试在控制台中进行操作,以确定/反向工程传递给API调用所需的值。