

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 開發人員指南*》中的[什麼是 AWS AppSync？](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html)。

## 語法
<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 的身分驗證。  
*類型*：[Auth](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) resource. AWS SAM automatically 產生 [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中設定函數以執行特定操作。  
*類型*：[Function](sam-property-graphqlapi-function.md)  
*必要*：是  
*CloudFormation 相容性*：此屬性對 是唯一的 AWS SAM ，並且沒有 CloudFormation 同等的。

`Logging`  <a name="sam-graphqlapi-logging"></a>
設定 GraphQL API 的 Amazon 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>
API 的唯一名稱GraphQL。  
*類型：*字串  
*必要*：是  
*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>
API 的名稱GraphQL。指定此屬性以覆寫`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>

### GraphQL API 搭配 DynamoDB 資料來源
<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;
}
```

### GraphQL 具有 Lambda 函數做為資料來源的 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 金鑰的到期時間。日期以自 epoch 以來的秒數表示，四捨五入至最接近的整點。  
*類型*：Double  
*必要*：否  
*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>
API 的其他授權類型清單GraphQL。  
*類型*：[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`。  
*類型*：[OpenIDConnectConfig](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>
應用程式和 API AWS AppSync GraphQL 之間的預設授權類型。  
如需允許值的清單和說明，請參閱《 *AWS AppSync 開發人員指南*》中的[授權和身分驗證](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html)。  
當您指定 Lambda 授權方 (`AWS_LAMBDA`) 時， 會 AWS SAM 建立 AWS Identity and Access Management (IAM) 政策，以在 GraphQL API 和 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`。  
*類型*：[OpenIDConnectConfig](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>
應用程式和 API AWS AppSync GraphQL 之間的預設授權類型。  
如需允許值的清單和說明，請參閱《 *AWS AppSync 開發人員指南*》中的[授權和身分驗證](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html)。  
當您指定 Lambda 授權方 (`AWS_LAMBDA`) 時， 會 AWS SAM 建立 AWS Identity and Access Management (IAM) 政策，以在 GraphQL API 和 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)` 屬性。

# 資料來源
<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`和 `Write`。若要撤銷對資料來源的存取，請從 AWS SAM 範本中移除 DynamoDB 物件。
*類型：*清單  
*必要*：否  
*CloudFormation 相容性*：此屬性對 是唯一的 AWS SAM ，並且沒有 CloudFormation 同等的。它類似於 `AWS::Serverless::Connector` 資源的 `Permissions` 屬性。

`Region`  <a name="sam-graphqlapi-datasource-dynamodb-region"></a>
DynamoDB 資料表 AWS 區域 的 。如果您未指定， 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>
描述函數的 Sync 組態。  
指定叫用函數時要使用的衝突偵測策略和解決策略。  
*類型*：[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)` 屬性。