我试图将我的网站(目前是CloudFront和Elastic Beanstalk)切换到API网关。如何创建AWS API网关自定义域到已在CloudFront分配中使用且已停用的域?
当我尝试在API网关中创建自定义域时,我收到一条消息,说明该域已经有CloudFront分配,这是正确的。但是如果我删除了这个分发版本,我的网站将会停止运行,直到新的分发版本(API网关)启动。
有反正我可以交换这些东西吗?
我确实可以控制DNS记录。
我试图将我的网站(目前是CloudFront和Elastic Beanstalk)切换到API网关。如何创建AWS API网关自定义域到已在CloudFront分配中使用且已停用的域?
当我尝试在API网关中创建自定义域时,我收到一条消息,说明该域已经有CloudFront分配,这是正确的。但是如果我删除了这个分发版本,我的网站将会停止运行,直到新的分发版本(API网关)启动。
有反正我可以交换这些东西吗?
我确实可以控制DNS记录。
最终解决方案:
以上每个步骤都需要一点时间......但没有停机时间。
您可以将您的API网关注册为cloudfront来源,然后为您的API调用分配单独的行为。
如果您需要一步一步的指导,您可以使用下面的链接:
Processing A Contact Form Using AWS Cloudfront, API Gateway, Lambda and SES
对于cloudformation设置,你可以使用这样的描述:
我试过了,但是这并不起作用,因为如果您尝试从未注册为域的域名访问它,API网关将返回'禁止访问'自定义域。你可以看到这个例子 - d2dce1w778hsrx.cloudfront.net。谢谢 – AvnerSo
缺少的自定义域不会生成禁止的错误(因为这些不是必需的)。我猜你的起源或行为没有正确设置。您是否明确将标题字段列入白名单?路径模式匹配通常也是错误的原因。原点具有作为路径一部分的阶段,但行为已包含API的第一个资源元素。令人遗憾的是,AWS方面没有工具来调试这样的配置,只是出现了一个错误。 –
在这种情况下,将“Host:”标题列入白名单应该会导致此错误。 –
我假设你只在你的基于Beanstalk的实现中使用CloudFront作为静态资产? –
由于CloudFront的全局名称空间(也被API网关使用),因此没有零停机时间解决方案,因此@jenswalter有唯一的直接解决方案 - 将API网关端点的默认名称添加为现有CloudFront分配的原点。但是,如果您使用子域(foo.example.com)而不是裸域(example.com),则有一种解决方法可以最大限度地减少停机时间。你是? –
@YeshodhanKulkarni - 不 - 我使用CloudFront作为整个站点的缓存层 - 静态和动态。 – AvnerSo