为 REST API 获取权限以创建 Amazon Cognito 用户池授权方 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 REST API 获取权限以创建 Amazon Cognito 用户池授权方

要使用 Amazon Cognito 用户池创建授权方,您必须具有 Allow 权限以使用选定 Amazon Cognito 用户池创建或更新授权方。以下 IAM 策略文档显示了此类权限的示例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:POST" ], "Resource": "arn:aws:apigateway:*::/restapis/*/authorizers", "Condition": { "ArnLike": { "apigateway:CognitoUserPoolProviderArn": [ "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_aD06NQmjO", "arn:aws:cognito-idp:us-east-1:234567890123:userpool/us-east-1_xJ1MQtPEN" ] } } }, { "Effect": "Allow", "Action": [ "apigateway:PATCH" ], "Resource": "arn:aws:apigateway:*::/restapis/*/authorizers/*", "Condition": { "ArnLike": { "apigateway:CognitoUserPoolProviderArn": [ "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_aD06NQmjO", "arn:aws:cognito-idp:us-east-1:234567890123:userpool/us-east-1_xJ1MQtPEN" ] } } } ] }

确保将策略附加到您所属的 IAM 组或将您分配到的 IAM 角色。

在上一个策略文档中,apigateway:POST 操作用于创建新的授权方,apigateway:PATCH 操作用于更新现有授权方。您可以通过相应地覆盖 Resource 值的前两个通配符 (*),将策略限制为特定区域或特定 API。

此处使用的 Condition 子句用于将 Allowed 权限限制为指定的用户池。当提供 Condition 子句时,对任何不满足条件的用户池的访问将被拒绝。当权限没有 Condition 子句时,将允许访问任何用户池。

您可以通过以下几种方式设置 Condition 子句:

  • 您可以将 ArnLikeArnEquals 条件表达式设置为仅允许使用指定的用户池创建或更新 COGNITO_USER_POOLS 授权方。

  • 您可以将 ArnNotLikeArnNotEquals 条件表达式设置为允许使用表达式中未指定的任何用户池创建或更新 COGNITO_USER_POOLS 授权方。

  • 您可以省略 Condition 子句,以允许使用任何 Amazon 账户和任何区域中的任何用户池创建或更新 COGNITO_USER_POOLS 授权方。

有关 Amazon Resource Name (ARN) 条件表达式的更多信息,请参阅 Amazon 资源名称条件运算符。如示例中所示,apigateway:CognitoUserPoolProviderArnCOGNITO_USER_POOLS 用户池的 ARN 的列表,它们可用于或者不能用于 COGNITO_USER_POOLS 类型的 API Gateway Authorizer。