

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

# Utilizzo di oggetti S3 su Outposts
<a name="S3OutpostsWorkingObjects"></a>

Con Amazon S3 on Outposts, puoi creare bucket S3 sui tuoi AWS Outposts e archiviare e recuperare facilmente oggetti in locale per applicazioni che richiedono l'accesso locale ai dati, l'elaborazione locale dei dati e la residenza dei dati. S3 on Outposts offre una nuova classe di storage, S3 Outposts `OUTPOSTS` (), che utilizza Amazon S3 ed è progettata per archiviare i dati in modo duraturo e ridondante su APIs più dispositivi e server sul tuo. AWS Outposts Comunichi con il bucket Outpost utilizzando un punto di accesso e una connessione di endpoint su un Virtual Private Cloud (VPC). Puoi utilizzare le stesse APIs funzionalità sui bucket Outpost come sui bucket Amazon S3, tra cui policy di accesso, crittografia e tagging. Puoi usare S3 su Outposts tramite Console di gestione AWS l'API AWS Command Line Interface ,AWS CLI() o AWS SDKs REST. 

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

L'esempio seguente mostra il formato ARN per S3 sui punti di accesso Outposts, che include il Regione AWS codice per la regione in cui risiede l'Outpost, l'ID, l' Account AWS ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni su S3 on ARNs Outposts, consulta. [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN)

L'oggetto ARNs utilizza il seguente formato, che include l' Regione AWS home-page di Outpost, l'ID, l' Account AWS ID Outpost, il nome del bucket e la chiave dell'oggetto:

```
arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/bucket/amzn-s3-demo-bucket1/object/myobject
```

Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando si AWS installa un rack Outpost, i dati rimangono locali rispetto a Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Poiché Console di gestione AWS è ospitato in una regione, non puoi utilizzare la console per caricare o gestire oggetti in Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e caricare e AWS SDKs gestire gli oggetti tramite i tuoi punti di accesso.

**Topics**
+ [Caricare un oggetto in un bucket S3 su Outposts](S3OutpostsUploadObjects.md)
+ [Copiare un oggetto in un bucket Amazon S3 on Outposts utilizzando AWS SDK per Java](S3OutpostsCopyObject.md)
+ [Recupero di un oggetto da un bucket Amazon S3 su Outposts](S3OutpostsGetObject.md)
+ [Elenco di oggetti in un bucket Amazon S3 su Outposts](S3OutpostsListObjects.md)
+ [Eliminazione di oggetti nei bucket Amazon S3 su Outposts](S3OutpostsDeleteObject.md)
+ [Utilizzato HeadBucket per determinare se esiste un bucket S3 on Outposts e disponi delle autorizzazioni di accesso](S3OutpostsHeadBucket.md)
+ [Esecuzione e gestione di un caricamento in più parti con SDK per Java](S3OutpostsMPU.md)
+ [Utilizzo di presigned URLs per S3 su Outposts](S3OutpostsPresignedURL.md)
+ [Amazon S3 su Outposts con Amazon EMR su Outposts locale](s3-outposts-emr.md)
+ [Memorizzazione nella cache di autorizzazione e autenticazione](s3-outposts-auth-cache.md)

# Caricare un oggetto in un bucket S3 su Outposts
<a name="S3OutpostsUploadObjects"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

L'esempio seguente mostra il formato ARN per S3 sui punti di accesso Outposts, che include il Regione AWS codice per la regione in cui risiede l'Outpost, l'ID, l' Account AWS ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni su S3 on ARNs Outposts, consulta. [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN)

Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando si AWS installa un rack Outpost, i dati rimangono locali rispetto a Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Poiché Console di gestione AWS è ospitato in una regione, non puoi utilizzare la console per caricare o gestire oggetti in Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e caricare e AWS SDKs gestire gli oggetti tramite i tuoi punti di accesso.

I seguenti AWS CLI AWS SDK per Java esempi mostrano come caricare un oggetto su un bucket S3 on Outposts utilizzando un punto di accesso.

------
#### [ AWS CLI ]

**Example**  
Nell'esempio seguente viene inserito un oggetto denominato `sample-object.xml` in un bucket S3 su Outposts (`s3-outposts:PutObject`) utilizzando AWS CLI. Per usare questo comando, sostituisci ogni `user input placeholder` con le informazioni appropriate. Per ulteriori informazioni su questo comando, consulta [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) nella *Guida di riferimento di AWS CLI *.  

```
aws s3api put-object --bucket arn:aws:s3-outposts:Region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point --key sample-object.xml --body sample-object.xml
```

------
#### [ SDK for Java ]

**Example**  
Per esempi di come caricare un oggetto in un bucket S3 Outposts con l'SDK AWS per Java [PutObjectOnOutpost,](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/outposts/PutObjectOnOutpost.java) consulta.java negli esempi di codice *AWS SDK for* Java 2.x.

------

# Copiare un oggetto in un bucket Amazon S3 on Outposts utilizzando AWS SDK per Java
<a name="S3OutpostsCopyObject"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

L'esempio seguente mostra il formato ARN per S3 sui punti di accesso Outposts, che include il Regione AWS codice per la regione in cui risiede l'Outpost, l'ID, l' Account AWS ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni su S3 on ARNs Outposts, consulta. [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN)

Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando si AWS installa un rack Outpost, i dati rimangono locali rispetto a Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Poiché Console di gestione AWS è ospitato in una regione, non puoi utilizzare la console per caricare o gestire oggetti in Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e caricare e AWS SDKs gestire gli oggetti tramite i tuoi punti di accesso.

L'esempio seguente illustra come copiare un oggetto in un bucket S3 su Outposts utilizzando la AWS SDK per Java.

## Utilizzo dell' AWS SDK for Java
<a name="S3OutpostsCopyObjectJava"></a>

Nell'esempio S3 su Outposts seguente un oggetto viene copiato in un nuovo oggetto nello stesso bucket utilizzando l'SDK per Java. Per utilizzare questo comando, sostituisci `user input placeholders` con le tue informazioni.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;

public class CopyObject {
    public static void main(String[] args) {
        String accessPointArn = "*** access point ARN ***";
        String sourceKey = "*** Source object key ***";
        String destinationKey = "*** Destination object key ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Copy the object into a new object in the same bucket.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(accessPointArn, sourceKey, accessPointArn, destinationKey);
            s3Client.copyObject(copyObjectRequest);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

# Recupero di un oggetto da un bucket Amazon S3 su Outposts
<a name="S3OutpostsGetObject"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

L'esempio seguente mostra il formato ARN per S3 sui punti di accesso Outposts, che include il Regione AWS codice per la regione in cui risiede l'Outpost, l'ID, l' Account AWS ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni su S3 on ARNs Outposts, consulta. [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN)

Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando si AWS installa un rack Outpost, i dati rimangono locali rispetto a Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Poiché Console di gestione AWS è ospitato in una regione, non puoi utilizzare la console per caricare o gestire oggetti in Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e caricare e AWS SDKs gestire gli oggetti tramite i tuoi punti di accesso.

Gli esempi seguenti illustrano come scaricare un oggetto utilizzando AWS Command Line Interface (AWS CLI) e AWS SDK per Java.

## Utilizzando il AWS CLI
<a name="S3OutpostsGetObjectCLI"></a>

Nell'esempio seguente viene inserito un oggetto denominato `sample-object.xml` da un bucket S3 su Outposts (`s3-outposts:GetObject`) utilizzando AWS CLI. Per usare questo comando, sostituire ogni `user input placeholder` con le proprie informazioni. Per ulteriori informazioni su questo comando, consulta [get-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html) nella *Guida di riferimento a *AWS CLI .

```
aws s3api get-object --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point --key testkey sample-object.xml
```

## Utilizzo dell' AWS SDK for Java
<a name="S3OutpostsGetObjectJava"></a>

Nell'esempio S3 su Outposts seguente viene ottenuto un oggetto utilizzando SDK per Java. Per utilizzare questo comando, sostituisci `user input placeholder` con le tue informazioni. Per ulteriori informazioni, consulta [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3Object;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class GetObject {
    public static void main(String[] args) throws IOException {
        String accessPointArn = "*** access point ARN ***";
        String key = "*** Object key ***";

        S3Object fullObject = null, objectPortion = null, headerOverrideObject = null;
        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Get an object and print its contents.
            System.out.println("Downloading an object");
            fullObject = s3Client.getObject(new GetObjectRequest(accessPointArn, key));
            System.out.println("Content-Type: " + fullObject.getObjectMetadata().getContentType());
            System.out.println("Content: ");
            displayTextInputStream(fullObject.getObjectContent());

            // Get a range of bytes from an object and print the bytes.
            GetObjectRequest rangeObjectRequest = new GetObjectRequest(accessPointArn, key)
                    .withRange(0, 9);
            objectPortion = s3Client.getObject(rangeObjectRequest);
            System.out.println("Printing bytes retrieved.");
            displayTextInputStream(objectPortion.getObjectContent());

            // Get an entire object, overriding the specified response headers, and print the object's content.
            ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides()
                    .withCacheControl("No-cache")
                    .withContentDisposition("attachment; filename=example.txt");
            GetObjectRequest getObjectRequestHeaderOverride = new GetObjectRequest(accessPointArn, key)
                    .withResponseHeaders(headerOverrides);
            headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride);
            displayTextInputStream(headerOverrideObject.getObjectContent());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        } finally {
            // To ensure that the network connection doesn't remain open, close any open input streams.
            if (fullObject != null) {
                fullObject.close();
            }
            if (objectPortion != null) {
                objectPortion.close();
            }
            if (headerOverrideObject != null) {
                headerOverrideObject.close();
            }
        }
    }

    private static void displayTextInputStream(InputStream input) throws IOException {
        // Read the text input stream one line at a time and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

# Elenco di oggetti in un bucket Amazon S3 su Outposts
<a name="S3OutpostsListObjects"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

Nell'esempio seguente viene illustrato il formato ARN per i punti di accesso S3 su Outposts, che include il codice Regione AWS per la Regione in cui si trova l'Outpost, l'ID Account AWS, l'ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni sugli ARN S3 su Outposts, consulta [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN).

**Nota**  
Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando AWS installa un rack Outpost, i tuoi dati rimangono locali nel tuo Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Dal momento che la Console di gestione AWS è ospitata nella regione, non puoi utilizzare la console per caricare o gestire oggetti nel tuo Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e gli SDK AWS per caricare e gestire gli oggetti tramite i punti di accesso.

Gli esempi seguenti illustrano come elencare gli oggetti in un bucket S3 su Outposts utilizzando AWS CLI e AWS SDK per Java.

## Utilizzando AWS CLI
<a name="S3OutpostsListObjectsCLI"></a>

Nell'esempio seguente sono riportati gli oggetti in un bucket S3 su Outposts (`s3-outposts:ListObjectsV2`) tramite AWS CLI. Per usare questo comando, sostituire `user input placeholder` con le proprie informazioni. Per ulteriori informazioni su questo comando, consulta [list-object-v](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-objects-v2.html)2 nella Guida di riferimento di AWS CLI.

```
aws s3api list-objects-v2 --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point
```

**Nota**  
Utilizzando questa operazione con Amazon S3 su Outposts tramite le AWS SDK, fornisci l'ARN del punto di accesso Outposts invece del nome del bucket nella seguente scheda: `arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point`. Per ulteriori informazioni sugli ARN S3 su Outposts, consulta [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN).

## Utilizzo dell'SDK AWS per Java
<a name="S3OutpostsListObjectsJava"></a>

Nell'esempio S3 su Outposts seguente vengono elencati oggetti in un bucket utilizzando SDK per Java. Per usare questo comando, sostituire `user input placeholder` con le proprie informazioni. 

**Importante**  
Questo esempio usa [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), che è l'ultima revisione dell’operazione API `ListObjects`. Si consiglia di utilizzare questa operazione API rivista per lo sviluppo di applicazioni. Per la compatibilità con le versioni precedenti, Amazon S3 continua a supportare la versione precedente di questa operazione API. 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsV2Request;
import com.amazonaws.services.s3.model.ListObjectsV2Result;
import com.amazonaws.services.s3.model.S3ObjectSummary;

public class ListObjectsV2 {

    public static void main(String[] args) {
        String accessPointArn = "*** access point ARN ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            System.out.println("Listing objects");

            // maxKeys is set to 2 to demonstrate the use of
            // ListObjectsV2Result.getNextContinuationToken()
            ListObjectsV2Request req = new ListObjectsV2Request().withBucketName(accessPointArn).withMaxKeys(2);
            ListObjectsV2Result result;

            do {
                result = s3Client.listObjectsV2(req);

                for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {
                    System.out.printf(" - %s (size: %d)\n", objectSummary.getKey(), objectSummary.getSize());
                }
                // If there are more than maxKeys keys in the bucket, get a continuation token
                // and list the next objects.
                String token = result.getNextContinuationToken();
                System.out.println("Next Continuation Token: " + token);
                req.setContinuationToken(token);
            } while (result.isTruncated());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

# Eliminazione di oggetti nei bucket Amazon S3 su Outposts
<a name="S3OutpostsDeleteObject"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

Nell'esempio seguente viene illustrato il formato ARN per i punti di accesso S3 su Outposts, che include il codice Regione AWS per la Regione in cui si trova l'Outpost, l'ID Account AWS, l'ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni sugli ARN S3 su Outposts, consulta [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando AWS installa un rack Outpost, i tuoi dati rimangono locali nel tuo Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Dal momento che la Console di gestione AWS è ospitata nella regione, non puoi utilizzare la console per caricare o gestire oggetti nel tuo Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e gli SDK AWS per caricare e gestire gli oggetti tramite i punti di accesso.

Negli esempi seguenti viene illustrato come eliminare un singolo oggetto o più oggetti in un bucket Amazon S3 su Outposts utilizzando AWS Command Line Interface (AWS CLI) e AWS SDK per Java.

## Utilizzando AWS CLI
<a name="S3OutpostsDeleteObjectsCLI"></a>

Negli esempi seguenti viene illustrato come eliminare un singolo oggetto o più oggetti in un bucket S3 su Outposts.







------
#### [ delete-object ]

Nell'esempio seguente viene eliminato un oggetto denominato `sample-object.xml` da un bucket S3 su Outposts (`s3-outposts:DeleteObject`) utilizzando AWS CLI. Per eseguire questo comando, sostituire `user input placeholder` con le proprie informazioni. Per ulteriori informazioni su questo comando, consulta [delete-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) nella *Guida di riferimento AWS CLI*.

```
aws s3api delete-object --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point --key sample-object.xml
```

------
#### [ delete-objects ]

Nell'esempio seguente viene eliminato un oggetto denominato `sample-object.xml` e `test1.text` da un bucket S3 su Outposts (`s3-outposts:DeleteObject`) utilizzando AWS CLI. Per eseguire questo comando, sostituire `user input placeholder` con le proprie informazioni. Per ulteriori informazioni su questo comando, consulta [delete-objects](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) nella *Guida di riferimento AWS CLI*.

```
aws s3api delete-objects --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point --delete file://delete.json

delete.json
{
  "Objects": [
    {
      "Key": "test1.txt"
    },
    {
      "Key": "sample-object.xml"
    }
  ],
  "Quiet": false
}
```

------

## Utilizzo dell'SDK AWS per Java
<a name="S3OutpostsDeleteObjectsJava"></a>

Negli esempi seguenti viene illustrato come eliminare un singolo oggetto o più oggetti in un bucket S3 su Outposts.

------
#### [ DeleteObject ]

Nell'esempio S3 su Outposts seguente viene eliminato un oggetto in un bucket utilizzando SDK per Java. Per utilizzare questo esempio, specificare il punto di accesso ARN per l'Outpost e il nome della chiave dell'oggetto che si desidera eliminare. Per ulteriori informazioni, consulta [DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectRequest;

public class DeleteObject {
    public static void main(String[] args) {
        String accessPointArn = "*** access point ARN ***";
        String keyName = "*** key name ****";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            s3Client.deleteObject(new DeleteObjectRequest(accessPointArn, keyName));
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ DeleteObjects ]

Nell'esempio S3 su Outposts seguente sono caricati e poi eliminati oggetti in un bucket utilizzando SDK per Java. Per utilizzare questo esempio, specificare il punto di accesso ARN per l'Outpost. Per ulteriori informazioni, consulta [DeleteObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
import com.amazonaws.services.s3.model.DeleteObjectsResult;

import java.util.ArrayList;

public class DeleteObjects {

    public static void main(String[] args) {
       String accessPointArn = "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point";
        

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Upload three sample objects.
            ArrayList<KeyVersion> keys = new ArrayList<KeyVersion>();
            for (int i = 0; i < 3; i++) {
                String keyName = "delete object example " + i;
                s3Client.putObject(accessPointArn, keyName, "Object number " + i + " to be deleted.");
                keys.add(new KeyVersion(keyName));
            }
            System.out.println(keys.size() + " objects successfully created.");

            // Delete the sample objects.
            DeleteObjectsRequest multiObjectDeleteRequest = new DeleteObjectsRequest(accessPointArn)
                    .withKeys(keys)
                    .withQuiet(false);

            // Verify that the objects were deleted successfully.
            DeleteObjectsResult delObjRes = s3Client.deleteObjects(multiObjectDeleteRequest);
            int successfulDeletes = delObjRes.getDeletedObjects().size();
            System.out.println(successfulDeletes + " objects successfully deleted.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------

# Utilizzato HeadBucket per determinare se esiste un bucket S3 on Outposts e disponi delle autorizzazioni di accesso
<a name="S3OutpostsHeadBucket"></a>

Gli oggetti sono le entità fondamentali archiviate in Amazon S3 su Outposts. Ogni oggetto è contenuto in un bucket. È necessario utilizzare i punti di accesso per accedere a qualsiasi oggetto in un bucket Outpost. Quando specifichi il bucket per le operazioni di oggetto, utilizza il nome della risorsa Amazon (ARN) o l'alias del punto di accesso. Per ulteriori informazioni sugli alias del punto di accesso, consulta [Utilizzo di un alias in stile bucket per il punto di accesso del bucket S3 su Outposts](s3-outposts-access-points-alias.md).

L'esempio seguente mostra il formato ARN per S3 sui punti di accesso Outposts, che include il Regione AWS codice per la regione in cui risiede l'Outpost, l'ID, l' Account AWS ID Outpost e il nome del punto di accesso:

```
arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name
```

Per ulteriori informazioni su S3 on ARNs Outposts, consulta. [Risorsa ARNs per S3 su Outposts](S3OutpostsIAM.md#S3OutpostsARN)

**Nota**  
Con Amazon S3 su Outposts, i dati degli oggetti vengono sempre archiviati nell'Outpost. Quando si AWS installa un rack Outpost, i dati rimangono locali rispetto a Outpost per soddisfare i requisiti di residenza dei dati. I tuoi oggetti non lasciano mai il tuo Outpost e non sono in una Regione AWS. Poiché Console di gestione AWS è ospitato in una regione, non puoi utilizzare la console per caricare o gestire oggetti in Outpost. Tuttavia, puoi utilizzare l'API REST, AWS Command Line Interface (AWS CLI) e caricare e AWS SDKs gestire gli oggetti tramite i tuoi punti di accesso.

I seguenti AWS Command Line Interface (AWS CLI) ed AWS SDK per Java esempi mostrano come utilizzare l'operazione HeadBucket API per determinare se esiste un bucket Amazon S3 on Outposts e se disponi dell'autorizzazione per accedervi. Per ulteriori informazioni, consulta [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

## Usando il AWS CLI
<a name="S3OutpostsHeadBucketCLI"></a>

Il seguente esempio di S3 on AWS CLI Outposts utilizza `head-bucket` il comando per determinare se esiste un bucket e se si dispone delle autorizzazioni per accedervi. Per usare questo comando, sostituisci ogni `user input placeholder` con le informazioni appropriate. Per ulteriori informazioni su questo comando, consulta [head-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-bucket.html) nella *Guida di riferimento di AWS CLI *.

```
aws s3api head-bucket --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-outposts-access-point
```

## Utilizzo dell' AWS SDK for Java
<a name="S3OutpostsHeadBucketJava"></a>

Nell'esempio S3 su Outposts seguente viene illustrato come determinare se esiste un bucket e sono disponibili le autorizzazioni per accedervi. Per utilizzare questo esempio, specificare il punto di accesso ARN per l'Outpost. Per ulteriori informazioni, consulta [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.HeadBucketRequest;

public class HeadBucket {
    public static void main(String[] args) {
        String accessPointArn = "*** access point ARN ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            s3Client.headBucket(new HeadBucketRequest(accessPointArn));
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

# Esecuzione e gestione di un caricamento in più parti con SDK per Java
<a name="S3OutpostsMPU"></a>

Con Amazon S3 on Outposts, puoi creare bucket S3 sulle tue AWS Outposts risorse e archiviare e recuperare oggetti in locale per applicazioni che richiedono l'accesso locale ai dati, l'elaborazione locale dei dati e la residenza dei dati. Puoi usare S3 su Outposts tramite Console di gestione AWS l'API AWS Command Line Interface ,AWS CLI() o AWS SDKs REST. Per ulteriori informazioni, consulta [Che cos'è Amazon S3 su Outposts?](S3onOutposts.md) 

Gli esempi seguenti mostrano come utilizzare S3 su Outposts con AWS SDK per Java per eseguire e gestire un caricamento in più parti.

**Topics**
+ [Esecuzione di un caricamento in più parti di un oggetto in un bucket S3 su Outposts](#S3OutpostsInitiateMultipartUploadJava)
+ [Copia di un oggetto in un bucket S3 su Outposts tramite un caricamento in più parti](#S3OutpostsCopyPartJava)
+ [Elencare le parti di un oggetto in un bucket S3 su Outposts](#S3OutpostsListPartsJava)
+ [Recuperare un elenco di caricamenti in più parti in corso in un bucket S3 su Outposts](#S3OutpostsListMultipartUploadsJava)

## Esecuzione di un caricamento in più parti di un oggetto in un bucket S3 su Outposts
<a name="S3OutpostsInitiateMultipartUploadJava"></a>

L'esempio S3 su Outposts seguente avvia, carica e completa un caricamento in più parti di un oggetto in un bucket utilizzando SDK per Java. Per utilizzare questo esempio, sostituisci `user input placeholder` con le tue informazioni. Per ulteriori informazioni, consulta [Caricamento di un oggetto utilizzando il caricamento in più parti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-upload-object.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.ArrayList;
import java.util.List;

public class MultipartUploadCopy {
    public static void main(String[] args) {
        String accessPointArn = "*** Source access point ARN ***";
        String sourceObjectKey = "*** Source object key ***";
        String destObjectKey = "*** Target object key ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Initiate the multipart upload.
            InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(accessPointArn, destObjectKey);
            InitiateMultipartUploadResult initResult = s3Client.initiateMultipartUpload(initRequest);

            // Get the object size to track the end of the copy operation.
            GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(accessPointArn, sourceObjectKey);
            ObjectMetadata metadataResult = s3Client.getObjectMetadata(metadataRequest);
            long objectSize = metadataResult.getContentLength();

            // Copy the object using 5 MB parts.
            long partSize = 5 * 1024 * 1024;
            long bytePosition = 0;
            int partNum = 1;
            List<CopyPartResult> copyResponses = new ArrayList<CopyPartResult>();
            while (bytePosition < objectSize) {
                // The last part might be smaller than partSize, so check to make sure
                // that lastByte isn't beyond the end of the object.
                long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

                // Copy this part.
                CopyPartRequest copyRequest = new CopyPartRequest()
                        .withSourceBucketName(accessPointArn)
                        .withSourceKey(sourceObjectKey)
                        .withDestinationBucketName(accessPointArn)
                        .withDestinationKey(destObjectKey)
                        .withUploadId(initResult.getUploadId())
                        .withFirstByte(bytePosition)
                        .withLastByte(lastByte)
                        .withPartNumber(partNum++);
                copyResponses.add(s3Client.copyPart(copyRequest));
                bytePosition += partSize;
            }

            // Complete the upload request to concatenate all uploaded parts and make the copied object available.
            CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(
                    accessPointArn,
                    destObjectKey,
                    initResult.getUploadId(),
                    getETags(copyResponses));
            s3Client.completeMultipartUpload(completeRequest);
            System.out.println("Multipart copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process 
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client  
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    // This is a helper function to construct a list of ETags.
    private static List<PartETag> getETags(List<CopyPartResult> responses) {
        List<PartETag> etags = new ArrayList<PartETag>();
        for (CopyPartResult response : responses) {
            etags.add(new PartETag(response.getPartNumber(), response.getETag()));
        }
        return etags;
    }
```

## Copia di un oggetto in un bucket S3 su Outposts tramite un caricamento in più parti
<a name="S3OutpostsCopyPartJava"></a>

L'esempio seguente S3 su Outposts utilizza SDK per Java per copiare un oggetto in un bucket. Per utilizzare questo esempio, sostituisci `user input placeholder` con le tue informazioni. 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.ArrayList;
import java.util.List;

public class MultipartUploadCopy {
    public static void main(String[] args) {
        String accessPointArn = "*** Source access point ARN ***";
        String sourceObjectKey = "*** Source object key ***";
        String destObjectKey = "*** Target object key ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Initiate the multipart upload.
            InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(accessPointArn, destObjectKey);
            InitiateMultipartUploadResult initResult = s3Client.initiateMultipartUpload(initRequest);

            // Get the object size to track the end of the copy operation.
            GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(accessPointArn, sourceObjectKey);
            ObjectMetadata metadataResult = s3Client.getObjectMetadata(metadataRequest);
            long objectSize = metadataResult.getContentLength();

            // Copy the object using 5 MB parts.
            long partSize = 5 * 1024 * 1024;
            long bytePosition = 0;
            int partNum = 1;
            List<CopyPartResult> copyResponses = new ArrayList<CopyPartResult>();
            while (bytePosition < objectSize) {
                // The last part might be smaller than partSize, so check to make sure
                // that lastByte isn't beyond the end of the object.
                long lastByte = Math.min(bytePosition + partSize - 1, objectSize - 1);

                // Copy this part.
                CopyPartRequest copyRequest = new CopyPartRequest()
                        .withSourceBucketName(accessPointArn)
                        .withSourceKey(sourceObjectKey)
                        .withDestinationBucketName(accessPointArn)
                        .withDestinationKey(destObjectKey)
                        .withUploadId(initResult.getUploadId())
                        .withFirstByte(bytePosition)
                        .withLastByte(lastByte)
                        .withPartNumber(partNum++);
                copyResponses.add(s3Client.copyPart(copyRequest));
                bytePosition += partSize;
            }

            // Complete the upload request to concatenate all uploaded parts and make the copied object available.
            CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(
                    accessPointArn,
                    destObjectKey,
                    initResult.getUploadId(),
                    getETags(copyResponses));
            s3Client.completeMultipartUpload(completeRequest);
            System.out.println("Multipart copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process 
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client  
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    // This is a helper function to construct a list of ETags.
    private static List<PartETag> getETags(List<CopyPartResult> responses) {
        List<PartETag> etags = new ArrayList<PartETag>();
        for (CopyPartResult response : responses) {
            etags.add(new PartETag(response.getPartNumber(), response.getETag()));
        }
        return etags;
    }
}
```

## Elencare le parti di un oggetto in un bucket S3 su Outposts
<a name="S3OutpostsListPartsJava"></a>

Nell'esempio S3 su Outposts seguente vengono elencate le parti di un oggetto in un bucket utilizzando SDK per Java. Per utilizzare questo esempio, sostituisci `user input placeholder` con le tue informazioni. 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.util.List;

public class ListParts {
    public static void main(String[] args) {
        String accessPointArn = "*** access point ARN ***";
        String keyName = "*** Key name ***";
        String uploadId = "*** Upload ID ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            ListPartsRequest listPartsRequest = new ListPartsRequest(accessPointArn, keyName, uploadId);
            PartListing partListing = s3Client.listParts(listPartsRequest);
            List<PartSummary> partSummaries = partListing.getParts();

            System.out.println(partSummaries.size() + " multipart upload parts");
            for (PartSummary p : partSummaries) {
                System.out.println("Upload part: Part number = \"" + p.getPartNumber() + "\", ETag = " + p.getETag());
            }

        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

## Recuperare un elenco di caricamenti in più parti in corso in un bucket S3 su Outposts
<a name="S3OutpostsListMultipartUploadsJava"></a>

Nell'esempio S3 su Outposts seguente viene illustrato come recuperare un elenco di caricamenti in più parti in corso da un bucket Outposts utilizzando SDK per Java. Per utilizzare questo comando, sostituisci `user input placeholder` con le tue informazioni.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
import com.amazonaws.services.s3.model.MultipartUpload;
import com.amazonaws.services.s3.model.MultipartUploadListing;

import java.util.List;

public class ListMultipartUploads {
    public static void main(String[] args) {
                String accessPointArn = "*** access point ARN ***";

        try {
            // This code expects that you have AWS credentials set up per:
            // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .enableUseArnRegion()
                    .build();

            // Retrieve a list of all in-progress multipart uploads.
            ListMultipartUploadsRequest allMultipartUploadsRequest = new ListMultipartUploadsRequest(accessPointArn);
            MultipartUploadListing multipartUploadListing = s3Client.listMultipartUploads(allMultipartUploadsRequest);
            List<MultipartUpload> uploads = multipartUploadListing.getMultipartUploads();

            // Display information about all in-progress multipart uploads.
            System.out.println(uploads.size() + " multipart upload(s) in progress.");
            for (MultipartUpload u : uploads) {
                System.out.println("Upload in progress: Key = \"" + u.getKey() + "\", id = " + u.getUploadId());
            }
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

# Utilizzo di presigned URLs per S3 su Outposts
<a name="S3OutpostsPresignedURL"></a>

Per concedere un accesso limitato nel tempo agli oggetti memorizzati in locale su un Outpost senza aggiornare la policy del bucket, puoi utilizzare un URL prefirmato. Con presigned URLs, in qualità di proprietario del bucket puoi condividere oggetti con persone nel tuo cloud privato virtuale (VPC) o concedere loro la possibilità di caricare o eliminare oggetti. 

Quando crei un URL predefinito utilizzando AWS SDKs o il AWS Command Line Interface (AWS CLI), associ l'URL a un'azione specifica. Puoi concedere un accesso limitato nel tempo all'URL prefirmato anche scegliendo una scadenza personalizzata che può essere di appena 1 secondo e fino a 7 giorni. Quando condividi l'URL prefirmato, l'utente del VPC può eseguire l'azione incorporata nell'URL come se fosse l'utente di firma originale. Una volta raggiunta la scadenza, l'URL non funzionerà più.

## Limitazione delle funzionalità degli URL prefirmati
<a name="S3OutpostsPresignedUrlUploadObjectLimitCapabilities"></a>

Le funzionalità dell'URL prefirmato sono limitate dalle autorizzazioni dell'utente che lo ha creato. In sostanza, i presigned URLs sono token portatori che garantiscono l'accesso a coloro che li possiedono. Pertanto, consigliamo di proteggerli in modo appropriato. 

**AWS Signature Version 4 (SigV4)**  
Per imporre un comportamento specifico quando le richieste URL prefirmate vengono autenticate utilizzando AWS Signature Version 4 (SigV4), puoi utilizzare le chiavi di condizione nelle policy dei bucket e nelle politiche dei punti di accesso. Ad esempio, puoi creare una policy del bucket che utilizzi la condizione `s3-outposts:signatureAge` per negare qualsiasi richiesta di URL prefirmato da Amazon S3 su Outposts sugli oggetti nel bucket `example-outpost-bucket` se la firma ha più di 10 minuti. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Deny a presigned URL request if the signature is more than 10 minutes old",
            "Effect": "Deny",
            "Principal": {"AWS":"444455556666"},
            "Action": "s3-outposts:*",
            "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*",
            "Condition": {
                "NumericGreaterThan": {"s3-outposts:signatureAge": 600000},
                "StringEquals": {"s3-outposts:authType": "REST-QUERY-STRING"}
            }
        }
    ]
}
```

------

Per un elenco di chiavi di condizione e policy di esempio aggiuntive che è possibile utilizzare per applicare un comportamento specifico quando le richieste dell'URL prefirmato vengono autenticate tramite Signature Version 4, consulta [AWS Chiavi di policy specifiche per l'autenticazione Signature Version 4 (SigV4)](s3-outposts-bucket-policy-s3-sigv4-conditions.md).

**Limitazioni per percorso di rete**  
Se desideri limitare l'uso dell'accesso predefinito URLs e di tutti gli accessi S3 on Outposts a determinati percorsi di rete, puoi scrivere policy che richiedono un percorso di rete particolare. Per impostare la restrizione sul principale IAM che effettua la chiamata, puoi utilizzare politiche basate sull'identità AWS Identity and Access Management (IAM) (ad esempio, politiche relative a utenti, gruppi o ruoli). Per impostare la restrizione sulla risorsa S3 su Outposts, puoi utilizzare le policy sulle risorse (ad esempio, policy di bucket e punti di accesso). 

Una restrizione del percorso di rete sul principale IAM richiede all'utente di tali credenziali di effettuare le richieste dalla rete specificata. Una restrizione sul bucket o sul punto di accesso richiede che tutte le richieste a quella risorsa provengano dalla rete specificata. Queste restrizioni si applicano anche al di fuori dello scenario di URL prefirmato.

La condizione globale IAM utilizzata dipende dal tipo di endpoint. Se utilizzi l'endpoint pubblico per S3 su Outposts, utilizza `aws:SourceIp`. Se utilizzi un endpoint VPC per S3 su Outposts, utilizza `aws:SourceVpc` o `aws:SourceVpce`.

La seguente dichiarazione sulla politica IAM richiede che il principale acceda AWS solo dall'intervallo di rete specificato. Con questa istruzione della policy, tutti gli accessi devono avere origine da tale intervallo. Ciò include il caso di un utente che utilizza un URL prefirmato per S3 su Outposts. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

```
{
    "Sid": "NetworkRestrictionForIAMPrincipal",
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
        "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"},
        "BoolIfExists": {"aws:ViaAWSService": "false"}
    }
}
```

Per un esempio di policy bucket che utilizza la chiave `aws:SourceIP` AWS global condition per limitare l'accesso a un bucket S3 on Outposts a un intervallo di rete specifico, vedi. [Configurazione di IAM con S3 su Outposts](S3OutpostsIAM.md)

## Chi può creare un URL prefirmato
<a name="S3Outpostswho-presigned-url"></a>

Qualsiasi utente che disponga di credenziali di sicurezza valide può creare un URL prefirmato. Tuttavia, perché un utente nel VPC possa accedere a un oggetto, è necessario che l'URL prefirmato venga creato da un utente che dispone dell'autorizzazione a eseguire l'operazione su cui si basa l'URL prefirmato.

Per creare un URL prefirmato puoi utilizzare le seguenti credenziali:
+ **Profilo dell'istanza IAM**: valido fino a 6 ore.
+ **AWS Security Token Service**: valido fino a 36 ore quando viene firmato con credenziali permanenti, ad esempio quelle dell'utente root dell' Account AWS o di un utente IAM.
+ **Utente IAM**: valido fino a 7 giorni se utilizzi AWS la versione 4 di Signature.

  Per creare un URL prefirmato valido fino a 7 giorni, devi prima delegare le credenziali dell'utente IAM (la chiave di accesso e la chiave segreta) all'SDK in uso. Quindi, genera un URL predefinito utilizzando AWS Signature Version 4.

**Nota**  
Se hai creato un URL prefirmato utilizzando un token temporaneo, l'URL scade insieme al token, anche se per l'URL è indicata una data di scadenza successiva.
Poiché presigned URLs concede l'accesso ai tuoi bucket S3 on Outposts a chiunque disponga dell'URL, ti consigliamo di proteggerli in modo appropriato. Per ulteriori informazioni sulla protezione dei predefiniti, consulta. URLs [Limitazione delle funzionalità degli URL prefirmati](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)

## Quando S3 su Outposts verifica la data e l'ora di scadenza in un URL prefirmato?
<a name="S3Outpostspresigned-url-when-checked"></a>

Al momento della richiesta HTTP, S3 su Outposts controlla la data e l'ora di scadenza di un URL firmato. Ad esempio, se un client inizia a scaricare un file di grandi dimensioni immediatamente prima dell'ora di scadenza, il download viene completato anche se l'ora di scadenza viene superata. Se la connessione TCP viene interrotta e il client prova a riavviare il download dopo la scadenza, il download non riesce.

Per ulteriori informazioni sull'utilizzo di un URL prefirmato per condividere o caricare oggetti, consulta gli argomenti riportati di seguito.

**Topics**
+ [Limitazione delle funzionalità degli URL prefirmati](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)
+ [Chi può creare un URL prefirmato](#S3Outpostswho-presigned-url)
+ [Quando S3 su Outposts verifica la data e l'ora di scadenza in un URL prefirmato?](#S3Outpostspresigned-url-when-checked)
+ [Condivisione di oggetti utilizzando presigned URLs](S3OutpostsShareObjectPresignedURL.md)
+ [Generazione di un URL prefirmato per il caricamento di un oggetto in un bucket S3 su Outposts](S3OutpostsPresignedUrlUploadObject.md)

# Condivisione di oggetti utilizzando presigned URLs
<a name="S3OutpostsShareObjectPresignedURL"></a>

Per concedere un accesso limitato nel tempo agli oggetti memorizzati in locale su un Outpost senza aggiornare la policy del bucket, puoi utilizzare un URL prefirmato. Con presigned URLs, in qualità di proprietario del bucket puoi condividere oggetti con persone nel tuo cloud privato virtuale (VPC) o concedere loro la possibilità di caricare o eliminare oggetti. 

Quando crei un URL predefinito utilizzando AWS SDKs o il AWS Command Line Interface (AWS CLI), associ l'URL a un'azione specifica. Puoi concedere un accesso limitato nel tempo all'URL prefirmato anche scegliendo una scadenza personalizzata che può essere di appena 1 secondo e fino a 7 giorni. Quando condividi l'URL prefirmato, l'utente del VPC può eseguire l'azione incorporata nell'URL come se fosse l'utente di firma originale. Una volta raggiunta la scadenza, l'URL non funzionerà più.



Quando crei un URL prefirmato, devi fornire le credenziali di sicurezza e specificare quanto segue: 
+ Un nome della risorsa Amazon (ARN) del punto di accesso per il bucket S3 su Outposts.
+ Una chiave oggetto
+ Un metodo HTTP (`GET` per scaricare gli oggetti)
+ Una data e un'ora di scadenza

Un URL prefirmato è valido solo per la durata specificata. In altre parole, è necessario avviare l'operazione consentita dall'URL prima della sua data e ora di scadenza. L'URL prefirmato può essere utilizzato più volte, fino alla data e all'ora di scadenza. Se hai creato un URL prefirmato utilizzando un token temporaneo, l'URL scade insieme al token, anche se per l'URL è indicata una data di scadenza successiva.

Gli utenti nel cloud privato virtuale (VPC) che hanno accesso all'URL prefirmato possono caricare oggetti. Ad esempio, se il bucket contiene un video e sia il bucket che l'oggetto sono privati, è possibile condividere il video con altri generando un URL prefirmato. Poiché presigned URLs concede l'accesso ai tuoi bucket S3 on Outposts a chiunque disponga dell'URL, ti consigliamo di proteggerli in modo appropriato. URLs Per maggiori dettagli sulla protezione dei predefiniti, consulta. URLs [Limitazione delle funzionalità degli URL prefirmati](S3OutpostsPresignedURL.md#S3OutpostsPresignedUrlUploadObjectLimitCapabilities) 

Qualsiasi utente che disponga di credenziali di sicurezza valide può creare un URL prefirmato. Tuttavia, l'URL prefirmato deve essere creato da un utente dotato dell'autorizzazione per eseguire l'operazione su cui si basa l'URL. Per ulteriori informazioni, consulta [Chi può creare un URL prefirmato](S3OutpostsPresignedURL.md#S3Outpostswho-presigned-url).

Puoi generare un URL predefinito per condividere un oggetto in un bucket S3 on Outposts utilizzando and the. AWS SDKs AWS CLI Per maggiori informazioni, consulta i seguenti esempi. 

## Utilizzando il AWS SDKs
<a name="S3OutpostsShareObjectPreSignedURLSDK"></a>

Puoi utilizzare il AWS SDKs per generare un URL predefinito da fornire ad altri in modo che possano recuperare un oggetto. 

**Nota**  
Quando si utilizza il AWS SDKs per generare un URL predefinito, il tempo di scadenza massimo per un URL predefinito è di 7 giorni dal momento della creazione. 

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

**Example**  
Nel seguente esempio viene generato un URL prefirmato che è possibile fornire ad altri utenti in modo che possano recuperare un oggetto da un bucket S3 su Outposts. Per ulteriori informazioni, consulta [Utilizzo di presigned URLs per S3 su Outposts](S3OutpostsPresignedURL.md). Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.HttpMethod;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;

import java.io.IOException;
import java.net.URL;
import java.time.Instant;

public class GeneratePresignedURL {

    public static void main(String[] args) throws IOException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String accessPointArn = "*** access point ARN ***";
        String objectKey = "*** object key ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Set the presigned URL to expire after one hour.
            java.util.Date expiration = new java.util.Date();
            long expTimeMillis = Instant.now().toEpochMilli();
            expTimeMillis += 1000 * 60 * 60;
            expiration.setTime(expTimeMillis);

            // Generate the presigned URL.
            System.out.println("Generating pre-signed URL.");
            GeneratePresignedUrlRequest generatePresignedUrlRequest =
                    new GeneratePresignedUrlRequest(accessPointArn, objectKey)
                            .withMethod(HttpMethod.GET)
                            .withExpiration(expiration);
            URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

            System.out.println("Pre-Signed URL: " + url.toString());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process 
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

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

**Example**  
Nel seguente esempio viene generato un URL prefirmato che è possibile fornire ad altri utenti in modo che possano recuperare un oggetto da un bucket S3 su Outposts. Per ulteriori informazioni, consulta [Utilizzo di presigned URLs per S3 su Outposts](S3OutpostsPresignedURL.md). Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.   

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

namespace Amazon.DocSamples.S3
{
    class GenPresignedURLTest
    {
        private const string accessPointArn = "*** access point ARN ***"; 
        private const string objectKey = "*** object key ***";
        // Specify how long the presigned URL lasts, in hours.
        private const double timeoutDuration = 12;
        // Specify your bucket Region (an example Region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;

        public static void Main()
        {
            s3Client = new AmazonS3Client(bucketRegion);
            string urlString = GeneratePreSignedURL(timeoutDuration);
        }
        static string GeneratePreSignedURL(double duration)
        {
            string urlString = "";
            try
            {
                GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest
                {
                    BucketName = accessPointArn,
                    Key = objectKey,
                    Expires = DateTime.UtcNow.AddHours(duration)
                };
                urlString = s3Client.GetPreSignedURL(request1);
            }
            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);
            }
            return urlString;
        }
    }
}
```

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

Nel seguente esempio viene generato un URL prefirmato per condividere un oggetto utilizzando l'SDK per Python (Boto3). Ad esempio, utilizza un client Boto3 e la funzione `generate_presigned_url` per generare un URL prefirmato che ti consenta di eseguire il `GET` di un oggetto.

```
import boto3
    url = boto3.client('s3').generate_presigned_url(
    ClientMethod='get_object', 
    Params={'Bucket': 'ACCESS_POINT_ARN', 'Key': 'OBJECT_KEY'},
    ExpiresIn=3600)
```

Per ulteriori informazioni sull'utilizzo dell'SDK per Python (Boto3) per generare un URL prefirmato, consulta [Python](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.generate_presigned_url) nella *Documentazione di riferimento delle API di AWS SDK per Python (Boto) *.

------

## Utilizzando il AWS CLI
<a name="S3OutpostsShareObjectPresignedCLI"></a>

Il AWS CLI comando di esempio seguente genera un URL predefinito per un bucket S3 on Outposts. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

**Nota**  
Quando si utilizza il AWS CLI per generare un URL predefinito, il tempo di scadenza massimo per un URL predefinito è di 7 giorni dal momento della creazione. 

```
aws s3 presign s3://arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/example-outpost-access-point/mydoc.txt --expires-in 604800
```

Per ulteriori informazioni, consulta [presign](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html) in *Riferimento ai comandi della AWS CLI *.

# Generazione di un URL prefirmato per il caricamento di un oggetto in un bucket S3 su Outposts
<a name="S3OutpostsPresignedUrlUploadObject"></a>

Per concedere un accesso limitato nel tempo agli oggetti memorizzati in locale su un Outpost senza aggiornare la policy del bucket, puoi utilizzare un URL prefirmato. Con presigned URLs, in qualità di proprietario del bucket puoi condividere oggetti con persone nel tuo cloud privato virtuale (VPC) o concedere loro la possibilità di caricare o eliminare oggetti. 

Quando crei un URL predefinito utilizzando AWS SDKs o il AWS Command Line Interface (AWS CLI), associ l'URL a un'azione specifica. Puoi concedere un accesso limitato nel tempo all'URL prefirmato anche scegliendo una scadenza personalizzata che può essere di appena 1 secondo e fino a 7 giorni. Quando condividi l'URL prefirmato, l'utente del VPC può eseguire l'azione incorporata nell'URL come se fosse l'utente di firma originale. Una volta raggiunta la scadenza, l'URL non funzionerà più.

Quando crei un URL prefirmato, devi fornire le credenziali di sicurezza e specificare quanto segue: 
+ Un nome della risorsa Amazon (ARN) del punto di accesso per il bucket S3 su Outposts.
+ Una chiave oggetto
+ Un metodo HTTP (`PUT` per il caricamento di oggetti)
+ Una data e un'ora di scadenza

Un URL prefirmato è valido solo per la durata specificata. In altre parole, è necessario avviare l'operazione consentita dall'URL prima della sua data e ora di scadenza. L'URL prefirmato può essere utilizzato più volte, fino alla data e all'ora di scadenza. Se hai creato un URL prefirmato utilizzando un token temporaneo, l'URL scade insieme al token, anche se per l'URL è indicata una data di scadenza successiva. 

Se l'operazione consentita da un URL prefirmato è costituita da più fasi, ad esempio un caricamento in più parti, tutti le fasi devono essere avviate prima della scadenza. Se S3 su Outposts prova ad avviare una fase con un URL scaduto, viene restituito un errore.

Gli utenti nel cloud privato virtuale (VPC) che hanno accesso all'URL prefirmato possono caricare oggetti. Ad esempio, un utente nel VPC che ha accesso all'URL prefirmato può caricare un oggetto nel tuo bucket. Poiché la funzionalità prefirmata URLs concede l'accesso al tuo bucket S3 on Outposts a qualsiasi utente nel VPC che ha accesso all'URL predefinito, ti consigliamo di proteggerli in modo appropriato. URLs Per maggiori dettagli sulla protezione dei predefiniti, consulta. URLs [Limitazione delle funzionalità degli URL prefirmati](S3OutpostsPresignedURL.md#S3OutpostsPresignedUrlUploadObjectLimitCapabilities) 

Qualsiasi utente che disponga di credenziali di sicurezza valide può creare un URL prefirmato. Tuttavia, l'URL prefirmato deve essere creato da un utente dotato dell'autorizzazione per eseguire l'operazione su cui si basa l'URL. Per ulteriori informazioni, consulta [Chi può creare un URL prefirmato](S3OutpostsPresignedURL.md#S3Outpostswho-presigned-url).

## Utilizzo di AWS SDKs per generare un URL predefinito per un'operazione sull'oggetto S3 on Outposts
<a name="s3-outposts-presigned-urls-upload-examples"></a>

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

**SDK per Java 2.x**  
Questo esempio mostra come generare un URL prefirmato utilizzabile da un bucket S3 su Outposts per un periodo di tempo limitato. Per ulteriori informazioni, consulta [Utilizzo di presigned URLs per S3 su Outposts](S3OutpostsPresignedURL.md).   

```
    public static void signBucket(S3Presigner presigner, String outpostAccessPointArn, String keyName) {

        try {
            PutObjectRequest objectRequest = PutObjectRequest.builder()
                    .bucket(accessPointArn)
                    .key(keyName)
                    .contentType("text/plain")
                    .build();

            PutObjectPresignRequest presignRequest = PutObjectPresignRequest.builder()
                    .signatureDuration(Duration.ofMinutes(10))
                    .putObjectRequest(objectRequest)
                    .build();

            PresignedPutObjectRequest presignedRequest = presigner.presignPutObject(presignRequest);


            String myURL = presignedRequest.url().toString();
            System.out.println("Presigned URL to upload a file to: " +myURL);
            System.out.println("Which HTTP method must be used when uploading a file: " +
                    presignedRequest.httpRequest().method());

            // Upload content to the S3 on Outposts bucket by using this URL.
            URL url = presignedRequest.url();

            // Create the connection and use it to upload the new object by using the presigned URL.
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type","text/plain");
            connection.setRequestMethod("PUT");
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
            out.write("This text was uploaded as an object by using a presigned URL.");
            out.close();

            connection.getResponseCode();
            System.out.println("HTTP response code is " + connection.getResponseCode());

        } catch (S3Exception e) {
            e.getStackTrace();
        } catch (IOException e) {
            e.getStackTrace();
        }
    }
```

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

**SDK per Python (Boto3)**  
In questo esempio viene mostrato come generare un URL prefirmato in grado di eseguire un'operazione S3 su Outposts per un periodo di tempo limitato. Per ulteriori informazioni, consulta [Utilizzo di presigned URLs per S3 su Outposts](S3OutpostsPresignedURL.md). Per effettuare una richiesta con l'URL, utilizza il pacchetto `Requests`.  

```
import argparse
import logging
import boto3
from botocore.exceptions import ClientError
import requests

logger = logging.getLogger(__name__)


def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):
    """
    Generate a presigned S3 on Outposts URL that can be used to perform an action.

    :param s3_client: A Boto3 Amazon S3 client.
    :param client_method: The name of the client method that the URL performs.
    :param method_parameters: The parameters of the specified client method.
    :param expires_in: The number of seconds that the presigned URL is valid for.
    :return: The presigned URL.
    """
    try:
        url = s3_client.generate_presigned_url(
            ClientMethod=client_method,
            Params=method_parameters,
            ExpiresIn=expires_in
        )
        logger.info("Got presigned URL: %s", url)
    except ClientError:
        logger.exception(
            "Couldn't get a presigned URL for client method '%s'.", client_method)
        raise
    return url


def usage_demo():
    logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

    print('-'*88)
    print("Welcome to the Amazon S3 on Outposts presigned URL demo.")
    print('-'*88)

    parser = argparse.ArgumentParser()
    parser.add_argument('accessPointArn', help="The name of the S3 on Outposts access point ARN.")
    parser.add_argument(
        'key', help="For a GET operation, the key of the object in S3 on Outposts. For a "
                    "PUT operation, the name of a file to upload.")
    parser.add_argument(
        'action', choices=('get', 'put'), help="The action to perform.")
    args = parser.parse_args()

    s3_client = boto3.client('s3')
    client_action = 'get_object' if args.action == 'get' else 'put_object'
    url = generate_presigned_url(
        s3_client, client_action, {'Bucket': args.accessPointArn, 'Key': args.key}, 1000)

    print("Using the Requests package to send a request to the URL.")
    response = None
    if args.action == 'get':
        response = requests.get(url)
    elif args.action == 'put':
        print("Putting data to the URL.")
        try:
            with open(args.key, 'r') as object_file:
                object_text = object_file.read()
            response = requests.put(url, data=object_text)
        except FileNotFoundError:
            print(f"Couldn't find {args.key}. For a PUT operation, the key must be the "
                  f"name of a file that exists on your computer.")

    if response is not None:
        print("Got response:")
        print(f"Status: {response.status_code}")
        print(response.text)

    print('-'*88)


if __name__ == '__main__':
    usage_demo()
```

------

# Amazon S3 su Outposts con Amazon EMR su Outposts locale
<a name="s3-outposts-emr"></a>

Amazon EMR è una piattaforma di cluster gestita che semplifica l'esecuzione di framework di big data, ad esempio eApache Spark, AWS per elaborare Apache Hadoop e analizzare grandi quantità di dati. Utilizzando questi framework e i relativi progetti open source, è possibile elaborare i dati per scopi di analisi e carichi di lavoro di business intelligence. Amazon EMR ti aiuta anche a trasformare e spostare grandi quantità di dati da e verso altri archivi di AWS dati e database e supporta Amazon S3 on Outposts. Per ulteriori informazioni su Amazon EMR, consulta [Amazon EMR su Outposts](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) nella *Guida alla gestione di Amazon EMR*. 

Per Amazon S3 su Outposts, Amazon EMR ha iniziato a supportare il connettore Apache Hadoop S3A nella versione 7.0.0. Le versioni precedenti di Amazon EMR non supportano S3 su Outposts locale e il file system EMR (EMRFS) non è supportato.

**Applicazioni supportate**  
Amazon EMR con Amazon S3 su Outposts supporta le seguenti applicazioni: 
+ Hadoop
+ Spark
+ Hue
+ Hive
+ Sqoop
+ Pig
+ Hudi
+ Flink

Per ulteriori informazioni, consulta la [Guida ai rilasci di Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html).

## Creare e configurare un bucket Amazon S3 su Outposts
<a name="create-outposts-bucket"></a>

Amazon EMR utilizza Amazon S3 on Outposts per archiviare dati di input e output. AWS SDK per Java I file di log di Amazon EMR sono archiviati in una posizione Amazon S3 regionale selezionata e non sono archiviati localmente su Outpost. Per ulteriori informazioni, consulta [Log di Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) nella *Guida alla gestione di Amazon EMR*. 

Per conformarsi ai requisiti di Amazon S3 e DNS, i bucket S3 su Outposts presentano restrizioni e limitazioni di denominazione. Per ulteriori informazioni, consulta [Creazione di un bucket S3 su Outposts](S3OutpostsCreateBucket.md).

Con Amazon EMR versione 7.0.0 e successive, è possibile utilizzare Amazon EMR con S3 su Outposts e il file system S3A.

**Prerequisiti**  
Autorizzazioni **S3 on Outposts**: quando crei il tuo profilo di istanza Amazon EMR, il tuo ruolo deve contenere AWS Identity and Access Management lo spazio dei nomi (IAM) per S3 on Outposts. S3 su Outposts ha il proprio spazio dei nomi, `s3-outposts*`. Per una policy di esempio che utilizza questo spazio dei nomi, consulta [Configurazione di IAM con S3 su Outposts](S3OutpostsIAM.md).

**Connettore S3A**: per configurare il cluster EMR per accedere ai dati da un bucket Amazon S3 su Outposts, è necessario utilizzare il connettore Apache Hadoop S3A. Per utilizzare il connettore, assicurati che tutto il tuo S3 utilizzi lo schema. URIs `s3a` In caso contrario, puoi configurare l'implementazione del file system che usi per il tuo cluster EMR in modo che S3 URIs funzioni con il connettore S3A.

Per configurare l'implementazione del file system in modo che funzioni con il connettore S3A, si utilizzano le proprietà `fs.file_scheme.impl` e di `fs.AbstractFileSystem.file_scheme.impl` configurazione per il cluster EMR, dove `file_scheme` corrisponde al tipo di URIs S3 in uso. Per utilizzare l’esempio seguente, sostituisci *`user input placeholders`* con le informazioni appropriate. Ad esempio, per modificare l'implementazione del file system per S3 URIs che utilizza `s3` lo schema, specifica le seguenti proprietà di configurazione del cluster:

```
1. [
2.   {
3. "Classification": "core-site",
4.     "Properties": {
5.     "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
6.     "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
7.     }
8.   }
9. ]
```

Per utilizzare S3A, impostare la proprietà di configurazione `fs.file_scheme.impl` su `org.apache.hadoop.fs.s3a.S3AFileSystem` e impostare la proprietà `fs.AbstractFileSystem.file_scheme.impl` su `org.apache.hadoop.fs.s3a.S3A`.

Ad esempio, se si sta accedendo al percorso `s3a://bucket/...`, impostare la proprietà `fs.s3a.impl` su `org.apache.hadoop.fs.s3a.S3AFileSystem` e impostate la proprietà `fs.AbstractFileSystem.s3a.impl` su `org.apache.hadoop.fs.s3a.S3A`.

## Nozioni di base sull'uso di Amazon EMR con Amazon S3 su Outposts
<a name="getting-started-outposts"></a>

Gli argomenti seguenti spiegano come iniziare a utilizzare Amazon EMR con Amazon S3 su Outposts.

**Topics**
+ [Creazione di una policy di autorizzazione](#create-permission-policy)
+ [Creazione e configurazione del cluster](#configure-cluster)
+ [Panoramica delle configurazioni](#configurations-overview)
+ [Considerazioni](#considerations)

### Creazione di una policy di autorizzazione
<a name="create-permission-policy"></a>

Per poter creare un cluster EMR che utilizza Amazon S3 su Outposts, è necessario creare una policy IAM da collegare al profilo dell'istanza Amazon EC2 per il cluster. La policy deve disporre delle autorizzazioni per accedere al nome della risorsa Amazon (ARN) del punto di accesso S3 su Outposts. Per ulteriori informazioni sulla creazione di policy IAM per S3 su Outposts, consulta [Configurazione di IAM con S3 su Outposts](S3OutpostsIAM.md). 

La policy di esempio seguente mostra come concedere le autorizzazioni richieste. Dopo avere creato la policy, collegala al ruolo del profilo dell'istanza utilizzato per creare il cluster EMR, come descritto nella sezione [Creazione e configurazione del cluster](#configure-cluster). Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

```
 1. {
 2. "Version":"2012-10-17",		 	 	  
 3.   "Statement": [
 4.         {
 5.   "Effect": "Allow",
 6.             "Resource": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name,
 7.             "Action": [
 8.                 "s3-outposts:*"
 9.             ]
10.         }
11.     ]
12.     
13.  }
```

### Creazione e configurazione del cluster
<a name="configure-cluster"></a>

Per creare un cluster che esegua Spark con S3 su Outposts, completare i seguenti passaggi nella console.

**Per creare un cluster che esegua Spark con S3 su Outposts**

1. Apri la console di Amazon EMR all'indirizzo [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/).

1. Nel pannello di navigazione a sinistra, seleziona **Cluster**.

1. Scegli **Crea cluster**.

   

1. Per la **versione di Amazon EMR**, scegli **emr-7.0.0** o versione successiva.

1. Per il bundle di applicazioni, scegli **Spark interattivo**. Seleziona quindi tutte le altre applicazioni supportate che desideri includere nel cluster.

1. Per abilitare Amazon S3 su Outposts, immettere le impostazioni di configurazione.

**Impostazioni di configurazione di esempio**  
Per utilizzare le impostazioni di configurazione di esempio seguenti, sostituisci `user input placeholders` con le informazioni appropriate.

   ```
    1. [
    2.  {
    3.    "Classification": "core-site",
    4.    "Properties": {
    5.      "fs.s3a.bucket.DOC-EXAMPLE-BUCKET.accesspoint.arn": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name"
    6.      "fs.s3a.committer.name": "magic", 
    7.      "fs.s3a.select.enabled": "false"
    8.     }
    9.   },
   10.   {
   11.     "Classification": "hadoop-env",
   12.     "Configurations": [
   13.       {
   14.         "Classification": "export",
   15.         "Properties": {
   16.           "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" 
   17.           }
   18.        }
   19.      ],
   20.      "Properties": {}
   21.    },
   22.    {
   23.      "Classification": "spark-env",
   24.      "Configurations": [
   25.        {
   26.          "Classification": "export",
   27.          "Properties": {
   28.            "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64"
   29.          }
   30.        }
   31.       ],
   32.       "Properties": {}
   33.      },
   34.      {
   35.       "Classification": "spark-defaults",
   36.       "Properties": {
   37.         "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64",
   38.         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
   39.       }
   40.      }
   41.   ]
   ```

1. Nella sezione **Rete**, scegli un cloud privato virtuale (VPC) e una sottorete sul rack. AWS Outposts Per ulteriori informazioni su Amazon EMR su Outposts, consulta [Cluster EMR su AWS Outposts](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) nella *Guida alla gestione di Amazon EMR*.

1. Nella sezione **Profilo dell'istanza EC2 per Amazon EMR**, scegli il ruolo IAM a cui è allegata la [policy di autorizzazione creata in precedenza](#create-permission-policy).

1. Configura le impostazioni rimanenti del cluster, quindi scegli **Crea cluster**.

### Panoramica delle configurazioni
<a name="configurations-overview"></a>

La tabella seguente descrive le configurazioni S3A e i valori da specificare per i relativi parametri quando si configura un cluster che utilizza S3 su Outposts con Amazon EMR.


| Parametro | Valore predefinito | Valore richiesto per S3 su Outposts | Spiegazione | 
| --- | --- | --- | --- | 
|  `fs.s3a.aws.credentials.provider`  |  Se non specificato, S3A cercherà S3 nel bucket Regione con il nome del bucket Outposts.  |  ARN del punto di accesso del bucket S3 su Outposts  |  Amazon S3 su Outposts supporta i punti di accesso configurati solo per i virtual private cloud (VPC) come unico mezzo per accedere ai bucket di Outposts.  | 
|  `fs.s3a.committer.name`  | file |  `magic`  |  Il committer magic è l'unico committer supportato per S3 su Outposts.   | 
|  `fs.s3a.select.enabled`  |  `TRUE`  |  `FALSE`  | S3 Select non è supportato su Outposts. | 
|  `JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  S3 su Outposts su S3A richiede Java versione 11.  | 

La tabella seguente descrive le configurazioni Spark e i valori da specificare per i relativi parametri quando si configura un cluster che utilizza S3 su Outposts con Amazon EMR.


| Parametro | Valore predefinito | Valore richiesto per S3 su Outposts | Spiegazione | 
| --- | --- | --- | --- | 
|  `spark.sql.sources.fastS3PartitionDiscovery.enabled`  |  `TRUE`  |  `FALSE`  |  S3 su Outposts non supporta la partizione veloce.  | 
|  `spark.executorEnv.JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  S3 su Outposts su S3A richiede Java versione 11.  | 

### Considerazioni
<a name="considerations"></a>

Quando si integra Amazon EMR con i bucket S3 su Outposts, tenere presente quanto segue:
+ Amazon S3 su Outposts è supportato con Amazon EMR versione 7.0.0 e successive.
+ Il connettore S3A è necessario per utilizzare S3 su Outposts con Amazon EMR. Solo S3A dispone delle funzionalità necessarie per interagire con i bucket S3 su Outposts. Per informazioni sulla configurazione del connettore S3A, consulta la sezione [Prerequisiti](#s3a-outposts-prerequisites). 
+ Amazon S3 su Outposts supporta solo la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) con Amazon EMR. Per ulteriori informazioni, consulta [Crittografia dei dati in S3 su Outposts](s3-outposts-data-encryption.md).
+ Amazon S3 on Outposts non supporta le scritture con S3A. FileOutputCommitter Le scritture con i bucket S3A FileOutputCommitter su S3 on Outposts generano il seguente errore InvalidStorageClass: La classe di archiviazione specificata non è valida.
+ Amazon S3 su Outposts non è supportato con Amazon EMR serverless o Amazon EMR su EKS.
+ I log di Amazon EMR sono archiviati in una posizione Amazon S3 regionale selezionata e non sono archiviati localmente nel bucket S3 su Outposts.

# Memorizzazione nella cache di autorizzazione e autenticazione
<a name="s3-outposts-auth-cache"></a>

S3 su Outposts memorizza nella cache in modo sicuro i dati di autenticazione e autorizzazione localmente nei rack Outposts. La cache rimuove i round trip verso il genitore Regione AWS per ogni richiesta. In questo modo si elimina la variabilità introdotta dai round trip della rete. Con la cache di autenticazione e autorizzazione di S3 su Outposts, si ottengono latenze coerenti indipendenti dalla latenza della connessione tra Outposts e la Regione AWS. 

Quando si effettua una richiesta API S3 su Outposts, i dati di autenticazione e autorizzazione vengono memorizzati nella cache in modo sicuro. I dati memorizzati nella cache vengono quindi utilizzati per autenticare le successive richieste API degli oggetti S3. S3 su Outposts memorizza nella cache i dati di autenticazione e autorizzazione solo quando la richiesta viene firmata utilizzando Signature Version 4A (SigV4A). La cache viene archiviata localmente sugli Outposts all'interno del servizio S3 su Outposts. Viene aggiornata in modo asincrono quando si effettua una richiesta API S3. La cache è crittografata e sugli Outposts non viene archiviata alcuna chiave crittografica in testo normale. 

La cache è valida per un massimo di 10 minuti quando l'Outpost è connesso alla Regione AWS. Viene aggiornata in modo asincrono quando si effettua una richiesta API S3 su Outposts, per garantire l'utilizzo delle policy più recenti. Se Outpost è disconnesso da Regione AWS, la cache sarà valida per un massimo di 12 ore. 

## Configurazione della cache di autorizzazione e autenticazione
<a name="config-auth-cache"></a>

S3 su Outposts memorizza automaticamente nella cache i dati di autenticazione e autorizzazione per le richieste firmate con l'algoritmo SigV4A. Per ulteriori informazioni, consulta [Firmare le richieste AWS API nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) per l'*AWS Identity and Access Management utente*. L'algoritmo SigV4a è disponibile nelle versioni più recenti di. AWS SDKs È possibile ottenerlo tramite una dipendenza dalle librerie [AWS Common Runtime (CRT)](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html). 

È necessario utilizzare la versione più recente dell' AWS SDK e installare l'ultima versione del CRT. Ad esempio, è possibile eseguire `pip install awscrt` per ottenere la versione più recente del CRT con Boto3.

S3 su Outposts non memorizza automaticamente nella cache i dati di autenticazione e autorizzazione per le richieste firmate con l'algoritmo SigV4.

## Convalida della firma SigV4A
<a name="validate-SigV4A"></a>

È possibile utilizzare AWS CloudTrail per verificare che le richieste siano state firmate con SigV4a. Per ulteriori informazioni sulla configurazione CloudTrail di S3 su Outposts, consulta. [Monitoraggio di S3 su Outposts con log AWS CloudTrail](S3OutpostsCloudtrail.md) 

Dopo la configurazione CloudTrail, puoi verificare come è stata firmata una richiesta nel `SignatureVersion` campo dei CloudTrail log. Le richieste firmate con SigV4A avranno `SignatureVersion` impostato su `AWS 4-ECDSA-P256-SHA256`. Le richieste firmate con SigV4 avranno `SignatureVersion` impostato su `AWS 4-HMAC-SHA256`.