

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à.

# Configurare l'SDK
<a name="configure-gosdk"></a>

 Nella AWS SDK per Go V2, è possibile configurare impostazioni comuni per i client di servizio, come il logger, il livello di registro e la configurazione Retry. La maggior parte delle impostazioni è facoltativa. Tuttavia, per ogni client del servizio, è necessario specificare una AWS regione e le proprie credenziali. L'SDK utilizza questi valori per inviare richieste alla regione corretta e firmare le richieste con le credenziali corrette. È possibile specificare questi valori in modo programmatico nel codice o tramite l'ambiente di esecuzione. 

## Caricamento di file di AWS configurazione condivisi
<a name="loading-aws-shared-configuration"></a>

 Esistono diversi modi per inizializzare un client API di servizio, ma il seguente è lo schema più comune consigliato agli utenti. 

 Per configurare l'SDK per l'utilizzo dei file di configurazione AWS condivisi, utilizzate il codice seguente: 

```
import (
  "context"
  "log"
  "github.com/aws/aws-sdk-go-v2/config"
)

// ...

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
  log.Fatalf("failed to load configuration, %v", err)
}
```

 `config.LoadDefaultConfig(context.TODO())`costruirà un [AWS.config utilizzando le fonti di configurazione condivise](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Config). AWS Ciò include la configurazione di un provider di credenziali, la configurazione della AWS regione e il caricamento della configurazione specifica del servizio. I client di servizio possono essere costruiti utilizzando il file loaded`aws.Config`, che fornisce uno schema coerente per la creazione dei client. 

 Per ulteriori informazioni sui file di configurazione AWS condivisi, vedere [Configuration](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) nella AWS SDKs and Tools Reference Guide. 

## Specificare la regione AWS
<a name="specifying-the-aws-region"></a>

 Quando si specifica la regione, si specifica dove inviare le richieste, ad esempio `us-west-2` o`us-east-2`. Per un elenco delle regioni per ogni servizio, consulta [Endpoint e quote del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) in. Riferimenti generali di Amazon Web Services

 L'SDK non dispone di una regione predefinita. Per specificare una regione: 
+  Imposta la variabile di `AWS_REGION` ambiente sulla regione predefinita. 
+  Imposta la regione in modo esplicito utilizzando [config. WithRegion](https://github.com/aws/aws-sdk-go-v2/blob/config/v0.2.2/config/provider.go#L127)come argomento per il `config.LoadDefaultConfig` caricamento della configurazione. 

 RECENSIONE: se imposti una regione utilizzando tutte queste tecniche, l'SDK utilizza la regione specificata in modo esplicito. 

### Configura la regione con una variabile d'ambiente
<a name="configure-region-with-environment-variable"></a>

#### Linux, macOS o Unix
<a name="linux-macos-or-unix"></a>

```
export AWS_REGION=us-west-2
```

#### Windows
<a name="windows"></a>

```
set AWS_REGION=us-west-2
```

### Specificare la regione a livello di codice
<a name="specify-region-programmatically"></a>

```
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
```

## Specifica delle credenziali
<a name="specifying-credentials"></a>

 AWS SDK per Go Richiede le credenziali (una chiave di accesso e una chiave di accesso segreta) a cui firmare le richieste. AWSÈ possibile specificare le credenziali in diverse posizioni, a seconda del caso d'uso specifico. Per informazioni su come ottenere le credenziali, vedere. [Inizia con AWS SDK per Go](getting-started.md) 

 Quando inizializzate un'`aws.Config`istanza utilizzando`config.LoadDefaultConfig`, l'SDK utilizza la catena di credenziali predefinita per trovare le credenziali. AWS Questa catena di credenziali predefinita cerca le credenziali nel seguente ordine: 

1.  Variabili di ambiente. 

   1.  Credenziali statiche (,,) `AWS_ACCESS_KEY_ID` `AWS_SECRET_ACCESS_KEY` `AWS_SESSION_TOKEN` 

   1.  Token di identità Web () `AWS_WEB_IDENTITY_TOKEN_FILE` 

1.  File di configurazione condivisi. 

   1.  L'SDK utilizza per impostazione predefinita `credentials` il file `.aws` nella cartella principale del computer. 

   1.  L'SDK utilizza come impostazione predefinita `config` il file `.aws` nella cartella principale del computer. 

1.  Se la tua applicazione utilizza una definizione di attività Amazon ECS o un'operazione RunTask API, ruolo IAM per le attività. 

1.  Se la tua applicazione è in esecuzione su un'istanza Amazon EC2, ruolo IAM per Amazon EC2. 

 L'SDK rileva e utilizza automaticamente i provider integrati, senza richiedere configurazioni manuali. Ad esempio, se utilizzi i ruoli IAM per le istanze Amazon EC2, le tue applicazioni utilizzano automaticamente le credenziali dell'istanza. Non è necessario configurare manualmente le credenziali nell'applicazione. 

 Come procedura ottimale, si AWS consiglia di specificare le credenziali nell'ordine seguente: 

1.  Usa i ruoli IAM per le attività se la tua applicazione utilizza una definizione di attività Amazon ECS o un'operazione RunTask API. 

1.  Usa i ruoli IAM per Amazon EC2 (se la tua applicazione è in esecuzione su un'istanza Amazon EC2). 

    I ruoli IAM forniscono alle applicazioni sull'istanza credenziali di sicurezza temporanee per effettuare chiamate. AWS I ruoli IAM forniscono un modo semplice per distribuire e gestire le credenziali su più istanze Amazon EC2. 

1.  Usa credenziali o file di configurazione condivisi. 

    Le credenziali e i file di configurazione sono condivisi tra altri e. AWS SDKs AWS CLI Come best practice di sicurezza, consigliamo di utilizzare il file di credenziali per impostare valori sensibili come la chiave di accesso IDs e le chiavi segrete. Di seguito sono riportati i [requisiti di formattazione](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) per ciascuno di questi file. 

1.  Usa le variabili di ambiente. 

    L'impostazione delle variabili di ambiente è utile se stai eseguendo lavori di sviluppo su una macchina diversa da un'istanza Amazon EC2. 

### Ruoli IAM per i processi
<a name="iam-roles-for-tasks"></a>

 Se la tua applicazione utilizza una definizione o un'`RunTask`operazione di Amazon ECS, utilizza [IAM Roles for Tasks per](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) specificare un ruolo IAM che può essere utilizzato dai contenitori in un'attività. 

### Ruoli IAM per istanze Amazon EC2
<a name="iam-roles-for-ec2-instances"></a>

 Se esegui l'applicazione su un'istanza Amazon EC2, utilizza il [ruolo IAM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) dell'istanza per ottenere credenziali di sicurezza temporanee a cui effettuare chiamate. AWS

 Se hai configurato l'istanza per utilizzare i ruoli IAM, l'SDK utilizza automaticamente queste credenziali per l'applicazione. Non è necessario specificare manualmente queste credenziali. 

### Credenziali e configurazione condivise
<a name="shared-credentials-and-configuration"></a>

 Le credenziali condivise e i file di configurazione possono essere utilizzati per condividere configurazioni comuni tra altri strumenti AWS SDKs . Se utilizzi credenziali differenti per diversi strumenti o applicazioni, puoi utilizzare *i profili* per configurare più chiavi di accesso nello stesso file di configurazione. 

 È possibile fornire più posizioni di credenziali o file di configurazione utilizzando`config.LoadOptions`, per impostazione predefinita, l'SDK carica i file archiviati nelle posizioni predefinite menzionate in. [Specifica delle credenziali](#specifying-credentials) 

```
import (
    "context"
    "github.com/aws/aws-sdk-go-v2/config"    
)

// ...

cfg , err := config.LoadDefaultConfig(context.TODO(), 
    config.WithSharedCredentialsFiles(
    []string{"test/credentials", "data/credentials"},
    ), 
    config.WithSharedConfigFiles(
        []string{"test/config", "data/config"},
    )   
)
```

 Quando si utilizzano credenziali e file di configurazione condivisi, se vengono specificati profili duplicati, questi vengono uniti per risolvere un profilo. In caso di conflitto di fusione, 

1.  Se vengono specificati profili duplicati all'interno dello stesso credentials/config file, le proprietà del profilo specificate in quest'ultimo profilo hanno la precedenza. 

1.  Se vengono specificati profili duplicati su più file di credenziali o su più file di configurazione, le proprietà del profilo vengono risolte secondo l'ordine di immissione del file in. `config.LoadOptions` Le proprietà del profilo in questi ultimi file hanno la precedenza. 

1.  Se un profilo esiste sia nel file delle credenziali che nel file di configurazione, le proprietà del file delle credenziali hanno la precedenza. 

 Se necessario, è possibile attivare `config.LoadOptions` e registrare i `LogConfigurationWarnings` passaggi di risoluzione del profilo. 

#### Creazione del file delle credenziali
<a name="creating-the-credentials-file"></a>

 Se non disponi di un file di credenziali condiviso (`.aws/credentials`), puoi utilizzare qualsiasi editor di testo per crearne uno nella tua home directory. Aggiungi il seguente contenuto al file delle credenziali, sostituendo {{<YOUR\_ACCESS\_KEY\_ID>}} e {{<YOUR\_SECRET\_ACCESS\_KEY>}} con le tue credenziali. 

```
[default]
aws_access_key_id = {{<YOUR_ACCESS_KEY_ID>}}
aws_secret_access_key = {{<YOUR_SECRET_ACCESS_KEY>}}
```

 L'`[default]`intestazione definisce le credenziali per il profilo predefinito, che verrà utilizzato dall'SDK a meno che non venga configurato per utilizzare un altro profilo. 

 Puoi anche utilizzare credenziali di sicurezza temporanee aggiungendo i token di sessione al tuo profilo, come mostrato nell'esempio seguente: 

```
[temp]
aws_access_key_id = {{<YOUR_TEMP_ACCESS_KEY_ID>}}
aws_secret_access_key = {{<YOUR_TEMP_SECRET_ACCESS_KEY>}}
aws_session_token = {{<YOUR_SESSION_TOKEN>}}
```

 Il nome di sezione per un profilo non predefinito all'interno di un file di credenziali non deve iniziare con la parola. `profile` Per saperne di più, consulta la Guida [AWS SDKs di riferimento agli strumenti.](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds) 

#### Creazione del file Config
<a name="creating-the-config-file"></a>

 Se non disponi di un file di credenziali condiviso (`.aws/config`), puoi utilizzare qualsiasi editor di testo per crearne uno nella tua home directory. Aggiungi il seguente contenuto al tuo file di configurazione, sostituendolo {{<REGION>}} con la regione desiderata. 

```
[default]
region = {{<REGION>}}
```

 L'`[default]`intestazione definisce la configurazione per il profilo predefinito, che verrà utilizzato dall'SDK a meno che non venga configurato per utilizzare un altro profilo. 

 È possibile utilizzare profili denominati come illustrato nell'esempio seguente: 

```
[profile named-profile]
region = {{<REGION>}}
```

 Il nome di sezione per un profilo non predefinito all'interno di un file di configurazione deve sempre iniziare con la parola`profile`, seguita dal nome del profilo desiderato. Puoi leggere ulteriori informazioni nella [AWS SDKs and Tools Reference Guide.](https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html#file-format-config) 

#### Specificazione dei profili
<a name="specifying-profiles"></a>

 È possibile includere più chiavi di accesso nello stesso file di configurazione associando ogni set di chiavi di accesso a un profilo. Ad esempio, nel file delle credenziali, puoi dichiarare più profili, come segue. 

```
[default]
aws_access_key_id = <YOUR_DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_DEFAULT_SECRET_ACCESS_KEY>

[test-account]
aws_access_key_id = <YOUR_TEST_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_TEST_SECRET_ACCESS_KEY>

[prod-account]
; work profile
aws_access_key_id = <YOUR_PROD_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_PROD_SECRET_ACCESS_KEY>
```

 Per impostazione predefinita, l'SDK verifica la variabile di ambiente `AWS_PROFILE` per determinare quale profilo utilizzare. Se non è impostata alcuna `AWS_PROFILE` variabile, l'SDK utilizza il profilo. `default` 

 A volte, potresti voler usare un profilo diverso con la tua applicazione. Ad esempio, desideri utilizzare `test-account` le credenziali con la tua `myapp` applicazione. È possibile utilizzare questo profilo utilizzando il seguente comando: 

```
$ AWS_PROFILE=test-account myapp
```

 Puoi anche utilizzare istruisci l'SDK per selezionare un profilo chiamando `os.Setenv("AWS_PROFILE", "test-account")` prima della chiamata o passando un profilo esplicito come argomento`config.LoadDefaultConfig`, come mostrato nell'esempio seguente: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithSharedConfigProfile("test-account"))
```

**Nota**  
Se specificate credenziali nelle variabili di ambiente, l'SDK utilizza sempre tali credenziali, indipendentemente dal profilo specificato.

### Variabili di ambiente
<a name="environment-variables"></a>

 Per impostazione predefinita, l'SDK rileva le AWS credenziali impostate nell'ambiente e le utilizza per firmare le richieste. AWS In questo modo non è necessario gestire le credenziali nelle applicazioni. 

 L'SDK cerca le credenziali nelle seguenti variabili di ambiente: 
+  `AWS_ACCESS_KEY_ID` 
+  `AWS_SECRET_ACCESS_KEY` 
+  `AWS_SESSION_TOKEN` (facoltativo) 

 Gli esempi seguenti mostrano come configurare le variabili di ambiente. 

#### Linux, OS X o Unix
<a name="linux-os-x-or-unix"></a>

```
$ export AWS_ACCESS_KEY_ID=YOUR_AKID
$ export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
$ export AWS_SESSION_TOKEN=TOKEN
```

#### Windows
<a name="windows-1"></a>

```
> set AWS_ACCESS_KEY_ID=YOUR_AKID
> set AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
> set AWS_SESSION_TOKEN=TOKEN
```

### Specificare le credenziali a livello di codice
<a name="specify-credentials-programmatically"></a>

 `config.LoadDefaultConfig`[consente di fornire un aws esplicito. CredentialProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)durante il caricamento delle fonti di configurazione condivise. [Per passare un provider di credenziali esplicito durante il caricamento della configurazione condivisa, usa config. WithCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config#WithCredentialsProvider). Ad esempio, se `customProvider` fa riferimento a un'istanza di `aws.CredentialProvider` implementazione, può essere passato durante il caricamento della configurazione in questo modo: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithCredentialsProvider(customProvider))
```

 Se fornite in modo esplicito le credenziali, come in questo esempio, l'SDK utilizza solo quelle credenziali. 

**Nota**  
Tutti i provider di credenziali passati o restituiti da `LoadDefaultConfig` vengono inseriti automaticamente in un file. [CredentialsCache](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsCache) Ciò consente la memorizzazione nella cache e la rotazione delle credenziali in modo sicuro dalla concorrenza. Se configuri `aws.Config` direttamente un provider in modo esplicito, devi anche inserire in modo esplicito questo tipo di provider utilizzando. [NewCredentialsCache](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#NewCredentialsCache) 

#### Credenziali statiche
<a name="static-credentials"></a>

 [È possibile codificare le credenziali nell'applicazione utilizzando le credenziali. NewStaticCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials#NewStaticCredentialsProvider)fornitore di credenziali per impostare in modo esplicito le chiavi di accesso da utilizzare. Esempio: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("AKID", "SECRET_KEY", "TOKEN")),
)
```

**avvertimento**  
 Non incorporare credenziali all'interno di un'applicazione. Utilizzate questo metodo solo per scopi di test. 

#### Credenziali Single Sign-on
<a name="single-sign-on-credentials"></a>

 L'SDK fornisce un provider di credenziali per il recupero di credenziali temporanee utilizzando. AWS AWS IAM Identity Center Utilizzando AWS CLI, ci si autentica con il portale di accesso e si autorizza l' AWS accesso alle credenziali temporanee. AWS Quindi configuri l'applicazione per caricare il profilo Single Sign-On (SSO) e l'SDK utilizza le tue credenziali SSO per recuperare le credenziali temporanee che verranno rinnovate automaticamente se scadute. AWS Se le tue credenziali SSO scadono, devi rinnovarle esplicitamente accedendo nuovamente al tuo account IAM Identity Center utilizzando il. AWS CLI

 Ad esempio, puoi creare un profilo`dev-profile`, autenticarlo e autorizzarlo utilizzando e configurare l'applicazione come illustrato di seguito AWS CLI. 

1.  Per prima cosa, crea e `profile` `sso-session` 

```
[profile dev-profile]
sso_session = dev-session
sso_account_id = 012345678901
sso_role_name = Developer
region = us-east-1

[sso-session dev-session]
sso_region = us-west-2
sso_start_url = https://company-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

1.  Effettua il login utilizzando AWS CLI per autenticare e autorizzare il profilo SSO. 

```
$ aws --profile dev-profile sso login 
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.us-west-2.amazonaws.com/

Then enter the code:

ABCD-EFGH
Successully logged into Start URL: https://company-sso-portal.awsapps.com/start
```

1.  Quindi configura l'applicazione per utilizzare il profilo SSO. 

```
import "github.com/aws/aws-sdk-go-v2/config"

// ...

cfg, err := config.LoadDefaultConfig(
    context.Background(),
    config.WithSharedConfigProfile("dev-profile"),
)
if err != nil {
    return err
}
```

 Per ulteriori informazioni sulla configurazione dei profili SSO e sull'autenticazione tramite, AWS CLI consulta la sezione [Configurazione dell'uso nella Guida AWS CLI per l'](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)utente. AWS IAM Identity Center AWS CLI [Per ulteriori informazioni sulla costruzione programmatica del provider di credenziali SSO, consulta la documentazione di riferimento dell'API ssocreds.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/ssocreds) 

#### Credenziali di accesso
<a name="login-credentials"></a>

È possibile utilizzare le credenziali di accesso esistenti AWS della Console di gestione per l'accesso programmatico ai servizi. AWS Dopo un flusso di autenticazione basato su browser, AWS genera credenziali temporanee che funzionano con strumenti di sviluppo locali come la CLI AWS e. AWS Strumenti per PowerShell AWS SDKs Questa funzionalità semplifica il processo di configurazione e gestione delle credenziali AWS CLI, soprattutto se si preferisce l'autenticazione interattiva alla gestione delle chiavi di accesso a lungo termine.

1. Avvia il flusso di accesso utilizzando la AWS CLI e segui le istruzioni del browser. In questo esempio, salviamo la sessione di accesso su un nuovo profilo**dev-profile**, ma questo è facoltativo.

   ```
   $ aws --profile dev-profile login
   ```

1. (Facoltativo) Ispeziona il file di configurazione AWS condiviso per verificare che la sessione sia stata stabilita.

   ```
   [profile dev-profile]
   login_session = arn:aws:sts::{{account id>}}:{{role}}
   ```

1. Quindi configura l'applicazione per utilizzare il profilo di accesso.

   ```
   import "github.com/aws/aws-sdk-go-v2/config"
   
   // ...
   
   cfg, err := config.LoadDefaultConfig(
       context.Background(),
       // only necessary if login session is saved to a non-default profile
       config.WithSharedConfigProfile("dev-profile"),
   )
   if err != nil {
       return err
   }
   ```

Per ulteriori informazioni sulla configurazione dei profili di accesso e sull'autenticazione tramite la AWS CLI, consulta [Accesso per lo sviluppo AWS locale utilizzando le credenziali](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html) della console.

#### Altri fornitori di credenziali
<a name="other-credentials-providers"></a>

 [L'SDK fornisce altri metodi per recuperare le credenziali nel modulo delle credenziali.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials) Ad esempio, è possibile recuperare credenziali di sicurezza temporanee o credenziali dall'archivio crittografato. AWS Security Token Service 

 Fornitori di **credenziali disponibili**: 
+  [ec2rolecreds — Recupera le](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds) credenziali dai ruoli delle istanze Amazon EC2 tramite Amazon EC2 IMDS. 
+  [endpointcreds](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds) — Recupera le credenziali da un endpoint HTTP arbitrario. 
+  [processcreds](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/processcreds) — Recupera le credenziali da un processo esterno che verrà richiamato dalla shell dell'ambiente host. 
+  [stscreds — Recupera credenziali da](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/stscreds) AWS STS 