

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.

# Verwaltung großer Amazon SQS SQS-Nachrichten mit Python und Amazon S3
<a name="extended-client-library-python"></a>

Verwenden Sie die Amazon SQS [Amazon SQS Extended Client Library for Python](https://github.com/awslabs/amazon-sqs-python-extended-client-lib/) mit Amazon S3, um große Amazon SQS SQS-Nachrichten zu verwalten, insbesondere für Nutzlasten zwischen 256 KB und 2 GB. Die Bibliothek speichert die Nachrichtennutzlast in einem Amazon S3 S3-Bucket und sendet eine Nachricht mit einem Verweis auf das gespeicherte Objekt in der Amazon SQS SQS-Warteschlange.

Mit der Amazon SQS Extended Client Library für Python können Sie:
+ Geben Sie an, ob Payloads immer in Amazon S3 oder nur in Amazon S3 gespeichert werden, wenn die Payloadgröße 256 KB überschreitet 
+ Senden Sie eine Nachricht, die auf ein einzelnes Nachrichtenobjekt verweist, das in einem Amazon S3 S3-Bucket gespeichert ist 
+ Rufen Sie das entsprechende Payload-Objekt aus einem Amazon S3 S3-Bucket ab 
+ Löschen Sie das entsprechende Payload-Objekt aus einem Amazon S3 S3-Bucket

## Voraussetzungen
<a name="extended-client-library-prerequisites"></a>

 Im Folgenden sind die Voraussetzungen für die Verwendung der Amazon SQS Extended Client Library für Python aufgeführt: 
+ Ein AWS Konto mit den erforderlichen Anmeldeinformationen. Um ein AWS Konto zu erstellen, navigieren Sie zur [AWS Startseite](https://aws.amazon.com/) und wählen Sie dann ** AWS Konto erstellen**. Folgen Sie den Anweisungen. Informationen zu Anmeldeinformationen finden Sie unter [Anmeldeinformationen](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html). 
+ Ein AWS SDK: Das Beispiel auf dieser Seite verwendet das AWS Python-SDK Boto3. Informationen zur Installation und Einrichtung des SDK finden Sie in der Dokumentation [https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) im *AWS SDK for Python Developer Guide* 
+ Python 3.x (oder höher) und`pip`.
+  [Die Amazon SQS Extended Client Library für Python, erhältlich bei PyPI](https://pypi.org/project/amazon-sqs-extended-client/) 

**Anmerkung**  
 Sie können die Amazon SQS Extended Client Library for Python verwenden, um Amazon SQS SQS-Nachrichten mithilfe von Amazon S3 nur mit dem AWS SDK für Python zu verwalten. Sie können dies nicht mit der AWS CLI, der Amazon SQS SQS-Konsole, der Amazon SQS SQS-HTTP-API oder einer der anderen tun. AWS SDKs 

## Konfigurieren der Nachrichtenspeicherung
<a name="configuring-message-storage-python"></a>

 Der Amazon SQS Extended Client verwendet die folgenden Nachrichtenattribute, um die Amazon S3 S3-Nachrichtenspeicheroptionen zu konfigurieren: 
+  `large_payload_support`: Der Amazon S3 S3-Bucket-Name zum Speichern großer Nachrichten. 
+  `always_through_s3`: Wenn`True`, dann werden alle Nachrichten in Amazon S3 gespeichert. Falls`False`, werden Nachrichten, die kleiner als 256 KB sind, nicht in den S3-Bucket serialisiert. Der Standardwert ist `False`. 
+  `use_legacy_attribute`: Falls `True` alle veröffentlichten Nachrichten das reservierte Nachrichtenattribut Legacy (`SQSLargePayloadSize`) anstelle des aktuellen reservierten Nachrichtenattributs (`ExtendedPayloadSize`) verwenden. 

## Verwaltung großer Amazon SQS SQS-Nachrichten mit der Extended Client Library für Python
<a name="extended-client-library-python-code-example"></a>

 Das folgende Beispiel erstellt einen Amazon S3 S3-Bucket mit einem zufälligen Namen. Anschließend erstellt es eine Amazon SQS SQS-Warteschlange mit dem Namen `MyQueue` und sendet eine Nachricht, die in einem S3-Bucket gespeichert ist und mehr als 256 KB groß ist, an die Warteschlange. Schließlich ruft der Code die Nachricht ab, gibt Informationen über die Nachricht zurück und löscht die Nachricht, die Warteschlange und den Bucket. 

```
import boto3
import sqs_extended_client

#Set the Amazon SQS extended client configuration with large payload.
sqs_extended_client = boto3.client("sqs", region_name="us-east-1")
sqs_extended_client.large_payload_support = "amzn-s3-demo-bucket" 
sqs_extended_client.use_legacy_attribute = False


# Create an SQS message queue for this example. Then, extract the queue URL.
queue = sqs_extended_client.create_queue(
    QueueName = "MyQueue"
)
queue_url = sqs_extended_client.get_queue_url(
    QueueName = "MyQueue"
)['QueueUrl']


# Create the S3 bucket and allow message objects to be stored in the bucket. 
sqs_extended_client.s3_client.create_bucket(Bucket=sqs_extended_client.large_payload_support)

# Sending a large message
small_message = "s"
large_message = small_message * 300000 # Shall cross the limit of 256 KB

send_message_response = sqs_extended_client.send_message(
    QueueUrl=queue_url,
    MessageBody=large_message
)
assert send_message_response['ResponseMetadata']['HTTPStatusCode'] == 200

# Receiving the large message
receive_message_response = sqs_extended_client.receive_message(
    QueueUrl=queue_url,
    MessageAttributeNames=['All']
)
assert receive_message_response['Messages'][0]['Body'] == large_message
receipt_handle = receive_message_response['Messages'][0]['ReceiptHandle']

# Deleting the large message
# Set to True for deleting the payload from S3
sqs_extended_client.delete_payload_from_s3 = True 
delete_message_response = sqs_extended_client.delete_message(
    QueueUrl=queue_url,
    ReceiptHandle=receipt_handle
)

assert delete_message_response['ResponseMetadata']['HTTPStatusCode'] == 200

# Deleting the queue
delete_queue_response = sqs_extended_client.delete_queue(
    QueueUrl=queue_url
)

assert delete_queue_response['ResponseMetadata']['HTTPStatusCode'] == 200
```