小编dan*_*mly的帖子

绕过 cloudfront 中 S3 身份验证中包含 x-amz-cf-id 标头的需要

我有一个不完全正统的 CF->S3 设置。这里的相关组件是:

  1. Cloudfront 分布origin s3.ap-southeast-2.amazonaws.com

  2. Lambda@Edge 函数(源请求),添加 S3 授权(版本 2)查询字符串(使用函数使用的 S3 策略进行签名)。

从 Lambda 返回的请求完全正确。如果我记录 uri、主机和查询字符串,我就会得到我请求的文件。但是,如果我直接通过 Cloudfront 链接访问它,请求会失败,因为它不再使用AWSAccessKeyID,而是选择使用x-amz-cf-id(但使用相同的签名、Amz-Security-Token 等)。更正:它可能不会取代,但需要补充。

我知道是这种情况,因为我已经返回了 StringToSignSignatureProvided。它们都与 Lambda 响应匹配,除了AWSAccessKeyID已替换为x-amz-cf-id.

显然这是一个非常具体的问题。我可能需要考虑重塑这个架构,但我不想这样做。有几个要求导致我放弃了这个不完全常规的设置。

amazon-s3 amazon-web-services amazon-cloudfront aws-lambda-edge

6
推荐指数
1
解决办法
1万
查看次数