我正在尝试实现基于路径的从cloudfront重定向到API网关。我的UI有一个cloudfront发行版,源代码是S3桶托管的。
www.example.com它满足了这些要求。
我想要带有模式的URL
www.example.com/share/*要重定向到API网关。API网关在内部重定向,指向其他URL。
如果我在浏览器中直接使用API网关端点,它将获取预期的结果。
我不知道如何从cloudfront重定向到API网关。我已经在API网关上放置了云监视日志,并且可以看到cloudfront到API网关重定向不起作用。
我尝试过添加API网关作为源,并添加了与cloudfront中的行为相同的内容,但没有成功。
发布于 2020-06-24 07:07:30
您可以在Lambda@Edge中使用CloudFront进行重定向。AWS提供了一个重定向函数这里的示例。
下面的例子
'use strict';
exports.handler = (event, context, callback) => {
/*
* Generate HTTP redirect response with 302 status code and Location header.
*/
const response = {
status: '302',
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://URL/PATH',
}],
},
};
callback(null, response);
};然而,,,也许与其进行重定向,不如考虑在CloudFront发行版中使用不同的次要来源来服务API路径,如果它是应用程序的一部分。
要做到这一点,您需要使用站点的域名向API添加一个自定义域,然后在CloudFront中添加一个与/share模式匹配的原点,以转发到您的API。
要获得更多信息,请阅读此页。
发布于 2020-06-24 07:10:48
一种方法是使用lambda@edge对观看者请求使用重定向url将302 HTTP代码返回给客户机。
在python中,这样的lambda看起来类似于(来自docs):
def lambda_handler(event, context):
# logic to check the url and generate new url.
response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': '<your-api-gateway-url>'
}]
}
}
return responsehttps://stackoverflow.com/questions/62549514
复制相似问题