如何清除多个发行版的缓存,包括列出它们?

How to clear the Cache of multiple distributions including listing them?

首先我想向大家问好,其次我很害怕,因为我刚找到一份新工作,我的任务之一是我一生中从未做过的事情。 在这种情况下,我分配的任务是找到一种方法从 S3 Cloudfront Distributions 中删除缓存。我试图看看是否有办法列出所有发行版,然后使用脚本清除它们的缓存,但我找不到这是否可能以及脚本应该是什么样子。

我的想法是拥有一个 cli 脚本,它将:

A) 在 txt 文件输出中列出所有分布; B) 从该输出中读取分发 ID,然后使用该输出清除其当前缓存。

以便在上传新文件后可以在分发版上创建新的缓存。我已经阅读了 https://docs.aws.amazon.com/cli/latest/reference/cloudfront/list-distributions.html 但不幸的是我无法理解脚本如何列出所有分发 ID > distribution.txt 然后从中读取以删除它们的缓存。

如果可能的话,任何我可以阅读以创建这样的脚本的提示或信息都将非常有帮助,因为我真的很紧张并且害怕我的第一个任务。

想对所有阅读该主题的人表示感谢,即使他们没有任何提示可以提供:)。

好的,我想我现在已经完全理解要求了。我会做什么: 在架构上:让它成为一个 Lambda 函数,我个人会使用 Python 3.7。 实现的编码步骤:

  1. 从 Lambda 请求输入中读取您想要失效的域。
  2. aws cloudfront list-distributions 的结果保存在 变量
  3. 因为它是一个 JSON 结构,你可以把它当作一个字典来循环,这样做并为 每个分布检查 "Aliases" 属性是否包含 你的域名。将这些发行版的 ID 保存在列表中。
  4. 遍历您的列表并为每个 ID 执行:aws cloudfront create-invalidation --distribution-id *id_from_list* --paths *

确保 Lambda 函数有权列出 Cloudfront 分配并创建失效。还要确保可能需要执行此功能的每个人都有权这样做。