

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.

# AWS SDK für SAP ABAP features
<a name="features"></a>

AWS SDK für SAP ABAP bietet die folgenden Funktionen.

**Topics**
+ [Programmatische Konfiguration](#programmatic-configuration)
+ [Waiter](#waiters)
+ [Paginatoren](#paginators)
+ [Wiederholungsverhalten](#retry-behavior)
+ [Verkünder](#presigners)
+ [Kontenübergreifende IAM-Rollenverkettung](#source-profile)

## Programmatische Konfiguration
<a name="programmatic-configuration"></a>

Verwenden Sie `/n/AWS1/IMG` IMG Transacation für AWS SDK für SAP ABAP und die Custom Business Configuration-Anwendung für AWS SDK for SAP ABAP — BTP Edition für die programmatische Konfiguration.

Um mit der programmatischen Konfiguration zu beginnen, rufen Sie zunächst ein Konfigurationsobjekt mit dem Befehl ab. `get_config( )`

```
data(lo_config) = lo_s3->get_config( ).
```

Jedes Konfigurationsobjekt implementiert `/AWS1/IF_RT_CONFIG` eine Schnittstelle, die Begriffe und `GET` Begriffe enthält, `SET` die dem entsprechen. `IMG` Beispielsweise kann die Standardregion überschrieben werden. Sehen Sie sich den folgenden Beispielbefehl an.

```
lo_s3->get_config( )->/aws1/if_rt_config~set_region( 'us-east-1' ).
```

Einige Konfigurationsobjekte haben keine `IMG` Repräsentation und können nur programmgesteuert festgelegt werden, z. B. die maximale Anzahl von Wiederholungsversuchen. Sehen Sie sich den folgenden Beispielbefehl an.

```
lo_s3->get_config( )->/aws1/if_rt_config~set_max_attempts( 10 ).
```

Das Konfigurationsobjekt von AWS-Services kann auch dienstspezifische Methoden enthalten, die nicht in dargestellt sind`/aws1/if_rt_config`. Amazon S3 kann beispielsweise einen Bucket adressieren, der entweder im `foobucket.s3.region.amazonaws.com` virtuellen Endpunkt- oder `s3.region.amazonaws.com/foobucket` Pfadstil benannt `foobucket` ist. Sie können die Verwendung des Pfadstils mit dem folgenden Beispielbefehl erzwingen.

```
lo_s3->get_config( )->set_forcepathstyle( abap_true ).
```

Weitere Informationen zu Dienstkonfigurationen finden Sie unter [AWS SDK für SAP ABAP — API-Referenzhandbuch](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html).

## Waiter
<a name="waiters"></a>

Wenn Sie asynchron arbeiten AWS APIs, müssen Sie warten, bis eine bestimmte Ressource verfügbar ist, bevor Sie weitere Maßnahmen ergreifen können. Zum Beispiel Amazon DynamoDB antwortet die `CREATETABLE()` API von sofort mit dem Tabellenstatus`CREATING`. Sie können Lese- oder Schreibvorgänge erst initiieren, nachdem sich der Status der Tabelle auf geändert hat`ACTIVE`. Mit Kellnern können Sie überprüfen, ob sich AWS Ressourcen in einem bestimmten Zustand befinden, bevor Sie Aktionen an ihnen ausführen.

Kellner verwenden Serviceoperationen, um den Status von AWS Ressourcen abzufragen, bis die Ressource den vorgesehenen Status erreicht hat oder bis festgestellt wird, dass die Ressource den gewünschten Status nicht erreicht hat. Es kann zeitaufwändig und fehleranfällig sein, den Code zur kontinuierlichen Abfrage AWS von Ressourcen zu schreiben. Kellner helfen dabei, diese Komplexität zu vereinfachen, indem sie die Verantwortung für die Durchführung von Umfragen in Ihrem Namen übernehmen.

Sehen Sie sich das folgende Amazon S3 S3-Beispiel mit Waiter an.

```
DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ).
 
" Create a bucket - initiates the process of creating an S3 bucket and might return before the bucket exists
lo_s3→createbucket( iv_bucket = |amzn-s3-demo-bucket| ).
 
" Wait until the newly created bucket becomes available
lo_s3->get_waiter( )->bucketexists(
    iv_max_wait_time = 200
    iv_bucket = |amzn-s3-demo-bucket|
).
```
+ In diesem Beispiel wird der Amazon S3 S3-Client verwendet, um einen Bucket zu erstellen. Der `get_waiter()` Befehl wird implementiert, um anzugeben, wann der`bucketexists`.
+ Sie müssen den `iv_max_wait_time` Parameter für jeden Kellner angeben. Es gibt die Gesamtzeit an, die ein Kellner warten muss, bis der Vorgang abgeschlossen ist. Im vorherigen Beispiel kann ein Kellner 200 Sekunden lang laufen.
+ Möglicherweise müssen Sie zusätzliche Eingaben für die erforderlichen Parameter angeben. Im vorherigen Beispiel ist der Amazon S3 S3-Bucket-Name für den `iv_bucket` Parameter erforderlich.
+ `/AWS1/CX_RT_WAITER_FAILURE`Eine Ausnahme gibt an, dass der Kellner die im `iv_max_wait_time` Parameter angegebene Höchstzeit überschritten hat.
+ `/AWS1/CX_RT_WAITER_TIMEOUT`Eine Ausnahme gibt an, dass der Kellner aufgehört hat, weil er den gewünschten Status nicht erreicht hat.

## Paginatoren
<a name="paginators"></a>

Einige AWS-Service Operationen bieten seitenweise Antworten an. Sie sind paginiert, sodass bei jeder Antwort eine feste Datenmenge zurückgegeben wird. Sie müssen nachfolgende Anfragen mit einem Token oder einer Markierung stellen, um alle Ergebnisse abzurufen. Beispielsweise gibt der `ListObjectsV2` Amazon S3 S3-Vorgang bis zu 1.000 Objekte gleichzeitig zurück. Sie müssen nachfolgende Anfragen mit dem entsprechenden Token stellen, um die nächste Ergebnisseite zu erhalten.

Paginierung ist der Prozess, bei dem aufeinanderfolgende Anfragen gesendet werden, um dort weiterzumachen, wo eine vorherige Anfrage aufgehört hat. Paginatoren sind Iteratoren von Ergebnissen, die vom SDK für SAP ABAP bereitgestellt werden. Sie können Paginated problemlos verwenden, ohne den zugrundeliegenden Mechanismus der API APIs mithilfe von Paginierungstoken zu verstehen.

**Mit Paginatoren arbeiten**

Sie können Paginatoren mit der `get_paginator()` Methode erstellen, die ein Paginator-Objekt zurückgibt. Das Paginator-Objekt ruft die Operation auf, die paginiert wird. Das Paginator-Objekt akzeptiert die Bereitstellung erforderlicher Parameter für die zugrunde liegende API. Dieser Prozess gibt ein Iterator-Objekt zurück, mit dem mithilfe der Methoden und über paginierte Ergebnisse iteriert werden kann. `has_next()` `get_next()`
+ `has_next()`gibt einen booleschen Wert zurück, der angibt, ob für die aufgerufene Operation mehr Antworten oder Seiten verfügbar sind.
+ `get_next()`gibt die Antwort auf die Operation zurück.

Das folgende Beispiel listet alle Objekte in einem S3-Bucket auf, die mithilfe von Paginator abgerufen wurden.

```
DATA(lo_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ).
DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ).

TRY.
    DATA(lo_paginator) = lo_s3->get_paginator( ).
    DATA(lo_iterator) = lo_paginator->listobjectsv2(  
        iv_bucket = 'example_bucket'
    ).
    WHILE lo_iterator->has_next( ). 
        DATA(lo_output) = lo_iterator->get_next( ).
        LOOP AT lo_output->get_contents(  ) INTO DATA(lo_object).
            WRITE: / lo_object->get_key( ), lo_object->get_size( ).
        ENDLOOP.
    ENDWHILE.
CATCH /aws1/cx_rt_generic INTO DATA(lo_ex).
    MESSAGE lo_ex->if_message~get_text(  ) TYPE 'I'.
ENDTRY.
```

## Wiederholungsverhalten
<a name="retry-behavior"></a>

Mit dem SDK für SAP ABAP können Sie die maximale Anzahl von Wiederholungsversuchen für Anfragen konfigurieren, die aufgrund von Drosselung AWS-Services oder vorübergehenden Fehlern fehlschlagen. Die Anzahl der auf Service-Client-Ebene zulässigen Wiederholungen, d. h. die Häufigkeit, mit der das SDK den Vorgang wiederholt, bevor er fehlschlägt und eine Ausnahme auslöst, wird durch das `AV_MAX_ATTEMPTS` Attribut im Dienstkonfigurationsobjekt angegeben. Wenn ein Service-Client-Objekt erstellt wird, konfiguriert das SDK das `AV_MAX_ATTEMPTS` Attribut auf den Standardwert 3. Das Dienstkonfigurationsobjekt kann verwendet werden, um den maximalen Wiederholungsversuch programmgesteuert auf einen gewünschten Wert festzulegen. Weitere Informationen finden Sie im folgenden Beispiel.

```
" Retrieve configuration object using Amazon S3 service’s get_config( ) method
DATA(lo_config) = lo_s3->get_config( ).

" Set the maximum number of retries to 5
lo_config->/aws1/if_rt_config~set_max_attempts( 5 ).
 
" Get the value of the maximum retry attempt.
DATA(lv_max_retry_attempts) = lo_config->/aws1/if_rt_config~get_max_attempts( ).
```

**Anmerkung**  
Das Konfigurationsobjekt ABAP SDK ermöglicht zwar die Einstellung des *Wiederholungsmodus* mit der `/AWS1/IF_RT_CONFIG~SET_RETRY_MODE()` Methode, das SDK unterstützt jedoch nur den `standard` Wiederholungsmodus. Weitere Informationen finden Sie unter [Verhalten bei Wiederholungsversuchen](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html) in AWS SDKs und im Referenzhandbuch zu Tools.

## Verkünder
<a name="presigners"></a>

Sie können Presigned verwenden, URLs um einigen zeitlich begrenzten Zugriff zu gewähren. AWS-Services Eine vorsignierte URL kann in einen Browser eingegeben oder von einem Programm zur Ausführung des Servicevorgangs verwendet werden. Sie können die vorsignierte URL mehrmals verwenden, bis hin zum Ablaufdatum und -zeitpunkt. Weitere Informationen finden Sie unter [Arbeiten mit vorsigniertem URLs SDK für SAP-ABAP-Clients für Dienste, die Presigners](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) unterstützen, wobei für Dienste, die Presigners unterstützen, eine spezielle Methode aufgerufen wird, um einen Presigner für diesen Service `GET_PRESIGNER()` zu erstellen. Rufen Sie dann eine Methode des Presigners auf, die den Methoden des API-Clients entspricht, außer dass sie eine vorsignierte URL zurückgeben, anstatt den Vorgang tatsächlich auszuführen.

```
" Retrieve a presigner for Amazon S3
DATA(lo_presigner) = lo_s3->get_presigner( iv_expires_sec = 600 ).

" the presigner getobject() method has the same signature as
" lo_s3->getobject(), but it doesn't actually make the call.
" to the service.  It just prepares a presigned URL for a future call
DATA(lo_presigned_req) = lo_presigner->getobject( iv_bucket = iv_bucket_name iv_key = iv_key ).

" You can provide this URL to a web page, user, email etc so they
" can retrieve the file.  The URL will expire in 10 minutes.
ov_url = lo_presigned_req->get_url( ).
```

## Kontenübergreifende IAM-Rollenverkettung
<a name="source-profile"></a>

Die Unterstützung für kontenübergreifende IAM-Rollenverkettung ermöglicht über die Konfiguration des Quellprofils einen nahtlosen Zugriff auf Ressourcen über mehrere AWS Konten hinweg. Mit dieser Funktion können Sie mehrere Rollenannahmen konfigurieren, wobei ein Profil eine Rolle übernimmt und dann eine andere Rolle übernimmt, wodurch komplexe kontenübergreifende Zugriffsmuster ermöglicht werden.

Weitere Informationen finden Sie unter [Verwenden des Quellprofils für den kontoübergreifenden Zugriff](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/source-profile.html).