

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.

# Creación de flujos de entrega mediante la API de Firehose y la versión 3 de AWS SDK para PHP
<a name="kinesis-firehose-example-delivery-stream"></a>

Amazon Data Firehose le permite enviar datos en tiempo real a otros servicios de AWS, como Amazon Kinesis Data Streams, Amazon S3, Amazon OpenSearch Service (OpenSearch Service) y Amazon Redshift o a Splunk. Cree un productor de datos con secuencias de entrega que entregue datos al destino configurado cada vez que agregue datos.

Los siguientes ejemplos muestran cómo:
+ Cree una secuencia de entrega con [CreateDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#createdeliverystream).
+ Obtenga información detallada acerca de una sola secuencia de entrega por medio de [DescribeDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#describedeliverystream).
+ Enumere las secuencias de entrega mediante [ListDeliveryStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#listdeliverystreams).
+ Envíe datos a una secuencia de entrega con [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#putrecord).
+ Elimine una secuencia de entrega con [DeleteDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#deletedeliverystream).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

Para obtener más información acerca del uso de Amazon Data Firehose, consulte la [Guía para desarrolladores de Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/streams/latest/dev/).

## Crear un flujo de entrega utilizando un flujo de datos Kinesis
<a name="create-a-delivery-stream-using-a-ak-data-stream"></a>

Para establecer un flujo de entrega que introduzca datos en un flujo de datos de Kinesis existente, utilice la operación [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html).

Esto permite a los desarrolladores migrar los servicios Kinesis existentes a Firehose.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$stream_type = "KinesisStreamAsSource";
$kinesis_stream = "arn:aws:kinesis:us-east-2:0123456789:stream/my_stream_name";
$role = "arn:aws:iam::0123456789:policy/Role";

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'KinesisStreamSourceConfiguration' => [
            'KinesisStreamARN' => $kinesis_stream,
            'RoleARN' => $role,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Crear un flujo de entrega utilizando un bucket de Amazon S3
<a name="create-a-delivery-stream-using-an-s3-bucket"></a>

Para establecer un flujo de entrega que coloque datos en un bucket de Amazon S3 existente, utilice la operación [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html).

Proporcione los parámetros del destino, tal y como se describe en [Parámetros de destino](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). A continuación, asegúrese de conceder a Firehose acceso al bucket de Amazon S3, tal y como se describe en [Concesión a Kinesis Data Firehose de acceso a un destino de Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_S3_stream_name";
$stream_type = "DirectPut";
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'S3DestinationConfiguration' => [
            'BucketARN' => $s3bucket,
            'CloudWatchLoggingOptions' => [
                'Enabled' => false,
            ],
            'RoleARN' => $s3Role
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Crear un flujo de entrega utilizando OpenSearch Service
<a name="create-a-delivery-stream-using-es"></a>

Para establecer un flujo de entrega que coloque datos en un clúster de OpenSearch Service, utilice la operación [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html).

Proporcione los parámetros del destino, tal y como se describe en [Parámetros de destino](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). Asegúrese de conceder acceso a Firehose al clúster de OpenSearch Service, como se describe en [Concesión a Kinesis Data Firehose de acceso a un destino de Amazon ES](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_ES_stream_name";
$stream_type = "DirectPut";
$esDomainARN = 'arn:aws:es:us-east-2:0123456789:domain/Name';
$esRole = 'arn:aws:iam::0123456789:policy/Role';
$esIndex = 'root';
$esType = 'PHP_SDK';
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'ElasticsearchDestinationConfiguration' => [
            'DomainARN' => $esDomainARN,
            'IndexName' => $esIndex,
            'RoleARN' => $esRole,
            'S3Configuration' => [
                'BucketARN' => $s3bucket,
                'CloudWatchLoggingOptions' => [
                    'Enabled' => false,
                ],
                'RoleARN' => $s3Role,
            ],
            'TypeName' => $esType,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recuperar un flujo de entrega
<a name="retrieve-a-delivery-stream"></a>

Para obtener los detalles sobre un flujo de entrega de Firehose existente, utilice la operación [DescribeDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DescribeDeliveryStream.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->describeDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Lista de flujos de entrega existentes conectados a Kinesis Data Streams
<a name="list-existing-delivery-streams-connected-to-aks"></a>

Para enumerar todas las secuencias de entrega de Firehose existentes que envían datos a Kinesis Data Streams, utilice la operación [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'KinesisStreamAsSource',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Lista de flujos de entrega existentes que envían datos a otros servicios de AWS
<a name="list-existing-delivery-streams-sending-data-to-other-aws-services"></a>

Para enumerar todos los flujos de entrega de Firehose existentes que envían datos a Amazon S3, OpenSearch Service o Amazon Redshift, o a Splunk, utilice la operación [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'DirectPut',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Envío de datos a un flujo de entrega de Firehose existente
<a name="send-data-to-an-existing-akf-delivery-stream"></a>

Para enviar datos a través de un flujo de entrega de Firehose al destino especificado, utilice la operación [PutRecord](https://docs.aws.amazon.com/firehose/latest/APIReference/API_API_PutRecord.html) después de crear un flujo de entrega de Firehose.

Antes de enviar datos a un flujo de entrega de Firehose, utilice `DescribeDeliveryStream` para ver si el flujo de entrega está activo.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$content = '{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}';

try {
    $result = $firehoseClient->putRecord([
        'DeliveryStreamName' => $name,
        'Record' => [
            'Data' => $content,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminación de un flujo de entrega de Firehose
<a name="delete-a-akf-delivery-stream"></a>

Para eliminar un flujo de entrega de Firehose, utilice la operación [DeleteDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStreams.html). Esta operación también elimina todos los datos que haya enviado a la secuencia de entrega.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->deleteDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```