기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Firehose API 및 AWS SDK for PHP 버전 3을 사용하여 전송 스트림 생성
Amazon Data Firehose를 사용하면 Amazon Kinesis Data Streams, Amazon S3, Amazon OpenSearch Service (OpenSearch Service), Amazon Redshift 등의 다른 AWS 서비스 또는 Splunk로 실시간 데이터를 전송할 수 있습니다. 전송 스트림으로 데이터 생산자를 생성하여 데이터를 추가할 때마다 구성한 대상으로 데이터를 전송합니다.
다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.
-
CreateDeliveryStream을 사용하여 전송 스트림을 생성합니다.
-
DescribeDeliveryStream을 사용하여 단일 전송 스트림에 대한 세부 정보를 확인합니다.
-
ListDeliveryStreams를 사용하여 전송 스트림 목록을 표시합니다.
-
PutRecord를 사용하여 전송 스트림으로 데이터를 전송합니다.
-
DeleteDeliveryStream을 사용하여 전송 스트림을 삭제합니다.
AWS SDK for PHP에 대한 모든 예제 코드는 GitHub
보안 인증 정보
예제 코드를 실행하기 전에 AWS SDK for PHP 버전 3을 AWS 사용하여 로 인증에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 AWS SDK for PHP 버전 3 설치에 설명된 AWS SDK for PHP를 가져옵니다.
Amazon Data Firehose 사용에 대한 자세한 내용은 Amazon Kinesis Data Firehose 개발자 설명서를 참조세요.
Kinesis 데이터 스트림을 사용하여 전송 스트림 생성
데이터를 기존 Kinesis 데이터 스트림에 넣는 전송 스트림을 설정하려면 CreateDeliveryStream 작업을 사용합니다.
이를 통해 개발자는 기존 Kinesis 서비스를 Firehouse로 마이그레이션할 수 있습니다.
가져옵니다.
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 작업을 사용합니다.
대상 파라미터에서 설명한 대로 대상 파라미터를 제공합니다. 그런 다음 Kinesis Data Firehose에 Amazon S3 대상 액세스 권한 부여에 설명된 대로 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 Service 클러스터로 전송하는 Firehose 전송 스트림을 설정하려면 CreateDeliveryStream 작업을 사용합니다.
대상 파라미터에서 설명한 대로 대상 파라미터를 제공합니다. Kinesis Data Firehose에 Amazon ES 대상 액세스 권한 부여에 설명된 대로 Firehose가 OpenSearch Service 클러스터에 액세스할 수 있도록 허용하세요.
가져옵니다.
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"; }
다른 AWS 서비스로 데이터를 전송하는 기존 전송 스트림의 목록 표시
Amazon S3, OpenSearch Service 또는 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"; }