

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS SDK pour SAP ABAP features
<a name="features"></a>

AWS SDK pour SAP ABAP fournit les fonctionnalités suivantes.

**Topics**
+ [Configuration programmatique](#programmatic-configuration)
+ [Programmes d’attente](#waiters)
+ [Paginateurs](#paginators)
+ [Comportement de nouvelle tentative](#retry-behavior)
+ [Présidents](#presigners)
+ [Chaîne de rôles IAM entre comptes](#source-profile)

## Configuration programmatique
<a name="programmatic-configuration"></a>

Utilisez `/n/AWS1/IMG` IMG Transacation pour le AWS SDK pour SAP ABAP et l'application de configuration commerciale personnalisée pour le AWS SDK pour SAP ABAP - édition BTP pour la configuration programmatique.

Pour commencer la configuration programmatique, commencez par récupérer un objet de configuration à l'aide de la `get_config( )` commande.

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

Chaque objet de configuration implémente `/AWS1/IF_RT_CONFIG` une interface qui `GET` inclut des `SET` termes et des termes correspondant aux`IMG`. Par exemple, la région par défaut peut être remplacée. Consultez l'exemple de commande suivant.

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

Certains objets de configuration ne sont pas `IMG` représentés et ne peuvent être définis que par programmation, par exemple le nombre maximal de tentatives. Consultez l'exemple de commande suivant.

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

L'objet de configuration de Services AWS peut également inclure des méthodes spécifiques au service qui ne sont pas représentées dans`/aws1/if_rt_config`. Par exemple, Amazon S3 peut adresser un compartiment nommé à `foobucket` l'aide d'un point de terminaison `foobucket.s3.region.amazonaws.com` virtuel ou d'un style de `s3.region.amazonaws.com/foobucket` chemin. Vous pouvez imposer l'utilisation du style de chemin à l'aide de l'exemple de commande suivant.

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

Pour plus d'informations sur les configurations de service, voir [AWS SDK pour SAP ABAP — Guide de référence des API](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html).

## Programmes d’attente
<a name="waiters"></a>

Lorsque vous travaillez en mode asynchrone AWS APIs, vous devez attendre qu'une certaine ressource soit disponible avant de prendre d'autres mesures. Par exemple, l'`CREATETABLE()`API Amazon DynamoDB répond immédiatement avec l'état de la table`CREATING`. Vous ne pouvez lancer des opérations de lecture ou d'écriture que lorsque le statut de la table est passé à`ACTIVE`. Les serveurs vous permettent de confirmer que les AWS ressources sont dans un état particulier avant d'effectuer des actions sur celles-ci.

Les serveurs utilisent les opérations de service pour interroger l'état des AWS ressources jusqu'à ce que la ressource atteigne l'état prévu ou jusqu'à ce qu'il soit déterminé que la ressource n'atteint pas l'état souhaité. L'écriture du code pour interroger AWS les ressources en continu peut être longue et source d'erreurs. Les serveurs contribuent à simplifier cette complexité en prenant la responsabilité d'effectuer les sondages en votre nom.

Consultez l'exemple Amazon S3 suivant utilisant un serveur.

```
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|
).
```
+ Dans cet exemple, le client Amazon S3 est utilisé pour créer un compartiment. La `get_waiter()` commande est implémentée pour spécifier à quel moment le`bucketexists`.
+ Vous devez spécifier le `iv_max_wait_time` paramètre pour chaque serveur. Il représente le temps total qu'un serveur doit attendre avant de terminer. Dans l'exemple précédent, un serveur peut courir pendant 200 secondes.
+ Vous devrez peut-être fournir des entrées supplémentaires pour les paramètres requis. Dans l'exemple précédent, le nom du compartiment Amazon S3 est requis pour le `iv_bucket` paramètre.
+ `/AWS1/CX_RT_WAITER_FAILURE`une exception indique que le serveur a dépassé la durée maximale spécifiée dans le `iv_max_wait_time` paramètre.
+ `/AWS1/CX_RT_WAITER_TIMEOUT`une exception indique que le serveur s'est arrêté parce qu'il n'a pas atteint l'état souhaité.

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

Certaines Service AWS opérations proposent des réponses paginées. Ils sont paginés pour renvoyer une quantité fixe de données à chaque réponse. Vous devez effectuer les demandes suivantes à l'aide d'un jeton ou d'un marqueur pour récupérer l'ensemble des résultats. Par exemple, l'opération `ListObjectsV2` Amazon S3 renvoie jusqu'à 1 000 objets à la fois. Vous devez effectuer les demandes suivantes avec le jeton approprié pour obtenir la page de résultats suivante.

La pagination est le processus qui consiste à envoyer des demandes successives pour reprendre là où une demande précédente s'est arrêtée. Les paginateurs sont des itérateurs de résultats fournis par le SDK pour SAP ABAP. Vous pouvez utiliser la pagination en toute APIs simplicité, sans comprendre le mécanisme sous-jacent de l'API à l'aide de jetons de pagination.

**Travailler avec des paginateurs**

Vous pouvez créer des paginateurs à l'aide de la `get_paginator()` méthode qui renvoie un objet de pagination. L'objet paginateur appelle l'opération en cours de pagination. L'objet paginateur accepte les paramètres requis à fournir à l'API sous-jacente. Ce processus renvoie un objet itérateur qui peut être utilisé pour itérer sur des résultats paginés à l'`has_next()`aide des méthodes et. `get_next()`
+ `has_next()`renvoie une valeur booléenne indiquant s'il existe d'autres réponses ou pages disponibles pour l'opération appelée.
+ `get_next()`renvoie la réponse de l'opération.

L'exemple suivant répertorie tous les objets d'un compartiment S3 récupérés à l'aide du paginateur.

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

## Comportement de nouvelle tentative
<a name="retry-behavior"></a>

Le SDK pour SAP ABAP vous permet de configurer le nombre maximum de tentatives pour les demandes Services AWS qui échouent en raison d'une limitation ou d'erreurs transitoires. Le nombre de tentatives autorisées au niveau du client de service, c'est-à-dire le nombre de fois que le SDK tente à nouveau l'opération avant d'échouer et de déclencher une exception, est spécifié par l'`AV_MAX_ATTEMPTS`attribut dans l'objet de configuration du service. Lorsqu'un objet client de service est créé, le SDK configure l'`AV_MAX_ATTEMPTS`attribut à une valeur par défaut de 3. L'objet de configuration du service peut être utilisé pour régler par programmation le nombre maximal de tentatives à la valeur souhaitée. Consultez l'exemple suivant pour plus de détails.

```
" 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( ).
```

**Note**  
Bien que l'objet de configuration ABAP SDK permette de définir le *mode nouvelle tentative* avec la `/AWS1/IF_RT_CONFIG~SET_RETRY_MODE()` méthode, le SDK ne prend en charge que le mode nouvelle tentative. `standard` Pour plus d'informations, reportez-vous à la section [Comportement des tentatives](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html) dans le Guide AWS SDKs de référence des outils.

## Présidents
<a name="presigners"></a>

Vous pouvez utiliser le présigné URLs pour accorder un accès limité dans le temps à certains d'entre eux. Services AWS Une URL présignée peut être saisie dans un navigateur ou utilisée par un programme pour effectuer l'opération de service. Vous pouvez utiliser l’URL présignée plusieurs fois, jusqu’à la date et l’heure d’expiration. Pour plus d'informations, consultez la section [Utilisation du URLs SDK présigné](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) pour les clients SAP ABAP pour les services prenant en charge les présignataires. Une méthode spéciale sera appelée pour créer un présignataire `GET_PRESIGNER()` pour ce service. Appelez ensuite une méthode du présignataire, qui correspond aux méthodes du client API, sauf qu'elle renvoie une URL présignée au lieu d'effectuer réellement l'opération.

```
" 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( ).
```

## Chaîne de rôles IAM entre comptes
<a name="source-profile"></a>

La prise en charge du chaînage des rôles IAM entre comptes permet un accès fluide aux ressources sur plusieurs AWS comptes grâce à la configuration du profil source. Cette fonctionnalité vous permet de configurer plusieurs hypothèses de rôle, selon lesquelles un profil assume un rôle puis un autre, ce qui permet de créer des modèles d'accès entre comptes complexes.

Pour plus d'informations, consultez la section [Utilisation du profil source pour l'accès entre comptes](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/source-profile.html).