9

Amazon CloudFront 文档没有提到“CallerReference”的用途或我应该填写什么,我在其他网站上看到的示例使用 guid 或当前日期。

AWS SDK for .NET工具提示说这是为了防止重放攻击,但这就是日期标头的用途。

4

2 回答 2

13

Amazon CloudFront 文档(同时?!)指出 CallerReference 是一个唯一名称,可确保确实无法重播请求,有关详细信息,请参阅InvalidationBatch 复杂类型

如果 CallerReference 是您在之前的失效批处理请求中已经发送的值,并且每个 Path 元素的内容与原始请求相同,则响应包含返回给原始请求的相同信息。

如果 CallerReference 是您在之前的失效批处理请求中已发送的值,但任何 Path 的内容与原始请求不同,CloudFront 将返回 InvalidationBatchAlreadyExists 错误。

Object Invalidation 中的Section Caller Reference也证实了这一点,并提供了如何在实践中处理它的提示:

CallerReference 是您提供的唯一值,CloudFront 使用它来防止重播您的请求。您必须在请求中提供新的调用方参考值和其他新信息,以便 CloudFront 创建新的失效请求。您可以为调用方引用使用时间戳(例如 20100801090000)。

尽管该示例也使用了时间戳,但与依赖日期标头相比,处理重放攻击的专用值据称提供了更大的灵活性,因此可能会增加安全性(如果需要)。

于 2012-02-17T01:42:23.247 回答
0

我的 2 美分给将来读到这篇文章的人:

CallerReference 对于复杂和自动化的基于云的设置也很有用。考虑一个部署设置,其中包含来自不同主机的许多脚本独立运行以验证和创建 CloudFront 分配。在这种情况下,您只希望一个创建请求成功。您可以使用固定的 CallerReference 来确保不会意外创建重复分布。

于 2013-08-06T20:30:02.613 回答