표현식 - AWS Data Pipeline

AWS Data Pipeline 신규 고객은 더 이상 이용할 수 없습니다. 의 기존 고객 AWS Data Pipeline 정상적으로 서비스를 계속 사용할 수 있습니다. 자세히 알아보기

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

표현식

표현식을 사용하여 관련 객체에서 값을 공유할 수 있습니다. 표현식은 실행 시간에 AWS Data Pipeline 웹 서비스로 처리되어, 모든 표현식이 표현식 값으로 대체됩니다.

표현식은 "#{" 및 "}"로 구분됩니다. 법적 고지 문자열이 있는 파이프라인 정의 객체에서 표현식을 사용할 수 있습니다. 슬롯이 참조이거나 ID, NAME, TYPE, SPHERE 유형 중 하나일 경우에는 그 값이 축약되어 평가 및 사용되지 않습니다.

다음 표현식은 AWS Data Pipeline 함수 중 하나를 호출합니다. 자세한 내용은 표현식 평가 섹션을 참조하세요.

#{format(myDateTime,'YYYY-MM-dd hh:mm:ss')}

필드 및 객체 참조

표현식이 존재하는 현재 객체의 필드 또는 참조로 연결되는 다른 객체의 필드를 표현식에서 사용할 수 있습니다.

슬롯 형식은 생성 시간과 객체 생성 시간 순으로(예: @S3BackupLocation_2018-01-31T11:05:33) 구성됩니다.

또한 Amazon S3 백업 위치의 슬롯 ID처럼 파이프라인 정의에 지정된 해당 슬롯 ID를 참조할 수도 있습니다. 슬롯 ID를 참조하려면 #{parent.@id}를 사용합니다.

다음 예제에서는 filePath 필드가 동일 객체 내 id 필드를 참조하여 파일 이름을 형성합니다. filePath의 값은 "s3://mybucket/ExampleDataNode.csv"로 평가됩니다.

{ "id" : "ExampleDataNode", "type" : "S3DataNode", "schedule" : {"ref" : "ExampleSchedule"}, "filePath" : "s3://mybucket/#{parent.@id}.csv", "precondition" : {"ref" : "ExampleCondition"}, "onFail" : {"ref" : "FailureNotify"} }

참조로 연결된 다른 객체에 있는 필드를 사용하려면 node 키워드를 사용합니다. 이 키워드는 경보 및 사전 조건 객체와 함께 사용해야 합니다.

이전 예제에서 SnsAlarm의 표현식은 Schedule의 날짜와 시간을 나타낼 수 있는데, 그 이유는 S3DataNode가 둘 다 참조하기 때문입니다.

구체적으로 FailureNotifymessage 필드는 ExampleSchedule@scheduledStartTime@scheduledEndTime 실행 시간 필드를 사용할 수 있는데 그 이유는 ExampleDataNodeonFail 필드가 FailureNotify를 참조하고 그 schedule 필드가 ExampleSchedule을 참조하기 때문입니다.

{ "id" : "FailureNotify", "type" : "SnsAlarm", "subject" : "Failed to run pipeline component", "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.", "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic" },
참고

다른 시스템이나 작업에 의존하는 파이프라인 내 작업 같이 종속 요소가 있는 파이프라인을 생성할 수 있습니다. 파이프라인에 특정 리소스가 필요할 경우에는 데이터 노드와 작업에 연결한 사전 조건을 사용하여 파이프라인에 종속 요소를 추가합니다. 그러면 파이프라인의 복원력이 강화되고 디버그도 용이해집니다. 그리고 교차 파이프라인 문제는 해결이 어려우므로 가급적이면 단일 파이프라인 안에 종속 요소를 유지하는 것이 좋습니다.

중첩 표현식

AWS Data Pipeline을 사용하면 값을 중첩하여 좀더 복잡한 표현식을 만들 수 있습니다. 예를 들어, 시간을 계산하고(scheduledStartTime에서 30분 빼기) 결과를 포맷하여 파이프라인 정의에 사용하려면 활동에서 다음 표현식을 사용할 수 있을 것입니다.

#{format(minusMinutes(@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}

표현식이 SnsAlarm 또는 Precondition의 일부일 경우 node 접두사를 사용합니다.

#{format(minusMinutes(node.@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}

목록

목록과 목록의 함수로 표현식을 평가할 수 있습니다. 예를 들어, "myList":["one","two"] 같이 목록이 정의되어 있다고 가정해보겠습니다. 이 목록이 표현식 #{'this is ' + myList}에 사용되면 ["this is one", "this is two"]로 평가됩니다. 목록이 2개일 경우 이 둘을 평가할 때 결국 데이터 파이프라인에 의해 결합됩니다. 예를 들어, myList1[1,2]로 정의되고, myList2[3,4]으로 정의되면 표현식 [#{myList1}, #{myList2}][1,2,3,4]로 평가됩니다.

노드 표현식

AWS Data Pipeline은 파이프라인 구성요소의 부모 객체의 역참조를 위해 SnsAlarm 또는 PreCondition#{node.*} 표현식을 사용합니다. SnsAlarmPreCondition는 역참조가 없는 리소스나 활동에서 참조하므로 node가 참조 페이지를 참조하는 방법입니다. 예를 들어, 다음 파이프라인 정의는 장애 알림이 node를 사용하여 부모, 이 경우 ShellCommandActivity를 참조하고, 부모의 예약된 시작 및 종료 시간을 SnsAlarm 메시지에 포함시키는 방법을 보여줍니다. ShellCommandActivity의 scheduledStartTime 참조는 node 접두사가 필요 없습니다. scheduledStartTime이 자체를 나타내기 때문입니다.

참고

앞에 AT (@) 부호가 있는 필드는 실행 시간 필드입니다.

{ "id" : "ShellOut", "type" : "ShellCommandActivity", "input" : {"ref" : "HourlyData"}, "command" : "/home/userName/xxx.sh #{@scheduledStartTime} #{@scheduledEndTime}", "schedule" : {"ref" : "HourlyPeriod"}, "stderr" : "/tmp/stderr:#{@scheduledStartTime}", "stdout" : "/tmp/stdout:#{@scheduledStartTime}", "onFail" : {"ref" : "FailureNotify"}, }, { "id" : "FailureNotify", "type" : "SnsAlarm", "subject" : "Failed to run pipeline component", "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.", "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic" },

AWS Data Pipeline은 실행 시간 필드가 아니라 사용자 정의 필드용 전이 참조를 지원합니다. 전이 참조는 다른 파이프라인 구성요소에 의존하는 두 파이프라인 구성요소 사이에서 매개 역할을 하는 참조입니다. 다음 예제는 전이 사용자 정의 필드의 참조와 비-전이 실행 시간 필드의 참조를 보여주며, 둘 다 유효합니다. 자세한 내용은 사용자 정의 필드 섹션을 참조하세요.

{ "name": "DefaultActivity1", "type": "CopyActivity", "schedule": {"ref": "Once"}, "input": {"ref": "s3nodeOne"}, "onSuccess": {"ref": "action"}, "workerGroup": "test", "output": {"ref": "s3nodeTwo"} }, { "name": "action", "type": "SnsAlarm", "message": "S3 bucket '#{node.output.directoryPath}' succeeded at #{node.@actualEndTime}.", "subject": "Testing", "topicArn": "arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic", "role": "DataPipelineDefaultRole" }

표현식 평가

AWS Data Pipeline은 필드 값을 계산할 때 사용할 수 있는 함수 집합을 제공합니다. 다음은 makeDate 함수를 사용하여 Schedule 객체의 startDateTime 필드를 "2011-05-24T0:00:00" GMT/UTC로 설정하는 예제입니다.

"startDateTime" : "makeDate(2011,5,24)"