

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

# Amazon S3 객체의 사용자 지정 접두사 이해
<a name="s3-prefixes"></a>

Amazon S3에 전달되는 객체는 <평가된 접두사><접미사>의 [이름 형식](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-namekey)을 따릅니다. 런타임에 평가되는 표현식을 포함하는 사용자 지정 접두사를 지정할 수 있습니다. 지정한 사용자 지정 접두사는 기본 접두사인 `yyyy/MM/dd/HH`를 재정의합니다.

사용자 지정 접두사에 `!{namespace:value}` 형식의 표현식을 사용할 수 있으며, 여기서 `namespace`는 다음 섹션에서 설명하듯이 다음 중 하나가 될 수 있습니다.
+  `firehose` 
+ `timestamp`
+ `partitionKeyFromQuery`
+ `partitionKeyFromLambda`

슬래시로 끝나는 접두사는 Amazon S3 버킷에서 자리 표시자로 나타납니다. 자세한 내용은 *Amazon Data FirehoseDeveloper 안내서*의 [Amazon S3 객체 이름 형식](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name)을 참조하세요.

## `timestamp` 네임스페이스
<a name="timestamp-namespace"></a>

이 네임스페이스에 유효한 값은 유효한 [Java DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) 문자열입니다. 예를 들어 2018년에 `!{timestamp:yyyy}` 표현식은 `2018`로 평가됩니다.

타임스탬프 평가 시, Firehose는 기록되는 Amazon S3 객체에 포함된 가장 오래된 레코드의 근사 도착 타임스탬프를 사용합니다.

기본적으로 타임스탬프는 UTC입니다. 하지만 원하는 시간대를 지정할 수 있습니다. 예를 들어 UTC 대신 일본 표준시를 사용하려는 경우 AWS Management Console 또는 API 파라미터 설정([CustomTimeZone](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html))에서 시간대를 아시아/도쿄로 구성할 수 있습니다. 지원되는 시간대 목록을 보려면 [Amazon S3 객체 이름 형식](https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#s3-object-name)을 참조하세요.

동일한 접두사 표현식에 `timestamp` 네임스페이스를 한 번 넘게 사용할 경우 각 인스턴스는 동일한 시간으로 평가됩니다.

## `firehose` 네임스페이스
<a name="firehose-namespace"></a>

이 네임스페이스에는 `error-output-type` 값과 `random-string` 값을 사용할 수 있습니다. 다음 표에는 사용 방법이 나와 있습니다.


**`firehose` 네임스페이스 값**  

| 변환 | 설명 | 입력 예 |  출력 예시 | 참고 | 
| --- | --- | --- | --- | --- | 
| error-output-type | Firehose 스트림 구성 및 실패 이유에 따라 \$1processing-failed, AmazonOpenSearchService-failed, splunk-failed, format-conversion-failed, http-endpoint-failed\$1 문자열 중 하나로 평가됩니다.동일한 접두사 표현식에 한 번 넘게 사용할 경우 각 인스턴스는 동일한 오류 문자열로 평가됩니다. | myPrefix/result=\$1\$1firehose:error-output-type\$1/\$1\$1timestamp:yyyy/MM/dd\$1 | myPrefix/result=processing-failed/2018/08/03 | error-output-type 값은 ErrorOutputPrefix 필드에만 사용할 수 있습니다. | 
| random-string |  11자의 무작위 문자열로 평가됩니다. 동일한 접두사 표현식에 한 번 넘게 사용할 경우 각 인스턴스는 새로운 무작위 문자열로 평가됩니다.  | myPrefix/\$1\$1firehose:random-string\$1/ | myPrefix/046b6c7f-0b/ | 두 접두사 유형 모두에 사용할 수 있습니다.형식 문자열 선두에 이를 배치하여 무작위의 접두사를 얻을 수 있으며, 경우에 따라 이 접두사는 Amazon S3를 통해 최고의 처리량을 얻기 위해 필요한 경우가 있습니다. | 

## `partitionKeyFromLambda` 및 `partitionKeyFromQuery` 네임스페이스
<a name="dynamic-partitioning-namespaces"></a>

[동적 파티셔닝](dynamic-partitioning.md)의 경우, S3 버킷 접두사에 다음 표현식 형식을 사용해야 합니다: `!{namespace:value}`, 여기서 네임스페이스는 `partitionKeyFromQuery` 또는 `partitionKeyFromLambda`이거나, 둘 다일 수 있습니다. 인라인 구문 분석을 사용하여 소스 데이터에 대한 파티션 키를 생성하는 경우 다음 형식으로 지정된 표현식으로 구성되는 S3 버킷 접두사 값을 지정해야 합니다: `"partitionKeyFromQuery:keyID"`. AWS Lambda 함수를 사용하여 소스 데이터에 대한 파티션 키를 생성하는 경우 다음 형식으로 지정된 표현식으로 구성되는 S3 버킷 접두사 값을 지정해야 합니다: `"partitionKeyFromLambda:keyID"`. 자세한 내용은 [Amazon Firehose 스트림 생성](basic-create.md#basic-create.title)의 “Amazon S3를 대상으로 선택”을 참조하세요.

## 의미 체계 규칙
<a name="prefix-rules"></a>

`Prefix` 및 `ErrorOutputPrefix` 표현식에 적용되는 규칙은 다음과 같습니다.
+ `timestamp` 네임스페이스의 경우 작은따옴표로 묶이지 않은 문자가 평가됩니다. 즉, 값 필드에서 작은따옴표로 이스케이프 처리된 문자열은 문자로 처리됩니다.
+ 타임스탬프 네임스페이스 표현식을 포함하지 않는 접두사를 지정할 경우, Firehose는 `Prefix` 필드의 값에 `!{timestamp:yyyy/MM/dd/HH/}` 표현식을 추가합니다.
+ `!{` 시퀀스는 `!{namespace:value}` 표현식에만 나타날 수 있습니다.
+ `Prefix`에 표현식이 없을 경우에만 `ErrorOutputPrefix`가 null이 될 수 있습니다. 이 경우 `Prefix`는 `<specified-prefix>yyyy/MM/DDD/HH/`로 평가되고 `ErrorOutputPrefix`는 `<specified-prefix><error-output-type>yyyy/MM/DDD/HH/`로 평가됩니다. `DDD`는 해당 연도의 날짜를 나타냅니다.
+ `ErrorOutputPrefix`에 표현식을 지정할 경우, 최소 한 개의 `!{firehose:error-output-type}` 인스턴스를 포함시켜야 합니다.
+ `Prefix`에는 `!{firehose:error-output-type}`을 포함할 수 없습니다.
+ `Prefix` 또는 `ErrorOutputPrefix`는 평가 후 512자를 넘을 수 없습니다.
+ 대상이 Amazon Redshift인 경우, `Prefix`에 표현식이 포함되어서는 안 되며, `ErrorOutputPrefix`는 null이어야 합니다.
+ 대상이 Amazon OpenSearch Service 또는 Splunk이고 지정된 `ErrorOutputPrefix`가 없는 경우 Firehose는 실패한 레코드에 `Prefix` 필드를 사용합니다.
+ 대상이 Amazon S3인 경우 Amazon S3 대상 구성의 `Prefix` 및 `ErrorOutputPrefix`를 각각 성공 레코드 및 실패 레코드에 사용합니다. AWS CLI 또는 API를 사용하는 경우 `ExtendedS3DestinationConfiguration`을 사용하여 자체 `Prefix`와 `ErrorOutputPrefix`로 Amazon S3 *백업* 구성을 지정할 수 있습니다.
+ 를 사용하고 대상을 Amazon S3로 AWS Management Console 설정하면 Firehose는 각각 성공적인 레코드`Prefix`와 실패한 레코드에 대해 대상 구성`ErrorOutputPrefix`에서 및를 사용합니다. 표현식을 사용하여 접두사를 지정하는 경우 `!{firehose:error-output-type}`를 포함한 오류 접두사를 지정해야 합니다.
+ 를 AWS CLI, API와 `ExtendedS3DestinationConfiguration` 함께 사용하거나를 지정하는 CloudFormation경우 `S3BackupConfiguration`Firehose는 기본를 제공하지 않습니다`ErrorOutputPrefix`.
+ ErrorOutputPrefix 표현식을 생성할 때 `partitionKeyFromLambda` 및 `partitionKeyFromQuery` 네임스페이스를 사용할 수 없습니다.

## 접두사의 예
<a name="s3-prefix-examples"></a>


**`Prefix` 및 `ErrorOutputPrefix`의 예**  

| Input | 평가된 접두사(2018년 8월 27일 오전 10:30 UTC) | 
| --- | --- | 
|  `Prefix`: 지정 안 함 `ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/`  |  `Prefix`: `2018/08/27/10` `ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/`  | 
|  `Prefix`: `!{timestamp:yyyy/MM/dd}` `ErrorOutputPrefix`: 지정 안 함  | 잘못된 입력: 접두사에 표현식이 포함된 경우 ErrorOutputPrefix는 null이 될 수 없음 | 
|  `Prefix`: `myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}` `ErrorOutputPrefix`: `myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}`  |  `Prefix`: `myFirehose/DeliveredYear=2018/anyMonth/rand=5abf82daaa5` `ErrorOutputPrefix`: `myFirehoseFailures/processing-failed/2018/anyMonth/10`  | 
| `Prefix`: `myPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/` `ErrorOutputPrefix`: `myErrorPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}`  | `Prefix`: `myPrefix/year=2018/month=07/day=06/hour=23/` `ErrorOutputPrefix`: `myErrorPrefix/year=2018/month=07/day=06/hour=23/processing-failed` | 
|  `Prefix`: `myFirehosePrefix/` `ErrorOutputPrefix`: 지정 안 함  |  `Prefix`: `myFirehosePrefix/2018/08/27/` `ErrorOutputPrefix`: `myFirehosePrefix/processing-failed/2018/08/27/`  | 