Creación de flujos de entrega mediante la API de Firehose y la versión 3 de AWS SDK para PHP - AWS SDK para PHP

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

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:

Todo el código de ejemplo de AWS SDK para PHP está disponible aquí en GitHub.

Credenciales

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. A continuación, importe AWS SDK para PHP, como se indica en Instalación del AWS SDK para PHP versión 3.

Para obtener más información acerca del uso de Amazon Data Firehose, consulte la Guía para desarrolladores de Amazon Kinesis Data Firehose.

Crear un flujo de entrega utilizando un flujo de datos Kinesis

Para establecer un flujo de entrega que introduzca datos en un flujo de datos de Kinesis existente, utilice la operación CreateDeliveryStream.

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

Para establecer un flujo de entrega que coloque datos en un bucket de Amazon S3 existente, utilice la operación CreateDeliveryStream.

Proporcione los parámetros del destino, tal y como se describe en Parámetros de destino. 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.

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

Para establecer un flujo de entrega que coloque datos en un clúster de OpenSearch Service, utilice la operación CreateDeliveryStream.

Proporcione los parámetros del destino, tal y como se describe en Parámetros de destino. 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.

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

Para obtener los detalles sobre un flujo de entrega de Firehose existente, utilice la operación DescribeDeliveryStream.

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

Para enumerar todas las secuencias de entrega de Firehose existentes que envían datos a Kinesis Data Streams, utilice la operación ListDeliveryStreams.

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

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.

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

Para enviar datos a través de un flujo de entrega de Firehose al destino especificado, utilice la operación PutRecord 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

Para eliminar un flujo de entrega de Firehose, utilice la operación DeleteDeliveryStreams. 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"; }