

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeiten mit S3-on-Outposts-Objekten
<a name="S3OutpostsWorkingObjects"></a>

Mit Amazon S3 on Outposts können Sie S3-Buckets auf Ihren AWS Outposts erstellen und Objekte für Anwendungen, die lokalen Datenzugriff, lokale Datenverarbeitung und Datenresidenz erfordern, einfach vor Ort speichern und abrufen. S3 on Outposts bietet eine neue Speicherklasse, S3 Outposts (`OUTPOSTS`), die Amazon S3 verwendet und darauf ausgelegt ist APIs, Daten dauerhaft und redundant auf mehreren Geräten und Servern auf Ihrem zu speichern. AWS Outposts Sie kommunizieren mit Ihrem Outpost-Bucket über einen Zugriffspunkt und eine Endpunktverbindung über eine Virtual Private Cloud (VPC). Sie können für Outpost-Buckets dieselben APIs Funktionen wie für Amazon S3 S3-Buckets verwenden, einschließlich Zugriffsrichtlinien, Verschlüsselung und Tagging. Sie können S3 auf Outposts über die AWS-Managementkonsole, AWS Command Line Interface (AWS CLI) AWS SDKs, oder REST-API verwenden. 

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3 auf Outposts-Zugriffspunkten, das den AWS-Region Code für die Region, in der der Outpost beheimatet ist, die ID, die AWS-Konto Outpost-ID und den Namen des Access Points enthält:

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

Weitere Informationen zu S3 on Outposts finden Sie ARNs unter[Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Das Objekt ARNs verwendet das folgende Format, das die Adresse, auf AWS-Region die sich der Outpost bezieht, die ID, die AWS-Konto Outpost-ID, den Bucket-Namen und den Objektschlüssel umfasst:

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

Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn Sie ein AWS Outpost-Rack installieren, bleiben Ihre Daten lokal in Ihrem Outpost, um die Anforderungen an die Datenresidenz zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da das in der Region gehostet AWS-Managementkonsole wird, können Sie die Konsole nicht zum Hochladen oder Verwalten von Objekten in Ihrem Outpost verwenden. Sie können jedoch die REST-API AWS Command Line Interface (AWS CLI) verwenden und AWS SDKs Ihre Objekte über Ihre Access Points hochladen und verwalten.

**Topics**
+ [Hochladen eines Objekts in einen S3-on-Outposts-Bucket](S3OutpostsUploadObjects.md)
+ [Kopieren eines Objekts in einem Amazon S3 on Outposts-Bucket mit dem AWS SDK für Java](S3OutpostsCopyObject.md)
+ [Abrufen eines Objekts aus einem Amazon-S3-on-Outposts-Bucket](S3OutpostsGetObject.md)
+ [Auflisten der Objekten in einem Amazon-S3-on-Outposts-Bucket](S3OutpostsListObjects.md)
+ [Löschen von Objekten in Amazon-S3-on.Outposts-Buckets](S3OutpostsDeleteObject.md)
+ [Wird verwendet HeadBucket , um festzustellen, ob ein S3 on Outposts-Bucket existiert und Sie über Zugriffsberechtigungen verfügen](S3OutpostsHeadBucket.md)
+ [Durchführen und Verwalten eines mehrteiligen Uploads mit dem SDK for Java](S3OutpostsMPU.md)
+ [Presigned URLs for S3 auf Outposts verwenden](S3OutpostsPresignedURL.md)
+ [Amazon S3 on Outposts mit lokalem Amazon EMR on Outposts](s3-outposts-emr.md)
+ [Caching von Autorisierungs- und Authentifizierungsdaten](s3-outposts-auth-cache.md)

# Hochladen eines Objekts in einen S3-on-Outposts-Bucket
<a name="S3OutpostsUploadObjects"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3 auf Outposts-Zugriffspunkten, das den AWS-Region Code für die Region, in der der Outpost beheimatet ist, die ID, die AWS-Konto Outpost-ID und den Namen des Access Points enthält:

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

Weitere Informationen zu S3 on Outposts finden Sie ARNs unter[Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn Sie AWS ein Outpost-Rack installieren, bleiben Ihre Daten lokal in Ihrem Outpost, um die Anforderungen an die Datenresidenz zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da das in der Region gehostet AWS-Managementkonsole wird, können Sie die Konsole nicht zum Hochladen oder Verwalten von Objekten in Ihrem Outpost verwenden. Sie können jedoch die REST-API AWS Command Line Interface (AWS CLI) verwenden und AWS SDKs Ihre Objekte über Ihre Access Points hochladen und verwalten.

Im Folgenden AWS CLI und in AWS SDK für Java Beispielen wird gezeigt, wie Sie mithilfe eines Access Points ein Objekt in einen S3 on Outposts-Bucket hochladen.

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

**Example**  
Im folgenden Beispiel wird ein Objekt mit dem Namen `sample-object.xml` in einen S3-on-Outposts-Bucket (`s3-outposts:PutObject`) mit der AWS CLI eingefügt. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen über diesen Befehl finden Sie unter [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) in der *AWS CLI -Referenz*.  

```
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**  
Beispiele dafür, wie Sie ein Objekt mit dem AWS SDK for Java in einen Outposts Outposts-Bucket hochladen, finden Sie unter [PutObjectOnOutpost.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/outposts/PutObjectOnOutpost.java) in den *AWS SDK-Codebeispielen für Java 2.x*.

------

# Kopieren eines Objekts in einem Amazon S3 on Outposts-Bucket mit dem AWS SDK für Java
<a name="S3OutpostsCopyObject"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3 auf Outposts-Zugriffspunkten, das den AWS-Region Code für die Region, in der der Outpost beheimatet ist, die ID, die AWS-Konto Outpost-ID und den Namen des Access Points enthält:

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

Weitere Informationen zu S3 on Outposts finden Sie ARNs unter[Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn Sie AWS ein Outpost-Rack installieren, bleiben Ihre Daten lokal in Ihrem Outpost, um die Anforderungen an die Datenresidenz zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da das in der Region gehostet AWS-Managementkonsole wird, können Sie die Konsole nicht zum Hochladen oder Verwalten von Objekten in Ihrem Outpost verwenden. Sie können jedoch die REST-API AWS Command Line Interface (AWS CLI) verwenden und AWS SDKs Ihre Objekte über Ihre Access Points hochladen und verwalten.

Das folgenden Beispiel veranschaulicht, wie Sie mithilfe von AWS SDK für Java ein Objekt in einem S3-on-Outposts-Bucket kopieren.

## Verwenden des AWS SDK for Java
<a name="S3OutpostsCopyObjectJava"></a>

Im folgenden S3-on-Outposts-Beispiel wird ein Objekt mithilfe des SDK für Java in ein neues Objekt im selben Bucket kopiert. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre Informationen.

```
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();
        }
    }
}
```

# Abrufen eines Objekts aus einem Amazon-S3-on-Outposts-Bucket
<a name="S3OutpostsGetObject"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3 auf Outposts-Zugriffspunkten, das den AWS-Region Code für die Region, in der der Outpost beheimatet ist, die ID, die AWS-Konto Outpost-ID und den Namen des Access Points enthält:

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

Weitere Informationen zu S3 on Outposts finden Sie ARNs unter[Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn Sie AWS ein Outpost-Rack installieren, bleiben Ihre Daten lokal in Ihrem Outpost, um die Anforderungen an die Datenresidenz zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da das in der Region gehostet AWS-Managementkonsole wird, können Sie die Konsole nicht zum Hochladen oder Verwalten von Objekten in Ihrem Outpost verwenden. Sie können jedoch die REST-API AWS Command Line Interface (AWS CLI) verwenden und AWS SDKs Ihre Objekte über Ihre Access Points hochladen und verwalten.

Die folgenden Beispiele veranschaulichen, wie Sie ein Objekt mithilfe der AWS Command Line Interface (AWS CLI) und AWS SDK für Java herunterladen (abrufen).

## Mit dem AWS CLI
<a name="S3OutpostsGetObjectCLI"></a>

Im folgenden Beispiel wird ein Objekt mit dem Namen `sample-object.xml` in einem S3-on-Outposts-Bucket (`s3-outposts:GetObject`) mit der AWS CLI abgerufen. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen über diesen Befehl finden Sie unter [get-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html) in der *AWS CLI -Referenz*.

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

## Verwenden des AWS SDK for Java
<a name="S3OutpostsGetObjectJava"></a>

Im folgenden Beispiel für S3 on Outposts wird ein Objekt mit dem SDK for Java abgerufen. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie jeden `user input placeholder` durch Ihre Informationen. Weitere Informationen finden Sie unter [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) in der *API-Referenz zu 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();
    }
}
```

# Auflisten der Objekten in einem Amazon-S3-on-Outposts-Bucket
<a name="S3OutpostsListObjects"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3-on-Outposts-Objekte, das den AWS-Region-Code für die Region, in der sich der Outpost befindet, die AWS-Konto-ID, Outpost-ID, Bucket-Name und den Namen des Zugriffspunkts umfasst:

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

Weitere Informationen zu S3-in-Outposts-ARNs finden Sie unter [Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

**Anmerkung**  
Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn AWS ein Outpost-Rack installiert, bleiben Ihre Daten in Ihrem Outpost lokal, um die Anforderungen an die Datenspeicherorte zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da die AWS-Managementkonsole innerhalb der Region gehostet wird, können Sie die Konsole nicht verwenden, um Objekte in Ihrem Outpost hochzuladen oder zu verwalten. Sie können die REST-API, AWS Command Line Interface (AWS CLI) und AWS-SDKs zum Hochladen und Verwalten Ihrer Objekte über Ihre Zugriffspunkte verwenden.

Die folgenden Beispiele veranschaulichen, wie Sie mithilfe der AWS CLI und AWS SDK für Java die Objekte in einem S3-on-Outposts-Bucket auflisten.

## Verwendung der AWS CLI
<a name="S3OutpostsListObjectsCLI"></a>

Im folgenden Beispiel werden die Objekte in einem S3-on-Outposts-Bucket (`s3-outposts:ListObjectsV2`) unter Verwendung der AWS CLI aufgelistet. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen über diesen Befehl finden Sie unter [list-objects-v2](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-objects-v2.html) in der *AWS CLI-Referenz*.

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

**Anmerkung**  
Wenn Sie diese Aktion mit Amazon S3 auf Outposts über die AWS SDKs verwenden, geben Sie den Outposts-Zugangspunkt-ARN anstelle des Bucket-Namens in der folgenden Form an: `arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/accesspoint/example-Outposts-Access-Point`. Weitere Informationen zu S3-in-Outposts-ARNs finden Sie unter [Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

## Verwenden des AWS-SDK für Java
<a name="S3OutpostsListObjectsJava"></a>

Das folgende S3-on-Outposts-Beispiel listet Objekte in einem Bucket mit dem SDK for Java auf. Zum Verwenden dieses Beispiels ersetzen Sie jeden `user input placeholder` durch Ihre eigenen Informationen. 

**Wichtig**  
In diesem Beispiel verwenden wir [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), welches die neueste Version der `ListObjects`-API-Operation ist. Wir empfehlen die Verwendung dieser überarbeiteten API-Operationen für die Anwendungsentwicklung. Aus Gründen der Abwärtskompatibilität unterstützt Amazon S3 weiterhin die vorherige Version dieser API-Operation. 

```
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();
        }
    }
}
```

# Löschen von Objekten in Amazon-S3-on.Outposts-Buckets
<a name="S3OutpostsDeleteObject"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3-on-Outposts-Objekte, das den AWS-Region-Code für die Region, in der sich der Outpost befindet, die AWS-Konto-ID, Outpost-ID, Bucket-Name und den Namen des Zugriffspunkts umfasst:

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

Weitere Informationen zu S3-in-Outposts-ARNs finden Sie unter [Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn AWS ein Outpost-Rack installiert, bleiben Ihre Daten in Ihrem Outpost lokal, um die Anforderungen an die Datenspeicherorte zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da die AWS-Managementkonsole innerhalb der Region gehostet wird, können Sie die Konsole nicht verwenden, um Objekte in Ihrem Outpost hochzuladen oder zu verwalten. Sie können die REST-API, AWS Command Line Interface (AWS CLI) und AWS-SDKs zum Hochladen und Verwalten Ihrer Objekte über Ihre Zugriffspunkte verwenden.

Die folgenden Beispiele veranschaulichen, wie Sie ein einzelnes Objekt oder mehrere Objekte in einem S3-on-Outposts-Bucket mithilfe der AWS Command Line Interface (AWS CLI) und AWS SDK für Java löschen.

## Verwendung der AWS CLI
<a name="S3OutpostsDeleteObjectsCLI"></a>

Die folgenden Beispiele veranschaulichen, wie Sie ein einzelnes Objekt oder mehrere Objekte aus einem S3-on-Outposts-Bucket löschen.







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

Im folgenden Beispiel wird ein Objekt mit dem Namen `sample-object.xml` in einem S3-on-Outposts-Bucket (`s3-outposts:DeleteObject`) mithilfe der AWS CLI gelöscht. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen über diesen Befehl finden Sie unter [delete-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) in der *AWS CLI-Befehlsreferenz*.

```
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 ]

Im folgenden Beispiel werden zwei Objekte mit dem Namen `sample-object.xml` und `test1.text` in einem S3-on-Outposts-Bucket (`s3-outposts:DeleteObject`) mithilfe der AWS CLI gelöscht. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen zu diesem Befehl finden Sie unter [delete-objects](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) in der *AWS CLI-Referenz*.

```
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
}
```

------

## Verwenden des AWS-SDK für Java
<a name="S3OutpostsDeleteObjectsJava"></a>

Die folgenden Beispiele veranschaulichen, wie Sie ein einzelnes Objekt oder mehrere Objekte aus einem S3-on-Outposts-Bucket löschen.

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

Im folgenden Beispiel für S3 on Outposts wird ein Objekt in einem Bucket mit dem SDK for Java gelöscht. Zum Verwenden dieses Beispiels geben Sie den Zugriffspunkt-ARN für den Outpost und den Schlüsselnamen für das Objekt an, das Sie löschen möchten. Weitere Informationen finden Sie unter [DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) in der *API-Referenz zum 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 ]

Das folgende S3-on-Outposts-Beispiel lädt Objekte in einem Bucket hoch und löscht sie dann mithilfe des SDK for Java. Wenn Sie dieses Beispiel verwenden möchten, geben Sie den Zugriffspunkt-ARN für den Outpost an. Weitere Informationen finden Sie unter [DeleteObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html) in der *API-Referenz zu 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();
        }
    }
}
```

------

# Wird verwendet HeadBucket , um festzustellen, ob ein S3 on Outposts-Bucket existiert und Sie über Zugriffsberechtigungen verfügen
<a name="S3OutpostsHeadBucket"></a>

Objekte sind die Grundeinheiten, die in Amazon S3 on Outposts gespeichert sind. Jedes Objekt ist in einem Bucket enthalten. Sie müssen Zugriffspunkte verwenden, um auf ein Objekt in einem Outpost-Bucket zuzugreifen. Wenn Sie den Bucket für Objektoperationen angeben, verwenden Sie den Amazon-Ressourcennamen (ARN) oder den Alias des Zugriffspunkts. Weitere Informationen zu Zugriffspunkt-Aliassen finden Sie unter [Verwenden eines Alias im Bucket-Stil für den Zugriffspunkt Ihres S3-on-Outposts-Buckets](s3-outposts-access-points-alias.md).

Das folgende Beispiel zeigt das ARN-Format für S3 auf Outposts-Zugriffspunkten, das den AWS-Region Code für die Region, in der der Outpost beheimatet ist, die ID, die AWS-Konto Outpost-ID und den Namen des Access Points enthält:

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

Weitere Informationen zu S3 on Outposts finden Sie ARNs unter[Ressource ARNs für S3 auf Outposts](S3OutpostsIAM.md#S3OutpostsARN).

**Anmerkung**  
Mit Amazon S3 on Outposts werden Objektdaten immer im Outpost gespeichert. Wenn Sie AWS ein Outpost-Rack installieren, bleiben Ihre Daten lokal in Ihrem Outpost, um die Anforderungen an die Datenresidenz zu erfüllen. Ihre Objekte verlassen niemals Ihren Outpost und befinden sich nicht in einer AWS-Region. Da das in der Region gehostet AWS-Managementkonsole wird, können Sie die Konsole nicht zum Hochladen oder Verwalten von Objekten in Ihrem Outpost verwenden. Sie können jedoch die REST-API AWS Command Line Interface (AWS CLI) verwenden und AWS SDKs Ihre Objekte über Ihre Access Points hochladen und verwalten.

Die folgenden AWS Command Line Interface (AWS CLI) und AWS SDK für Java Beispiele zeigen Ihnen, wie Sie mithilfe der HeadBucket API-Operation feststellen können, ob ein Amazon S3 on Outposts-Bucket vorhanden ist und ob Sie die Berechtigung haben, darauf zuzugreifen. Weitere Informationen finden Sie unter [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) in der *API-Referenz zu Amazon Simple Storage Service*.

## Mit dem AWS CLI
<a name="S3OutpostsHeadBucketCLI"></a>

Das folgende AWS CLI Beispiel für S3 on Outposts verwendet den `head-bucket` Befehl, um festzustellen, ob ein Bucket vorhanden ist und Sie über Zugriffsberechtigungen verfügen. Zum Verwenden dieses Befehls ersetzen Sie `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen über diesen Befehl finden Sie unter [head-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-bucket.html) in der *AWS CLI -Referenz*.

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

## Verwenden des AWS SDK for Java
<a name="S3OutpostsHeadBucketJava"></a>

Das folgende S3-on-Outposts-Beispiel veranschaulicht, wie Sie feststellen, ob ein Bucket vorhanden ist und ob Sie Zugriffsberechtigungen für diesen Bucket besitzen. Wenn Sie dieses Beispiel verwenden möchten, geben Sie den Zugriffspunkt-ARN für den Outpost an. Weitere Informationen finden Sie unter [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) in der *API-Referenz zu 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();
        }
    }
}
```

# Durchführen und Verwalten eines mehrteiligen Uploads mit dem SDK for Java
<a name="S3OutpostsMPU"></a>

Mit Amazon S3 on Outposts können Sie S3-Buckets auf Ihren AWS Outposts Ressourcen erstellen und Objekte vor Ort für Anwendungen speichern und abrufen, die lokalen Datenzugriff, lokale Datenverarbeitung und Datenresidenz erfordern. Sie können S3 auf Outposts über die AWS-Managementkonsole, AWS Command Line Interface (AWS CLI) AWS SDKs, oder REST-API verwenden. Weitere Informationen finden Sie unter [Was ist Amazon S3 on Outposts?](S3onOutposts.md). 

Die folgenden Beispiele zeigen, wie Sie S3 auf Outposts verwenden können, AWS SDK für Java um einen mehrteiligen Upload durchzuführen und zu verwalten.

**Topics**
+ [Durchführen eines mehrteiligen Uploads eines Objekts in einem S3-on-Outposts-Bucket](#S3OutpostsInitiateMultipartUploadJava)
+ [Kopieren eines großen Objekts in einem S3-on-Outposts-Bucket mithilfe eines mehrteiligen Uploads](#S3OutpostsCopyPartJava)
+ [Auflisten von Teilen eines Objekts in einem S3-on-Outposts-Bucket](#S3OutpostsListPartsJava)
+ [Abrufen einer Liste der in Bearbeitung befindlichen mehrteiligen Uploads in einem S3-on-Outposts-Bucket](#S3OutpostsListMultipartUploadsJava)

## Durchführen eines mehrteiligen Uploads eines Objekts in einem S3-on-Outposts-Bucket
<a name="S3OutpostsInitiateMultipartUploadJava"></a>

Das folgende S3-on-Outposts-Beispiel initiiert, lädt und beendet einen mehrteiligen Upload eines Objekts in einen Bucket mithilfe des SDK for Java. Zum Verwenden dieses Beispiels ersetzen Sie jeden `user input placeholder` durch Ihre eigenen Informationen. Weitere Informationen finden Sie unter [Hochladen eines Objekts mit Multipart-Upload](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-upload-object.html) im *Benutzerhandbuch für 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;
    }
```

## Kopieren eines großen Objekts in einem S3-on-Outposts-Bucket mithilfe eines mehrteiligen Uploads
<a name="S3OutpostsCopyPartJava"></a>

Im folgenden Beispiel wird ein Objekt mithilfe des SDK for Java in einem S3-on-Outposts-Bucket kopiert. Zum Verwenden dieses Beispiels ersetzen Sie jeden `user input placeholder` durch Ihre eigenen Informationen. 

```
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;
    }
}
```

## Auflisten von Teilen eines Objekts in einem S3-on-Outposts-Bucket
<a name="S3OutpostsListPartsJava"></a>

Das folgende S3-on-Outposts-Beispiel listet die Teile eines Objekts in einem Bucket mit dem SDK for Java auf. Zum Verwenden dieses Beispiels ersetzen Sie jeden `user input placeholder` durch Ihre eigenen Informationen. 

```
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();
        }
    }
}
```

## Abrufen einer Liste der in Bearbeitung befindlichen mehrteiligen Uploads in einem S3-on-Outposts-Bucket
<a name="S3OutpostsListMultipartUploadsJava"></a>

Das folgende S3-on-Outposts-Beispiel zeigt, wie Sie mit dem SDK for Java eine Liste der laufenden mehrteiligen Uploads aus einem Outposts-Bucket abrufen. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie jeden `user input placeholder` durch Ihre Informationen.

```
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();
        }
    }
}
```

# Presigned URLs for S3 auf Outposts verwenden
<a name="S3OutpostsPresignedURL"></a>

Um zeitlich begrenzten Zugriff auf Objekte zu gewähren, die lokal auf einem Outpost gespeichert sind, ohne Ihre Bucket-Richtlinie zu aktualisieren, können Sie eine vorsignierte URL verwenden. Mit Presigned URLs können Sie als Bucket-Besitzer Objekte mit Personen in Ihrer Virtual Private Cloud (VPC) teilen oder ihnen die Möglichkeit geben, Objekte hochzuladen oder zu löschen. 

Wenn Sie eine vorsignierte URL mithilfe von AWS SDKs oder AWS Command Line Interface (AWS CLI) erstellen, verknüpfen Sie die URL mit einer bestimmten Aktion. Sie können auch einen zeitlich begrenzten Zugriff auf die vorsignierte URL gewähren, indem Sie eine benutzerdefinierte Ablaufzeit wählen, die zwischen 1 Sekunde und 7 Tagen liegen kann. Wenn Sie die vorsignierte URL freigeben, kann die Person in der VPC die in der URL eingebettete Aktion so ausführen, als wäre sie der ursprünglich signierende Benutzer. Wenn die URL ihre Verfallszeit erreicht, läuft sie ab und funktioniert nicht mehr.

## Beschränkung der Funktionen für vorsignierte URLs
<a name="S3OutpostsPresignedUrlUploadObjectLimitCapabilities"></a>

Die Funktionen einer vorsignierten URL sind durch die Berechtigungen des Benutzers eingeschränkt, der sie erstellt hat. Im Wesentlichen URLs handelt es sich bei vorsignierten Token um Inhaber-Token, die denjenigen Zugriff gewähren, die sie besitzen. Daher empfehlen wir Ihnen, sie angemessen zu schützen. 

**AWS Signatur Version 4 (SigV4)**  
Um ein bestimmtes Verhalten zu erzwingen, wenn vorsignierte URL-Anfragen mithilfe von AWS Signature Version 4 (Sigv4) authentifiziert werden, können Sie Bedingungsschlüssel in Bucket-Richtlinien und Zugriffspunktrichtlinien verwenden. Sie können z. B. eine Bucket-Richtlinie erstellen, die die `s3-outposts:signatureAge`-Bedingung verwendet, um jede vorsignierte URL-Anfrage von Amazon S3 on Outposts für Objekte im `example-outpost-bucket`-Bucket zu verweigern, wenn die Signatur mehr als 10 Minuten alt ist. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.

------
#### [ 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"}
            }
        }
    ]
}
```

------

Eine Liste von Bedingungsschlüsseln und zusätzlichen Beispielrichtlinien, die Sie verwenden können, um ein bestimmtes Verhalten zu erzwingen, wenn vorsignierte URL-Anfragen mit Hilfe von Signature Version 4 authentifiziert werden, finden Sie unter [AWS Authentifizierungsspezifische Richtlinienschlüssel für Signature Version 4 (Sigv4)](s3-outposts-bucket-policy-s3-sigv4-conditions.md).

**Beschränkung der Netzwege**  
Wenn Sie die Verwendung von vorsignierten URLs und allen S3-On-Outposts-Zugriffen auf bestimmte Netzwerkpfade einschränken möchten, können Sie Richtlinien schreiben, die einen bestimmten Netzwerkpfad erfordern. Um die Beschränkung für den IAM-Prinzipal festzulegen, der den Anruf tätigt, können Sie identitätsbasierte Richtlinien AWS Identity and Access Management (IAM) verwenden (z. B. Benutzer-, Gruppen- oder Rollenrichtlinien). Um die Beschränkung für die Ressource S3 on Outposts festzulegen, können Sie ressourcenbasierte Richtlinien verwenden (z. B. Bucket- und Zugriffspunkt-Richtlinien). 

Eine Netzwerkpfadbeschränkung für den IAM-Prinzipal erfordert, dass der Benutzer dieser Anmeldeinformationen Anfragen aus dem angegebenen Netzwerk stellt. Eine Einschränkung des Buckets oder des Zugriffspunkts erfordert, dass alle Anfragen an diese Ressource aus dem angegebenen Netz stammen. Diese Einschränkungen gelten auch außerhalb des Szenarios der vorsignierten URL.

Die globale IAM-Bedingung, die Sie verwenden, hängt von der Art des Endpunkts ab. Wenn Sie den öffentlichen Endpunkt für S3 on Outposts verwenden, benutzen Sie `aws:SourceIp`. Wenn Sie einen VPC-Endpunkt für S3 on Outposts verwenden, verwenden Sie `aws:SourceVpc` oder `aws:SourceVpce`.

Die folgende IAM-Richtlinienanweisung verlangt, dass der Principal AWS nur aus dem angegebenen Netzwerkbereich zugreift. Mit dieser Richtlinie müssen alle Zugriffe von diesem Bereich ausgehen. Dies gilt auch für den Fall, dass jemand eine vorsignierte URL für S3 on Outposts verwendet. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.

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

Ein Beispiel für eine Bucket-Richtlinie, die den `aws:SourceIP` AWS globalen Bedingungsschlüssel verwendet, um den Zugriff auf einen S3 on Outposts-Bucket auf einen bestimmten Netzwerkbereich zu beschränken, finden Sie unter[Einrichten von IAM mit S3 on Outposts](S3OutpostsIAM.md).

## Wer eine vorsignierte URL erstellen kann
<a name="S3Outpostswho-presigned-url"></a>

Alle Benutzer mit gültigen Sicherheitsanmeldeinformationen können vorsignierte URLs erstellen. Damit ein Benutzer in der VPC jedoch erfolgreich auf ein Objekt zugreifen kann, muss die zugewiesene URL von jemandem erstellt werden, der die Berechtigung hat, den Vorgang durchzuführen, auf dem die zugewiesene URL basiert.

Sie können die folgenden Anmeldeinformationen verwenden, um eine vorsignierte URL zu erstellen:
+ **IAM-Instance-Profil** – Bis zu 6 Stunden gültig.
+ **AWS -Security-Token-Service** – Gültig bis zu 36 Stunden, wenn mit dauerhaften Anmeldeinformationen signiert wird, z. B. mit den Anmeldeinformationen des AWS-Konto Stammbenutzers oder eines IAM-Benutzers.
+ **IAM-Benutzer** — Gültig bis zu 7 Tage, wenn Sie AWS Signature Version 4 verwenden.

  Um eine vordefinierte URL zu erstellen, die bis zu 7 Tage gültig ist, delegieren Sie zunächst die IAM-Benutzer-Anmeldeinformationen (den Zugriffsschlüssel und den geheimen Schlüssel) an das von Ihnen verwendete SDK. Generieren Sie anschließend mithilfe von AWS Signature Version 4 eine vorsignierte URL.

**Anmerkung**  
Wenn Sie eine vorsignierte URL mit einem temporären Token erstellt haben, läuft die URL ab, wenn das Token abläuft, auch wenn Sie die URL mit einer späteren Ablaufzeit erstellt haben.
Da vorsignierte Personen Zugriff auf Ihre S3 on Outposts-Buckets URLs gewähren, empfehlen wir Ihnen, sie entsprechend zu schützen. Weitere Informationen zum Schutz URLs vorsignierter Benutzer finden Sie unter. [Beschränkung der Funktionen für vorsignierte URLs](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)

## Wann prüft S3 on Outposts das Ablaufdatum und die Uhrzeit einer vorsignierten URL?
<a name="S3Outpostspresigned-url-when-checked"></a>

Zum Zeitpunkt der HTTP-Anfrage überprüft S3 on Outposts das Ablaufdatum und die Uhrzeit einer signierten URL. Beginnt ein Client beispielsweise mit dem Herunterladen einer großen Datei unmittelbar vor der Ablaufzeit, wird der Download auch dann fortgesetzt, wenn die Ablaufzeit während des Downloads verstreicht. Wenn die Verbindung jedoch unterbrochen wird und der Client versucht, den Download nach Ablauf der Zeit erneut zu starten, schlägt der Download fehl.

Weitere Informationen zur Verwendung einer vorsignierten URL zum Teilen oder Hochladen von Objekten finden Sie in den folgenden Themen.

**Topics**
+ [Beschränkung der Funktionen für vorsignierte URLs](#S3OutpostsPresignedUrlUploadObjectLimitCapabilities)
+ [Wer eine vorsignierte URL erstellen kann](#S3Outpostswho-presigned-url)
+ [Wann prüft S3 on Outposts das Ablaufdatum und die Uhrzeit einer vorsignierten URL?](#S3Outpostspresigned-url-when-checked)
+ [Objekte mithilfe von Presigned teilen URLs](S3OutpostsShareObjectPresignedURL.md)
+ [Generierung einer vorsignierten URL zum Hochladen eines Objekts in einen S3 on Outposts-Bucket](S3OutpostsPresignedUrlUploadObject.md)

# Objekte mithilfe von Presigned teilen URLs
<a name="S3OutpostsShareObjectPresignedURL"></a>

Um zeitlich begrenzten Zugriff auf Objekte zu gewähren, die lokal auf einem Outpost gespeichert sind, ohne Ihre Bucket-Richtlinie zu aktualisieren, können Sie eine vorsignierte URL verwenden. Mit Presigned URLs können Sie als Bucket-Besitzer Objekte mit Personen in Ihrer Virtual Private Cloud (VPC) teilen oder ihnen die Möglichkeit geben, Objekte hochzuladen oder zu löschen. 

Wenn Sie eine vorsignierte URL mithilfe von AWS SDKs oder AWS Command Line Interface (AWS CLI) erstellen, verknüpfen Sie die URL mit einer bestimmten Aktion. Sie können auch einen zeitlich begrenzten Zugriff auf die vorsignierte URL gewähren, indem Sie eine benutzerdefinierte Ablaufzeit wählen, die zwischen 1 Sekunde und 7 Tagen liegen kann. Wenn Sie die vorsignierte URL freigeben, kann die Person in der VPC die in der URL eingebettete Aktion so ausführen, als wäre sie der ursprünglich signierende Benutzer. Wenn die URL ihre Verfallszeit erreicht, läuft sie ab und funktioniert nicht mehr.



Wenn Sie eine vorsignierte URL erstellen, müssen Sie Ihre Sicherheitsanmeldedaten eingeben und dann Folgendes angeben: 
+ Ein Zugriffspunkt Amazon-Ressourcenname (ARN) für den Amazon S3 on Outposts Bucket
+ Ein Objektschlüssel
+ Eine HTTP-Methode (`GET` zum Herunterladen von Objekten)
+ Ein Verfallsdatum und eine Verfallszeit

Eine vorsignierte URL ist nur für die angegebene Dauer gültig. Das heißt, Sie müssen die von der URL erlaubte Aktion vor dem Ablaufdatum und der Ablaufzeit starten. Sie können eine vorsignierte URL bis zum Ablaufdatum und zur Ablaufzeit mehrfach verwenden. Wenn Sie eine vorsignierte URL mit einem temporären Token erstellt haben, läuft die URL ab, wenn das Token abläuft, auch wenn Sie die URL mit einer späteren Ablaufzeit erstellt haben.

Benutzer in der Virtual Private Cloud (VPC), die Zugriff auf die vorsignierte URL haben, können auf das Objekt zugreifen. Wenn Sie beispielsweise ein Video in Ihrem Bucket haben und sowohl der Bucket als auch das Objekt privat sind, können Sie das Video mit anderen teilen, indem Sie eine vorsignierte URL generieren. Da vorsignierte Personen Zugriff auf Ihre S3 on Outposts-Buckets URLs gewähren, empfehlen wir Ihnen, diese entsprechend zu schützen. URLs Weitere Informationen zum Schutz URLs vorsignierter Benutzer finden Sie unter. [Beschränkung der Funktionen für vorsignierte URLs](S3OutpostsPresignedURL.md#S3OutpostsPresignedUrlUploadObjectLimitCapabilities) 

Alle Benutzer mit gültigen Sicherheitsanmeldeinformationen können vorsignierte URLs erstellen. Die vorsignierte URL muss jedoch von jemandem erstellt werden, der die Berechtigung hat, den Vorgang durchzuführen, auf dem die vorsignierte URL basiert. Weitere Informationen finden Sie unter [Wer eine vorsignierte URL erstellen kann](S3OutpostsPresignedURL.md#S3Outpostswho-presigned-url).

Sie können eine vorsignierte URL generieren, um ein Objekt in einem S3 on Outposts-Bucket gemeinsam zu nutzen, indem Sie den AWS SDKs und den verwenden. AWS CLI Weitere Informationen finden Sie in den folgenden Beispielen. 

## Mit dem AWS SDKs
<a name="S3OutpostsShareObjectPreSignedURLSDK"></a>

Sie können das verwenden AWS SDKs , um eine vorsignierte URL zu generieren, die Sie an andere weitergeben können, damit diese ein Objekt abrufen können. 

**Anmerkung**  
Wenn Sie den verwenden, AWS SDKs um eine vorsignierte URL zu generieren, beträgt die maximale Ablaufzeit für eine vorsignierte URL 7 Tage ab dem Zeitpunkt der Erstellung. 

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

**Example**  
Das folgende Beispiel generiert eine vorsignierte URL, die Sie an andere weitergeben können, damit diese ein Objekt aus einem S3 on Outposts-Bucket abrufen können. Weitere Informationen finden Sie unter [Presigned URLs for S3 auf Outposts verwenden](S3OutpostsPresignedURL.md). Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.  

```
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**  
Das folgende Beispiel generiert eine vorsignierte URL, die Sie an andere weitergeben können, damit diese ein Objekt aus einem S3 on Outposts-Bucket abrufen können. Weitere Informationen finden Sie unter [Presigned URLs for S3 auf Outposts verwenden](S3OutpostsPresignedURL.md). Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.   

```
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 ]

Das folgende Beispiel generiert eine vorsignierte URL zur Freigabe eines Objekts mit Hilfe des SDK für Python (Boto3). Verwenden Sie z. B. einen Boto3-Client und die `generate_presigned_url` Funktion, um eine vorsignierte URL zu generieren, die Ihnen ermöglicht zu `GET` ein Objekt.

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

Weitere Informationen zur Verwendung von SDK for Python (Boto3) zur Erzeugung einer vorsignierten URL finden Sie unter [Python](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.generate_presigned_url) in der *API–Referenz für AWS SDK für Python (Boto) *.

------

## Unter Verwendung der AWS CLI
<a name="S3OutpostsShareObjectPresignedCLI"></a>

Der folgende AWS CLI Beispielbefehl generiert eine vorsignierte URL für einen S3 on Outposts-Bucket. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.

**Anmerkung**  
Wenn Sie den verwenden, AWS CLI um eine vorsignierte URL zu generieren, beträgt die maximale Ablaufzeit für eine vorsignierte URL 7 Tage ab dem Zeitpunkt der Erstellung. 

```
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
```

Weitere Informationen finden Sie unter [vorsignieren](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html) in der *AWS CLI Befehlsreferenz*.

# Generierung einer vorsignierten URL zum Hochladen eines Objekts in einen S3 on Outposts-Bucket
<a name="S3OutpostsPresignedUrlUploadObject"></a>

Um zeitlich begrenzten Zugriff auf Objekte zu gewähren, die lokal auf einem Outpost gespeichert sind, ohne Ihre Bucket-Richtlinie zu aktualisieren, können Sie eine vorsignierte URL verwenden. Mit Presigned URLs können Sie als Bucket-Besitzer Objekte mit Personen in Ihrer Virtual Private Cloud (VPC) teilen oder ihnen die Möglichkeit geben, Objekte hochzuladen oder zu löschen. 

Wenn Sie eine vorsignierte URL mithilfe von AWS SDKs oder AWS Command Line Interface (AWS CLI) erstellen, verknüpfen Sie die URL mit einer bestimmten Aktion. Sie können auch einen zeitlich begrenzten Zugriff auf die vorsignierte URL gewähren, indem Sie eine benutzerdefinierte Ablaufzeit wählen, die zwischen 1 Sekunde und 7 Tagen liegen kann. Wenn Sie die vorsignierte URL freigeben, kann die Person in der VPC die in der URL eingebettete Aktion so ausführen, als wäre sie der ursprünglich signierende Benutzer. Wenn die URL ihre Verfallszeit erreicht, läuft sie ab und funktioniert nicht mehr.

Wenn Sie eine vorsignierte URL erstellen, müssen Sie Ihre Sicherheitsanmeldedaten eingeben und dann Folgendes angeben: 
+ Ein Zugriffspunkt Amazon-Ressourcenname (ARN) für den Amazon S3 on Outposts Bucket
+ Ein Objektschlüssel
+ Eine HTTP-Methode (`PUT` zum Hochladen von Objekten)
+ Ein Verfallsdatum und eine Verfallszeit

Eine vorsignierte URL ist nur für die angegebene Dauer gültig. Das heißt, Sie müssen die von der URL erlaubte Aktion vor dem Ablaufdatum und der Ablaufzeit starten. Sie können eine vorsignierte URL bis zum Ablaufdatum und zur Ablaufzeit mehrfach verwenden. Wenn Sie eine vorsignierte URL mit einem temporären Token erstellt haben, läuft die URL ab, wenn das Token abläuft, auch wenn Sie die URL mit einer späteren Ablaufzeit erstellt haben. 

Wenn die von einer vorsignierten URL erlaubte Aktion aus mehreren Schritten besteht, wie z. B. ein mehrteiliger Upload, müssen Sie alle Schritte vor Ablauf der Zeit starten. Wenn S3 on Outposts versucht, einen Schritt mit einer abgelaufenen URL zu starten, erhalten Sie eine Fehlermeldung.

Benutzer in der Virtual Private Cloud (VPC), die Zugriff auf die vorsignierte URL haben, können Objekte hochladen. So kann beispielsweise ein Benutzer in der VPC, der Zugriff auf die vorsignierte URL hat, ein Objekt in Ihren Bucket hochladen. Da vorsignierte jedem Benutzer in der VPC, der Zugriff auf die vorsignierte URL hat, Zugriff auf Ihren S3 on Outposts-Bucket URLs gewähren, empfehlen wir Ihnen, diese entsprechend zu schützen. URLs Weitere Informationen zum Schutz vorsignierter Benutzer finden Sie unter. URLs [Beschränkung der Funktionen für vorsignierte URLs](S3OutpostsPresignedURL.md#S3OutpostsPresignedUrlUploadObjectLimitCapabilities) 

Alle Benutzer mit gültigen Sicherheitsanmeldeinformationen können vorsignierte URLs erstellen. Die vorsignierte URL muss jedoch von jemandem erstellt werden, der die Berechtigung hat, den Vorgang durchzuführen, auf dem die vorsignierte URL basiert. Weitere Informationen finden Sie unter [Wer eine vorsignierte URL erstellen kann](S3OutpostsPresignedURL.md#S3Outpostswho-presigned-url).

## Verwenden von AWS SDKs , um eine vorsignierte URL für einen S3 on Outposts-Objektvorgang zu generieren
<a name="s3-outposts-presigned-urls-upload-examples"></a>

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

**SDK für Java 2.x**  
Dieses Beispiel zeigt, wie Sie eine vorsignierte URL generieren, mit der Sie ein Objekt für eine begrenzte Zeit in einen S3 on Outposts-Bucket hochladen können. Weitere Informationen finden Sie unter [Presigned URLs for S3 auf Outposts verwenden](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 für Python (Boto3)**  
In diesem Beispiel wird gezeigt, wie man eine vorsignierte URL generiert, die für eine begrenzte Zeit eine S3 on Outposts-Aktion ausführen kann. Weitere Informationen finden Sie unter [Presigned URLs for S3 auf Outposts verwenden](S3OutpostsPresignedURL.md). Um eine Anfrage mit der URL zu stellen, verwenden Sie das `Requests` Paket.  

```
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 on Outposts mit lokalem Amazon EMR on Outposts
<a name="s3-outposts-emr"></a>

Amazon EMR ist eine verwaltete Cluster-Plattform, die die Ausführung von Big-Data-Frameworks wie Apache Hadoop und vereinfachtApache Spark, AWS um riesige Datenmengen zu verarbeiten und zu analysieren. Durch die Verwendung dieser Frameworks und verwandter Open-Source-Projekte können Sie Daten zu Analysezwecken und Business-Intelligence-Workloads verarbeiten. Amazon EMR unterstützt Sie auch bei der Transformation und Übertragung großer Datenmengen in und aus anderen AWS Datenspeichern und Datenbanken und unterstützt Amazon S3 on Outposts. Weitere Informationen über Amazon EMR finden Sie unter [Amazon EMR in Outposts](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) im *Verwaltungshandbuch für Amazon EMR*. 

Für Amazon S3 on Outposts unterstützt Amazon EMR seit Version 7.0.0 den Apache Hadoop-S3A-Connector. Frühere Versionen von Amazon EMR unterstützen kein lokales S3 on Outposts und das EMR-Dateisystem (EMRFS) wird nicht unterstützt.

**Unterstützte Anwendungen**  
Amazon EMR mit Amazon S3 on Outposts unterstützt die folgenden Anwendungen: 
+ Hadoop
+ Spark
+ Hue
+ Hive
+ Sqoop
+ Pig
+ Hudi
+ Flink

Weitere Informationen finden Sie im [Handbuch zu Amazon-EMR-Versionen](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html).

## Erstellen und Konfigurieren eines Buckets von Amazon S3 on Outposts.
<a name="create-outposts-bucket"></a>

Amazon EMR verwendet AWS SDK für Java zusammen mit Amazon S3 on Outposts die, um Eingabe- und Ausgabedaten zu speichern. Ihre Amazon-EMR-Protokolldateien werden an einem von Ihnen ausgewählten regionalen Amazon-S3-Speicherort und nicht lokal im Outpost gespeichert. Weitere Informationen über [Amazon-EMR-Protokolle](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) finden Sie im *Verwaltungshandbuch für Amazon EMR*. 

Für Buckets von S3 on Outposts gelten in Übereinstimmung mit den Amazon-S3- und DNS-Anforderungen bestimmte Einschränkungen und Bedingungen. Weitere Informationen finden Sie unter [Erstellen eines S3-on-Outposts-Buckets](S3OutpostsCreateBucket.md).

Mit Amazon EMR Version 7.0.0 und höher können Sie Amazon EMR mit S3 on Outposts und dem S3A-Dateisystem verwenden.

**Voraussetzungen**  
**Berechtigungen für S3 on Outposts** — Wenn Sie Ihr Amazon EMR-Instance-Profil erstellen, muss Ihre Rolle den AWS Identity and Access Management (IAM) -Namespace für S3 auf Outposts enthalten. S3 on Outposts hat seinen eigenen Namespace, `s3-outposts*`. Eine Beispielrichtlinie, die diesen Namespace verwendet, finden Sie unter [Einrichten von IAM mit S3 on Outposts](S3OutpostsIAM.md).

**S3A-Connector**: Wenn Sie Ihren EMR-Cluster für den Zugriff auf Daten aus einem Bucket von Amazon S3 on Outposts konfigurieren wollen, müssen Sie dazu den S3A-Connector Apache Hadoop verwenden. Um den Connector zu verwenden, stellen Sie sicher, dass alle Ihre S3 das Schema verwenden. URIs `s3a` Wenn dies nicht der Fall ist, können Sie die Dateisystemimplementierung, die Sie für Ihren EMR-Cluster verwenden, so konfigurieren, dass Ihr S3 mit dem S3A-Connector URIs funktioniert.

Um die Dateisystemimplementierung so zu konfigurieren, dass sie mit dem S3A-Connector funktioniert, verwenden Sie die `fs.file_scheme.impl` und `fs.AbstractFileSystem.file_scheme.impl` Konfigurationseigenschaften für Ihren EMR-Cluster, wobei URIs dies dem S3-Typ `file_scheme` entspricht, den Sie haben. Wenn Sie das folgende Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre eigenen Informationen. Um beispielsweise die Dateisystemimplementierung für S3 zu ändern URIs , die das `s3` Schema verwenden, geben Sie die folgenden Cluster-Konfigurationseigenschaften an:

```
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. ]
```

Um S3A zu verwenden, legen Sie die Konfigurationseigenschaft `fs.file_scheme.impl` auf `org.apache.hadoop.fs.s3a.S3AFileSystem` und die Eigenschaft `fs.AbstractFileSystem.file_scheme.impl` auf `org.apache.hadoop.fs.s3a.S3A` fest.

Wenn Sie beispielsweise auf den Pfad `s3a://bucket/...` zugreifen, legen Sie die Eigenschaft `fs.s3a.impl` auf `org.apache.hadoop.fs.s3a.S3AFileSystem` und die Eigenschaft `fs.AbstractFileSystem.s3a.impl` auf `org.apache.hadoop.fs.s3a.S3A` fest.

## Erste Schritte mit Amazon S3 on Outposts unter Verwendung von Amazon EMR
<a name="getting-started-outposts"></a>

Die folgenden Themen veranschaulichen die ersten Schritte mit EMR mit Amazon S3 on Outposts unter Verwendung von Amazon EMR.

**Topics**
+ [Erstellen einer Berechtigungsrichtlinie](#create-permission-policy)
+ [Ihren Cluster erstellen und konfigurieren](#configure-cluster)
+ [Konfigurationsübersicht](#configurations-overview)
+ [Überlegungen](#considerations)

### Erstellen einer Berechtigungsrichtlinie
<a name="create-permission-policy"></a>

Bevor Sie einen EMR-Cluster erstellen können, der Amazon S3 on Outposts verwendet, müssen Sie eine IAM-Richtlinie erstellen, die an das Amazon-EC2-Instance-Profil für den Cluster angefügt wird. Die Richtlinie muss über die Berechtigung verfügen, auf den Amazon-Ressourcennamen (ARN) des Zugangspunkts von S3 on Outposts zuzugreifen. Weitere Informationen zum Erstellen von IAM-Richtlinien für S3 on Outposts finden Sie unter [Einrichten von IAM mit S3 on Outposts](S3OutpostsIAM.md). 

Die folgende Beispielrichtlinie zeigt, wie Sie die erforderlichen Berechtigungen gewähren. Nachdem Sie die Richtlinie erstellt haben, ordnen Sie die Richtlinie der Instance-Profilrolle zu, mit der Sie Ihren EMR-Cluster erstellen, wie im Abschnitt [Ihren Cluster erstellen und konfigurieren](#configure-cluster) beschrieben. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die *`user input placeholders`* (Platzhalter für Benutzereingaben) durch Ihre Informationen.

```
 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.  }
```

### Ihren Cluster erstellen und konfigurieren
<a name="configure-cluster"></a>

Schließen Sie die folgenden Schritte in der Konsole ab, um einen Cluster zu erstellen, der Spark mit S3 on Outposts ausführt.

**So erstellen Sie einen Cluster, der Spark mit S3 on Outposts ausführt**

1. Öffnen Sie die Amazon-EMR-Konsole unter [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/).

1. Wählen Sie im linken Navigationsbereich **Cluster** aus.

1. Wählen Sie **Cluster erstellen**.

   

1. Wählen Sie als **Amazon EMR-Version** **emr-7.0.0** oder später.

1. Wählen Sie als Anwendungspaket **Interaktives Spark**. Wählen Sie danach alle anderen unterstützten Anwendungen aus, die in Ihren Cluster integriert werden sollen.

1. Geben Sie Ihre Konfigurationseinstellungen ein, um Amazon S3 on Outposts zu aktivieren.

**Beispiel-Konfigurationseinstellungen**  
Wenn Sie die folgenden Beispiel-Konfigurationseinstellungen verwenden möchten, ersetzen Sie die `user input placeholders` (Platzhalter für Benutzereingaben) durch Ihre eigenen Informationen.

   ```
    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. Wählen Sie im Bereich **Netzwerk** eine virtuelle private Cloud (VPC) und ein Subnetz aus, die sich auf Ihrem AWS Outposts Rack befinden. Weitere Informationen über Amazon EMR in Outposts finden Sie unter [EMR-Cluster auf AWS Outposts](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) im *Verwaltungshandbuch für Amazon EMR*.

1. Wählen Sie im Abschnitt **EC2-Instance-Profil für Amazon EMR** die IAM-Rolle, der die [zuvor erstellte Berechtigungsrichtlinie](#create-permission-policy) angehängt ist.

1. Konfigurieren Sie Ihre verbleibenden Cluster-Einstellungen und wählen Sie dann **Create cluster (Cluster erstellen)**.

### Konfigurationsübersicht
<a name="configurations-overview"></a>

Die folgende Tabelle beschreibt S3A-Konfigurationen und die Werte, die Sie für ihre Parameter festlegen sollten, wenn Sie einen Cluster einrichten, der S3 on Outposts mit Amazon EMR verwendet.


| Parameter | Standardwert | Erforderlicher Wert für S3 on Outposts | Erklärung | 
| --- | --- | --- | --- | 
|  `fs.s3a.aws.credentials.provider`  |  Wenn nicht angegeben, sucht S3A im Regions-Bucket mit dem Bucket-Namen Outposts nach S3.  |  Der Zugriffspunkt-ARN des Buckets von S3 on Outposts  |  Amazon S3 on Outposts unterstützt reine Virtual-Private-Cloud(VPC)-Zugriffspunkte als einzige Möglichkeit, auf Ihre Outposts-Buckets zuzugreifen.  | 
|  `fs.s3a.committer.name`  | file |  `magic`  |  „Magic Committer“ ist der einzige Committer, der für S3 on Outposts unterstützt wird.   | 
|  `fs.s3a.select.enabled`  |  `TRUE`  |  `FALSE`  | S3 Select wird in Outposts nicht unterstützt. | 
|  `JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  Für S3 on Outposts auf S3A ist Java-Version 11 erforderlich.  | 

Die folgende Tabelle beschreibt Spark-Konfigurationen und die Werte, die Sie für ihre Parameter festlegen sollten, wenn Sie einen Cluster einrichten, der S3 on Outposts mit Amazon EMR verwendet.


| Parameter | Standardwert | Erforderlicher Wert für S3 on Outposts | Erklärung | 
| --- | --- | --- | --- | 
|  `spark.sql.sources.fastS3PartitionDiscovery.enabled`  |  `TRUE`  |  `FALSE`  |  S3 on Outposts unterstützt keine schnelle Partition.  | 
|  `spark.executorEnv.JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  Für S3 on Outposts auf S3A ist Java-Version 11 erforderlich.  | 

### Überlegungen
<a name="considerations"></a>

Beachten Sie Folgendes, wenn Sie Amazon EMR in Buckets von S3 on Outposts integrieren:
+ Amazon S3 on Outposts unterstützt die Speicherklasse Amazon S3 on Outposts.
+ Der S3A-Connector ist erforderlich, um S3 on Outposts mit Amazon EMR zu verwenden. Nur S3A verfügt über die Features, die für Interaktionen mit Buckets von S3 on Outposts erforderlich sind. Informationen zur Einrichtung des S3A-Connectors finden Sie unter [Voraussetzungen](#s3a-outposts-prerequisites). 
+ Amazon S3 on Outposts unterstützt mit Amazon EMR nur die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3). Weitere Informationen finden Sie unter [Datenverschlüsselung in S3 on Outposts](s3-outposts-data-encryption.md).
+ Amazon S3 on Outposts unterstützt keine Schreibvorgänge mit dem FileOutputCommitter S3A. Schreibvorgänge mit dem S3A FileOutputCommitter auf S3 auf Outposts-Buckets führen zu dem folgenden Fehler InvalidStorageClass: Die von Ihnen angegebene Speicherklasse ist nicht gültig.
+ Amazon S3 on Outposts wird mit Amazon EMR Serverless oder Amazon EMR auf EKS nicht unterstützt.
+ Amazon-EMR-Protokolle werden an einem von Ihnen ausgewählten regionalen Amazon-S3-Speicherort und nicht lokal im Bucket von S3 on Outposts gespeichert.

# Caching von Autorisierungs- und Authentifizierungsdaten
<a name="s3-outposts-auth-cache"></a>

S3 on Outposts speichert Authentifizierungs- und Autorisierungsdaten sicher lokal in Outposts-Racks. Der Cache entfernt AWS-Region für jede Anfrage Roundtrips zum übergeordneten Objekt. Dies beseitigt die Variabilität, die durch Netzwerk-Roundtrips entsteht. Der Cache für Authentifizierungs- und Autorisierungsdaten in S3 on Outposts sorgt für konsistente Latenzen, die nicht von der Latenz der Verbindung zwischen den Outposts und der AWS-Region abhängen. 

Wenn Sie in S3 on Outposts eine API-Anforderung stellen, werden die Authentifizierungs- und Autorisierungsdaten sicher zwischengespeichert. Die zwischengespeicherten Daten werden dann verwendet, um nachfolgende API-Anforderungen für S3-Objekte zu authentifizieren. S3 on Outposts speichert nur Authentifizierungs- und Autorisierungsdaten im Cache, wenn die Anforderung mit Signature Version 4A (SigV4A) signiert ist. Der Cache wird lokal in den Outposts innerhalb von S3 on Outposts gespeichert. Er wird asynchron aktualisiert, wenn Sie eine S3-API-Anforderung stellen. Der Cache ist verschlüsselt und es werden keine kryptografischen Klartextschlüssel in Outposts gespeichert. 

Der Cache ist bis zu 10 Minuten lang gültig, wenn der Outpost mit der AWS-Region verbunden ist. Er wird asynchron aktualisiert, wenn Sie eine API-Anforderung in S3 on Outposts stellen, damit auch sicher die neuesten Richtlinien verwendet werden. Wenn der Outpost vom getrennt wird AWS-Region, ist der Cache bis zu 12 Stunden gültig. 

## Konfigurieren des Caches für Autorisierungs- und Authentifizierungsdaten
<a name="config-auth-cache"></a>

S3 on Outposts speichert Authentifizierungs- und Autorisierungsdaten für Anforderungen, die mit dem SigV4A-Algorithmus signiert wurden, automatisch im Cache. Weitere Informationen finden Sie im *AWS Identity and Access Management Benutzerhandbuch* unter [AWS API-Anfragen signieren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html). Der SigV4A-Algorithmus ist in den neuesten Versionen von verfügbar. AWS SDKs Sie können ihn über eine Abhängigkeit aus den [Bibliotheken von AWS Common Runtime (CRT)](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html) abrufen. 

Sie müssen die neueste Version des AWS SDK verwenden und die neueste Version des CRT installieren. Sie können beispielsweise `pip install awscrt` ausführen, um die neueste Version von CRT mit Boto3 zu erhalten.

S3 on Outposts speichert Authentifizierungs- und Autorisierungsdaten für Anforderungen, die mit dem SigV4-Algorithmus signiert wurden, nicht im Cache.

## Validieren der SigV4a-Signatur
<a name="validate-SigV4A"></a>

Sie können AWS CloudTrail damit überprüfen, ob Anfragen mit SigV4a signiert wurden. Weitere Informationen CloudTrail zur Einrichtung von S3 auf Outposts finden Sie unter[Überwachung von S3 auf Outposts mit Protokollen AWS CloudTrail](S3OutpostsCloudtrail.md). 

Nachdem Sie die Konfiguration vorgenommen haben CloudTrail, können Sie im `SignatureVersion` Feld der CloudTrail Protokolle überprüfen, wie eine Anfrage signiert wurde. Für Anforderungen, die mit SigV4a signiert wurden, lautet der Wert für `SignatureVersion` `AWS 4-ECDSA-P256-SHA256`. Für Anforderungen, die mit SigV4 signiert wurden, lautet der Wert für `SignatureVersion` `AWS 4-HMAC-SHA256`.