View a markdown version of this page

Testez vos autorisations et demandez des entrées avec Dry Run - Amazon Kinesis Data Streams

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.

Testez vos autorisations et demandez des entrées avec Dry Run

Vous pouvez utiliser le DryRun paramètre avec les API de plan de données Kinesis Data Streams pour vérifier que vous disposez des autorisations requises et que les paramètres de votre demande sont valides. Cette validation a lieu avant que vous n'exécutiez l'opération sur une ressource Amazon Kinesis Data Streams. Lorsque vous définissez DryRun cette valeur sur true, Kinesis Data Streams confirme que vous disposez des autorisations IAM requises pour accéder à votre flux, vérifie les paramètres de votre demande et confirme que la ressource cible existe. Il effectue ces vérifications sans exécuter l'opération ni lire ou écrire de données.

Si toutes les vérifications sont réussies, l'API renvoie HTTP 400 avec unDryRunOperationException, confirmant que la demande aurait réussi sans le DryRun paramètre. Si une vérification échoue, l'API renvoie la même erreur que celle que l'opération elle-même renverrait (par exemple,AccessDeniedException). Vous pouvez bénéficier des exceptions suivantes, entre autres :

  • DryRunOperationException— La demande aurait réussi sans le DryRun paramètre.

  • AccessDeniedException— L'appelant ne dispose pas des autorisations IAM requises pour l'action d'API.

  • ResourceNotFoundException— Le flux ou le consommateur spécifié n'existe pas.

  • ValidationException— Un ou plusieurs paramètres de demande ne sont pas valides (par exemple, champs obligatoires manquants, ARN mal formé).

  • InvalidArgumentException— La valeur d'un paramètre est hors limites ou n'est pas prise en charge (par exemple, horodatage futur non valide ShardIteratorType).

Les requêtes dont l'DryRunoption est activée sont soumises à une limite d'accélération dédiée de 1 transaction par seconde (TPS) par flux, distincte des limites de débit normales par fragment du flux. Cette limite est partagée entre toutes les API d'exécution à sec prises en charge (PutRecordPutRecords, GetRecordsGetShardIterator, etSubscribeToShard) sur le même flux. Si vous dépassez cette limite, l'API renvoie unThrottlingException.

L'utilisation de ce DryRun paramètre est gratuite. Les demandes pour lesquelles DryRun cette option est activée sont facturées de la même manière que les demandes équivalentes pour lesquelles cette option DryRun est désactivée. Par exemple, pour PutRecord etPutRecords, vous êtes facturé en fonction de la taille de la charge utile en entrée en mode Provisioned. Tous les frais liés au streaming et aux heures de partage continuent de s'appliquer. Pour plus d’informations sur la tarification, consultez Tarification d’Amazon Kinesis Data Streams.

Note

Le DryRun paramètre valide les autorisations IAM pour les actions de l'API Kinesis Data Streams. Il ne valide pas les autorisations AWS Key Management Service clés pour les flux chiffrés. Si votre stream utilise un chiffrement côté serveur avec une AWS KMS clé gérée par le client, vous devez vérifier séparément que vos producteurs sont kms:GenerateDataKey autorisés et que vos consommateurs ont l'kms:Decryptautorisation sur la AWS KMS clé. Pour valider AWS KMS les autorisations, consultez la section Tester vos autorisations dans le Guide du AWS Key Management Service développeur.

API prises en charge

Le DryRun paramètre est pris en charge pour les API suivantes :

AWS CloudTrail journalisation

Si vous activez les événements de données dans AWS CloudTrail, AWS CloudTrail enregistre les appels d'API du plan de données qui utilisent le DryRun paramètre défini sur true. L' CloudTrail événement correspondant inclut le DryRun paramètre dans la demande et le champ ErrorCode indique DryRunOperationException les validations réussies.

En utilisant la méthode de séchage à sec avec le AWS CLI

Spécifiez le --dry-run drapeau dans vos AWS CLI commandes.

Exemple : PutRecord autorisation de test

aws kinesis put-record \ --stream-name <your-stream-name> \ --data <your-data-payload> \ --partition-key <your-partition-key> \ --dry-run

Si la demande devait aboutir, la réponse inclut le message suivant : DryRunOperation validation succeeded while calling PutRecord operation.: Request would have succeeded, but DryRun flag is set.

Utilisation de la machine à sec avec AWS Kits SDK

Python (Boto3)

import boto3 from botocore.exceptions import ClientError kinesis = boto3.client('kinesis') try: kinesis.put_record( StreamName='my-stream', Data=b'test-data', PartitionKey='my-partition-key', DryRun=True ) except ClientError as e: if e.response['Error']['Code'] == 'DryRunOperationException': print('SUCCESS: Request would have succeeded') else: print(f'FAILURE: {e.response["Error"]["Code"]}')

Java (AWS SDK for Java 2.x)

PutRecordRequest request = PutRecordRequest.builder() .streamName("my-stream") .data(SdkBytes.fromUtf8String("test-data")) .partitionKey("my-partition-key") .dryRun(true) .build(); try { kinesisClient.putRecord(request); } catch (DryRunOperationException e) { System.out.println("SUCCESS: " + e.getMessage()); } catch (AccessDeniedException e) { System.out.println("FAILURE: " + e.getMessage()); }