Amazon web services 使用Lambda边缘将bot通信路由到不同的服务器
我正在尝试将来自机器人(谷歌、Facebook等)的流量路由到AWS上由elastic beanstalk托管的完全不同的服务器 在寻找示例时,我只遇到将流量路由到另一个S3存储桶的人,如下所示:Amazon web services 使用Lambda边缘将bot通信路由到不同的服务器,amazon-web-services,aws-lambda-edge,Amazon Web Services,Aws Lambda Edge,我正在尝试将来自机器人(谷歌、Facebook等)的流量路由到AWS上由elastic beanstalk托管的完全不同的服务器 在寻找示例时,我只遇到将流量路由到另一个S3存储桶的人,如下所示: exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; let is_crawler = undefined; if ('is-crawler' i
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
let is_crawler = undefined;
if ('is-crawler' in request['headers']) {
is_crawler = request['headers']['is-crawler'][0].value.toLowerCase();
}
if (is_crawler === 'true') {
request.origin = {
s3: {
authMethod: 'origin-access-identity',
path: '',
domainName: 'redacted.s3-eu-west-1.amazonaws.com',
region: 'eu-west-1,
customHeaders: {}
}
};
}
callback(null, request);
};
我似乎还没有真正理解request.origin
对象。我不明白为什么它会有一个专用于s3的属性?我也不明白如何使用这段代码将流量路由到像api..com
这样的服务器
以前有人解决过这个问题吗?我会在reddit上发布我收到的答案,因为我通常喜欢有助于将来参考的问题: 这个想法是,您在CloudFront和CloudFront中定义了多个源 您可以在中动态选择将请求转发给哪一个 你的Lambda@Edge功能。没有要求它被转发 S3源代码-这只是静态资产或 静态网站 例如,如果您有两个自定义原点,则可以将其用作 作为起点的示例: 您可能会使用UserAgent或 远程ip地址 这帮我解决了这个问题