

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Crea un client di servizio
<a name="creating-clients"></a>

Per effettuare una richiesta a un Servizio AWS, devi prima creare un'istanza di un client per quel servizio.

È possibile configurare impostazioni comuni per i client di servizio, ad esempio il client HTTP da utilizzare, il livello di registrazione e riprovare la configurazione. Inoltre, ogni client di servizio richiede un provider di credenziali Regione AWS e un provider di credenziali. L'SDK utilizza questi valori per inviare richieste alla regione corretta e firmare le richieste con le credenziali corrette.

È possibile specificare questi valori a livello di codice a livello di codice o caricarli automaticamente dall'ambiente.

## Configura un client in codice
<a name="programmatic-config"></a>

Per configurare un client di servizio con valori specifici, è possibile specificarli in una funzione lambda passata al metodo factory del service client, come mostrato nel seguente frammento.

```
val dynamoDbClient = DynamoDbClient {
    region = "us-east-1"
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

Tutti i valori non specificati nel blocco di configurazione vengono impostati sui valori predefiniti. [Ad esempio, se non si specifica un provider di credenziali come nel codice precedente, il provider di credenziali utilizza per impostazione predefinita la catena di provider di credenziali predefinita.](credential-providers.md#default-credential-provider-chain)

**avvertimento**  
Alcune proprietà, ad esempio, `region` non hanno un valore predefinito. È necessario specificarle esplicitamente nel blocco di configurazione quando si utilizza la configurazione programmatica. Se l'SDK non è in grado di risolvere la proprietà, le richieste API potrebbero non riuscire.

## Configura un client dall'ambiente
<a name="loading-from-the-environment"></a>

Quando si crea un client di servizio, l'SDK può ispezionare le posizioni nell'ambiente di esecuzione corrente per determinare alcune proprietà di configurazione. [Tali posizioni includono [file di configurazione e credenziali condivisi](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html), [variabili di ambiente](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) e proprietà del sistema JVM.](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html) Le proprietà disponibili da risolvere includono [AWS Region](region-selection.md), [retry strategy](retries.md), [log](logging.md#sdk-log-mode) mode e altre. Per ulteriori informazioni su tutte le impostazioni che l'SDK può risolvere dall'ambiente di esecuzione, consulta la Guida di [riferimento alle impostazioni di AWS SDKs and Tools](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html).

Per creare un client con una configurazione basata sull'ambiente, utilizzate il metodo statico `suspend fun fromEnvironment()` sull'interfaccia client del servizio:

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
```

La creazione di un client in questo modo è utile quando viene eseguita su Amazon EC2 o in qualsiasi altro contesto in cui la configurazione di un client di servizio è disponibile dall'ambiente. AWS Lambda Questo separa il codice dall'ambiente in cui è in esecuzione e semplifica la distribuzione dell'applicazione in più regioni senza modificare il codice. 

Inoltre, puoi sovrascrivere proprietà specifiche passando un blocco lambda a. `fromEnvironment` L'esempio seguente carica alcune proprietà di configurazione dall'ambiente (ad esempio, Region) ma sovrascrive specificamente il provider delle credenziali per utilizzare le credenziali di un profilo.

```
val dynamoDbClient = DynamoDbClient.fromEnvironment { 
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

L'SDK utilizza valori predefiniti per qualsiasi proprietà di configurazione che non può essere determinata dalle impostazioni programmatiche o dall'ambiente. [Ad esempio, se non si specifica un provider di credenziali nel codice o in un'impostazione di ambiente, il provider di credenziali utilizza per impostazione predefinita la catena di provider di credenziali predefinita.](credential-providers.md#default-credential-provider-chain)

**avvertimento**  
Alcune proprietà, come Region, non hanno un valore predefinito. È necessario specificarle in un'impostazione di ambiente o esplicitamente nel blocco di configurazione. Se l'SDK non è in grado di risolvere la proprietà, le richieste API potrebbero non riuscire.

**Nota**  
Sebbene le proprietà relative alle credenziali, come le chiavi di accesso temporanee e la configurazione SSO, siano disponibili nell'ambiente di esecuzione, i valori non vengono forniti dal client al momento della creazione. Al contrario, i valori sono accessibili dal livello del fornitore di credenziali a ogni richiesta. 

## Chiudi il client
<a name="closing-the-client"></a>

Quando non hai più bisogno del client di servizio, chiudilo per rilasciare tutte le risorse che sta utilizzando:

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
// Invoke several DynamoDB operations.
dynamoDbClient.close()
```

Poiché i client di servizio estendono l'[https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html)interfaccia, puoi utilizzare l'[https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html)estensione per chiudere automaticamente il client alla fine di un blocco, come mostrato nel seguente frammento.

```
DynamoDbClient.fromEnvironment().use { dynamoDbClient ->
    // Invoke several DynamoDB operations.
}
```

Nell'esempio precedente, il blocco lambda riceve un riferimento al client appena creato. È possibile richiamare operazioni su questo riferimento client e quando il blocco è completato, anche generando un'eccezione, il client viene chiuso.