我想玩Instagram视频资产。挑战在于这些视频是可憎的。它们每隔N分钟就过期一次。
我正在集思广益地创建CDN (Cloudfront)解决方案,它将传入的请求转发到原始服务器(本例中是Instagram ),将视频缓存在CDN上,然后继续为其提供服务,而无需再次请求Instagram。我不想下载这些视频并把它们保存在我的桶里。
我想看看CloudFront函数,并且能够根据某些条件将传入的请求重定向到另一个URL。下面是代码。
function handler(event) {
var request = event.request;
var headers = request.headers;
if request.uri == '/assets/1.jpg'{
var newurl = 'https://instagram.com/media/1.jpg'
var response = {
statusCode: 302,
statusDescription: 'Found',
headers:
{ "location": { "value": newurl } }
}
return response;
}
return request
}但是,这会将其重定向到newURL。我要找的不是重定向,而是以下内容
mydomain.com/assets/1.jpg )发出请求时,文件1.jpg应该从Instagram服务器提供,其值是上面代码片段中的newURL。这应该在不将我的域名URL (在地址栏中)更改为Instagram的情况下完成。mydomain.com/assets/1.jpg的下列请求应该直接从缓存中处理,不应该再被路由到Instagram。在这方面的任何帮助都将受到高度赞赏。
发布于 2022-09-28 08:06:15
恐怕LambdaEdge在这里不会有帮助,但是您可以在您的CloudFront行为中使用风俗起源和您的自定义缓存策略来满足not需求。如果您熟悉CDK,那么请看一下HttpOrigin。CloudFront发行版如下所示:
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: {
origin: new origins.HttpOrigin('www.instagram.com'),
cachePolicy: new cloudfront.CachePolicy(this, 'myCachePolicy', {
cachePolicyName: 'MyPolicy',
comment: 'A default policy',
defaultTtl: Duration.minutes(N)
}),
},
});发布于 2022-09-28 17:50:49
直接跟AWS小组谈过。这就是他们的反应。
从案例描述中,我了解到您正在尝试设置一个CloudFront发行版,将传入的请求转发到原始服务器(在本例中为Instagram ),将视频缓存在CDN上,然后继续提供视频,而无需再次请求Instagram,而且您还声明不希望将视频存储在S3桶中。如果我误解了你的关心,请纠正我。使用内部工具,我可以看到CloudFront发行版的起源是一个S3桶。由于您已经在关注中提到希望将发送到发行版的请求转发到源,在本例中,Instagram将从那里为视频资产提供服务,为此您可以使用CloudFront中的自定义源。除了私有内容之外,当您使用自定义源时,大多数CloudFront功能都受到支持。要使CloudFront访问自定义原产地,必须保持对源的公开访问。请参阅1.考虑到这一点,我尝试重新创建"Instagram“可以设置为CloudFront发行版的自定义源的情况。我使用"www.instagram.com“作为我的来源,当我试图访问CF发行版时,我收到了一个"5xx服务器错误”,这意味着Instagram不允许配置为源。不幸的是,由于Instagram (Instagram)的配置,如果不首先将其存储在S3桶中,您将无法从Instagram中提供内容。使用CloudFront和S3,您可以使用本文档2中描述的视频内容。另一个解决方法是使用重定向,这可以通过使用S3 bucket的静态网站托管属性或Lambda@Edge函数3,4来实现。这种方法不要求您将内容存储在S3桶中以提供服务,因为您在通信中提到您希望从缓存中为Instagram内容提供服务,并且不希望再次将请求转发到Instagram,因此这种方法也是不可能的。当您将CloudFront请求重定向到新网站时,将生成一个新请求以服务于内容,并从图片中删除CloudFront。因为没有涉及到CloudFront,所以它无法缓存内容,而且每次发出请求时,它都会直接访问原始服务器,即Instagram的服务器。请注意,由于Instagram是一个第三方工具,除非您可以使用它作为CloudFront来源,否则CloudFront将无法缓存它的内容。参考资料:1使用EC2 (或其他自定义来源):https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html 2教程:使用S3、Amazon CloudFront和Amazon 53:https://docs.aws.amazon.com/AmazonS3/latest/userguide/tutorial-s3-cloudfront-route53-video-streaming.html 3.配置网页重定向:https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-page-redirect.html 4处理重定向@Edge第1部分:https://aws.amazon.com/blogs/networking-and-content-delivery/handling-redirectsedge-part1/
https://stackoverflow.com/questions/73779472
复制相似问题