

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

# AWS::Serverless::GraphQLApi
<a name="sam-resource-graphqlapi"></a>

使用 AWS Serverless Application Model (AWS SAM) `AWS::Serverless::GraphQLApi` 资源类型为您的无服务器应用程序创建和配置 AWS AppSync GraphQL API。

要了解更多信息 AWS AppSync，请参阅[什么是 AWS AppSync？](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) 在《*AWS AppSync 开发人员指南》*中。

## 语法
<a name="sam-resource-graphqlapi-syntax"></a>

### YAML
<a name="sam-resource-graphqlapi-syntax-yaml"></a>

```
LogicalId:
  Type: AWS::Serverless::GraphQLApi
  Properties:
    ApiKeys: ApiKeys
    Auth: Auth
    Cache: [AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)
    DataSources: DataSource
    DomainName: [AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)
    Functions: Function
    Logging: [LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-logconfig.html)
    Name: String
    Resolvers: Resolver
    SchemaInline: String
    SchemaUri: String
    Tags:
    - [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
    XrayEnabled: Boolean
```

## Properties
<a name="sam-resource-graphqlapi-properties"></a>

`ApiKeys`  <a name="sam-graphqlapi-apikeys"></a>
创建可用于执行需要 API 密钥的 GraphQL 操作的唯一密钥。  
*类型*：[ApiKeys](sam-property-graphqlapi-apikeys.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`Auth`  <a name="sam-graphqlapi-auth"></a>
为您的 GraphQL API 配置身份验证。  
*类型*：[身份验证](sam-property-graphqlapi-auth.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`Cache`  <a name="sam-graphqlapi-cache"></a>
`CreateApiCache` 操作的输入。  
*类型*：[AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给[AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)资源。

`DataSources`  <a name="sam-graphqlapi-datasources"></a>
为中的函数创建 AWS AppSync 要连接的数据源。 AWS SAM 支持 Amazon DynamoDB AWS Lambda 和数据源。  
*类型*：[DataSource](sam-property-graphqlapi-datasource.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`DomainName`  <a name="sam-graphqlapi-domainname"></a>
GraphQL API 的自定义域名。  
*类型*：[AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给[AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)资源。 AWS SAM 自动生成[AWS::AppSync::DomainNameApiAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainnameapiassociation.html)资源。

`Functions`  <a name="sam-graphqlapi-functions"></a>
在中配置函数GraphQL APIs 以执行某些操作。  
*类型*：[函数](sam-property-graphqlapi-function.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`Logging`  <a name="sam-graphqlapi-logging"></a>
为您的 GraphQL API 配置亚马逊 CloudWatch 日志。  
如果不指定此属性， AWS SAM 将生成`CloudWatchLogsRoleArn`并设置以下值：  
+ `ExcludeVerboseContent: true`
+ `FieldLogLevel: ALL`
要选择退出日志记录，请指定以下内容：  

```
Logging: false
```
*类型*：[LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-logconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-logconfig)`属性。

`LogicalId`  <a name="sam-graphqlapi-logicalid"></a>
您的 GraphQL API 的唯一名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)`属性。

`Name`  <a name="sam-graphqlapi-name"></a>
GraphQL API 的名称。指定此属性以覆盖 `LogicalId` 值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)`属性。

`Resolvers`  <a name="sam-graphqlapi-resolvers"></a>
为 GraphQL API 的字段配置解析程序。 AWS SAM 支持 [JavaScript 管道解析程序](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html#anatomy-of-a-pipeline-resolver-js)。  
*类型*：[解析程序](sam-property-graphqlapi-resolver.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`SchemaInline`  <a name="sam-graphqlapi-schemainline"></a>
GraphQL 架构的 SDL 格式的文本表示。  
*类型*：字符串  
*必填*：条件性。您必须指定 `SchemaInline` 或 `SchemaUri`。  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLSchema`资源的`[Definition](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definition)`属性。

`SchemaUri`  <a name="sam-graphqlapi-schemauri"></a>
架构的 Amazon Simple Storage Service (Amazon S3) 存储桶 URI 或本地文件夹的路径。  
如果您指定本地文件夹的路径，则 CloudFormation 要求在部署之前先将文件上传到 Amazon S3。您可以使用 AWS SAM CLI 来简化此过程。有关更多信息，请参阅 [如何在 AWS SAM 部署时上传本地文件](deploy-upload-local-files.md)。  
*类型*：字符串  
*必填*：条件性。您必须指定 `SchemaInline` 或 `SchemaUri`。  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLSchema`资源的`[DefinitionS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definitions3location)`属性。

`Tags`  <a name="sam-graphqlapi-tags"></a>
此 GraphQL API 的标签（键值对）。使用标签标识和分类资源。  
*类型：*[标签](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)列表  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-tags)`属性。

`XrayEnabled`  <a name="sam-graphqlapi-xrayenabled"></a>
指明是否对此资源使用 [AWS X-Ray 跟踪](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)。  
*类型*：布尔值  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[XrayEnabled](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled)`属性。

## 返回值
<a name="sam-resource-graphqlapi-return-values"></a>

有关返回值的列表，请参阅[《CloudFormation 用户指南》](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)中的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#aws-resource-appsync-graphqlapi-return-values.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#aws-resource-appsync-graphqlapi-return-values.html)。

## 示例
<a name="sam-resource-graphqlapi-examples"></a>

### 以 DynamoDB 为数据来源的 GraphQL API
<a name="sam-resource-graphqlapi-examples-example1"></a>

在此示例中，我们创建了一个使用 DynamoDB 表作为数据来源的 GraphQL API。

**schema.graphql**

```
schema {
  query: Query
  mutation: Mutation
}

type Query {
  getPost(id: String!): Post
}

type Mutation {
  addPost(author: String!, title: String!, content: String!): Post!
}

type Post {
  id: String!
  author: String
  title: String
  content: String
  ups: Int!
  downs: Int!
  version: Int!
}
```

**template.yaml**

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  DynamoDBPostsTable:
    Type: AWS::Serverless::SimpleTable

  MyGraphQLAPI:
    Type: AWS::Serverless::GraphQLApi
    Properties:
      SchemaUri: ./sam_graphql_api/schema.graphql
      Auth:
        Type: AWS_IAM
      DataSources:
        DynamoDb:
          PostsDataSource:
            TableName: !Ref DynamoDBPostsTable
            TableArn: !GetAtt DynamoDBPostsTable.Arn
      Functions:
        preprocessPostItem:
          Runtime:
            Name: APPSYNC_JS
            Version: 1.0.0
          DataSource: NONE
          CodeUri: ./sam_graphql_api/preprocessPostItem.js
        createPostItem:
          Runtime:
            Name: APPSYNC_JS
            Version: "1.0.0"
          DataSource: PostsDataSource
          CodeUri: ./sam_graphql_api/createPostItem.js
        getPostFromTable:
          Runtime:
            Name: APPSYNC_JS
            Version: "1.0.0"
          DataSource: PostsDataSource
          CodeUri: ./sam_graphql_api/getPostFromTable.js
      Resolvers:
        Mutation:
          addPost:
            Runtime:
              Name: APPSYNC_JS
              Version: "1.0.0"
            Pipeline:
            - preprocessPostItem
            - createPostItem
        Query:
          getPost:
            CodeUri: ./sam_graphql_api/getPost.js
            Runtime:
              Name: APPSYNC_JS
              Version: "1.0.0"
            Pipeline:
            - getPostFromTable
```

**createPostItem.js**

```
import { util } from "@aws-appsync/utils";

export function request(ctx) {
  const { key, values } = ctx.prev.result;
  return {
    operation: "PutItem",
    key: util.dynamodb.toMapValues(key),
    attributeValues: util.dynamodb.toMapValues(values),
  };
}

export function response(ctx) {
  return ctx.result;
}
```

**getPostFromTable.js**

```
import { util } from "@aws-appsync/utils";

export function request(ctx) {
  return dynamoDBGetItemRequest({ id: ctx.args.id });
}

export function response(ctx) {
  return ctx.result;
}

/**
 * A helper function to get a DynamoDB item
 */
function dynamoDBGetItemRequest(key) {
  return {
    operation: "GetItem",
    key: util.dynamodb.toMapValues(key),
  };
}
```

**preprocessPostItem.js**

```
import { util } from "@aws-appsync/utils";

export function request(ctx) {
  const id = util.autoId();
  const { ...values } = ctx.args;
  values.ups = 1;
  values.downs = 0;
  values.version = 1;
  return { payload: { key: { id }, values: values } };
}

export function response(ctx) {
  return ctx.result;
}
```

解析程序代码如下：

**getPost.js**

```
export function request(ctx) {
  return {};
}

export function response(ctx) {
  return ctx.prev.result;
}
```

### 以 Lambda 函数为数据来源的 GraphQL API
<a name="sam-resource-graphqlapi-examples-example2"></a>

在此示例中，我们创建了一个使用 Lambda 函数作为数据来源的 GraphQL API。

**template.yaml**

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs20.x
      CodeUri: ./lambda

  MyGraphQLAPI:
    Type: AWS::Serverless::GraphQLApi
    Properties:
      Name: MyApi
      SchemaUri: ./gql/schema.gql
      Auth:
        Type: API_KEY
      ApiKeys:
        MyApiKey:
          Description: my api key
      DataSources:
        Lambda:
          MyLambdaDataSource:
            FunctionArn: !GetAtt MyLambdaFunction.Arn
      Functions:
        lambdaInvoker:
          Runtime:
            Name: APPSYNC_JS
            Version: 1.0.0
          DataSource: MyLambdaDataSource
          CodeUri: ./gql/invoker.js
      Resolvers:
        Mutation:
          addPost:
            Runtime:
              Name: APPSYNC_JS
              Version: 1.0.0
            Pipeline:
            - lambdaInvoker
        Query:
          getPost:
            Runtime:
              Name: APPSYNC_JS
              Version: 1.0.0
            Pipeline:
            - lambdaInvoker

Outputs:
  MyGraphQLAPI:
    Description: AppSync API
    Value: !GetAtt MyGraphQLAPI.GraphQLUrl
  MyGraphQLAPIMyApiKey:
    Description: API Key for authentication
    Value: !GetAtt MyGraphQLAPIMyApiKey.ApiKey
```

**schema.graphql**

```
schema {
  query: Query
  mutation: Mutation
}
type Query {
  getPost(id: ID!): Post
}
type Mutation {
  addPost(id: ID!, author: String!, title: String, content: String): Post!
}
type Post {
  id: ID!
  author: String!
  title: String
  content: String
  ups: Int
  downs: Int
}
```

函数如下：

**lambda/index.js**

```
exports.handler = async (event) => {
  console.log("Received event {}", JSON.stringify(event, 3));

  const posts = {
    1: {
      id: "1",
      title: "First book",
      author: "Author1",
      content: "Book 1 has this content",
      ups: "100",
      downs: "10",
    },
  };

  console.log("Got an Invoke Request.");
  let result;
  switch (event.field) {
    case "getPost":
      return posts[event.arguments.id];
    case "addPost":
      // return the arguments back
      return event.arguments;
    default:
      throw new Error("Unknown field, unable to resolve " + event.field);
  }
};
```

**invoker.js**

```
import { util } from "@aws-appsync/utils";

export function request(ctx) {
  const { source, args } = ctx;
  return {
    operation: "Invoke",
    payload: { field: ctx.info.fieldName, arguments: args, source },
  };
}

export function response(ctx) {
  return ctx.result;
}
```

# ApiKeys
<a name="sam-property-graphqlapi-apikeys"></a>

创建可用于执行需要 API 密钥的 GraphQL 操作的唯一密钥。

## 语法
<a name="sam-property-graphqlapi-apikeys-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-apikeys-syntax-yaml"></a>

```
LogicalId:
  ApiKeyId: String
  Description: String
  ExpiresOn: Double
```

## Properties
<a name="sam-property-graphqlapi-apikeys-properties"></a>

`ApiKeyId`  <a name="sam-graphqlapi-apikeys-apikeyid"></a>
您的 API 密钥的唯一名称。指定以覆盖 `LogicalId` 值。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::ApiKey`资源的`[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)`属性。

`Description`  <a name="sam-graphqlapi-apikeys-description"></a>
您的 API 键的描述。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::ApiKey`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-description)`属性。

`ExpiresOn`  <a name="sam-graphqlapi-apikeys-expireson"></a>
API 密钥到期的时间。日期表示为自纪元以来的秒数，向下舍入到最接近的小时。  
*类型*：双精度  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::ApiKey`资源的`[Expires](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-expires)`属性。

`LogicalId`  <a name="sam-graphqlapi-apikeys-logicalid"></a>
您的 API 密钥的唯一名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::ApiKey`资源的`[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)`属性。

# Auth
<a name="sam-property-graphqlapi-auth"></a>

为 GraphQL API 配置授权。

## 语法
<a name="sam-property-graphqlapi-auth-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-auth-syntax-yaml"></a>

```
Additional:
- AuthProvider
LambdaAuthorizer: [LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)
OpenIDConnect: [OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)
Type: String
UserPool: [UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)
```

## Properties
<a name="sam-property-graphqlapi-auth-properties"></a>

`Additional`  <a name="sam-graphqlapi-auth-additional"></a>
GraphQL API 的其他授权类型列表。  
*类型*：清单 [AuthProvider](sam-property-graphqlapi-auth-authprovider.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-lambdaauthorizer"></a>
为 Lambda 函数授权方指定可选的授权配置。如果 `Type` 被指定为 `AWS_LAMBDA`，则可以配置此可选属性。  
*类型*:[LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)`属性。

`OpenIDConnect`  <a name="sam-graphqlapi-auth-openidconnect"></a>
为您的 OpenID Connect 合规服务指定可选的授权配置。如果 `Type` 被指定为 `OPENID_CONNECT`，则可以配置此可选属性。  
*类型*：[Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)`属性。

`Type`  <a name="sam-graphqlapi-auth-type"></a>
应用程序和您的 AWS AppSync GraphQL API 之间的默认授权类型。  
有关允许值的列表和描述，请参阅*《AWS AppSync 开发人员指南》*中的[授权和身份验证](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html)。  
当您指定 Lambda 授权方 () 时， AWS SAM 会创建一个 AWS Identity and Access Management (IAM`AWS_LAMBDA`) 策略来在您的 API GraphQL 和 Lambda 函数之间配置权限。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-authenticationtype)`属性。

`UserPool`  <a name="sam-graphqlapi-auth-userpool"></a>
指定可选的授权配置，以使用 Amazon Cognito 用户群体。如果 `Type` 被指定为 `AMAZON_COGNITO_USER_POOLS`，则可以配置此可选属性。  
*类型*:[UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi`资源的`[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)`属性。

## 示例
<a name="sam-property-graphqlapi-auth-examples"></a>

### 配置默认授权类型和其他授权类型
<a name="sam-property-graphqlapi-auth-examples-example1"></a>

在此示例中，首先将 Lambda 授权方配置为 GraphQL API 的默认授权类型。

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyGraphQLAPI:
    Type: AWS::Serverless::GraphQLApi
    Properties:
      Auth:
        Type: AWS_LAMBDA
        LambdaAuthorizer:
          AuthorizerUri: !GetAtt Authorizer1.Arn
          AuthorizerResultTtlInSeconds: 10
          IdentityValidationExpression: hello
```

然后，在 AWS SAM 模板中添加以下内容，为 GraphQL API 配置其他授权类型：

```
        Additional:
        - Type: AWS_IAM
        - Type: API_KEY
        - Type: OPENID_CONNECT
          OpenIDConnect:
            AuthTTL: 10
            ClientId: myId
            IatTTL: 10
            Issuer: prod
```

这将生成以下 AWS SAM 模板：

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyGraphQLAPI:
    Type: AWS::Serverless::GraphQLApi
    Properties:
      Auth:
        Type: AWS_LAMBDA
        LambdaAuthorizer:
          AuthorizerUri: !GetAtt Authorizer1.Arn
          AuthorizerResultTtlInSeconds: 10
          IdentityValidationExpression: hello
        Additional:
        - Type: AWS_IAM
        - Type: API_KEY
        - Type: OPENID_CONNECT
          OpenIDConnect:
            AuthTTL: 10
            ClientId: myId
            IatTTL: 10
            Issuer: prod
```

# AuthProvider
<a name="sam-property-graphqlapi-auth-authprovider"></a>

您的其他 GraphQL API 授权类型的可选授权配置。

## 语法
<a name="sam-property-graphqlapi-auth-authprovider-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-auth-authprovider-syntax-yaml"></a>

```
LambdaAuthorizer: [LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)
OpenIDConnect: [OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)
Type: String
UserPool: [UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)
```

## Properties
<a name="sam-property-graphqlapi-auth-authprovider-properties"></a>

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-authprovider-lambdaauthorizer"></a>
为您的 AWS Lambda 函数授权方指定可选的授权配置。如果 `Type` 被指定为 `AWS_LAMBDA`，则可以配置此可选属性。  
*类型*:[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi``[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)`对象的`[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)`属性。

`OpenIDConnect`  <a name="sam-graphqlapi-auth-authprovider-openidconnect"></a>
为您的 OpenID Connect 合规服务指定可选的授权配置。如果 `Type` 被指定为 `OPENID_CONNECT`，则可以配置此可选属性。  
*类型*：[Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi``[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)`对象的`[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)`属性。

`Type`  <a name="sam-graphqlapi-auth-authprovider-type"></a>
应用程序和您的 AWS AppSync GraphQL API 之间的默认授权类型。  
有关允许值的列表和描述，请参阅*《AWS AppSync 开发人员指南》*中的[授权和身份验证](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html)。  
当您指定 Lambda 授权方 () 时， AWS SAM 会创建一个 AWS Identity and Access Management (IAM`AWS_LAMBDA`) 策略来在您的 API GraphQL 和 Lambda 函数之间配置权限。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi``[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)`对象的`[ AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-authenticationtype)`属性。

`UserPool`  <a name="sam-graphqlapi-auth-authprovider-userpool"></a>
指定可选的授权配置，以使用 Amazon Cognito 用户群体。如果 `Type` 被指定为 `AMAZON_COGNITO_USER_POOLS`，则可以配置此可选属性。  
*类型*:[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::GraphQLApi``[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)`对象的`[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)`属性。

# DataSource
<a name="sam-property-graphqlapi-datasource"></a>

配置可与 GraphQL API 解析程序连接的数据源。您可以使用 AWS Serverless Application Model (AWS SAM) 模板来配置与以下数据源的连接：
+ Amazon DynamoDB
+ AWS Lambda

要了解有关数据源的更多信息，请参阅*《AWS AppSync 开发人员指南》*中的[附加数据源](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html)。

## 语法
<a name="sam-property-graphqlapi-datasource-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-datasource-syntax-yaml"></a>

```
DynamoDb: DynamoDb
Lambda: Lambda
```

## Properties
<a name="sam-property-graphqlapi-datasource-properties"></a>

`DynamoDb`  <a name="sam-graphqlapi-datasource-dynamodb"></a>
将 DynamoDB 表配置为 GraphQL API 解析程序的数据源。  
*类型*：[DynamoDb](sam-property-graphqlapi-datasource-dynamodb.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`Lambda`  <a name="sam-graphqlapi-datasource-lambda"></a>
将 Lambda 函数配置为 GraphQL API 解析程序的数据源。  
*类型*：[Lambda](sam-property-graphqlapi-datasource-lambda.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

# DynamoDb
<a name="sam-property-graphqlapi-datasource-dynamodb"></a>

将 Amazon DynamoDB 表配置为 GraphQL API 解析程序的数据源。

## 语法
<a name="sam-property-graphqlapi-datasource-dynamodb-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-datasource-dynamodb-syntax-yaml"></a>

```
LogicalId:
  DeltaSync: [DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-deltasyncconfig.html)
  Description: String
  Name: String
  Permissions: List
  Region: String
  ServiceRoleArn: String
  TableArn: String
  TableName: String
  UseCallerCredentials: Boolean
  Versioned: Boolean
```

## Properties
<a name="sam-property-graphqlapi-datasource-dynamodb-properties"></a>

`DeltaSync`  <a name="sam-graphqlapi-datasource-dynamodb-deltasync"></a>
描述增量同步配置。  
*类型*：[DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-deltasyncconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource DynamoDBConfig`对象的`[DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-deltasyncconfig)`属性。

`Description`  <a name="sam-graphqlapi-datasource-dynamodb-description"></a>
数据源的描述。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)`属性。

`LogicalId`  <a name="sam-graphqlapi-datasource-dynamodb-logicalid"></a>
数据源的唯一名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)`属性。

`Name`  <a name="sam-graphqlapi-datasource-dynamodb-name"></a>
数据源的名称。指定此属性以覆盖 `LogicalId` 值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)`属性。

`Permissions`  <a name="sam-graphqlapi-datasource-dynamodb-permissions"></a>
使用 [AWS SAM 连接器](managing-permissions-connectors.md) 配置对数据源的权限。您可以在列表中提供以下任何值：  
+ `Read` - 允许解析程序读取数据源。
+ `Write` - 允许解析程序将数据写入到数据源。
AWS SAM 使用在部署时转换的`AWS::Serverless::Connector`资源来配置您的权限。要了解有关生成的资源的信息，请参阅[CloudFormation 指定时生成的资源 AWS::Serverless::Connector](sam-specification-generated-resources-connector.md)。  
您可以指定 `Permissions` 或 `ServiceRoleArn`，但不能同时指定两者。如果两者都未指定，则 AWS SAM 将生成默认值为 `Read` and `Write`。要撤消对数据源的访问权限，请从模板中移除 DynamoDB 对象。 AWS SAM 
*类型*：列表  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。它类似于 `AWS::Serverless::Connector` 资源的 `Permissions` 属性。

`Region`  <a name="sam-graphqlapi-datasource-dynamodb-region"></a>
你的 AWS 区域 DynamoDB 表的。如果未指定，则 AWS SAM 使用`[AWS::Region](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html#cfn-pseudo-param-region)`。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource DynamoDBConfig`对象的`[AwsRegion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-awsregion)`属性。

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-dynamodb-servicerolearn"></a>
数据 AWS Identity and Access Management 源的 (IAM) 服务角色 ARN。在访问数据源时，系统将代入此角色。  
您可以指定 `Permissions` 或 `ServiceRoleArn`，但不能同时指定两者。  
*类型*：字符串  
*必填项*：否。 如果未指定，则 AWS SAM 应用的默认值`Permissions`。  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)`属性。

`TableArn`  <a name="sam-graphqlapi-datasource-dynamodb-tablearn"></a>
DynamoDB 表的 ARN。  
*类型*：字符串  
*必填*：条件性。如果未指定 `ServiceRoleArn`，则需要有 `TableArn`。  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`TableName`  <a name="sam-graphqlapi-datasource-dynamodb-tablename"></a>
表名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource DynamoDBConfig`对象的`[TableName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-tablename)`属性。

`UseCallerCredentials`  <a name="sam-graphqlapi-datasource-dynamodb-usecallercredentials"></a>
设置为 `true` 以将 IAM 与此数据源一起使用。  
*类型*：布尔值  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource DynamoDBConfig`对象的`[UseCallerCredentials](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-usecallercredentials)`属性。

`Versioned`  <a name="sam-graphqlapi-datasource-dynamodb-versioned"></a>
设置为 `true` 以将[冲突检测、冲突解决和同步](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html)与该数据源一起使用。  
*类型*：布尔值  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource DynamoDBConfig`对象的`[Versioned](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-versioned)`属性。

# Lambda
<a name="sam-property-graphqlapi-datasource-lambda"></a>

将 AWS Lambda 函数配置为 GraphQL API 解析器的数据源。

## 语法
<a name="sam-property-graphqlapi-datasource-lambda-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-datasource-lambda-syntax-yaml"></a>

```
LogicalId:
  Description: String
  FunctionArn: String
  Name: String
  ServiceRoleArn: String
```

## Properties
<a name="sam-property-graphqlapi-datasource-lambda-properties"></a>

`Description`  <a name="sam-graphqlapi-datasource-lambda-description"></a>
数据源的描述。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)`属性。

`FunctionArn`  <a name="sam-graphqlapi-datasource-lambda-functionarn"></a>
Lambda 函数的 ARN。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource LambdaConfig`对象的`[LambdaFunctionArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-lambdaconfig.html#cfn-appsync-datasource-lambdaconfig-lambdafunctionarn)`属性。

`LogicalId`  <a name="sam-graphqlapi-datasource-lambda-logicalid"></a>
数据源的唯一名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)`属性。

`Name`  <a name="sam-graphqlapi-datasource-lambda-name"></a>
数据源的名称。指定此属性以覆盖 `LogicalId` 值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)`属性。

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-lambda-servicerolearn"></a>
数据 AWS Identity and Access Management 源的 (IAM) 服务角色 ARN。在访问数据源时，系统将代入此角色。  
要撤销对数据源的访问权限，请从 AWS SAM 模板中移除 Lambda 对象。
*类型*：字符串  
*必填项*：否。 如果未指定， AWS SAM 将使用配置`Write`权限[AWS SAM 连接器](managing-permissions-connectors.md)。  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::DataSource`资源的`[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)`属性。

# 函数
<a name="sam-property-graphqlapi-function"></a>

在中配置函数GraphQL APIs 以执行某些操作。

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

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

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

```
LogicalId:
  CodeUri: String
  DataSource: String
  Description: String
  Id: String
  InlineCode: String
  MaxBatchSize: Integer
  Name: String
  Runtime: Runtime
  Sync: [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-syncconfig.html)
```

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

`CodeUri`  <a name="sam-graphqlapi-function-codeuri"></a>
函数代码的 Amazon Simple Storage Service (Amazon S3) URI 或本地文件夹路径。  
如果您指定本地文件夹的路径，则 CloudFormation 要求在部署之前先将文件上传到 Amazon S3。您可以使用 AWS SAM CLI 来简化此过程。有关更多信息，请参阅 [如何在 AWS SAM 部署时上传本地文件](deploy-upload-local-files.md)。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-codes3location)`属性。

`DataSource`  <a name="sam-graphqlapi-function-datasource"></a>
此函数将附加到的数据源的名称。  
+ 要引用 `AWS::Serverless::GraphQLApi` 资源中的数据源，请指定其逻辑 ID。
+ 要引用 `AWS::Serverless::GraphQLApi` 资源之外的数据源，请使用 `Fn::GetAtt` 内置函数提供其 `Name` 属性。例如 `!GetAtt MyLambdaDataSource.Name`。
+ 要引用其他堆栈中的数据源，请使用 `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`。
如果指定了变体，`[NONE | None | none]`则 AWS SAM 将为该`AWS::AppSync::DataSource``[Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-type)`对象生成一个`None`值。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[DataSourceName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-datasourcename)`属性。

`Description`  <a name="sam-graphqlapi-function-description"></a>
函数的描述。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-description)`属性。

`Id`  <a name="sam-graphqlapi-function-id"></a>
位于 `AWS::Serverless::GraphQLApi` 资源外的函数的函数 ID。  
+ 要在同一 AWS SAM 模板中引用函数，请使用`Fn::GetAtt`内部函数。例如 `Id: !GetAtt createPostItemFunc.FunctionId`。
+ 要引用其他堆栈中的函数，请使用 `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`。
使用时`Id`，不允许使用所有其他属性。 AWS SAM 将自动传递您引用的函数的函数 ID。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`InlineCode`  <a name="sam-graphqlapi-function-inlinecode"></a>
包含请求和响应函数的函数代码。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-code)`属性。

`LogicalId`  <a name="sam-graphqlapi-function-logicalid"></a>
函数的唯一名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)`属性。

`MaxBatchSize`  <a name="sam-graphqlapi-function-maxbatchsize"></a>
向 `BatchInvoke` 操作中单个 AWS Lambda 函数发送的解析程序请求输入的最大数量。  
*类型*：整数  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的[MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-maxbatchsize)属性。

`Name`  <a name="sam-graphqlapi-function-name"></a>
函数的名称。指定以覆盖 `LogicalId` 值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)`属性。

`Runtime`  <a name="sam-graphqlapi-function-runtime"></a>
描述 AWS AppSync 管道解析器或 AWS AppSync 函数使用的运行时。指定要使用的运行时的名称和版本。  
*类型*：[运行时](sam-property-graphqlapi-function-runtime.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。它类似于 `AWS::AppSync::FunctionConfiguration` 资源的 `[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-runtime)` 属性。

`Sync`  <a name="sam-graphqlapi-function-sync"></a>
描述函数的同步配置。  
指定在调用函数时要使用的冲突检测策略和解决策略。  
*类型*：[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-syncconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration`资源的`[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-syncconfig)`属性。

# 运行时
<a name="sam-property-graphqlapi-function-runtime"></a>

管道解析程序或函数的运行时间。指定要使用的名称和版本。

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

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

### YAML
<a name="sam-property-graphqlapi-function-runtime-syntax-yaml"></a>

```
Name: String
Version: String
```

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

`Name`  <a name="sam-graphqlapi-function-runtime-name"></a>
要使用的运行时系统的名称。当前，允许的唯一值为 `APPSYNC_JS`。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration AppSyncRuntime`对象的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-name)`属性。

`Version`  <a name="sam-graphqlapi-function-runtime-version"></a>
要使用的运行时系统的版本。当前允许的唯一版本为 `1.0.0`。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::FunctionConfiguration AppSyncRuntime`对象的`[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-runtimeversion)`属性。

# 解析程序
<a name="sam-property-graphqlapi-resolver"></a>

为 GraphQL API 的字段配置解析器。 AWS Serverless Application Model (AWS SAM) 支持[JavaScript 管道解析器](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html)。

## 语法
<a name="sam-property-graphqlapi-resolver-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-resolver-syntax-yaml"></a>

```
OperationType:
  LogicalId:
    Caching: [CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-cachingconfig.html)
    CodeUri: String
    FieldName: String
    InlineCode: String 
    MaxBatchSize: Integer
    Pipeline: List
    Runtime: Runtime
    Sync: [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-syncconfig.html)
```

## Properties
<a name="sam-property-graphqlapi-resolver-properties"></a>

`Caching`  <a name="sam-graphqlapi-resolver-caching"></a>
激活了缓存的解析程序的缓存配置。  
*类型*：[CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-cachingconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-cachingconfig)`属性。

`CodeUri`  <a name="sam-graphqlapi-resolver-codeuri"></a>
解析程序函数代码的 Amazon Simple Storage Service (Amazon S3) URI 或本地文件夹路径。  
如果您指定本地文件夹的路径，则 CloudFormation 要求在部署之前先将文件上传到 Amazon S3。您可以使用 AWS SAM CLI 来简化此过程。有关更多信息，请参阅 [如何在 AWS SAM 部署时上传本地文件](deploy-upload-local-files.md)。  
如果两者均未提供`CodeUri`或`InlineCode`，则 AWS SAM 将生成`InlineCode`将请求重定向到第一个管道函数并接收来自最后一个管道函数的响应。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-codes3location)`属性。

`FieldName`  <a name="sam-graphqlapi-resolver-fieldname"></a>
解析程序的名称。指定此属性以覆盖 `LogicalId` 值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[FieldName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-fieldname)`属性。

`InlineCode`  <a name="sam-graphqlapi-resolver-inlinecode"></a>
包含请求和响应函数的解析程序代码。  
如果两者均未提供`CodeUri`或`InlineCode`，则 AWS SAM 将生成`InlineCode`将请求重定向到第一个管道函数并接收来自最后一个管道函数的响应。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-code)`属性。

`LogicalId`  <a name="sam-graphqlapi-resolver-logicalid"></a>
解析程序的唯一名称。在 GraphQL 架构中，解析程序名称应与其使用的字段名称相匹配。对`LogicalId` 也使用这个字段名称。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

`MaxBatchSize`  <a name="sam-graphqlapi-resolver-maxbatchsize"></a>
向 `BatchInvoke` 操作中单个 AWS Lambda 函数发送的解析程序请求输入的最大数量。  
*类型*：整数  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-maxbatchsize)`属性。

`OperationType`  <a name="sam-graphqlapi-resolver-operationtype"></a>
与解析程序关联的 GraphQL 操作类型。例如，`Query`、`Mutation` 或 `Subscription`。您可以按`LogicalId` 将多个解析程序嵌套在单个`OperationType`中。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[TypeName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-typename)`属性。

`Pipeline`  <a name="sam-graphqlapi-resolver-pipeline"></a>
与管道解决程序关联的函数。在列表中按逻辑 ID 指定函数。  
*类型*：列表  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。它类似于 `AWS::AppSync::Resolver` 资源的 `[PipelineConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-pipelineconfig)` 属性。

`Runtime`  <a name="sam-graphqlapi-resolver-runtime"></a>
管道解析程序或函数的运行时间。指定要使用的名称和版本。  
*类型*：[运行时](sam-property-graphqlapi-resolver-runtime.md)  
*是否必需*：是  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。它类似于 `AWS::AppSync::Resolver` 资源的 `[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-runtime)` 属性。

`Sync`  <a name="sam-graphqlapi-resolver-sync"></a>
描述解析程序的同步配置。  
指定在调用解析程序时要使用的冲突检测策略和解决策略。  
*类型*：[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-syncconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver`资源的`[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-syncconfig)`属性。

## 示例
<a name="sam-property-graphqlapi-resolver-examples"></a>

### 使用 AWS SAM 生成的解析器函数代码并将字段另存为变量
<a name="sam-property-graphqlapi-resolver-examples-example1"></a>

以下是我们的示例使用的 GraphQL 架构：

```
schema {
  query: Query
  mutation: Mutation
}

type Query {
  getPost(id: ID!): Post
}

type Mutation {
  addPost(author: String!, title: String!, content: String!): Post!
}

type Post {
  id: ID!
  author: String
  title: String
  content: String
}
```

以下是我们 AWS SAM 模板的片段：

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyGraphQLApi:
    Type: AWS::Serverless::GraphQLApi
    Properties:
      ...
      Functions:
        preprocessPostItem:
          ...
        createPostItem:
          ...
      Resolvers:
        Mutation:
          addPost:
            Runtime:
              Name: APPSYNC_JS
              Version: 1.0.0
            Pipeline:
            - preprocessPostItem
            - createPostItem
```

在我们的 AWS SAM 模板中，我们没有指定`CodeUri`或`InlineCode`。部署时， AWS SAM 会自动为我们的解析器生成以下内联代码：

```
export function request(ctx) {
  return {};
}

export function response(ctx) {
  return ctx.prev.result;
}
```

这个默认的解析程序代码会将请求重定向到第一个管道函数，并接收来自最后一个管道函数的响应。

在第一个管道函数中，可以使用提供的 `args` 字段来解析请求对象并创建变量。然后就可以在函数中使用这些变量。以下是 `preprocessPostItem` 函数的示例：

```
import { util } from "@aws-appsync/utils";

export function request(ctx) {
  const author = ctx.args.author;
  const title = ctx.args.title;
  const content = ctx.args.content;
  
  // Use variables to process data
  
}

export function response(ctx) {
  return ctx.result;
}
```

# 运行时
<a name="sam-property-graphqlapi-resolver-runtime"></a>

管道解析程序或函数的运行时间。指定要使用的名称和版本。

## 语法
<a name="sam-property-graphqlapi-resolver-runtime-syntax"></a>

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

### YAML
<a name="sam-property-graphqlapi-resolver-runtime-syntax-yaml"></a>

```
Name: String
Version: String
```

## Properties
<a name="sam-property-graphqlapi-resolver-runtime-properties"></a>

`Name`  <a name="sam-graphqlapi-resolver-runtime-name"></a>
要使用的运行时系统的名称。当前，允许的唯一值为 `APPSYNC_JS`。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver AppSyncRuntime`对象的`[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-name)`属性。

`Version`  <a name="sam-graphqlapi-resolver-runtime-version"></a>
要使用的运行时系统的版本。当前允许的唯一版本为 `1.0.0`。  
*类型*：字符串  
*是否必需*：是  
*CloudFormation 兼容性*：此属性直接传递给`AWS::AppSync::Resolver AppSyncRuntime`对象的`[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-runtimeversion)`属性。