

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

# HttpApi
<a name="sam-property-function-httpapi"></a>

描述带有类型的事件源的对象 HttpApi。

如果 API 上存在指定路径和方法的 OpenApi 定义，SAM 将为您添加 Lambda 集成和安全部分（如果适用）。

如果 API 上没有指定路径和方法的 OpenApi 定义，SAM 将为您创建此定义。

## 语法
<a name="sam-property-function-httpapi-syntax"></a>

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

### YAML
<a name="sam-property-function-httpapi-syntax.yaml"></a>

```
  [ApiId](#sam-function-httpapi-apiid): String
  [Auth](#sam-function-httpapi-auth): HttpApiFunctionAuth
  [Method](#sam-function-httpapi-method): String
  [Path](#sam-function-httpapi-path): String
  [PayloadFormatVersion](#sam-function-httpapi-payloadformatversion): String
  [RouteSettings](#sam-function-httpapi-routesettings): [RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)
  [TimeoutInMillis](#sam-function-httpapi-timeoutinmillis): Integer
```

## Properties
<a name="sam-property-function-httpapi-properties"></a>

 `ApiId`   <a name="sam-function-httpapi-apiid"></a>
此模板中定义的 [AWS::Serverless::HttpApi](sam-resource-httpapi.md) 资源的标识符。  
如果未定义，则`ServerlessHttpApi`使用生成的 OpenApi 文档创建默认[AWS::Serverless::HttpApi](sam-resource-httpapi.md)资源，该文档包含由此模板中定义的 Api 事件定义的所有路径和方法的并集，这些路径和方法未指定`ApiId`。  
这不能引用其他模板中定义的 [AWS::Serverless::HttpApi](sam-resource-httpapi.md) 资源。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Auth`   <a name="sam-function-httpapi-auth"></a>
此特定 Api\$1路径\$1方法的身份验证配置。  
在未指定 `DefaultAuthorizer` 的情况下，对于覆盖 API 的 `DefaultAuthorizer` 或在各个路径中设置身份验证配置很有用。  
*类型*：[HttpApiFunctionAuth](sam-property-function-httpapifunctionauth.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Method`   <a name="sam-function-httpapi-method"></a>
调用此函数的 HTTP 方法。  
如果未指定 `Path` 和 `Method`，SAM 会创建默认 API 路径，用于将未映射到其他端点的任何请求路由到此 Lambda 函数。每个 API 只能存在其中一个默认路径。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Path`   <a name="sam-function-httpapi-path"></a>
调用此函数的 URI 路径。必须以 `/` 开头。  
如果未指定 `Path` 和 `Method`，SAM 会创建默认 API 路径，用于将未映射到其他端点的任何请求路由到此 Lambda 函数。每个 API 只能存在其中一个默认路径。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `PayloadFormatVersion`   <a name="sam-function-httpapi-payloadformatversion"></a>
指定发送到集成的有效负载的格式。  
注意： PayloadFormatVersion 需要 SAM 修改您的 OpenAPI 定义，因此它仅适用于属性中 OpenApi 定义的内联定义。`DefinitionBody`  
*类型*：字符串  
*必需*：否  
*默认值*：2.0  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `RouteSettings`   <a name="sam-function-httpapi-routesettings"></a>
此 HTTP API 的每条路径的路由设置。有关路由设置的更多信息，请参阅 *API Gateway 开发者指南[AWS::ApiGatewayV2::Stage RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html)*中的。  
注意：如果 RouteSettings 在 HttpApi 资源和事件源中同时指定，则将其 AWS SAM 合并，优先使用事件源属性。  
*类型*：[RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::ApiGatewayV2::Stage`资源的`[RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)`属性。

 `TimeoutInMillis`   <a name="sam-function-httpapi-timeoutinmillis"></a>
自定义超时值，范围在 50 到 29,000 毫秒之间。  
注意： TimeoutInMillis 需要 SAM 修改您的 OpenAPI 定义，因此它仅适用于属性中 OpenApi 定义的内联定义。`DefinitionBody`  
*类型*：整数  
*必需*：否  
*默认值*：5000  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

## 示例
<a name="sam-property-function-httpapi--examples"></a>

### 默认 HttpApi 事件
<a name="sam-property-function-httpapi--examples--default-httpapi-event"></a>

HttpApi 使用默认路径的事件。此 API 中所有未映射的路径和方法都将路由到此端点。

#### YAML
<a name="sam-property-function-httpapi--examples--default-httpapi-event--yaml"></a>

```
Events:
  HttpApiEvent:
    Type: HttpApi
```

### HttpApi
<a name="sam-property-function-httpapi--examples--httpapi"></a>

HttpApi 使用特定路径和方法的事件。

#### YAML
<a name="sam-property-function-httpapi--examples--httpapi--yaml"></a>

```
Events:
  HttpApiEvent:
    Type: HttpApi
    Properties:
      Path: /
      Method: GET
```

### HttpApi 授权
<a name="sam-property-function-httpapi--examples--httpapi-authorization"></a>

HttpApi 使用授权者的事件。

#### YAML
<a name="sam-property-function-httpapi--examples--httpapi-authorization--yaml"></a>

```
Events:
  HttpApiEvent:
    Type: HttpApi
    Properties:
      Path: /authenticated
      Method: GET
      Auth:
        Authorizer: OpenIdAuth
        AuthorizationScopes:
          - scope1
          - scope2
```

# HttpApiFunctionAuth
<a name="sam-property-function-httpapifunctionauth"></a>

在事件级别配置授权。

为特定 API\$1路径\$1方法配置身份验证

## 语法
<a name="sam-property-function-httpapifunctionauth-syntax"></a>

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

### YAML
<a name="sam-property-function-httpapifunctionauth-syntax.yaml"></a>

```
  [AuthorizationScopes](#sam-function-httpapifunctionauth-authorizationscopes): List
  [Authorizer](#sam-function-httpapifunctionauth-authorizer): String
```

## Properties
<a name="sam-property-function-httpapifunctionauth-properties"></a>

 `AuthorizationScopes`   <a name="sam-function-httpapifunctionauth-authorizationscopes"></a>
适用于此 API、路径和方法的授权范围。  
此处列出的范围将覆盖`DefaultAuthorizer`应用的任何范围（如果存在）。  
*类型*：列表  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Authorizer`   <a name="sam-function-httpapifunctionauth-authorizer"></a>
特定函数的`Authorizer`。要使用 IAM 授权，请在模板的 `Globals` 部分指定 `AWS_IAM`，并为 `EnableIamAuthorizer` 指定 `true`。  
如果您已在 API 中指定了全局授权方并想公开特定函数，请通过将 `Authorizer` 设置为 `NONE` 来覆盖。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

## 示例
<a name="sam-property-function-httpapifunctionauth--examples"></a>

### 函数身份验证
<a name="sam-property-function-httpapifunctionauth--examples--function-auth"></a>

在函数级别指定授权

#### YAML
<a name="sam-property-function-httpapifunctionauth--examples--function-auth--yaml"></a>

```
Auth:
  Authorizer: OpenIdAuth
  AuthorizationScopes:
    - scope1
    - scope2
```

### IAM 授权
<a name="sam-property-function-httpapifunctionauth--examples--iam-authorization"></a>

在事件级别指定 IAM 授权。要在事件级别使用 `AWS_IAM` 授权，还必须在模板的 `Globals` 部分为 `EnableIamAuthorizer` 指定 `true`。有关更多信息，请参阅 [模板的 “全局” 部分 AWS SAM](sam-specification-template-anatomy-globals.md)。

#### YAML
<a name="sam-property-function-httpapifunctionauth--examples--iam-authorization--yaml"></a>

```
Globals:
  HttpApi:
    Auth:
      EnableIamAuthorizer: true

Resources:
  HttpApiFunctionWithIamAuth:
    Type: AWS::Serverless::Function
    Properties:
      Events:
        ApiEvent:
          Type: HttpApi
          Properties:
            Path: /iam-auth
            Method: GET
            Auth:
              Authorizer: AWS_IAM
      Handler: index.handler
      InlineCode: |
        def handler(event, context):
          return {'body': 'HttpApiFunctionWithIamAuth', 'statusCode': 200}
      Runtime: python3.9
```