

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Pruebe sus permisos y solicite entradas con un simulacro
<a name="kds-dryrun-validation"></a>

Puede usar el `DryRun` parámetro con las API del plano de datos de Kinesis Data Streams para verificar que tiene los permisos necesarios y que los parámetros de su solicitud son válidos. Esta validación se realiza antes de ejecutar la operación en un recurso de Amazon Kinesis Data Streams. Cuando se establece `DryRun` en true, Kinesis Data Streams valida que tiene los permisos de IAM necesarios para acceder a la transmisión, comprueba los parámetros de la solicitud y confirma que el recurso de destino existe. Realiza estas comprobaciones sin ejecutar la operación ni leer ni escribir ningún dato.

Si se aprueban todas las comprobaciones, la API devuelve el HTTP 400 con un`DryRunOperationException`, confirmando que la solicitud se habría realizado correctamente sin el `DryRun` parámetro. Si alguna de las comprobaciones falla, la API devuelve el mismo error que arrojaría la operación real (por ejemplo,`AccessDeniedException`). Puedes recibir las siguientes excepciones, entre otras:
+ `DryRunOperationException`— La solicitud se habría realizado correctamente sin el `DryRun` parámetro.
+ `AccessDeniedException`— La persona que llama no tiene los permisos de IAM necesarios para la acción de la API.
+ `ResourceNotFoundException`— La transmisión o el consumidor especificados no existen.
+ `ValidationException`— Uno o más parámetros de la solicitud no son válidos (por ejemplo, faltan campos obligatorios o ARN con formato incorrecto).
+ `InvalidArgumentException`— El valor de un parámetro está fuera de rango o no es compatible (por ejemplo, una marca de tiempo futura no válida ShardIteratorType).

Las solicitudes con la `DryRun` opción habilitada están sujetas a un límite específico de 1 transacción por segundo (TPS) por transmisión, independiente de los límites de rendimiento por fragmento normales de la transmisión. Este límite se comparte entre todas las API de ejecución en seco compatibles (`PutRecord`, `PutRecords` `GetRecords``GetShardIterator`, y`SubscribeToShard`) en la misma transmisión. Si superas este límite, la API devuelve un. `ThrottlingException`

No hay ningún cargo adicional por usar el `DryRun` parámetro. Las solicitudes con la `DryRun` opción habilitada se facturan igual que la solicitud equivalente con la opción `DryRun` deshabilitada. Por ejemplo, para `PutRecord` y`PutRecords`, se le cobra en función del tamaño de la carga útil de entrada en el modo aprovisionado. Se seguirán cobrando los cargos por las horas de transmisión y de los fragmentos. Para obtener más información acerca de los precios, consulte [Precios de Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

**nota**  
El `DryRun` parámetro valida los permisos de IAM para las acciones de la API de Kinesis Data Streams. No valida los permisos AWS Key Management Service clave para las transmisiones cifradas. Si tu transmisión utiliza el cifrado del lado del servidor con una AWS KMS clave gestionada por el cliente, debes verificar por separado que tus productores tienen `kms:GenerateDataKey` permiso y que tus consumidores tienen `kms:Decrypt` permiso sobre la AWS KMS clave. Para validar AWS KMS los permisos, consulta Cómo [ probar tus permisos ](https://docs.aws.amazon.com/kms/latest/developerguide/) en la Guía para AWS Key Management Service desarrolladores.

## API de compatibles
<a name="kds-dryrun-validation-supported-apis"></a>

El `DryRun` parámetro es compatible con las siguientes API:
+ [`PutRecord`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html)
+ [`PutRecords`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)
+ [`GetRecords`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html)
+ [`GetShardIterator`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html)
+ [`SubscribeToShard`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html)

## AWS CloudTrail registrar
<a name="kds-dryrun-validation-cloudtrail"></a>

Si habilita los eventos de datos en AWS CloudTrail, AWS CloudTrail registra las llamadas a la API del plano de datos que utilizan el `DryRun` parámetro establecido en true. El CloudTrail evento correspondiente incluye el `DryRun` parámetro en la solicitud y el campo ErrorCode muestra `DryRunOperationException` si las validaciones se han realizado correctamente.

## Si se utiliza un método de ejecución en seco con el AWS CLI
<a name="kds-dryrun-validation-cli"></a>

Especifique la `--dry-run` bandera en sus AWS CLI comandos.

Ejemplo: probar PutRecord los permisos

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

Si la solicitud se hubiera realizado correctamente, la respuesta incluye el siguiente mensaje: `DryRunOperation validation succeeded while calling PutRecord operation.: Request would have succeeded, but DryRun flag is set.`

## Uso de la operación en seco con AWS SDK
<a name="kds-dryrun-validation-sdk"></a>

### Python (Boto3)
<a name="kds-dryrun-validation-sdk-python"></a>

```
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)
<a name="kds-dryrun-validation-sdk-java"></a>

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