

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar o AWS SDK para executar consultas do Gremlin
<a name="access-graph-gremlin-sdk"></a>

Com o AWS SDK, você pode executar consultas do Gremlin em seu gráfico do Neptune usando uma linguagem de programação de sua escolha. O SDK da API de dados Neptune (`neptunedata`nome do serviço) fornece a ação para enviar consultas [ExecuteGremlinQuery](https://docs.aws.amazon.com/neptune/latest/data-api/API_ExecuteGremlinQuery.html)do Gremlin.

Você deve executar esses exemplos em uma instância do Amazon EC2 na mesma nuvem privada virtual (VPC) do seu cluster de banco de dados Neptune ou em um local que tenha conectividade de rede com o endpoint do seu cluster.

Links diretos para a documentação de referência da API para o `neptunedata` serviço em cada linguagem do SDK podem ser encontrados abaixo:


| Linguagem de programação | referência da API neptunedata | 
| --- | --- | 
| C\+\+ | [https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-neptunedata/html/annotated.html](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-neptunedata/html/annotated.html) | 
| Go | [https://docs.aws.amazon.com/sdk-for-go/api/service/neptunedata/](https://docs.aws.amazon.com/sdk-for-go/api/service/neptunedata/) | 
| Java | [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/neptunedata/package-summary.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/neptunedata/package-summary.html) | 
| JavaScript | [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-neptunedata/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-neptunedata/) | 
| Kotlin | [https://sdk.amazonaws.com/kotlin/api/latest/neptunedata/index.html](https://sdk.amazonaws.com/kotlin/api/latest/neptunedata/index.html) | 
| .NET | [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Neptunedata/NNeptunedata.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Neptunedata/NNeptunedata.html) | 
| PHP | [https://docs.aws.amazon.com/aws-sdk-php/v3/api/namespace-Aws.Neptunedata.html](https://docs.aws.amazon.com/aws-sdk-php/v3/api/namespace-Aws.Neptunedata.html) | 
| Python | [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/neptunedata.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/neptunedata.html) | 
| Ruby | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Neptunedata.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Neptunedata.html) | 
| Rust | [https://crates.io/crates/aws-sdk-neptunedata](https://crates.io/crates/aws-sdk-neptunedata) | 
| CLI | [https://docs.aws.amazon.com/cli/latest/reference/neptunedata/](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/) | 

## Gremlin AWS Exemplos de SDK
<a name="access-graph-gremlin-sdk-examples"></a>

Os exemplos a seguir mostram como configurar um `neptunedata` cliente, executar uma consulta Gremlin e imprimir os resultados. Substitua {{YOUR\_NEPTUNE\_HOST}} e {{YOUR\_NEPTUNE\_PORT}} pelo endpoint e pela porta do seu cluster de banco de dados Neptune.

**Client-side configuração de tempo limite e nova tentativa**  
O tempo limite do cliente SDK controla quanto tempo o *cliente* espera por uma resposta. Ela não controla por quanto tempo a consulta é executada no servidor. Se o cliente expirar antes da conclusão do servidor, a consulta poderá continuar sendo executada no Neptune enquanto o cliente não tiver como recuperar os resultados.  
Recomendamos definir o tempo limite de leitura do lado do cliente para `0` (sem tempo limite) ou para um valor que seja pelo menos alguns segundos a mais do que a configuração neptune\_query\_timeout do lado do servidor em seu cluster de banco de dados [Neptune](parameters.md#parameters-db-cluster-parameters-neptune_query_timeout). Isso permite que Neptune controle quando as consultas atingem o tempo limite.  
Também recomendamos definir o máximo de tentativas para `1` (sem novas tentativas). Se o SDK tentar novamente uma consulta que ainda está em execução no servidor, isso pode resultar em operações duplicadas. Isso é especialmente importante para consultas de mutação, nas quais uma nova tentativa pode causar gravações duplicadas não intencionais.

------
#### [ Python ]

1. Siga as [instruções de instalação](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) para instalar o Boto3.

1. Crie um arquivo chamado `gremlinExample.py` e cole o código a seguir:

   ```
   import boto3
   import json
   from botocore.config import Config
   
   # Disable the client-side read timeout and retries so that
   # Neptune's server-side neptune_query_timeout controls query duration.
   client = boto3.client(
       'neptunedata',
       endpoint_url=f'https://{{YOUR_NEPTUNE_HOST}}:{{YOUR_NEPTUNE_PORT}}',
       config=Config(read_timeout=None, retries={'total_max_attempts': 1})
   )
   
   # Use the untyped GraphSON v3 serializer for a cleaner JSON response.
   response = client.execute_gremlin_query(
       gremlinQuery='g.V().limit(1)',
       serializer='application/vnd.gremlin-v3.0+json;types=false'
   )
   
   print(json.dumps(response['result'], indent=2))
   ```

1. Execute o exemplo: `python gremlinExample.py`

------
#### [ Java ]

1. Siga as [instruções de instalação](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/setup.html) para configurar o AWS SDK for Java.

1. Use o código a seguir para configurar uma`NeptunedataClient`, executar uma consulta Gremlin e imprimir o resultado:

   ```
   import java.net.URI;
   import java.time.Duration;
   import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
   import software.amazon.awssdk.core.retry.RetryPolicy;
   import software.amazon.awssdk.services.neptunedata.NeptunedataClient;
   import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryRequest;
   import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryResponse;
   
   // Disable the client-side timeout and retries so that
   // Neptune's server-side neptune_query_timeout controls query duration.
   NeptunedataClient client = NeptunedataClient.builder()
       .endpointOverride(URI.create("https://{{YOUR_NEPTUNE_HOST}}:{{YOUR_NEPTUNE_PORT}}"))
       .overrideConfiguration(ClientOverrideConfiguration.builder()
           .apiCallTimeout(Duration.ZERO)
           .retryPolicy(RetryPolicy.none())
           .build())
       .build();
   
   // Use the untyped GraphSON v3 serializer for a cleaner JSON response.
   ExecuteGremlinQueryRequest request = ExecuteGremlinQueryRequest.builder()
       .gremlinQuery("g.V().limit(1)")
       .serializer("application/vnd.gremlin-v3.0+json;types=false")
       .build();
   
   ExecuteGremlinQueryResponse response = client.executeGremlinQuery(request);
   
   System.out.println(response.result().toString());
   ```

------
#### [ JavaScript ]

1. Siga as [instruções de instalação](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html) para configurar o AWS SDK para JavaScript. Instale o pacote do cliente neptunedata:. `npm install @aws-sdk/client-neptunedata`

1. Crie um arquivo chamado `gremlinExample.js` e cole o código a seguir:

   ```
   import { NeptunedataClient, ExecuteGremlinQueryCommand } from "@aws-sdk/client-neptunedata";
   import { NodeHttpHandler } from "@smithy/node-http-handler";
   
   const config = {
       endpoint: "https://{{YOUR_NEPTUNE_HOST}}:{{YOUR_NEPTUNE_PORT}}",
       // Disable the client-side request timeout so that
       // Neptune's server-side neptune_query_timeout controls query duration.
       requestHandler: new NodeHttpHandler({
           requestTimeout: 0
       }),
       maxAttempts: 1
   };
   
   const client = new NeptunedataClient(config);
   
   // Use the untyped GraphSON v3 serializer for a cleaner JSON response.
   const input = {
       gremlinQuery: "g.V().limit(1)",
       serializer: "application/vnd.gremlin-v3.0+json;types=false"
   };
   
   const command = new ExecuteGremlinQueryCommand(input);
   const response = await client.send(command);
   
   console.log(JSON.stringify(response, null, 2));
   ```

1. Execute o exemplo: `node gremlinExample.js`

------