

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

# Effettuare richieste utilizzando Account AWS o credenziali utente IAM
<a name="AuthUsingAcctOrUserCredentials"></a>

Puoi utilizzare le tue credenziali di sicurezza Account AWS o quelle degli utenti IAM per inviare richieste autenticate ad Amazon S3. Questa sezione fornisce esempi di come inviare richieste autenticate utilizzando i AWS SDK per Java tasti, e. AWS SDK per .NET AWS SDK per PHP Per un elenco degli AWS SDK disponibili, vai a [ Sample Code and Libraries. ](https://aws.amazon.com/code/) 

Ciascuno di questi AWS SDK utilizza una catena di fornitori di SDK-specific credenziali per trovare e utilizzare le credenziali ed eseguire azioni per conto del proprietario delle credenziali. Ciò che accomuna tutte queste catene di fornitori di credenziali è che cercano tutte il tuo file di credenziali locale. AWS 

Per ulteriori informazioni, consulta gli argomenti riportati di seguito.

**Topics**
+ [Per creare un locale AWS file delle credenziali](#create-local-aws-credentials-file)
+ [Invio di richieste autenticate utilizzando AWS SDK](#send-authenticated-request-SDKs)
+ [Risorse correlate](#RelatedResources002)

## Per creare un locale AWS file delle credenziali
<a name="create-local-aws-credentials-file"></a>

Il modo più semplice per configurare le credenziali per i tuoi AWS SDK è utilizzare un AWS file di credenziali. Se usi AWS Command Line Interface (AWS CLI), potresti avere già configurato un file di AWS credenziali locale. Altrimenti, per impostare un file delle credenziali, attenersi alla procedura riportata di seguito.

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [ https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Creare un nuovo utente con autorizzazioni limitate ai servizi e alle operazioni a cui si desidera che il codice abbia accesso. Per ulteriori informazioni sulla creazione di un nuovo utente, consulta [Creazione di utenti IAM (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) e segui le istruzioni descritte fino al passaggio 8.

1. Scegliere **Scarica .csv** per salvare una copia locale delle credenziali AWS .

1. Sul computer, accedere alla directory principale e creare una directory `.aws`. Su Unix-based sistemi come Linux o OS X, si trova nella seguente posizione:

   ```
   ~/.aws
   ```

   In Windows, si trova nella seguente posizione:

   ```
   %HOMEPATH%\.aws
   ```

1. Nella directory `.aws` creare un nuovo file denominato `credentials`.

1. Aprire il file delle credenziali `.csv` scaricato dalla console IAM e copiarne il contenuto nel file `credentials` utilizzando il seguente formato:

   ```
   [default]
   aws_access_key_id = your_access_key_id
   aws_secret_access_key = your_secret_access_key
   ```

1. Salvare il file `credentials` ed eliminare il file `.csv` scaricato al passaggio 3.

Il file delle credenziali condivise è ora configurato sul computer locale ed è pronto per essere utilizzato con gli AWS SDK.

## Invio di richieste autenticate utilizzando AWS SDK
<a name="send-authenticated-request-SDKs"></a>

Usa gli AWS SDK per inviare richieste autenticate. Per ulteriori informazioni sull'invio di richieste autenticate, consulta [Credenziali di sicurezza AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) o [Autenticazione IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html).

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

Per informazioni sull'autenticazione delle richieste tramite l' AWS SDK per Java, vedi [ Utilizzo di file di configurazione e credenziali condivisi per configurare globalmente SDK e strumenti e [ Autenticazione e accesso tramite AWS SDK ](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) e strumenti nella Guida di riferimento per AWS SDK e strumenti. ](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) AWS 

------
#### [ .NET ]

Per inviare richieste autenticate utilizzando le tue credenziali utente o IAM: Account AWS 
+ Crea un'istanza della classe `AmazonS3Client`. 
+ Eseguire uno dei metodi `AmazonS3Client` per inviare le richieste ad Amazon S3. Il client genera la firma necessaria dalle credenziali fornite e la include nella richiesta inviata ad Amazon S3. 

Per ulteriori informazioni, consulta [ Effettuare richieste utilizzando le credenziali AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingAcctOrUserCredentials.html) dell'account o dell'utente IAM >. 

**Nota**  
È possibile creare il client `AmazonS3Client` senza specificare le credenziali di sicurezza. Le richieste inviate mediante questo client sono anonime e senza firma. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente.
Puoi creare Account AWS e creare gli utenti richiesti. È inoltre possibile gestire le credenziali per tali utenti. Queste credenziali sono necessarie per eseguire l'attività nell'esempio seguente. Per ulteriori informazioni, consulta [Configurazione delle credenziali di AWS](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-creds.html) nella *Guida per gli sviluppatori di SDK per .NET *.  
È quindi possibile configurare l'applicazione per recuperare attivamente profili e credenziali e quindi utilizzare esplicitamente tali credenziali durante la creazione di un client di servizio. AWS Per ulteriori informazioni, consulta [Accesso a credenziali e profili in un'applicazione](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/creds-locate.html) nella *Guida per gli sviluppatori di SDK per .NET *.

L'esempio seguente di codice C\# mostra come eseguire le precedenti operazioni. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [ Getting Started with the AWS SDK for .NET ](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) nella SDK for .NET *AWS Developer Guide. * 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class MakeS3RequestTest
    {
        private const string bucketName = "*** bucket name ***"; 
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            using (client = new AmazonS3Client(bucketRegion))
            {
                Console.WriteLine("Listing objects stored in a bucket");
                ListingObjectsAsync().Wait();
            }
        }

        static async Task ListingObjectsAsync()
        {
            try
            {
                ListObjectsRequest request = new ListObjectsRequest
                {
                    BucketName = bucketName,
                    MaxKeys = 2
                };
                do
                {
                    ListObjectsResponse response = await client.ListObjectsAsync(request);
                    // Process the response.
                    foreach (S3Object entry in response.S3Objects)
                    {
                        Console.WriteLine("key = {0} size = {1}",
                            entry.Key, entry.Size);
                    }

                    // If the response is truncated, set the marker to get the next 
                    // set of keys.
                    if (response.IsTruncated)
                    {
                        request.Marker = response.NextMarker;
                    }
                    else
                    {
                        request = null;
                    }
                } while (request != null);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

Questa sezione spiega come utilizzare una classe della versione 3 per inviare richieste autenticate utilizzando AWS SDK per PHP le tue credenziali Account AWS o quelle dell'utente IAM. Per ulteriori informazioni sull'API AWS SDK for Ruby, vai a [AWS SDK for Ruby - Version 2. ](https://docs.aws.amazon.com/sdkforruby/api/index.html)

Il seguente esempio di codice PHP mostra come il client esegue una richiesta utilizzando le credenziali di sicurezza per elencare tutti i bucket per l'account. 

**Example**  

```
 
require 'vendor/autoload.php';

use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([
    'region' => 'us-east-1',
    'version' => 'latest',
]);

// Retrieve the list of buckets.
$result = $s3->listBuckets();

try {
    // Retrieve a paginator for listing objects.
    $objects = $s3->getPaginator('ListObjects', [
        'Bucket' => $bucket
    ]);

    echo "Keys retrieved!" . PHP_EOL;

    // Print the list of objects to the page.
    foreach ($objects as $object) {
        echo $object['Key'] . PHP_EOL;
    }
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}
```

**Nota**  
È possibile creare il client `S3Client` senza specificare le credenziali di sicurezza. Le richieste inviate mediante questo client sono anonime e senza firma. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente. Per ulteriori informazioni, vedere [Creazione di client anonimi](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_anonymous.html) nella [Documentazione di AWS SDK per PHP](https://aws.amazon.com/documentation/sdk-for-php/).

------
#### [ Ruby ]

Prima di poter utilizzare la versione 3 dell'SDK AWS SDK per Ruby per effettuare chiamate ad Amazon S3, devi impostare le credenziali di AWS accesso utilizzate dall'SDK per verificare l'accesso ai tuoi bucket e oggetti. Se hai delle credenziali condivise impostate nel profilo delle AWS credenziali sul tuo sistema locale, la versione 3 dell'SDK per Ruby può utilizzare tali credenziali senza che tu debba dichiararle nel codice. Per ulteriori informazioni sulla configurazione delle credenziali condivise, consulta [ Effettuare richieste utilizzando le credenziali dell'account o dell'utente IAM. AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingAcctOrUserCredentials.html)

Il seguente frammento di codice Ruby utilizza le credenziali in un file di AWS credenziali condiviso su un computer locale per autenticare una richiesta e ottenere tutti i nomi delle chiavi degli oggetti in un bucket specifico. Esegue queste operazioni:

1. Crea un'istanza della classe `Aws::S3::Client`. 

1. Effettua una richiesta ad Amazon S3 enumerando gli oggetti in un bucket utilizzando il metodo `list_objects_v2` di `Aws::S3::Client`. Il client genera il valore di firma necessario dalle credenziali contenute nel file delle AWS credenziali sul computer e lo include nella richiesta che invia ad Amazon S3.

1. Stampa la serie di nomi chiave degli oggetti al terminale.

**Example**  

```
# Prerequisites:
#  - An existing Amazon S3 bucket.

require 'aws-sdk-s3'

# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
#   s3_client = Aws::S3::Client.new(region: 'us-west-2')
#   exit 1 unless list_bucket_objects?(s3_client, 'amzn-s3-demo-bucket')
def list_bucket_objects?(s3_client, bucket_name)
  puts "Accessing the bucket named '#{bucket_name}'..."
  objects = s3_client.list_objects_v2(
    bucket: bucket_name,
    max_keys: 50
  )

  if objects.count.positive?
    puts 'The object keys in this bucket are (first 50 objects):'
    objects.contents.each do |object|
      puts object.key
    end
  else
    puts 'No objects found in this bucket.'
  end

  true
rescue StandardError => e
  puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
  false
end

# Example usage:
def run_me
  region = 'us-west-2'
  bucket_name = 'BUCKET_NAME'
  s3_client = Aws::S3::Client.new(region: region)

  exit 1 unless list_bucket_objects?(s3_client, bucket_name)
end

run_me if $PROGRAM_NAME == __FILE__
```

Se non disponi di un file di AWS credenziali locale, puoi comunque creare la `Aws::S3::Client` risorsa ed eseguire il codice su bucket e oggetti Amazon S3. Le richieste che vengono inviate utilizzando la versione 3 di SDK per Ruby sono richieste anonime, senza firma, per impostazione predefinita. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente.

Puoi utilizzare ed espandere il precedente snippet di codice per applicazioni SDK per Ruby, come nel seguente esempio, più complesso. 

```
# Prerequisites:
#  - An existing Amazon S3 bucket.

require 'aws-sdk-s3'

# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
#   s3_client = Aws::S3::Client.new(region: 'us-west-2')
#   exit 1 unless list_bucket_objects?(s3_client, 'amzn-s3-demo-bucket')
def list_bucket_objects?(s3_client, bucket_name)
  puts "Accessing the bucket named '#{bucket_name}'..."
  objects = s3_client.list_objects_v2(
    bucket: bucket_name,
    max_keys: 50
  )

  if objects.count.positive?
    puts 'The object keys in this bucket are (first 50 objects):'
    objects.contents.each do |object|
      puts object.key
    end
  else
    puts 'No objects found in this bucket.'
  end

  true
rescue StandardError => e
  puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
  false
end

# Example usage:
def run_me
  region = 'us-west-2'
  bucket_name = 'BUCKET_NAME'
  s3_client = Aws::S3::Client.new(region: region)

  exit 1 unless list_bucket_objects?(s3_client, bucket_name)
end

run_me if $PROGRAM_NAME == __FILE__
```

------
#### [ Go ]

**Example**  
L'esempio seguente utilizza le AWS credenziali caricate automaticamente dall'SDK for Go dal file delle credenziali condivise.  

```
package main

import (
	"context"
	"errors"
	"fmt"

	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/smithy-go"
)

// main uses the AWS SDK for Go V2 to create an Amazon Simple Storage Service
// (Amazon S3) client and list up to 10 buckets in your account.
// This example uses the default settings specified in your shared credentials
// and config files.
func main() {
	ctx := context.Background()
	sdkConfig, err := config.LoadDefaultConfig(ctx)
	if err != nil {
		fmt.Println("Couldn't load default configuration. Have you set up your AWS account?")
		fmt.Println(err)
		return
	}
	s3Client := s3.NewFromConfig(sdkConfig)
	count := 10
	fmt.Printf("Let's list up to %v buckets for your account.\n", count)
	result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		var ae smithy.APIError
		if errors.As(err, &ae) && ae.ErrorCode() == "AccessDenied" {
			fmt.Println("You don't have permission to list buckets for this account.")
		} else {
			fmt.Printf("Couldn't list buckets for your account. Here's why: %v\n", err)
		}
		return
	}
	if len(result.Buckets) == 0 {
		fmt.Println("You don't have any buckets!")
	} else {
		if count > len(result.Buckets) {
			count = len(result.Buckets)
		}
		for _, bucket := range result.Buckets[:count] {
			fmt.Printf("\t%v\n", *bucket.Name)
		}
	}
}
```

------

## Risorse correlate
<a name="RelatedResources002"></a>
+ [Sviluppo con Amazon S3 utilizzando AWS SDK](sdk-general-information-section.md)
+ [AWS SDK per PHP per Amazon S3 Aws\\S3\\S3Client Class](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [Documentazione di AWS SDK per PHP](https://aws.amazon.com/documentation/sdk-for-php/)