根据路径将 URL 从云端重定向到 API 网关
redirecting the URL from cloudfront to API Gateway based on path
我正在尝试根据路径实现从云端到 API 网关的重定向。
我的 UI 有一个云前端分发,源是托管在 S3 存储桶上的,例如
www.example.com
它满足请求。
我想要带有模式
的网址
www.example.com/share/*
将被重定向到 API 网关。 API 网关在内部重定向到其他 URL。
如果我直接在浏览器中使用 API 网关端点,它会获取预期的结果。
我不确定如何从云端重定向到 API 网关。我已将 cloudwatch 日志放在 API 网关上,可以看到到 API 网关的云端重定向不起作用。
我尝试添加 API 网关作为来源并在云端添加相同的行为,但没有成功。
您可以使用 Lambda@Edge in CloudFront. AWS provides an example redirect function here 进行重定向。
下面的例子
'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 网关路径,而不是进行重定向是您申请的一部分。
为此,您需要使用站点的域名将 custom domain 添加到 API 网关,然后在 CloudFront 中添加匹配模式 /share
转发到您的 API 网关。
阅读 this page 了解更多信息。
一种方法是使用 lambda@edge for a viewer request 到 return 302
HTTP 代码重定向到客户端 url.
在 python 中,这样的 lambda 可能看起来像(来自文档):
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 response
我正在尝试根据路径实现从云端到 API 网关的重定向。 我的 UI 有一个云前端分发,源是托管在 S3 存储桶上的,例如
www.example.com
它满足请求。
我想要带有模式
的网址www.example.com/share/*
将被重定向到 API 网关。 API 网关在内部重定向到其他 URL。
如果我直接在浏览器中使用 API 网关端点,它会获取预期的结果。
我不确定如何从云端重定向到 API 网关。我已将 cloudwatch 日志放在 API 网关上,可以看到到 API 网关的云端重定向不起作用。
我尝试添加 API 网关作为来源并在云端添加相同的行为,但没有成功。
您可以使用 Lambda@Edge in CloudFront. AWS provides an example redirect function here 进行重定向。
下面的例子
'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 网关路径,而不是进行重定向是您申请的一部分。
为此,您需要使用站点的域名将 custom domain 添加到 API 网关,然后在 CloudFront 中添加匹配模式 /share
转发到您的 API 网关。
阅读 this page 了解更多信息。
一种方法是使用 lambda@edge for a viewer request 到 return 302
HTTP 代码重定向到客户端 url.
在 python 中,这样的 lambda 可能看起来像(来自文档):
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 response