本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ApiAuth
配置授权,以控制对 API Gateway API 的访问。
有关使用配置访问权限的更多信息和示例, Amazon SAM 请参阅使用您的 Amazon SAM 模板控制 API 访问权限。
语法
要在 Amazon Serverless Application Model (Amazon SAM) 模板中声明此实体,请使用以下语法。
YAML
AddApiKeyRequiredToCorsPreflight:BooleanAddDefaultAuthorizerToCorsPreflight:BooleanApiKeyRequired:BooleanAuthorizers:CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer | AWS_IAMDefaultAuthorizer:StringInvokeRole:StringResourcePolicy:ResourcePolicyStatementUsagePlan:ApiUsagePlan
注意
该Authorizers属性包括AWS_IAM,但不需要额外的配置AWS_IAM。有关示例,请参阅Amazon IAM。
属性
- 
                
AddApiKeyRequiredToCorsPreflight - 
                
如果设置了
ApiKeyRequired和Cors属性,则设置AddApiKeyRequiredToCorsPreflight会导致 API 密钥被添加到Options属性中。类型:布尔值
必需:否
默认值:
TrueAmazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
 - 
                
如果设置了
DefaultAuthorizer和Cors属性,则设置AddDefaultAuthorizerToCorsPreflight会导致默认授权方被添加到 OpenAPI 部分的Options属性中。类型:布尔值
必需:否
默认值:True
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
 - 
                
ApiKeyRequired - 
                
如果设置为 true,则所有 API 事件都需要 API 密钥。有关 API 密钥的更多信息,请参阅《API Gateway 开发人员指南》中的使用 API 密钥创建和使用使用计划。
类型:布尔值
必需:否
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
 - 
                
用于控制对 API Gateway API 的访问的授权方。
有关更多信息,请参阅 使用您的 Amazon SAM 模板控制 API 访问权限。
类型:CognitoAuthorizer| LambdaTokenAuthorizer| LambdaRequestAuthorizer| AWS_IAM
必需:否
默认值:无
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
其他说明:SAM 在 Api 的 OpenApi 定义中添加了授权方。
 - 
                
为 API Gateway API 指定默认授权方,默认情况下,该授权方将用于授权 API 调用。
注意
如果将与此 API EventSource 关联的函数的 Api 配置为使用 IAM 权限,则必须将此属性设置为
AWS_IAM,否则将导致错误。类型:字符串
必需:否
默认值:无
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
 - 
                
InvokeRole - 
                
将所有资源和方法的集成凭证设置为此值。
CALLER_CREDENTIALS映射到arn:aws:iam::,后者使用调用者凭证来调用端点。:<user>/有效值:
CALLER_CREDENTIALS,NONE,IAMRoleArn类型:字符串
必需:否
默认值:
CALLER_CREDENTIALSAmazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
 - 
                
ResourcePolicy - 
                
为 API 中的所有方法和路径配置资源策略。
必需:否
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon CloudFormation 等效属性。
附加说明:也可以使用 ApiFunctionAuth 在各个
AWS::Serverless::Function中定义此设置。这是 with 所必需 APIs 的EndpointConfiguration: PRIVATE。 - 
                
UsagePlan - 
                
配置与此 API 关联的使用计划。有关使用计划的更多信息,请参阅《API Gateway 开发人员指南》中的使用 API 密钥创建和使用使用计划。
设置此 Amazon SAM 属性后,此属性会额外生成三个 Amazon CloudFormation 资源:AWS::ApiGateway::UsagePlan,一个 AWS::ApiGateway::UsagePlanKey,还有一个 AWS::ApiGateway::ApiKey。 有关此场景的信息,请参阅UsagePlan属性已指定。有关生成的 Amazon CloudFormation 资源的一般信息,请参阅生成的 Amazon CloudFormation 资源用于 Amazon SAM。
类型:ApiUsagePlan
必需:否
Amazon CloudFormation 兼容性:此属性是独有的 Amazon SAM ,没有 Amazon 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" } } }] IpRangeDenylist: - "10.20.30.40"
Amazon IAM
Amazon IAM 示例
YAML
Auth: Authorizers: AWS_IAM