选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

ApiFunctionAuth

聚焦模式
ApiFunctionAuth - AWS Serverless Application Model

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

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

筛选器视图

在事件级别为特定 API、路径和方法配置授权。

语法

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

属性

ApiKeyRequired

此 API、路径和方法需要 API 密钥。

类型:布尔值

必需:否

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

AuthorizationScopes

适用于此 API、路径和方法的授权范围。

如果您已指定 DefaultAuthorizer 属性,则您指定的范围将覆盖该属性应用的所有范围。

类型:列表

必需:否

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

Authorizer

特定函数的Authorizer

如果您为 AWS::Serverless::Api 资源指定了全局授权方,则可以通过将 Authorizer 设置为 NONE 来覆盖该授权方。有关示例,请参阅覆盖 Amazon API Gateway REST API 的全局授权方

注意

如果您使用 AWS::Serverless::Api 资源的 DefinitionBody 属性来描述您的 API,则必须使用 OverrideApiAuthAuthorizer 来覆盖您的全局授权方。请参阅OverrideApiAuth了解更多信息。

有效值AWS_IAMNONE、或 AWS SAM 模板中定义的任何授权方的逻辑 ID。

类型:字符串

必需:否

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

InvokeRole

指定用于 AWS_IAM 授权的 InvokeRole

类型:字符串

必需:否

默认值CALLER_CREDENTIALS

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

附加说明CALLER_CREDENTIALS 映射到 arn:aws:iam::*:user/*,后者使用调用者凭证来调用端点。

OverrideApiAuth

指定为 true 以覆盖 AWS::Serverless::Api 资源的全局授权方配置。只有在您指定全局授权方并使用 AWS::Serverless::Api 资源的 DefinitionBody 属性来描述您的 API 时,才需要此属性。

注意

当您将 OverrideApiAuth 指定为 true 时,AWS SAM 将使用为 ApiKeyRequiredAuthorizerResourcePolicy 提供的任何值覆盖您的全局授权方。因此,使用 OverrideApiAuth 时还必须指定其中至少一个属性。有关示例,请参阅 当为 AWS::Serverless::Api 指定 DefinitionBody 时覆盖全局授权方

类型:布尔值

必需:否

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

ResourcePolicy

在 API 上为此路径配置资源策略。

类型ResourcePolicyStatement

必需:否

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

示例

函数身份验证

以下示例指定了函数级别的授权。

YAML

Auth: ApiKeyRequired: true Authorizer: NONE

覆盖 Amazon API Gateway REST API 的全局授权方

您可以为 AWS::Serverless::Api 资源指定全局授权方。以下是配置全局默认授权方的示例:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth

要覆盖 AWS Lambda 函数的默认授权方,可以将 Authorizer 指定为 NONE。以下是示例:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: ... MyFn: Type: AWS::Serverless::Function Properties: ... Events: LambdaRequest: Type: Api Properties: RestApiId: !Ref MyApiWithLambdaRequestAuth Method: GET Auth: Authorizer: NONE

当为 AWS::Serverless::Api 指定 DefinitionBody 时覆盖全局授权方

当使用 DefinitionBody 属性描述 AWS::Serverless::Api 资源时,之前的覆盖方法不起作用。以下是对 AWS::Serverless::Api 资源使用 DefinitionBody 属性的示例:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... DefinitionBody: swagger: 2.0 ... paths: /lambda-request: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth

要覆盖全局授权方,请使用 OverrideApiAuth 属性。以下是使用 OverrideApiAuth 通过为 Authorizer 提供的值覆盖全局授权方的示例:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApiWithLambdaRequestAuth: Type: AWS::Serverless::Api Properties: ... DefinitionBody: swagger: 2-0 ... paths: /lambda-request: ... Auth: Authorizers: MyLambdaRequestAuth: FunctionArn: !GetAtt MyAuthFn.Arn DefaultAuthorizer: MyLambdaRequestAuth MyAuthFn: Type: AWS::Serverless::Function ... MyFn: Type: AWS::Serverless::Function Properties: ... Events: LambdaRequest: Type: Api Properties: RestApiId: !Ref MyApiWithLambdaRequestAuth Method: GET Auth: Authorizer: NONE OverrideApiAuth: true Path: /lambda-token

本页内容

上一主题:

Api
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。