Step Functions가 입력 CSV 파일을 파싱하는 방법 - AWS Step Functions

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

Step Functions가 입력 CSV 파일을 파싱하는 방법

Step Functions는 다음 규칙에 따라 CSV 파일을 파싱합니다.

  • 쉼표 (,) 는 필드를 구분하는 구분 기호입니다.

  • 줄 바꿈은 레코드를 구분하는 구분 기호입니다.

  • 필드는 문자열로 취급됩니다. 데이터 유형 변환의 경우 ItemSelector (지도)에서 States.StringToJson 내장 함수를 사용합니다.

  • 문자열을 묶을 때는 큰따옴표 (” “) 가 필요하지 않습니다. 그러나 큰따옴표로 묶인 문자열에는 레코드 구분자로 사용되지 않고 쉼표와 줄 바꿈이 포함될 수 있습니다.

  • 큰따옴표를 반복해서 따옴표를 보존할 수 있습니다.

  • 행의 필드 수가 헤더의 필드 수보다 적은 경우 Step Functions는 누락된 값에 대해 빈 문자열을 제공합니다.

  • 행의 필드 수가 헤더의 필드 수보다 많으면 Step Functions는 추가 필드를 건너뛰습니다.

입력 파일 파싱 작업 CSV

행 하나를 입력으로 포함하는 이름의 CSV 파일을 myCSVInput.csv 제공했다고 가정해 보겠습니다. 그런 다음 amzn-s3-demo-bucket이라는 Amazon S3 버킷에 이 파일을 저장했습니다. CSV파일은 다음과 같습니다.

abc,123,"This string contains commas, a double quotation marks (""), and a newline ( )",{""MyKey"":""MyValue""},"[1,2,3]"

다음 상태 머신은 이 CSV 파일을 읽고 일부 필드의 데이터 유형을 ItemSelector (지도) 변환하는 데 사용합니다.

{ "StartAt": "Map", "States": { "Map": { "Type": "Map", "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "STANDARD" }, "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "End": true } } }, "End": true, "Label": "Map", "MaxConcurrency": 1000, "ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "MyLetters", "MyNumbers", "MyString", "MyObject", "MyArray" ] }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "myCSVInput.csv" } }, "ItemSelector": { "MyLetters.$": "$$.Map.Item.Value.MyLetters", "MyNumbers.$": "States.StringToJson($$.Map.Item.Value.MyNumbers)", "MyString.$": "$$.Map.Item.Value.MyString", "MyObject.$": "States.StringToJson($$.Map.Item.Value.MyObject)", "MyArray.$": "States.StringToJson($$.Map.Item.Value.MyArray)" } } } }

이 상태 시스템을 실행하면 다음 출력이 생성됩니다.

[ { "MyNumbers": 123, "MyObject": { "MyKey": "MyValue" }, "MyString": "This string contains commas, a double quote (\"), and a newline (\n)", "MyLetters": "abc", "MyArray": [ 1, 2, 3 ] } ]