使用 Firehose API 和第 3 AWS SDK for PHP 版建立交付串流 - AWS SDK for PHP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Firehose API 和第 3 AWS SDK for PHP 版建立交付串流

Amazon 資料 Firehose 可讓您將即時資料傳送到其他AWS服務,包括 Amazon Kinesis 資料串流、Amazon S3、亞馬遜 OpenSearch 服務 (OpenSearch 服務) 和 Amazon Redshift,或發送到 Splunk。為交付串流建立資料生產者,以便在您每次添加資料後將資料交付至設定的目的地。

下列範例示範如何:

所有的範例程式碼都可以AWS SDK for PHP在這裡取得 GitHub。

登入資料

在執行範例程式碼之前,請依照中的說明設定您的AWS認證憑證。然後匯入AWS SDK for PHP,如中所述基本使用

如需使用 Amazon 資料 Firehose 的詳細資訊,請參閱 Amazon 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操作。

提供目的地參數,如目的地參數一文所述。然後確保您授予 Firehose 存取 Amazon S3 儲存貯體的存取權,如授予 Kinesis Data Firehose 存取 Amazon 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 存取 Amazon 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 資料串流的現有交付串流

若要列出將資料傳送至 Kinesis 資料串流的所有現有 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"; }

列出將資料傳送至其他AWS服務的現有交付串流

若要列出將資料傳送到 Amazon S3、 OpenSearch 服務或 Amazon 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"; }