要使用 AWS 条件键,它们是否必须存在于请求上下文中?

To use AWS condition keys, is it mandatory that they are present in the Request Context?

当我查看 Cloudtrail 中的 'Request Context' 时,我看到列出的记录内容 here

  1. 'Request Context'记录内容和Condition keys之间是否存在映射关系?
    或者说 'Request Context' 中的条件不是强制性的,但是与条件对应的条件键可能仍然可用(AWS 魔法)用于评估此请求的策略是否正确?使用前缀 aws: 的 AWS 范围的密钥是否在所有请求上下文中可用?

  2. 当我在策略中使用条件键时,如何确定条件键存在于请求上下文中?
    当然,我可以添加一个 "ifexists" 子句来检查 Condition 键的可用性,但这是一个 'catch all' 机制。我如何确定在检查策略中的条件时不需要使用 "Ifexists" 子句?

我也发布了一个不同但相关的问题

查看 Condition Keys Table 以查找可用于 AWS 服务的条件上下文键,这些键可用于 IAM 策略语句的 Condition 元素。

我认为您混淆了 CT 日志事件数据的内容:

使用 CloudTrial 的 IAM 条件键:

还要使用 ...IfExists or Null 检查来检查策略密钥是否存在。

If the key that you specify in a policy condition is not present in the request context, the values do not match.

第一个包含有关 API CT 试用中调用的信息,而第二个用于 IAM 策略以授予有条件的权限。

Cloudtrail 事件只有请求上下文中的一部分信息。我们永远看不到整个 AWS 请求上下文(的详细信息)——它的一个子集在 Cloudtrail 事件中记录为 Record Contents

Cloudtrail 事件和请求上下文是两个不同的事物。您可以在 Cloudtrail 事件中查看有关请求上下文的一些信息 Record Contents(只有 AWS 可以看到整个请求上下文并根据通过策略授予的权限检查它以允许/拒绝请求)。