

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Usa el tipo de `AWS::Serverless::GraphQLApi` recurso AWS Serverless Application Model (AWS SAM) para crear y configurar una AWS AppSync GraphQL API para tu aplicación sin servidor.

Para obtener más información AWS AppSync, consulte [¿Qué es? AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) en la *Guía para AWS AppSync desarrolladores*.

## Sintaxis
<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
```

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

`ApiKeys`  <a name="sam-graphqlapi-apikeys"></a>
Cree una clave única que se pueda utilizar para realizar operaciones en GraphQL que requieran una clave de API.  
*Tipo:* [ApiKeys](sam-property-graphqlapi-apikeys.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`Auth`  <a name="sam-graphqlapi-auth"></a>
Configure la autenticación para tu GraphQL API.  
*Tipo*: [Auth](sam-property-graphqlapi-auth.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`Cache`  <a name="sam-graphqlapi-cache"></a>
La entrada de una operación `CreateApiCache`.  
*Tipo:* [AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente al [AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)recurso.

`DataSources`  <a name="sam-graphqlapi-datasources"></a>
Cree fuentes de datos para las funciones AWS AppSync a las que conectarse. AWS SAM es compatible con Amazon AWS Lambda DynamoDB y las fuentes de datos.  
*Tipo:* [DataSource](sam-property-graphqlapi-datasource.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`DomainName`  <a name="sam-graphqlapi-domainname"></a>
Es el nombre de dominio personalizado para la API GraphQL.  
*Tipo:* [AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente al [AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)recurso. AWS SAM genera automáticamente el [AWS::AppSync::DomainNameApiAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainnameapiassociation.html)recurso.

`Functions`  <a name="sam-graphqlapi-functions"></a>
Configure las funciones GraphQL APIs para realizar determinadas operaciones.  
*Tipo *: [Función](sam-property-graphqlapi-function.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`Logging`  <a name="sam-graphqlapi-logging"></a>
Configura el CloudWatch registro de Amazon para tu GraphQL API.  
Si no especificas esta propiedad, AWS SAM generará `CloudWatchLogsRoleArn` y establecerá los siguientes valores:  
+ `ExcludeVerboseContent: true`
+ `FieldLogLevel: ALL`
Para excluirse del registro, especifica lo siguiente:  

```
Logging: false
```
*Tipo:* [LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-logconfig.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-logconfig)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`LogicalId`  <a name="sam-graphqlapi-logicalid"></a>
El nombre exclusivo de la API GraphQL de.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`Name`  <a name="sam-graphqlapi-name"></a>
El nombre de la API GraphQL. Especifica esta propiedad para anular el valor `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`Resolvers`  <a name="sam-graphqlapi-resolvers"></a>
Configure los solucionadores para los campos de la API GraphQL. AWS SAM admite [solucionadores de JavaScript canalizaciones](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html#anatomy-of-a-pipeline-resolver-js).  
*[Tipo: Solucionador](sam-property-graphqlapi-resolver.md)*  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

`SchemaInline`  <a name="sam-graphqlapi-schemainline"></a>
La representación de texto de un esquema de GraphQL en formato SDL.  
*Tipo:* cadena  
*Obligatorio*: condicional. Debe especificar `SchemaInline` o `SchemaUri`.  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Definition](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definition)` propiedad de un `AWS::AppSync::GraphQLSchema` recurso.

`SchemaUri`  <a name="sam-graphqlapi-schemauri"></a>
El URI del bucket de Amazon Simple Storage Service (Amazon S3) o la ruta de acceso a un directorio local.  
Si especifica una ruta a una carpeta local, CloudFormation requiere que el archivo se cargue primero en Amazon S3 antes de la implementación. Puedes utilizar la AWS SAM CLI para facilitar este proceso. Para obtener más información, consulta [Cómo se AWS SAM cargan los archivos locales en el momento de la implementación](deploy-upload-local-files.md).  
*Tipo:* cadena  
*Obligatorio*: condicional. Debe especificar `SchemaInline` o `SchemaUri`.  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[DefinitionS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definitions3location)` propiedad de un `AWS::AppSync::GraphQLSchema` recurso.

`Tags`  <a name="sam-graphqlapi-tags"></a>
Etiquetas (pares de clave-valor) de esta API GraphQL. Utiliza etiquetas para identificar y clasificar los recursos.  
*Tipo*: lista de [etiqueta](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-tags)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`XrayEnabled`  <a name="sam-graphqlapi-xrayenabled"></a>
Indique si quieres utilizar el [rastreo de AWS rayos X](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) para este recurso.  
*Tipo*: Booleano  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[XrayEnabled](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

## valores devueltos
<a name="sam-resource-graphqlapi-return-values"></a>

Para obtener una lista de los valores devueltos, consulte [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) en la [Guía del usuario de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

### GraphQL API con origen de datos de DynamoDB
<a name="sam-resource-graphqlapi-examples-example1"></a>

En este ejemplo, creamos una API GraphQL que usa una tabla de DynamoDB como origen de datos.

**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;
}
```

Este es nuestro código de resolución:

**getPost.js**

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

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

### API de GraphQL con una función de Lambda como origen de datos
<a name="sam-resource-graphqlapi-examples-example2"></a>

En este ejemplo, creamos una API de GraphQL que usa una función de Lambda como origen de datos.

**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
}
```

Estas son nuestras funciones:

**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>

Cree una clave única que se pueda utilizar para realizar operaciones en GraphQL que requieran una clave de API.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

`ApiKeyId`  <a name="sam-graphqlapi-apikeys-apikeyid"></a>
El nombre único de su clave de API. Especifica si desea anular el valor de `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)` propiedad de un `AWS::AppSync::ApiKey` recurso.

`Description`  <a name="sam-graphqlapi-apikeys-description"></a>
Descripción de su clave de API.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-description)` propiedad de un `AWS::AppSync::ApiKey` recurso.

`ExpiresOn`  <a name="sam-graphqlapi-apikeys-expireson"></a>
El tiempo después del cual caduca la clave de API. La fecha se representa como segundos desde la marca temporal Epoch, redondeados a la hora más cercana.  
*Tipo*: Doble  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Expires](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-expires)` propiedad de un `AWS::AppSync::ApiKey` recurso.

`LogicalId`  <a name="sam-graphqlapi-apikeys-logicalid"></a>
El nombre único de su clave de API.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)` propiedad de un `AWS::AppSync::ApiKey` recurso.

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

Configura la autorización para su API GraphQL.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### 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)
```

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

`Additional`  <a name="sam-graphqlapi-auth-additional"></a>
Una lista de tipos de autorización adicionales para su API GraphQL.  
*Tipo*: Lista de [AuthProvider](sam-property-graphqlapi-auth-authprovider.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-lambdaauthorizer"></a>
Especifica la configuración de autorización opcional para su autorizador de funciones de Lambda. Puedes configurar esta propiedad opcional si `Type` se especifica como `AWS_LAMBDA`.  
*Tipo*: [LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`OpenIDConnect`  <a name="sam-graphqlapi-auth-openidconnect"></a>
Especifica la configuración de autorización opcional para su servicio OpenID Connect compatible. Puedes configurar esta propiedad opcional si `Type` se especifica como `OPENID_CONNECT`.  
*Tipo*: [Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

`Type`  <a name="sam-graphqlapi-auth-type"></a>
El tipo de autorización predeterminado entre las aplicaciones y tu AWS AppSync GraphQL API.  
Para obtener una lista y una descripción de los valores permitidos, consulta [Autorización y autenticación](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html) en la *Guía para desarrolladores de AWS AppSync *.  
Al especificar un autorizador de Lambda (`AWS_LAMBDA`), AWS SAM crea una AWS Identity and Access Management política (de IAM) para aprovisionar permisos entre la API GraphQL y la función de Lambda.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-authenticationtype)` propiedad de un recurso. `AWS::AppSync::GraphQLApi`

`UserPool`  <a name="sam-graphqlapi-auth-userpool"></a>
Especifica la configuración de autorización opcional para utilizar grupos de usuarios de Amazon Cognito. Puedes configurar esta propiedad opcional si `Type` se especifica como `AMAZON_COGNITO_USER_POOLS`.  
*Tipo*: [UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` recurso.

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

### Configura un tipo de autorización predeterminado y adicional
<a name="sam-property-graphqlapi-auth-examples-example1"></a>

En este ejemplo, empezamos configurando un autorizador Lambda como el tipo de autorización predeterminado para nuestra API GraphQL.

```
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
```

A continuación, configuramos tipos de autorización adicionales para nuestra API GraphQL añadiendo lo siguiente a nuestra plantilla de AWS SAM :

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

Esto da como resultado la siguiente AWS SAM plantilla:

```
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>

Configuración de autorización opcional para sus tipos de autorización de GraphQL API adicionales.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### 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)
```

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

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-authprovider-lambdaauthorizer"></a>
Especifique la configuración de autorización opcional para su autorizador de AWS Lambda funciones. Puedes configurar esta propiedad opcional si `Type` se especifica como `AWS_LAMBDA`.  
*Tipo: [ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)*  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objeto.

`OpenIDConnect`  <a name="sam-graphqlapi-auth-authprovider-openidconnect"></a>
Especifica la configuración de autorización opcional para su servicio OpenID Connect compatible. Puedes configurar esta propiedad opcional si `Type` se especifica como `OPENID_CONNECT`.  
*Tipo*: [Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objeto.

`Type`  <a name="sam-graphqlapi-auth-authprovider-type"></a>
El tipo de autorización predeterminado entre las aplicaciones y tu AWS AppSync GraphQL API.  
Para obtener una lista y una descripción de los valores permitidos, consulta [Autorización y autenticación](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html) en la *Guía para desarrolladores de AWS AppSync *.  
Al especificar un autorizador de Lambda (`AWS_LAMBDA`), AWS SAM crea una AWS Identity and Access Management política (de IAM) para aprovisionar permisos entre la API GraphQL y la función de Lambda.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[ AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-authenticationtype)` propiedad de un objeto. `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)`

`UserPool`  <a name="sam-graphqlapi-auth-authprovider-userpool"></a>
Especifica la configuración de autorización opcional para utilizar grupos de usuarios de Amazon Cognito. Puedes configurar esta propiedad opcional si `Type` se especifica como `AMAZON_COGNITO_USER_POOLS`.  
*Tipo*: [ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)` propiedad de un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objeto.

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

Configura un origen de datos al que se pueda conectar su solucionador de API GraphQL. Puede usar las plantillas AWS Serverless Application Model (AWS SAM) para configurar las conexiones a las siguientes fuentes de datos:
+ Amazon DynamoDB
+ AWS Lambda

Para obtener más información sobre los orígenes de datos, consulta [Adjuntar un origen de datos](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html) en la *Guía para desarrolladores de AWS AppSync *.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

`DynamoDb`  <a name="sam-graphqlapi-datasource-dynamodb"></a>
Configura una tabla de DynamoDB como origen de datos para su solucionador de API GraphQL.  
*Tipo:* [DynamoDb](sam-property-graphqlapi-datasource-dynamodb.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`Lambda`  <a name="sam-graphqlapi-datasource-lambda"></a>
Se utiliza para configurar una función de Lambda como origen de datos para su solucionador de API GraphQL.  
*Type*: [Lambda](sam-property-graphqlapi-datasource-lambda.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

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

Configura una tabla de Amazon DynamoDB como origen de datos para su solucionador de API de GraphQL.

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

Para declarar esta entidad en su plantilla AWS Serverless Application Model (AWS SAM), utilice la siguiente sintaxis.

### 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
```

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

`DeltaSync`  <a name="sam-graphqlapi-datasource-dynamodb-deltasync"></a>
Describe una configuración de Delta Sync.  
*Tipo:* [DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-deltasyncconfig.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-deltasyncconfig)` propiedad de un `AWS::AppSync::DataSource DynamoDBConfig` objeto.

`Description`  <a name="sam-graphqlapi-datasource-dynamodb-description"></a>
La descripción de su origen de datos.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)` propiedad de un `AWS::AppSync::DataSource` recurso.

`LogicalId`  <a name="sam-graphqlapi-datasource-dynamodb-logicalid"></a>
El nombre único de su origen de datos.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propiedad de un `AWS::AppSync::DataSource` recurso.

`Name`  <a name="sam-graphqlapi-datasource-dynamodb-name"></a>
El nombre de su origen de datos. Especifica esta propiedad para anular el valor `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propiedad de un `AWS::AppSync::DataSource` recurso.

`Permissions`  <a name="sam-graphqlapi-datasource-dynamodb-permissions"></a>
Aprovisione permisos a su origen de datos utilizando [Conectores AWS SAM ](managing-permissions-connectors.md). Puedes proporcionar cualquiera de los siguientes valores en una lista:  
+ `Read` – Permita que su solucionador lea su origen de datos.
+ `Write` – Permita que su solucionador escriba su origen de datos.
AWS SAM utiliza un `AWS::Serverless::Connector` recurso que se transforma en el momento de la implementación para aprovisionar sus permisos. Para más información sobre los recursos generados, consulta [CloudFormation recursos generados cuando se especifica AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).  
Puedes especificar `Permissions` o `ServiceRoleArn`, pero no ambos. Si no se especifica ninguno, AWS SAM generará los valores predeterminados de `Read` y`Write`. Para revocar el acceso a la fuente de datos, elimine el objeto DynamoDB de la plantilla. AWS SAM 
*Tipo*: lista  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente. CloudFormation Es similar a la propiedad `Permissions` de un recurso `AWS::Serverless::Connector`.

`Region`  <a name="sam-graphqlapi-datasource-dynamodb-region"></a>
La Región de AWS de su tabla de DynamoDB. Si no lo especifica, AWS SAM usa. `[AWS::Region](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html#cfn-pseudo-param-region)`  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[AwsRegion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-awsregion)` propiedad de un `AWS::AppSync::DataSource DynamoDBConfig` objeto.

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-dynamodb-servicerolearn"></a>
El ARN del rol de servicio AWS Identity and Access Management (IAM) de la fuente de datos. El sistema adopta este rol al acceder al origen de datos.  
Puedes especificar `Permissions` o `ServiceRoleArn`, pero no ambos.  
*Tipo:* cadena  
*Requerido*: No. Si no se especifica, AWS SAM aplica el valor predeterminado para`Permissions`.  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)` propiedad de un `AWS::AppSync::DataSource` recurso.

`TableArn`  <a name="sam-graphqlapi-datasource-dynamodb-tablearn"></a>
El ARN para la tabla de DynamoDB  
*Tipo:* cadena  
*Obligatorio*: condicional. Si no se especifica el `ServiceRoleArn`, la `TableArn` es obligatoria.  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

`TableName`  <a name="sam-graphqlapi-datasource-dynamodb-tablename"></a>
El nombre de la tabla.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[TableName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-tablename)` propiedad de un `AWS::AppSync::DataSource DynamoDBConfig` objeto.

`UseCallerCredentials`  <a name="sam-graphqlapi-datasource-dynamodb-usecallercredentials"></a>
Establécelo en `true` para utilizar IAM con este origen de datos.  
*Tipo*: Booleano  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[UseCallerCredentials](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-usecallercredentials)` propiedad de un `AWS::AppSync::DataSource DynamoDBConfig` objeto.

`Versioned`  <a name="sam-graphqlapi-datasource-dynamodb-versioned"></a>
Establécelo en `true` para utilizar [Detección de conflictos, resolución de conflictos y sincronización](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) con este origen de datos.  
*Tipo*: Booleano  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Versioned](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-versioned)` propiedad de un `AWS::AppSync::DataSource DynamoDBConfig` objeto.

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

Configura una AWS Lambda función como fuente de datos para tu solucionador de GraphQL API.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

`Description`  <a name="sam-graphqlapi-datasource-lambda-description"></a>
La descripción de su origen de datos.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)` propiedad de un `AWS::AppSync::DataSource` recurso.

`FunctionArn`  <a name="sam-graphqlapi-datasource-lambda-functionarn"></a>
El ARN para la función de Lambda.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[LambdaFunctionArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-lambdaconfig.html#cfn-appsync-datasource-lambdaconfig-lambdafunctionarn)` propiedad de un `AWS::AppSync::DataSource LambdaConfig` objeto.

`LogicalId`  <a name="sam-graphqlapi-datasource-lambda-logicalid"></a>
El nombre único de su origen de datos.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propiedad de un `AWS::AppSync::DataSource` recurso.

`Name`  <a name="sam-graphqlapi-datasource-lambda-name"></a>
El nombre de su origen de datos. Especifica esta propiedad para anular el valor `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propiedad de un `AWS::AppSync::DataSource` recurso.

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-lambda-servicerolearn"></a>
El ARN del rol de servicio AWS Identity and Access Management (IAM) de la fuente de datos. El sistema adopta este rol al acceder al origen de datos.  
Para revocar el acceso al origen de datos, elimine el objeto Lambda de la plantilla de AWS SAM .
*Tipo:* cadena  
*Requerido*: No. Si no se especifica, AWS SAM proporcionará los `Write` permisos mediante[Conectores AWS SAM ](managing-permissions-connectors.md).  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)` propiedad de un `AWS::AppSync::DataSource` recurso.

# Función
<a name="sam-property-graphqlapi-function"></a>

Configure las funciones GraphQL APIs para realizar determinadas operaciones.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### 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)
```

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

`CodeUri`  <a name="sam-graphqlapi-function-codeuri"></a>
Una URL de Amazon Simple Storage Service (Amazon S3) es de código de función o es una ruta de acceso a una carpeta local.  
Si especifica una ruta a una carpeta local, CloudFormation requiere que el archivo se cargue primero en Amazon S3 antes de la implementación. Puedes utilizar la AWS SAM CLI para facilitar este proceso. Para obtener más información, consulta [Cómo se AWS SAM cargan los archivos locales en el momento de la implementación](deploy-upload-local-files.md).  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-codes3location)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`DataSource`  <a name="sam-graphqlapi-function-datasource"></a>
El nombre de origen de datos al que se asociará esta función.  
+ Para hacer referencia a un origen de datos dentro del recurso `AWS::Serverless::GraphQLApi`, especifique su ID lógico.
+ Para hacer referencia a un origen de datos externo al recurso `AWS::Serverless::GraphQLApi`, proporciona su atributo `Name` mediante la función intrínseca `Fn::GetAtt`. Por ejemplo, `!GetAtt MyLambdaDataSource.Name`.
+ Para hacer referencia a un origen de datos desde una pila diferente, utilice `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`.
Si `[NONE | None | none]` se especifica una variación de, AWS SAM generará un `None` valor para el `AWS::AppSync::DataSource` `[Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-type)` objeto.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[DataSourceName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-datasourcename)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`Description`  <a name="sam-graphqlapi-function-description"></a>
La descripción de la función.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-description)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`Id`  <a name="sam-graphqlapi-function-id"></a>
El identificador de función de una función ubicada fuera del recurso `AWS::Serverless::GraphQLApi`.  
+ Para hacer referencia a una función dentro de la misma AWS SAM plantilla, utilice la función `Fn::GetAtt` intrínseca. Por ejemplo, `Id: !GetAtt createPostItemFunc.FunctionId`.
+ Para hacer referencia a una función desde una pila diferente, utilice `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`.
Cuando se usa`Id`, no se permiten todas las demás propiedades. AWS SAM pasará automáticamente el ID de función de la función a la que se hace referencia.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

`InlineCode`  <a name="sam-graphqlapi-function-inlinecode"></a>
El código de la función que contiene las funciones de solicitud y respuesta.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-code)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`LogicalId`  <a name="sam-graphqlapi-function-logicalid"></a>
El nombre único de la función.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`MaxBatchSize`  <a name="sam-graphqlapi-function-maxbatchsize"></a>
El número máximo de entradas de solicitud de resolución que se enviarán a una sola función de AWS Lambda en una operación de `BatchInvoke`.  
*Tipo*: entero  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la [MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-maxbatchsize)propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`Name`  <a name="sam-graphqlapi-function-name"></a>
El nombre de la función. Especifica si desea anular el valor de `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

`Runtime`  <a name="sam-graphqlapi-function-runtime"></a>
Describe el tiempo de ejecución utilizado por una AWS AppSync función o un solucionador de AWS AppSync canalizaciones. Especifica el nombre y la versión del tiempo de ejecución que se utilizará.  
*Tipo*: [tiempo de ejecución](sam-property-graphqlapi-function-runtime.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente. Es similar a la propiedad `[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-runtime)` de un recurso `AWS::AppSync::FunctionConfiguration`.

`Sync`  <a name="sam-graphqlapi-function-sync"></a>
Describe una configuración de sincronización para una función.  
Especifica la estrategia de detección de conflictos y la estrategia de resolución que se utilizará cuando se invoque la función.  
*Tipo:* [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-syncconfig.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-syncconfig)` propiedad de un `AWS::AppSync::FunctionConfiguration` recurso.

# Tiempo de ejecución
<a name="sam-property-graphqlapi-function-runtime"></a>

El tiempo de ejecución de su función o solucionador de canalización. Especifica el nombre y la versión que se utilizará.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

`Name`  <a name="sam-graphqlapi-function-runtime-name"></a>
El nombre del tiempo de ejecución que se utilizará. El único valor permitido actualmente es `APPSYNC_JS`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-name)` propiedad de un `AWS::AppSync::FunctionConfiguration AppSyncRuntime` objeto.

`Version`  <a name="sam-graphqlapi-function-runtime-version"></a>
La versión del tiempo de ejecución que se utilizará. En la actualidad, la única versión permitida es `1.0.0`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-runtimeversion)` propiedad de un `AWS::AppSync::FunctionConfiguration AppSyncRuntime` objeto.

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

Configura los resolutores para los campos de tu API. GraphQL AWS Serverless Application Model (AWS SAM) admite [solucionadores de JavaScript canalizaciones](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html).

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### 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)
```

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

`Caching`  <a name="sam-graphqlapi-resolver-caching"></a>
La configuración de almacenamiento en caché para un solucionador que tiene la caché activada.  
*Tipo:* [CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-cachingconfig.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-cachingconfig)` propiedad de un `AWS::AppSync::Resolver` recurso.

`CodeUri`  <a name="sam-graphqlapi-resolver-codeuri"></a>
El código de la función de solucionador es el URI de Amazon Simple Storage Service (Amazon S3) o la ruta a una carpeta local.  
Si especifica una ruta a una carpeta local, CloudFormation requiere que el archivo se cargue primero en Amazon S3 antes de la implementación. Puedes utilizar la AWS SAM CLI para facilitar este proceso. Para obtener más información, consulte [Cómo se AWS SAM cargan los archivos locales en el momento de la implementación](deploy-upload-local-files.md).  
Si no `InlineCode` se proporciona `CodeUri` ninguna de las dos, AWS SAM generará un `InlineCode` generador que redireccionará la solicitud a la primera función de canalización y recibirá la respuesta de la última función de canalización.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-codes3location)` propiedad de un `AWS::AppSync::Resolver` recurso.

`FieldName`  <a name="sam-graphqlapi-resolver-fieldname"></a>
El nombre de su solucionador. Especifica esta propiedad para anular el valor `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[FieldName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-fieldname)` propiedad de un `AWS::AppSync::Resolver` recurso.

`InlineCode`  <a name="sam-graphqlapi-resolver-inlinecode"></a>
El código de solucionador que contiene las funciones de solicitud y respuesta.  
Si no `InlineCode` se proporciona `CodeUri` ninguna de las dos, AWS SAM se generará un `InlineCode` generador que redireccionará la solicitud a la primera función de canalización y recibirá la respuesta de la última función de canalización.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-code)` propiedad de un `AWS::AppSync::Resolver` recurso.

`LogicalId`  <a name="sam-graphqlapi-resolver-logicalid"></a>
El nombre único para su solucionador. En un esquema GraphQL, el nombre del solucionador debe coincidir con el nombre del campo para el que se usa. Usa el mismo nombre de campo para `LogicalId`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

`MaxBatchSize`  <a name="sam-graphqlapi-resolver-maxbatchsize"></a>
El número máximo de entradas de solicitud de resolución que se enviarán a una sola función de AWS Lambda en una operación de `BatchInvoke`.  
*Tipo*: entero  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-maxbatchsize)` propiedad de un `AWS::AppSync::Resolver` recurso.

`OperationType`  <a name="sam-graphqlapi-resolver-operationtype"></a>
El tipo de operación GraphQL que está asociado al solucionador. Por ejemplo, `Query`, `Mutation` o `Subscription`. Puede agrupar varios solucionadores `LogicalId` en un solo `OperationType`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[TypeName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-typename)` propiedad de un `AWS::AppSync::Resolver` recurso.

`Pipeline`  <a name="sam-graphqlapi-resolver-pipeline"></a>
Funciones vinculadas con el solucionador de canalización. Especifica las funciones mediante un identificador lógico en una lista.  
*Tipo*: lista  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente. Es similar a la propiedad `[PipelineConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-pipelineconfig)` de un recurso `AWS::AppSync::Resolver`.

`Runtime`  <a name="sam-graphqlapi-resolver-runtime"></a>
El tiempo de ejecución de su función o solucionador de canalización. Especifica el nombre y la versión que se utilizará.  
*Tipo*: [tiempo de ejecución](sam-property-graphqlapi-resolver-runtime.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente. Es similar a la propiedad `[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-runtime)` de un recurso `AWS::AppSync::Resolver`.

`Sync`  <a name="sam-graphqlapi-resolver-sync"></a>
Describe una configuración de sincronización para un solucionador.  
Especifica la estrategia de detección de conflictos y la estrategia de resolución que se utilizará cuando se invoque el resolver.  
*Tipo:* [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-syncconfig.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-syncconfig)` propiedad de un `AWS::AppSync::Resolver` recurso.

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

### Utilice el código de la función de resolución AWS SAM generado y guarde los campos como variables
<a name="sam-property-graphqlapi-resolver-examples-example1"></a>

Este es el esquema GraphQL de nuestro ejemplo:

```
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
}
```

Este es un fragmento de nuestra AWS SAM plantilla:

```
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
```

En nuestra AWS SAM plantilla, no `CodeUri` especificamos o. `InlineCode` En el momento de la implementación, genera AWS SAM automáticamente el siguiente código en línea para nuestro solucionador:

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

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

Este código de solucionador predeterminado redirige la solicitud a la primera función de canalización y recibe la respuesta de la última función de canalización.

En nuestra primera función de canalización, podemos usar el campo `args` proporcionado para analizar el objeto de solicitud y crear nuestras variables. Luego podemos usar estas variables dentro de nuestra función. A continuación, se muestra un ejemplo de nuestra función `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;
}
```

# Tiempo de ejecución
<a name="sam-property-graphqlapi-resolver-runtime"></a>

El tiempo de ejecución de su función o solucionador de canalización. Especifica el nombre y la versión que se utilizará.

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

`Name`  <a name="sam-graphqlapi-resolver-runtime-name"></a>
El nombre del tiempo de ejecución que se utilizará. El único valor permitido actualmente es `APPSYNC_JS`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-name)` propiedad de un `AWS::AppSync::Resolver AppSyncRuntime` objeto.

`Version`  <a name="sam-graphqlapi-resolver-runtime-version"></a>
La versión del tiempo de ejecución que se utilizará. En la actualidad, la única versión permitida es `1.0.0`.  
*Tipo:* cadena  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-runtimeversion)` propiedad de un `AWS::AppSync::Resolver AppSyncRuntime` objeto.