

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Utilisez le type de `AWS::Serverless::GraphQLApi` ressource AWS Serverless Application Model (AWS SAM) pour créer et configurer une AWS AppSync GraphQL API pour votre application sans serveur.

Pour en savoir plus AWS AppSync, voir [Qu'est-ce que c'est AWS AppSync ?](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) dans le *Guide AWS AppSync du développeur*.

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

## Propriétés
<a name="sam-resource-graphqlapi-properties"></a>

`ApiKeys`  <a name="sam-graphqlapi-apikeys"></a>
Créez une clé unique qui peut être utilisée pour effectuer des opérations GraphQL nécessitant une clé d'API.  
*Type :* [ApiKeys](sam-property-graphqlapi-apikeys.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`Auth`  <a name="sam-graphqlapi-auth"></a>
Configurez l'authentification pour votre API GraphQL.  
*Type* : [Authentification](sam-property-graphqlapi-auth.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`Cache`  <a name="sam-graphqlapi-cache"></a>
Entrée d'une opération `CreateApiCache`.  
*Type :* [AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la [AWS::AppSync::ApiCache](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apicache.html)ressource.

`DataSources`  <a name="sam-graphqlapi-datasources"></a>
Créez des sources de données auxquelles les fonctions AWS AppSync peuvent se connecter. AWS SAM prend en charge Amazon DynamoDB et les sources de données AWS Lambda .  
*Type :* [DataSource](sam-property-graphqlapi-datasource.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`DomainName`  <a name="sam-graphqlapi-domainname"></a>
Nom de domaine personnalisé pour votre API GraphQL.  
*Type :* [AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la [AWS::AppSync::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainname.html)ressource. AWS SAM génère automatiquement la [AWS::AppSync::DomainNameApiAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-domainnameapiassociation.html)ressource.

`Functions`  <a name="sam-graphqlapi-functions"></a>
Configurez les fonctions GraphQL APIs pour effectuer certaines opérations.  
*Type* : [Fonction](sam-property-graphqlapi-function.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`Logging`  <a name="sam-graphqlapi-logging"></a>
Configure la CloudWatch journalisation Amazon pour votre GraphQL API.  
Si vous ne spécifiez pas cette propriété, AWS SAM générera `CloudWatchLogsRoleArn` et définira les valeurs suivantes :  
+ `ExcludeVerboseContent: true`
+ `FieldLogLevel: ALL`
Pour désactiver la journalisation, spécifiez les informations suivantes :  

```
Logging: false
```
*Type :* [LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-logconfig.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[LogConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-logconfig)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`LogicalId`  <a name="sam-graphqlapi-logicalid"></a>
Le nom unique de votre API GraphQL.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`Name`  <a name="sam-graphqlapi-name"></a>
Nom de votre API GraphQL. Spécifiez cette propriété pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`Resolvers`  <a name="sam-graphqlapi-resolvers"></a>
Configurez des résolveurs pour les champs de votre API GraphQL. AWS SAM  prend en charge les [résolveurs de pipelines JavaScript](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html#anatomy-of-a-pipeline-resolver-js).  
*Type* : [Résolveur](sam-property-graphqlapi-resolver.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`SchemaInline`  <a name="sam-graphqlapi-schemainline"></a>
Représentation texte d'un schéma GraphQL au format SDL.  
*Type* : chaîne  
*Obligatoire :* selon les conditions. Vous devez spécifier `SchemaInline` ou `SchemaUri`.  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Definition](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definition)` propriété d'une `AWS::AppSync::GraphQLSchema` ressource.

`SchemaUri`  <a name="sam-graphqlapi-schemauri"></a>
L'URI du compartiment Amazon Simple Storage Service (Amazon S3) du schéma ou le chemin d'accès à un dossier local.  
Si vous spécifiez un chemin d'accès à un dossier local, le fichier CloudFormation doit d'abord être chargé sur Amazon S3 avant le déploiement. Vous pouvez utiliser la CLI  AWS SAM pour faciliter ce processus. Pour de plus amples informations, veuillez consulter [Comment AWS SAM télécharge les fichiers locaux lors du déploiement](deploy-upload-local-files.md).  
*Type* : chaîne  
*Obligatoire :* selon les conditions. Vous devez spécifier `SchemaInline` ou `SchemaUri`.  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[DefinitionS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definitions3location)` propriété d'une `AWS::AppSync::GraphQLSchema` ressource.

`Tags`  <a name="sam-graphqlapi-tags"></a>
Balises (paires clé-valeur) pour cette API GraphQL. Utilisez les balises pour identifier et classer les ressources.  
*Type :* liste des éléments [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-tags)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`XrayEnabled`  <a name="sam-graphqlapi-xrayenabled"></a>
Indiquez si vous souhaitez utiliser [le traçage aux rayons X AWS](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) pour cette ressource.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[XrayEnabled](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

## Valeurs renvoyées
<a name="sam-resource-graphqlapi-return-values"></a>

Pour obtenir la liste des valeurs renvoyées, reportez-vous [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)au [Guide de l'CloudFormation utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

### GraphQL API avec source de données DynamoDB
<a name="sam-resource-graphqlapi-examples-example1"></a>

Dans cet exemple, nous créons une API GraphQL qui utilise une table DynamoDB comme source de données.

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

Voici notre code de résolution :

**getPost.js**

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

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

### API GraphQL avec une fonction Lambda comme source de données
<a name="sam-resource-graphqlapi-examples-example2"></a>

Dans cet exemple, nous créons une API GraphQL qui utilise une fonction Lambda comme source de données.

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

Voici nos fonctions :

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

Créez une clé unique qui peut être utilisée pour effectuer des opérations GraphQL nécessitant une clé d'API.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

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

## Propriétés
<a name="sam-property-graphqlapi-apikeys-properties"></a>

`ApiKeyId`  <a name="sam-graphqlapi-apikeys-apikeyid"></a>
Nom unique de votre clé d'API. Spécifiez pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)` propriété d'une `AWS::AppSync::ApiKey` ressource.

`Description`  <a name="sam-graphqlapi-apikeys-description"></a>
Description de votre clé d'API.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-description)` propriété d'une `AWS::AppSync::ApiKey` ressource.

`ExpiresOn`  <a name="sam-graphqlapi-apikeys-expireson"></a>
Heure après laquelle la clé API expire. La date est représentée en secondes depuis la date epoch, arrondie à l'heure la plus proche.  
*Type* : double  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Expires](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-expires)` propriété d'une `AWS::AppSync::ApiKey` ressource.

`LogicalId`  <a name="sam-graphqlapi-apikeys-logicalid"></a>
Nom unique de votre clé d'API.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ApiKeyId](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-apikey.html#cfn-appsync-apikey-apikeyid)` propriété d'une `AWS::AppSync::ApiKey` ressource.

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

Configurez l'autorisation pour votre API GraphQL.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-graphqlapi-auth-properties"></a>

`Additional`  <a name="sam-graphqlapi-auth-additional"></a>
Liste de types d'authentification supplémentaires pour votre API GraphQL.  
*Type* : Liste des [AuthProvider](sam-property-graphqlapi-auth-authprovider.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-lambdaauthorizer"></a>
Spécifiez la configuration d'autorisation facultative pour votre mécanisme d'autorisation de fonctions Lambda. Vous pouvez configurer cette propriété facultative lorsque `AWS_LAMBDA` est spécifié pour `Type`.  
*Type* : [LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`OpenIDConnect`  <a name="sam-graphqlapi-auth-openidconnect"></a>
Spécifiez la configuration d'autorisation facultative pour votre service conforme à OpenID Connect. Vous pouvez configurer cette propriété facultative lorsque `OPENID_CONNECT` est spécifié pour `Type`.  
*Type* : [Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`Type`  <a name="sam-graphqlapi-auth-type"></a>
Type d'autorisation par défaut entre les applications et votre AWS AppSync GraphQL API.  
Pour obtenir la liste et la description des valeurs autorisées, consultez la section [Autorisation et authentification](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html) dans le *Guide du développeur AWS AppSync *.  
Lorsque vous spécifiez un autorisateur Lambda (`AWS_LAMBDA`), il AWS SAM crée une politique Gestion des identités et des accès AWS (IAM) pour octroyer des autorisations entre votre API GraphQL et la fonction Lambda.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-authenticationtype)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

`UserPool`  <a name="sam-graphqlapi-auth-userpool"></a>
Spécifiez la configuration d'autorisation facultative pour l'utilisation des groupes d'utilisateurs Amazon Cognito. Vous pouvez configurer cette propriété facultative lorsque `AMAZON_COGNITO_USER_POOLS` est spécifié pour `Type`.  
*Type* : [UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)` propriété d'une `AWS::AppSync::GraphQLApi` ressource.

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

### Configurer un type d'autorisation par défaut et un type d'autorisation supplémentaire
<a name="sam-property-graphqlapi-auth-examples-example1"></a>

Dans cet exemple, nous commençons par configurer un mécanisme d'autorisation Lambda comme type d'autorisation par défaut pour notre 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
```

Ensuite, nous configurons des types d'autorisation supplémentaires pour notre API GraphQL en ajoutant les éléments suivants à notre modèle  AWS SAM  :

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

Cela donne le AWS SAM modèle suivant :

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

Configuration d'autorisation facultative pour vos types d'autorisation supplémentaires de l'API GraphQL.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-graphqlapi-auth-authprovider-properties"></a>

`LambdaAuthorizer`  <a name="sam-graphqlapi-auth-authprovider-lambdaauthorizer"></a>
Spécifiez la configuration d'autorisation facultative pour votre autorisateur de AWS Lambda fonction. Vous pouvez configurer cette propriété facultative lorsque `AWS_LAMBDA` est spécifié pour `Type`.  
*Type* : [ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ LambdaAuthorizerConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html)` propriété d'un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objet.

`OpenIDConnect`  <a name="sam-graphqlapi-auth-authprovider-openidconnect"></a>
Spécifiez la configuration d'autorisation facultative pour votre service conforme à OpenID Connect. Vous pouvez configurer cette propriété facultative lorsque `OPENID_CONNECT` est spécifié pour `Type`.  
*Type* : [Open IDConnect Config](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ OpenIDConnectConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html)` propriété d'un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objet.

`Type`  <a name="sam-graphqlapi-auth-authprovider-type"></a>
Type d'autorisation par défaut entre les applications et votre AWS AppSync GraphQL API.  
Pour obtenir la liste et la description des valeurs autorisées, consultez la section [Autorisation et authentification](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html) dans le *Guide du développeur AWS AppSync *.  
Lorsque vous spécifiez un autorisateur Lambda (`AWS_LAMBDA`), il AWS SAM crée une politique Gestion des identités et des accès AWS (IAM) pour octroyer des autorisations entre votre API GraphQL et la fonction Lambda.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ AuthenticationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-authenticationtype)` propriété d'un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objet.

`UserPool`  <a name="sam-graphqlapi-auth-authprovider-userpool"></a>
Spécifiez la configuration d'autorisation facultative pour l'utilisation des groupes d'utilisateurs Amazon Cognito. Vous pouvez configurer cette propriété facultative lorsque `AMAZON_COGNITO_USER_POOLS` est spécifié pour `Type`.  
*Type* : [ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ UserPoolConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-userpoolconfig.html)` propriété d'un `AWS::AppSync::GraphQLApi` `[ AdditionalAuthenticationProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html)` objet.

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

Configurez une source de données à laquelle votre résolveur d'API GraphQL peut se connecter. Vous pouvez utiliser des modèles AWS Serverless Application Model (AWS SAM) pour configurer les connexions aux sources de données suivantes :
+ Amazon DynamoDB
+ AWS Lambda

Pour en savoir plus sur les sources de données, consultez [Joindre une source de données](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html) dans le *Guide du développeur AWS AppSync *.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

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

## Propriétés
<a name="sam-property-graphqlapi-datasource-properties"></a>

`DynamoDb`  <a name="sam-graphqlapi-datasource-dynamodb"></a>
Configurez une table DynamoDB comme source de données pour votre résolveur d'API GraphQL.  
*Type :* [DynamoDb](sam-property-graphqlapi-datasource-dynamodb.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`Lambda`  <a name="sam-graphqlapi-datasource-lambda"></a>
Configurez une fonction Lambda en tant que source de données pour votre résolveur d'API GraphQL.  
*Type* : [Lambda](sam-property-graphqlapi-datasource-lambda.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

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

Configurez une table Amazon DynamoDB comme source de données pour votre résolveur d'API GraphQL.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-graphqlapi-datasource-dynamodb-properties"></a>

`DeltaSync`  <a name="sam-graphqlapi-datasource-dynamodb-deltasync"></a>
Décrit une configuration Delta Sync.  
*Type :* [DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-deltasyncconfig.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[DeltaSyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-deltasyncconfig)` propriété d'un `AWS::AppSync::DataSource DynamoDBConfig` objet.

`Description`  <a name="sam-graphqlapi-datasource-dynamodb-description"></a>
Description de la source de données.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)` propriété d'une `AWS::AppSync::DataSource` ressource.

`LogicalId`  <a name="sam-graphqlapi-datasource-dynamodb-logicalid"></a>
Nom unique de la source de données.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propriété d'une `AWS::AppSync::DataSource` ressource.

`Name`  <a name="sam-graphqlapi-datasource-dynamodb-name"></a>
Nom de la source de données. Spécifiez cette propriété pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propriété d'une `AWS::AppSync::DataSource` ressource.

`Permissions`  <a name="sam-graphqlapi-datasource-dynamodb-permissions"></a>
Accordez des autorisations à votre source de données à l'aide de [Connecteurs AWS SAM ](managing-permissions-connectors.md). Vous pouvez fournir une entrée des façons suivantes :  
+ `Read`— Autorisez votre résolveur à lire votre source de données.
+ `Write`— Autorisez votre résolveur à écrire dans votre source de données.
AWS SAM utilise une `AWS::Serverless::Connector` ressource qui est transformée lors du déploiement pour fournir vos autorisations. Pour en savoir plus sur les ressources générées, consultez [CloudFormation ressources générées lorsque vous spécifiez AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).  
Vous pouvez spécifier `Permissions` ou `ServiceRoleArn`, mais pas les deux. Si aucune des deux n'est spécifiée, AWS SAM générera les valeurs par défaut de `Read` et`Write`. Pour révoquer l'accès à votre source de données, supprimez l'objet DynamoDB de votre modèle. AWS SAM 
*Type* : liste  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent. Elle est similaire à la propriété`Permissions` d'une ressource `AWS::Serverless::Connector`.

`Region`  <a name="sam-graphqlapi-datasource-dynamodb-region"></a>
Le Région AWS de votre table DynamoDB. Si vous ne le spécifiez pas, AWS SAM utilise`[AWS::Region](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html#cfn-pseudo-param-region)`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[AwsRegion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-awsregion)` propriété d'un `AWS::AppSync::DataSource DynamoDBConfig` objet.

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-dynamodb-servicerolearn"></a>
L'ARN du rôle de service Gestion des identités et des accès AWS (IAM) pour la source de données. Le système assume ce rôle lors de l'accès à la source de données.  
Vous pouvez spécifier `Permissions` ou `ServiceRoleArn`, mais pas les deux.  
*Type* : chaîne  
*Nécessaire* : Non Si elle n'est pas spécifiée, AWS SAM applique la valeur par défaut pour`Permissions`.  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)` propriété d'une `AWS::AppSync::DataSource` ressource.

`TableArn`  <a name="sam-graphqlapi-datasource-dynamodb-tablearn"></a>
L'ARN de la table DynamoDB.  
*Type* : chaîne  
*Obligatoire :* selon les conditions. Si vous ne spécifiez pas `ServiceRoleArn`, `TableArn` est obligatoire.  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`TableName`  <a name="sam-graphqlapi-datasource-dynamodb-tablename"></a>
Nom de la table.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[TableName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-tablename)` propriété d'un `AWS::AppSync::DataSource DynamoDBConfig` objet.

`UseCallerCredentials`  <a name="sam-graphqlapi-datasource-dynamodb-usecallercredentials"></a>
Définir sur `true` pour utiliser IAM avec cette source de données.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[UseCallerCredentials](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-usecallercredentials)` propriété d'un `AWS::AppSync::DataSource DynamoDBConfig` objet.

`Versioned`  <a name="sam-graphqlapi-datasource-dynamodb-versioned"></a>
Définir sur `true` pour utiliser [la détection et la résolution des conflits et synchroniser](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) avec cette source de données.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Versioned](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-versioned)` propriété d'un `AWS::AppSync::DataSource DynamoDBConfig` objet.

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

Configurez une AWS Lambda fonction en tant que source de données pour votre résolveur GraphQL d'API.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

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

## Propriétés
<a name="sam-property-graphqlapi-datasource-lambda-properties"></a>

`Description`  <a name="sam-graphqlapi-datasource-lambda-description"></a>
Description de la source de données.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-description)` propriété d'une `AWS::AppSync::DataSource` ressource.

`FunctionArn`  <a name="sam-graphqlapi-datasource-lambda-functionarn"></a>
ARN de la fonction Lambda  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[LambdaFunctionArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-lambdaconfig.html#cfn-appsync-datasource-lambdaconfig-lambdafunctionarn)` propriété d'un `AWS::AppSync::DataSource LambdaConfig` objet.

`LogicalId`  <a name="sam-graphqlapi-datasource-lambda-logicalid"></a>
Nom unique de la source de données.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propriété d'une `AWS::AppSync::DataSource` ressource.

`Name`  <a name="sam-graphqlapi-datasource-lambda-name"></a>
Nom de la source de données. Spécifiez cette propriété pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name)` propriété d'une `AWS::AppSync::DataSource` ressource.

`ServiceRoleArn`  <a name="sam-graphqlapi-datasource-lambda-servicerolearn"></a>
L'ARN du rôle de service Gestion des identités et des accès AWS (IAM) pour la source de données. Le système assume ce rôle lors de l'accès à la source de données.  
Pour révoquer l'accès à votre source de données, supprimez l'objet Lambda de votre modèle  AWS SAM .
*Type* : chaîne  
*Nécessaire* : Non Si ce n'est pas spécifié, AWS SAM fournira `Write` les autorisations à l'aide de[Connecteurs AWS SAM ](managing-permissions-connectors.md).  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ServiceRoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn)` propriété d'une `AWS::AppSync::DataSource` ressource.

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

Configurez les fonctions GraphQL APIs pour effectuer certaines opérations.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-graphqlapi-function-properties"></a>

`CodeUri`  <a name="sam-graphqlapi-function-codeuri"></a>
L'URI Amazon Simple Storage Service (Amazon S3) du code de fonction ou le chemin d'accès au dossier local.  
Si vous spécifiez un chemin d'accès à un dossier local, le fichier CloudFormation doit d'abord être chargé sur Amazon S3 avant le déploiement. Vous pouvez utiliser la CLI  AWS SAM pour faciliter ce processus. Pour de plus amples informations, veuillez consulter [Comment AWS SAM télécharge les fichiers locaux lors du déploiement](deploy-upload-local-files.md).  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-codes3location)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`DataSource`  <a name="sam-graphqlapi-function-datasource"></a>
Le nom de source de données que cette fonction va joindre.  
+ Pour référencer une source de données dans la ressource `AWS::Serverless::GraphQLApi`, spécifiez son ID logique.
+ Pour référencer une source de données en dehors de la ressource `AWS::Serverless::GraphQLApi`, fournissez son attribut `Name` à l'aide de la fonction intrinsèque `Fn::GetAtt`. Par exemple, `!GetAtt MyLambdaDataSource.Name`.
+ Pour référencer une source de données provenant d'une autre pile, utilisez `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`.
Si une variation de `[NONE | None | none]` est spécifiée, une `None` valeur AWS SAM sera générée pour l'`AWS::AppSync::DataSource``[Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-type)`objet.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[DataSourceName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-datasourcename)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`Description`  <a name="sam-graphqlapi-function-description"></a>
La description de votre fonction.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-description)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`Id`  <a name="sam-graphqlapi-function-id"></a>
L'ID de fonction d'une fonction située en dehors de la ressource `AWS::Serverless::GraphQLApi`.  
+ Pour référencer une fonction dans le même AWS SAM modèle, utilisez la fonction `Fn::GetAtt` intrinsèque. Par exemple `Id: !GetAtt createPostItemFunc.FunctionId`.
+ Pour référencer une fonction provenant d'une autre pile, utilisez `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)`.
Lors de l'utilisation`Id`, toutes les autres propriétés ne sont pas autorisées. AWS SAM transmettra automatiquement l'ID de fonction de votre fonction référencée.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`InlineCode`  <a name="sam-graphqlapi-function-inlinecode"></a>
Le code de fonction contenant les fonctions de demande et de réponse.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-code)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`LogicalId`  <a name="sam-graphqlapi-function-logicalid"></a>
Le nom unique de votre fonction.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`MaxBatchSize`  <a name="sam-graphqlapi-function-maxbatchsize"></a>
Le nombre maximal d'entrées de requêtes de résolveur qui seront envoyées à une seule fonction AWS Lambda dans une opération `BatchInvoke`.  
*Type* : entier  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la [MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-maxbatchsize)propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`Name`  <a name="sam-graphqlapi-function-name"></a>
Nom de la fonction. Spécifiez pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

`Runtime`  <a name="sam-graphqlapi-function-runtime"></a>
Décrit un environnement d'exécution utilisé par une AWS AppSync fonction ou un résolveur de AWS AppSync pipeline. Spécifie le nom et la version d'exécution à utiliser.  
*Type* : [temps d'exécution](sam-property-graphqlapi-function-runtime.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent. Elle est similaire à la propriété`[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-runtime)` d'une ressource `AWS::AppSync::FunctionConfiguration`.

`Sync`  <a name="sam-graphqlapi-function-sync"></a>
Décrit une configuration Sync pour une fonction.  
Spécifie la stratégie de détection de conflits et de résolution à utiliser lorsque la fonction est appelée.  
*Type :* [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-syncconfig.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-syncconfig)` propriété d'une `AWS::AppSync::FunctionConfiguration` ressource.

# Environnement d’exécution
<a name="sam-property-graphqlapi-function-runtime"></a>

Le temps d'exécution de votre résolveur ou de votre fonction de pipeline. Spécifie le nom et la version d'exécution à utiliser.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

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

## Propriétés
<a name="sam-property-graphqlapi-function-runtime-properties"></a>

`Name`  <a name="sam-graphqlapi-function-runtime-name"></a>
Le nom du temps d'exécution à utiliser. Actuellement, la seule valeur autorisée est `APPSYNC_JS`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-name)` propriété d'un `AWS::AppSync::FunctionConfiguration AppSyncRuntime` objet.

`Version`  <a name="sam-graphqlapi-function-runtime-version"></a>
La version du temps d'exécution à utiliser. Actuellement, la seule version autorisée est `1.0.0`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-functionconfiguration-appsyncruntime.html#cfn-appsync-functionconfiguration-appsyncruntime-runtimeversion)` propriété d'un `AWS::AppSync::FunctionConfiguration AppSyncRuntime` objet.

# Résolveur
<a name="sam-property-graphqlapi-resolver"></a>

Configurez des résolveurs pour les champs de votre GraphQL API. AWS Serverless Application Model (AWS SAM) prend en charge les [résolveurs de JavaScript pipeline](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html).

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-property-graphqlapi-resolver-properties"></a>

`Caching`  <a name="sam-graphqlapi-resolver-caching"></a>
La configuration de mise en cache pour un résolveur dont la mise en cache est activée.  
*Type :* [CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-cachingconfig.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[CachingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-cachingconfig)` propriété d'une `AWS::AppSync::Resolver` ressource.

`CodeUri`  <a name="sam-graphqlapi-resolver-codeuri"></a>
L'URI ou le chemin d'accès à un dossier local d'Amazon Simple Storage Service (Amazon S3) du code de la fonction de résolution.  
Si vous spécifiez un chemin d'accès à un dossier local, le fichier CloudFormation doit d'abord être chargé sur Amazon S3 avant le déploiement. Vous pouvez utiliser la CLI  AWS SAM pour faciliter ce processus. Pour de plus amples informations, veuillez consulter [Comment AWS SAM télécharge les fichiers locaux lors du déploiement](deploy-upload-local-files.md).  
Si aucun `CodeUri` des deux `InlineCode` n'est fourni, AWS SAM générera `InlineCode` qui redirigera la demande vers la première fonction de pipeline et recevra la réponse de la dernière fonction de pipeline.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[CodeS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-codes3location)` propriété d'une `AWS::AppSync::Resolver` ressource.

`FieldName`  <a name="sam-graphqlapi-resolver-fieldname"></a>
Le nom de votre résolveur. Spécifiez cette propriété pour remplacer la valeur `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[FieldName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-fieldname)` propriété d'une `AWS::AppSync::Resolver` ressource.

`InlineCode`  <a name="sam-graphqlapi-resolver-inlinecode"></a>
Code de votre résolveur contenant les fonctions de demande et de réponse.  
Si aucun `CodeUri` des deux `InlineCode` n'est fourni, AWS SAM générera `InlineCode` qui redirigera la demande vers la première fonction de pipeline et recevra la réponse de la dernière fonction de pipeline.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-code)` propriété d'une `AWS::AppSync::Resolver` ressource.

`LogicalId`  <a name="sam-graphqlapi-resolver-logicalid"></a>
Le nom unique de votre résolveur. Dans un schéma GraphQL, le nom de votre résolveur doit correspondre au nom du champ pour lequel il est utilisé. Utilisez le même nom de champ pour `LogicalId`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`MaxBatchSize`  <a name="sam-graphqlapi-resolver-maxbatchsize"></a>
Le nombre maximal d'entrées de requêtes de résolveur qui seront envoyées à une seule fonction AWS Lambda dans une opération `BatchInvoke`.  
*Type* : entier  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[MaxBatchSize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-maxbatchsize)` propriété d'une `AWS::AppSync::Resolver` ressource.

`OperationType`  <a name="sam-graphqlapi-resolver-operationtype"></a>
Type d'opération GraphQL associé à votre résolveur. Par exemple, `Query`, `Mutation` ou `Subscription`. Vous pouvez imbriquer plusieurs résolveurs `LogicalId` au sein d'un même `OperationType`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[TypeName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-typename)` propriété d'une `AWS::AppSync::Resolver` ressource.

`Pipeline`  <a name="sam-graphqlapi-resolver-pipeline"></a>
Fonctions liées avec le résolveur de pipeline. Spécifiez les fonctions par ID logique dans une liste.  
*Type* : liste  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent. Elle est similaire à la propriété `[PipelineConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-pipelineconfig)` d'une ressource `AWS::AppSync::Resolver`.

`Runtime`  <a name="sam-graphqlapi-resolver-runtime"></a>
Le temps d'exécution de votre résolveur ou de votre fonction de pipeline. Spécifie le nom et la version à utiliser.  
*Type* : [Temps d'exécution](sam-property-graphqlapi-resolver-runtime.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent. Elle est similaire à la propriété `[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-runtime)` d'une propriété `AWS::AppSync::Resolver`.

`Sync`  <a name="sam-graphqlapi-resolver-sync"></a>
Décrit une configuration Sync pour un résolveur.  
Spécifie la stratégie de détection de conflits et de résolution à utiliser lorsque le résolveur est appelé.  
*Type :* [SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-syncconfig.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[SyncConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-syncconfig)` propriété d'une `AWS::AppSync::Resolver` ressource.

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

### Utilisez le code de fonction de résolution AWS SAM généré et enregistrez les champs sous forme de variables
<a name="sam-property-graphqlapi-resolver-examples-example1"></a>

Voici le schéma GraphQL de notre exemple :

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

Voici un extrait de notre AWS SAM modèle :

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

Dans notre AWS SAM modèle, nous ne spécifions pas `CodeUri` ou`InlineCode`. Lors du déploiement, génère AWS SAM automatiquement le code en ligne suivant pour notre résolveur :

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

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

Ce code de résolution par défaut redirige la demande vers la première fonction de pipeline et reçoit la réponse de la dernière fonction de pipeline.

Dans notre première fonction de pipeline, nous pouvons utiliser le champ `args` fourni pour analyser l'objet de la requête et créer nos variables. Nous pouvons ensuite utiliser ces variables dans notre fonction. Voici un exemple de notre fonction `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;
}
```

# Environnement d’exécution
<a name="sam-property-graphqlapi-resolver-runtime"></a>

Le temps d'exécution de votre résolveur ou de votre fonction de pipeline. Spécifie le nom et la version d'exécution à utiliser.

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

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

## Propriétés
<a name="sam-property-graphqlapi-resolver-runtime-properties"></a>

`Name`  <a name="sam-graphqlapi-resolver-runtime-name"></a>
Le nom du temps d'exécution à utiliser. Actuellement, la seule valeur autorisée est `APPSYNC_JS`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-name)` propriété d'un `AWS::AppSync::Resolver AppSyncRuntime` objet.

`Version`  <a name="sam-graphqlapi-resolver-runtime-version"></a>
La version du temps d'exécution à utiliser. Actuellement, la seule version autorisée est `1.0.0`.  
*Type* : chaîne  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[RuntimeVersion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-appsyncruntime.html#cfn-appsync-resolver-appsyncruntime-runtimeversion)` propriété d'un `AWS::AppSync::Resolver AppSyncRuntime` objet.