本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ApiAuth
配置授权以控制对 API 网关 API 的访问。
有关使用 AWS SAM 配置访问权限的更多信息和示例,请参阅控制对 API 网关 APIs 的访问。
语法
在您的 中声明此实体 AWS 无服务器应用程序模型 (AWS SAM) 模板时,请使用以下语法。
YAML
AddDefaultAuthorizerToCorsPreflight:
Boolean
ApiKeyRequired:Boolean
Authorizers:CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer
DefaultAuthorizer:String
InvokeRole:String
ResourcePolicy:ResourcePolicyStatement
UsagePlan:ApiUsagePlan
属性
-
AddDefaultAuthorizerToCorsPreflight
-
如果设置了
DefaultAuthorizer
和Cors
属性,则设置AddDefaultAuthorizerToCorsPreflight
将导致默认授权方添加到Options
部分的 OpenAPI 属性中。类型:布尔值
必需: 否
默认值:True
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
ApiKeyRequired
-
如果设置为 true,则所有 API 事件都需要一个 API 密钥。有关 API 密钥的更多信息,请参阅 https://docs.amazonaws.cn/apigateway/latest/developerguide/api-gateway-api-usage-plans.html 中的创建和使用带 API 密钥的使用计划API 网关 开发人员指南。
类型:布尔值
必需: 否
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
Authorizers
-
用于控制对您的 API 网关 API 的访问的授权方。
有关更多信息,请参阅 控制对 API 网关 APIs 的访问。
类型: CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer
必需: 否
默认值:无
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
其他说明: SAM 将 授权方添加到 Api 的 OpenApi 定义中。
-
DefaultAuthorizer
-
为 API 网关 API 指定默认授权方,默认情况下将用于授权 API 调用。
注意:如果与此 API 关联的 函数的 Api EventSource 配置为使用 IAM 权限,则必须将此属性设置为
AWS_IAM
,否则将会导致错误。类型: 字符串
必需: 否
默认值:无
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
InvokeRole
-
将所有资源和方法的集成凭证设置为此值。
CALLER_CREDENTIALS
映射到arn:aws:iam::*:user/*
,后者使用调用方凭证调用终端节点。有效值:
CALLER_CREDENTIALS
、NONE
、IAMRoleArn
类型: 字符串
必需: 否
默认值:
CALLER_CREDENTIALS
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
-
ResourcePolicy
-
为 API 上的所有方法和路径配置资源策略。
必需: 否
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
其他说明: 也可以使用
AWS::Serverless::Function
在单个 ApiFunctionAuth 上定义此设置。这是具有 APIs 的EndpointConfiguration: PRIVATE
所必需的。 -
UsagePlan
-
配置与此 API 关联的使用计划。有关使用计划的更多信息,请参阅 https://docs.amazonaws.cn/apigateway/latest/developerguide/api-gateway-api-usage-plans.html 中的创建和使用带 API 密钥的使用计划API 网关 开发人员指南。
在设置此属性时,AWS SAM 属性会生成三个额外的 AWS CloudFormation 资源:AWS::ApiGateway::UsagePlan、AWS::ApiGateway::UsagePlanKey 和 AWS::ApiGateway::ApiKey。有关此方案的信息,请参阅UsagePlan 属性已指定。有关生成的 AWS CloudFormation 资源的一般信息,请参阅已生成 AWS CloudFormation 资源。
类型: ApiUsagePlan
必需: 否
兼容性AWS CloudFormation: 此属性对于 AWS SAM 是唯一的,没有等效的 AWS CloudFormation。
示例
CognitoAuth
Cognito 身份验证示例
YAML
Auth: Authorizers: MyCognitoAuth: UserPoolArn: Fn::GetAtt: - MyUserPool - Arn AuthType: "COGNITO_USER_POOLS" DefaultAuthorizer: MyCognitoAuth InvokeRole: CALLER_CREDENTIALS AddDefaultAuthorizerToCorsPreflight: false ApiKeyRequired: false ResourcePolicy: CustomStatements: [{ "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/Prod/GET/pets", "Condition": { "IpAddress": { "aws:SourceIp": "1.2.3.4" } } }] IpRangeBlacklist: - "10.20.30.40"