Creación de flujos de entrega mediante la API Firehose y la versión 3 AWS SDK for PHP - AWS SDK for 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 Firehose y la versión 3 AWS SDK for PHP

Amazon Data Firehose le permite enviar datos en tiempo real a otros AWS servicios, 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 para el AWS SDK for PHP está disponible aquí en GitHub.

Credenciales

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Credentials. A continuación, importe AWS SDK for PHP, como se indica en Uso básico.

Para obtener más información sobre el 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 una transmisión de entrega que coloque los datos en una transmisión de datos de Kinesis existente, utilice la CreateDeliveryStreamoperación.

Esto permite a los desarrolladores migrar los servicios de 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 los datos en un bucket de Amazon S3 existente, utilice la CreateDeliveryStreamoperación.

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 a su bucket de Amazon S3, tal y como se describe en Conceder a Kinesis Data Firehose 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"; }

Cree una transmisión de entrega mediante Service OpenSearch

Para establecer un flujo de entrega de Firehose que coloque los datos en un clúster de OpenSearch servicios, utilice la CreateDeliveryStreamoperación.

Proporcione los parámetros del destino, tal y como se describe en Parámetros de destino. Asegúrese de conceder a Firehose acceso a su clúster de OpenSearch servicios, tal y como se describe en Conceder a Kinesis Data Firehose 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 DescribeDeliveryStreamoperación.

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 transmisiones 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, 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"; }

Enviar datos a un flujo de entrega de Firehose existente

Para enviar datos a través de una transmisión de entrega de Firehose a su destino especificado, utilice la PutRecordoperación después de crear una transmisión de entrega de Firehose.

Antes de enviar datos a un flujo de entrega de Firehose, utilícelo DescribeDeliveryStream para comprobar 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"; }

Eliminar un flujo de entrega de Firehose

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