Amazon Kinesis Data Firehose 데이터 변환 - Amazon Kinesis Data Firehose

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

Amazon Kinesis Data Firehose 데이터 변환

Kinesis Data Firehose는 Lambda 함수를 호출해 수신되는 소스 데이터를 변환하고, 변환된 데이터를 대상으로 전송할 수 있습니다. 전송 스트림을 생성할 때 Kinesis Data Firehose 데이터 변환을 활성화할 수 있습니다.

데이터 변환 흐름

Kinesis Data Firehose 데이터 변환을 활성화하면 Kinesis Data Firehose가 기본적으로 최대 3MB까지 수신 데이터를 버퍼링할 수 있습니다. (버퍼링 크기를 조정하려면 BufferSizeInMBs라고 하는 ProcessorParameter와 함께 ProcessingConfiguration API를 사용합니다.) 그러면 Kinesis Data Firehose가 지정된 Lambda 함수를 비동기식으로 호출하며, 각 버퍼링된 배치는 AWS Lambda 동기식 호출 모드를 사용합니다. 변환된 데이터는 Lambda에서 Kinesis Data Firehose로 전송됩니다. 그런 다음 Kinesis Data Firehose 지정된 대상 버퍼링 크기 또는 버퍼링 간격 중 어느 것에든 먼저 도달하면 대상으로 전송됩니다.

중요

Lambda 동기식 호출 모드는 요청 및 응답 모두 페이로드 크기 제한이 6MB입니다. 함수로 요청을 전송하기 위한 버퍼링 크기가 6MB 이하인지 확인해야 합니다. 또한 함수에서 반환하는 응답이 6MB를 초과하지 않는지 확인합니다.

데이터 변환 및 상태 모델

Lambda의 모든 변환된 레코드에는 다음 파라미터가 포함되어 있어야 합니다. 그렇지 않으면 Kinesis Data Firehose가 이를 거부하고 데이터 변환 실패로 간주합니다.

recordId

레코드 ID는 호출 중에 Kinesis Data Firehose에서 Lambda로 전달됩니다. 변환된 레코드에는 동일한 레코드 ID가 포함되어야 합니다. 원래 레코드의 ID와 변환된 레코드의 ID 간 불일치는 데이터 변환 실패로 간주됩니다.

result

레코드의 데이터 변환 상태입니다. 가능한 값은 Ok(레코드가 성공적으로 변환되었음), Dropped(처리 로직에 의해 의도적으로 레코드가 삭제됨), ProcessingFailed(레코드를 변환하지 못함)입니다. 레코드 상태가 Ok 또는 Dropped인 경우 Kinesis Data Firehose는 성공적으로 처리된 것으로 간주합니다. 그렇지 않으면 Kinesis Data Firehose에서 제대로 처리되지 않은 것으로 간주합니다.

데이터

base64 인코딩 후 변환된 데이터 페이로드입니다.

Lambda 블루프린트

데이터 변환을 위해 Lambda 함수를 생성하는 데 사용할 수 있는 블루프린트가 있습니다. 이러한 블루프린트 중 일부는 AWS Lambda 콘솔에 있으며, 일부는 AWS Serverless Application Repository에 있습니다.

AWS Lambda 콘솔에서 사용할 수 있는 블루프린트를 보려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.

  2. 함수 생성을 선택한 다음 Use a blueprint(블루프린트 사용)를 선택합니다.

  3. Blueprints(블루프린트) 필드에서 키워드 firehose를 검색하여 Kinesis Data Firehose Lambda 블루프린트를 찾습니다.

AWS Serverless Application Repository에서 사용할 수 있는 블루프린트를 보려면

  1. AWS Serverless Application Repository로 이동합니다.

  2. [Browse all applications]를 선택합니다.

  3. 애플리케이션 필드에서 키워드 firehose를 검색합니다.

블루프린트를 사용하지 않고 Lambda 함수를 생성할 수도 있습니다. AWS Lambda 시작하기를 참조하십시오.

데이터 변환 실패 처리

네트워크 제한 시간이나 Lambda 호출 제한에 도달해 Lambda 함수 호출에 실패하면 Kinesis Data Firehose가 호출을 기본적으로 3회 다시 시도합니다. 호출에 성공하지 못하면 Kinesis Data Firehose가 해당 레코드 배치를 건너뜁니다. 건너뛴 레코드는 제대로 처리되지 않은 레코드로 간주됩니다. CreateDeliveryStream 또는 UpdateDestination API를 사용하여 다시 시도 옵션을 정의하거나 재정의할 수 있습니다. 이러한 유형의 실패에 대해 Amazon CloudWatch Logs에 호출 오류를 기록할 수 있습니다. 자세한 내용은 CloudWatch Logs를 사용하여 Kinesis Data Firehose 모니터링 단원을 참조하십시오.

레코드의 데이터 변환 상태가 ProcessingFailed인 경우, Kinesis Data Firehose는 레코드를 제대로 처리되지 않은 것으로 간주합니다. 이러한 유형의 실패에 대해 Lambda 함수에서 Amazon CloudWatch Logs로 오류 로그를 출력할 수 있습니다. 자세한 내용은 AWS Lambda Developer GuideAWS Lambda를 위해 Amazon CloudWatch Logs 액세스 단원을 참조하십시오.

데이터 변환에 실패하면 제대로 처리되지 않은 레코드는 S3 버킷의 processing-failed 폴더로 전송됩니다. 이 레코드는 다음 형식을 취합니다.

{ "attemptsMade": "count", "arrivalTimestamp": "timestamp", "errorCode": "code", "errorMessage": "message", "attemptEndingTimestamp": "timestamp", "rawData": "data", "lambdaArn": "arn" }
attemptsMade

시도한 호출 요청 횟수입니다.

arrivalTimestamp

Kinesis Data Firehose가 레코드를 수신한 시간입니다.

errorCode

Lambda가 반환한 HTTP 오류 코드입니다.

errorMessage

Lambda가 반환한 오류 메시지입니다.

attemptEndingTimestamp

Kinesis Data Firehose가 Lambda 호출 시도를 중단한 시간입니다.

rawData

base64 인코딩된 레코드 데이터입니다.

lambdaArn

Lambda 함수의 Amazon 리소스 이름(ARN)입니다.

Lambda 호출 기간

Kinesis Data Firehose는 최대 5분의 Lambda 호출 시간을 지원합니다. Lambda 함수를 완료하는 데 5분 이상 걸리면 다음 오류가 발생합니다. AWS Lambda를 호출할 때 Firehose에 시간 초과 오류가 발생했습니다. 지원되는 함수 제한 시간은 최대 5분입니다.

이러한 오류가 발생하는 경우 Kinesis Data Firehose에 대한 자세한 내용은 데이터 변환 실패 처리를 참조하십시오.

소스 레코드 백업

Kinesis Data Firehose가 변환된 데이터를 대상으로 전송하는 동시에, 제대로 변환되지 않은 모든 레코드를 S3 버킷에 백업할 수 있습니다. 전송 스트림을 생성하거나 업데이트할 때 소스 레코드 백업을 활성화할 수 있습니다. 소스 레코드 백업을 활성화한 후 비활성화할 수 없습니다.