将 GetContextKeysForCustomPolicy 与 Amazon SDK 或命令行工具配合使用 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

GetContextKeysForCustomPolicy 与 Amazon SDK 或命令行工具配合使用

以下代码示例演示如何使用 GetContextKeysForCustomPolicy

CLI
Amazon CLI

示例 1:列出作为命令行参数提供的一个或多个自定义 JSON 策略所引用的上下文键

以下 get-context-keys-for-custom-policy 命令解析每个提供的策略,并列出这些策略使用的上下文键。使用此命令来确定必须提供哪些上下文键值才能成功使用策略模拟器命令 simulate-custom-policysimulate-custom-policy。您还可以使用 get-context-keys-for-custom-policy 命令检索与 IAM 用户或角色关联的所有策略使用的上下文键列表。以 file:// 开头的参数值指示命令读取文件的内容,然后使用内容而不是文件名本身作为参数的值。

aws iam get-context-keys-for-custom-policy \ --policy-input-list '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}","Condition":{"DateGreaterThan":{"aws:CurrentTime":"2015-08-16T12:00:00Z"}}}}'

输出:

{ "ContextKeyNames": [ "aws:username", "aws:CurrentTime" ] }

示例 2:列出作为文件输入提供的一个或多个自定义 JSON 策略所引用的上下文键

以下 get-context-keys-for-custom-policy 命令与前面的示例相同,只是策略是在文件中提供而不是作为参数提供。由于该命令需要 JSON 字符串列表而不是 JSON 结构列表,因此尽管您可以将其折叠成一个,但该文件的结构必须如下所示。

[ "Policy1", "Policy2" ]

例如,包含上一个示例中策略的文件必须如下所示。您必须在策略字符串中每个嵌入的双引号前面加上反斜杠 " 来对其进行转义。

[ "{\"Version\": \"2012-10-17\", \"Statement\": {\"Effect\": \"Allow\", \"Action\": \"dynamodb:*\", \"Resource\": \"arn:aws:dynamodb:us-west-2:128716708097:table/${aws:username}\", \"Condition\": {\"DateGreaterThan\": {\"aws:CurrentTime\": \"2015-08-16T12:00:00Z\"}}}}" ]

然后,可以将此文件提交给以下命令。

aws iam get-context-keys-for-custom-policy \ --policy-input-list file://policyfile.json

输出:

{ "ContextKeyNames": [ "aws:username", "aws:CurrentTime" ] }

有关更多信息,请参阅《Amazon IAM 用户指南》中的使用 IAM Policy Simulator(Amazon CLI 和 Amazon API)

PowerShell
适用于 PowerShell 的工具

示例 1:此示例获取所提供策略 json 中存在的所有上下文键。为提供多个策略,您可以用逗号分隔值列表提供。

$policy1 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/","Condition":{"DateGreaterThan":{"aws:CurrentTime":"2015-08-16T12:00:00Z"}}}}' $policy2 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/"}}' Get-IAMContextKeysForCustomPolicy -PolicyInputList $policy1,$policy2

有关 Amazon SDK 开发人员指南和代码示例的完整列表,请参阅 将 IAM 与 Amazon 开发工具包配合使用。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。