

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Firehose API 및 AWS SDK for PHP 버전 3을 사용하여 전송 스트림 생성
<a name="kinesis-firehose-example-delivery-stream"></a>

Amazon Data Firehose를 사용하면 Amazon Kinesis Data Streams, Amazon S3, Amazon OpenSearch Service (OpenSearch Service), Amazon Redshift 등의 다른 AWS 서비스 또는 Splunk로 실시간 데이터를 전송할 수 있습니다. 전송 스트림으로 데이터 생산자를 생성하여 데이터를 추가할 때마다 구성한 대상으로 데이터를 전송합니다.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.
+ [CreateDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#createdeliverystream)을 사용하여 전송 스트림을 생성합니다.
+ [DescribeDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#describedeliverystream)을 사용하여 단일 전송 스트림에 대한 세부 정보를 확인합니다.
+ [ListDeliveryStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#listdeliverystreams)를 사용하여 전송 스트림 목록을 표시합니다.
+ [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#putrecord)를 사용하여 전송 스트림으로 데이터를 전송합니다.
+ [DeleteDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#deletedeliverystream)을 사용하여 전송 스트림을 삭제합니다.

AWS SDK for PHP에 대한 모든 예제 코드는 [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)에서 사용할 수 있습니다.

## 보안 인증 정보
<a name="examplecredentials"></a>

예제 코드를 실행하기 전에 [AWS SDK for PHP 버전 3을 AWS 사용하여 로 인증](credentials.md)에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 [AWS SDK for PHP 버전 3 설치](getting-started_installation.md)에 설명된 AWS SDK for PHP를 가져옵니다.

Amazon Data Firehose 사용에 대한 자세한 내용은 [Amazon Kinesis Data Firehose 개발자 설명서](https://docs.aws.amazon.com/streams/latest/dev/)를 참조세요.

## Kinesis 데이터 스트림을 사용하여 전송 스트림 생성
<a name="create-a-delivery-stream-using-a-ak-data-stream"></a>

데이터를 기존 Kinesis 데이터 스트림에 넣는 전송 스트림을 설정하려면 [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html) 작업을 사용합니다.

이를 통해 개발자는 기존 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 버킷을 사용하여 전송 스트림 생성
<a name="create-a-delivery-stream-using-an-s3-bucket"></a>

데이터를 기존 Amazon S3 버킷에 넣는 전송 스트림을 설정하려면 [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html) 작업을 사용합니다.

[대상 파라미터](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html)에서 설명한 대로 대상 파라미터를 제공합니다. 그런 다음 [Kinesis Data Firehose에 Amazon S3 대상 액세스 권한 부여](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3.html)에 설명된 대로 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 서비스를 사용하여 전송 스트림 생성
<a name="create-a-delivery-stream-using-es"></a>

데이터를 OpenSearch Service 클러스터로 전송하는 Firehose 전송 스트림을 설정하려면 [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html) 작업을 사용합니다.

[대상 파라미터](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html)에서 설명한 대로 대상 파라미터를 제공합니다. [Kinesis Data Firehose에 Amazon ES 대상 액세스 권한 부여](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es.html)에 설명된 대로 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";
}
```

## 전송 스트림 검색
<a name="retrieve-a-delivery-stream"></a>

기존 Firehose 전송 시스템에 대한 세부 정보를 확인하려면 [DescribeDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DescribeDeliveryStream.html) 작업을 사용합니다.

 **가져옵니다**.

```
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에 연결된 기존 전송 스트림 목록 표시
<a name="list-existing-delivery-streams-connected-to-aks"></a>

데이터를 Kinesis Data Streams로 전송하는 기존의 모든 Firehose 전송 스트림을 나열하려면 [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html) 작업을 사용합니다.

 **가져옵니다**.

```
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 서비스로 데이터를 전송하는 기존 전송 스트림의 목록 표시
<a name="list-existing-delivery-streams-sending-data-to-other-aws-services"></a>

Amazon S3, OpenSearch Service 또는 Amazon Redshift 또는 Splunk로 데이터를 전송하는 기존의 모든 Firehose 전송 스트림을 나열하려면 [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html) 작업을 사용합니다.

 **가져옵니다**.

```
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 전송 스트림으로 데이터 전송
<a name="send-data-to-an-existing-akf-delivery-stream"></a>

Firehose 전송 스트림을 통해 데이터를 지정된 대상으로 전송하려면 Firehose 전송 스트림을 생성한 후 [PutRecord](https://docs.aws.amazon.com/firehose/latest/APIReference/API_API_PutRecord.html) 작업을 사용합니다.

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 전송 스트림 삭제
<a name="delete-a-akf-delivery-stream"></a>

Firehose 전송 스트림을 삭제하려면 [DeleteDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStreams.html) 작업을 사용합니다. 이 작업은 전송 스트림으로 전송한 데이터도 삭제합니다.

 **가져옵니다**.

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