使用 Firehose API 和版本 3 创建传送流 适用于 PHP 的 Amazon SDK - 适用于 PHP 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Firehose API 和版本 3 创建传送流 适用于 PHP 的 Amazon SDK

Amazon Data Firehose 使您可以将实时数据发送到其他 Amazon 服务,包括亚马逊 Kinesis Data Streams、亚马逊 S3、亚马逊 OpenSearch 服务(OpenSearch 服务)和亚马逊 Redshift,或者发送到 Splunk。使用传输流创建一个数据创建器,以在您每次添加数据时将数据传送到配置的目的地。

以下示例演示如何:

的所有示例代码都可以在此 适用于 PHP 的 Amazon SDK 处找到 GitHub

凭证

在运行示例代码之前,请配置您的 Amazon 证书,如中所述凭证。然后导入 适用于 PHP 的 Amazon SDK,如中所述基本用法

有关使用亚马逊 Data Firehose 的更多信息,请参阅亚马逊 Kinesis Data Firehose 开发者指南。

使用 Kinesis 数据流来创建传输流

要建立将数据放入现有 Kinesis 数据流的传输流,请使用操作。CreateDeliveryStream

这使开发人员能够将现有的 Kinesis 服务迁移到 Firehose。

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

使用 Amazon S3 存储桶来创建传输流

要建立将数据放入现有 Amazon S3 存储桶的传输流,请使用CreateDeliveryStream操作。

提供目标参数,如目标参数中所述。然后,请确保授予 Fire hose 访问您的亚马逊 S3 存储桶的权限,如授予 Kinesis Data Firehos e 访问亚马逊 S3 目标的权限中所述。

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

使用 OpenSearch 服务创建传送流

要建立将数据放入 OpenSearch 服务集群的 Firehose 传输流,请使用操作。CreateDeliveryStream

提供目标参数,如目标参数中所述。确保您授予 Firehose 访问您的 OpenSearch 服务集群的权限,如授予 Kinesis Data Firehose 访问亚马逊 ES 目的地的权限中所述。

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

检索传输流

要获取有关现有 Firehose 传送流的详细信息,请使用操作。DescribeDeliveryStream

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

列出已连接到 Kinesis Data Streams 的现有传输流

要列出向 Kinesis Data Streams 发送数据的所有现有 Firehose 传输流,请使用操作。ListDeliveryStreams

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

列出向其他 Amazon 服务发送数据的现有传输流

要列出向亚马逊 S3、 OpenSearch 服务、亚马逊 Redshift 或 Splunk 发送数据的所有现有 Firehose 传输流,请使用该操作。ListDeliveryStreams

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

将数据发送到现有的 Firehose 传输流

要通过 Firehose 传输流将数据发送到您的指定目的地,请在创建 Firehose 传输流之后使用该PutRecord操作。

在向 Firehose 传送流发送数据之前,DescribeDeliveryStream请使用查看传送流是否处于活动状态。

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }

删除 Firehose 传送流

要删除 Firehose 传送流,请使用操作。DeleteDeliveryStreams这也将删除您已发送到该传输流的所有数据。

导入

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

示例代码

$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"; }