ApiAuth - AWS Serverless Application Model

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

ApiAuth

配置授权以控制对API网关的访问API。

有关使用配置访问权限的更多信息和示例, AWS SAM 请参阅使用 AWS SAM 模板控制 API 访问

语法

要在 AWS Serverless Application Model (AWS SAM) 模板中声明此实体,请使用以下语法。

YAML

AddApiKeyRequiredToCorsPreflight: Boolean AddDefaultAuthorizerToCorsPreflight: Boolean ApiKeyRequired: Boolean Authorizers: CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer | AWS_IAM DefaultAuthorizer: String InvokeRole: String ResourcePolicy: ResourcePolicyStatement UsagePlan: ApiUsagePlan
注意

Authorizers属性包括AWS_IAM,但不需要额外的配置AWS_IAM。有关示例,请参阅AWS IAM

属性

AddApiKeyRequiredToCorsPreflight

如果设置了ApiKeyRequiredCors属性,则设置AddApiKeyRequiredToCorsPreflight会将API密钥添加到Options属性中。

类型:布尔值

必需:否

默认值True

AWS CloudFormation 兼容性:此属性是独有的 AWS SAM ,没有 AWS CloudFormation 等效属性。

AddDefaultAuthorizerToCorsPreflight

如果设置了DefaultAuthorizerCors属性,则设置AddDefaultAuthorizerToCorsPreflight将导致在 “打开” API 部分的Options属性中添加默认授权者。

类型:布尔值

必需:否

默认值:True

AWS CloudFormation 兼容性:此属性是独有的 AWS SAM ,没有 AWS CloudFormation 等效属性。

ApiKeyRequired

如果设置为 true,则所有API事件都需要一个API密钥。有关API密钥的更多信息,请参阅 Gate APIway 开发者指南中的创建和使用带API密钥的使用计划

类型:布尔值

必需:否

AWS CloudFormation 兼容性:此属性是独有的 AWS SAM ,没有 AWS CloudFormation 等效属性。

Authorizers

用于控制对您的API网关API的访问的授权者。

有关更多信息,请参阅 使用 AWS SAM 模板控制 API 访问

类型:CognitoAuthorizer| LambdaTokenAuthorizer| LambdaRequestAuthorizer| AWS_IAM

必需:否

默认值:无

AWS CloudFormation 兼容性:此属性是独有的 AWS SAM ,没有 AWS CloudFormation 等效属性。

附加说明:SAM将授权者添加到 Api 的 OpenApi 定义中。

DefaultAuthorizer

为网关指定默认授权人API,默认情况下,API网关将用于授权API呼叫。

注意

如果将与此关联的函数的 Api EventSource 配置API为使用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。

类型:ResourcePolicyStatement

必需:否

AWS CloudFormation 兼容性:此属性是独有的 AWS SAM ,没有 AWS CloudFormation 等效属性。

附加说明:也可以使用 ApiFunctionAuth 在各个 AWS::Serverless::Function 中定义此设置。这是 with 所必需APIs的EndpointConfiguration: PRIVATE

UsagePlan

配置与此相关的使用计划。API有关使用计划的更多信息,请参阅 Gate APIway 开发者指南中的使用API密钥创建和使用使用计划

设置此 AWS SAM 属性后,此属性会额外生成三个 AWS CloudFormation 资源:AWS::ApiGateway::UsagePlan,一个 AWS::ApiGateway::UsagePlanKey,还有一个 AWS::ApiGateway::ApiKey。 有关此场景的信息,请参阅指定了 UsagePlan 属性。有关生成的 AWS CloudFormation 资源的一般信息,请参阅为 AWS SAM 生成的 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" } } }] IpRangeDenylist: - "10.20.30.40"

AWS IAM

AWS IAM示例

YAML

Auth: Authorizers: AWS_IAM