当前位置: 首页 > 知识库问答 >
问题:

AWS lambda函数禁用和删除Python boto3中的CloudTop分布

吕宇定
2023-03-14

我正在开发一个用python编写的Lambda函数,并使用boto3调用AWSAPI
lambda函数的工作如下-

  1. 获取CloudFront分发列表。
  2. 获取CloudFront分发ID。
  3. 获取超过60分钟的发行版的CloudFront发行版配置。
  4. 创建CloudFront分发配置的JSON文件。
  5. 读取JSON文件并制作字典数组以传入CF update API。
  6. 调用更新分发API并传递所需的参数

参考文件is-AWS Boto3

现在的问题是,更新API给我一个错误,只要请求的数据是正确的。

请找到我的python lambda函数代码链接-Lambda函数来禁用和删除CloudFRANT

下面是我在通过更新API更新(禁用)CloudFront分发时遇到的错误-

Parameter validation failed:
Missing required parameter in DistributionConfig: "CallerReference"
Missing required parameter in DistributionConfig: "Origins"
Missing required parameter in DistributionConfig: "DefaultCacheBehavior"
Missing required parameter in DistributionConfig: "Comment"
Missing required parameter in DistributionConfig: "Enabled"
Unknown parameter in DistributionConfig: "ETag", must be one of: CallerReference, Aliases, DefaultRootObject, Origins, OriginGroups, DefaultCacheBehavior, CacheBehaviors, CustomErrorResponses, Comment, Logging, PriceClass, Enabled, ViewerCertificate, Restrictions, WebACLId, HttpVersion, IsIPV6Enabled
Unknown parameter in DistributionConfig: "DistributionConfig", must be one of: CallerReference, Aliases, DefaultRootObject, Origins, OriginGroups, DefaultCacheBehavior, CacheBehaviors, CustomErrorResponses, Comment, Logging, PriceClass, Enabled, ViewerCertificate, Restrictions, WebACLId, HttpVersion, IsIPV6Enabled
Unknown parameter in DistributionConfig: "ResponseMetadata", must be one of: CallerReference, Aliases, DefaultRootObject, Origins, OriginGroups, DefaultCacheBehavior, CacheBehaviors, CustomErrorResponses, Comment, Logging, PriceClass, Enabled, ViewerCertificate, Restrictions, WebACLId, HttpVersion, IsIPV6Enabled

上面的错误消息显示缺少参数,但我检查了请求是否包含所有必需的参数,我不明白为什么会出现错误。

如果有人对此有任何解决方案,请分享或从AWS Lambda中禁用和删除CloudFront发行版的任何其他想法。

共有1个答案

臧烨烁
2023-03-14

问题是dist_list变量是调用cloudfrontclient.get_distribution_config(...)返回的值。这实际上不是分发配置。这是一个包含分布配置的字典。

按如下方式更改更新呼叫:

dc = dist_list['DistributionConfig']
dist_update = cloudfrontclient.update_distribution(DistributionConfig=dc, ...)
 类似资料:
  • 当我运行 liquibase:diff maven 命令 liquibase 正在生成带有删除表变更集的更改日志(现有数据库包含其他表)。我想在不修改 liquibase 核心的情况下禁用此行为,我该怎么办?

  • 这是来自3.7.4.2的N3797: 全局操作符delete[]只有两个参数,第二个参数的类型是std::size_t,这是一个常见的解除分配函数。37 37)此解除分配函数排除使用分配函数空运算符new(std::size_t,std::size_t)作为位置分配函数 这个说明对我来说不清楚。我想看看这种排除的真正例子。编译器将引发警告,或者我们遇到运行时错误?我一直在尝试编写如下内容: 我不知

  • 有时让类去做拷贝是没有意义的。std::mutex就是一个例子——拷贝一个互斥量,意义何在?std::unique_lock<>是另一个例子——一个实例只能拥有一个锁;如果要复制,拷贝的那个实例也能获取相同的锁,这样std::unique_lock<>就没有存在的意义了。实例中转移所有权(A.1.2节)是有意义的,其并不是使用的拷贝。当然其他例子就不一一列举了。 通常为了避免进行拷贝操作,会将拷贝

  • 例如: 除了“,:”之外,我还想去掉“and”这个词。请建议。

  • 可能重复: PostgreSQL是否支持“重音不敏感”排序规则? 我试图删除重音,所以当我选择时,它会忽略它们。 例子: 它返回: 或者类似的东西。 我发现这些函数无法工作,我想这可能是因为我使用的是Struts 1。十、 请检查它们,告诉我哪里错了,或者我应该使用什么其他功能。 第一个函数 第二个功能 在NetBeans中运行文件时,这两个函数都会生成以下错误:

  • 我遇到了以下问题: 我发布了一个与科罗纳有关的应用程序。我不知道谷歌不允许这样做(除非你的政府以某种方式批准),所以谷歌直接禁用了这个应用。 我试着删除它,这样它就不会再出现在仪表板上了,但我找不到该怎么做。我在互联网上搜索过如何删除禁用的应用程序,但这似乎是不可能的。 现在这样就可以了,但有以下问题:由于它被禁用,谷歌Admob称“我的一个应用违反了Admob的使用条款”。这也没有直接的问题,但