1. EventBridge Input Transformation 소개
- EventBridge Input Transformation은 이벤트의 데이터를 타겟으로 전달하기 전에 커스터마이징할 수 있는 강력한 기능입니다.
- JSON Path를 사용하여 원본 이벤트의 값을 참조하는 변수를 정의하고, 이를 통해 타겟에 전달될 이벤트를 원하는 형태로 변환할 수 있습니다.
2. 주요 특징
2.1 변수 정의 제한 사항
- 최대 100개의 변수 정의 가능
- 각 변수는 원본 이벤트의 값을 참조
- JSON Path 문법의 부분 지원
- 점 표기법 (예: $.detail)
- 대시와 언더스코어
- 영숫자 문자
- 배열 인덱스
- 와일드카드(*)
2.2 사전 정의된 변수
aws.events.rule-arn
: EventBridge 규칙의 ARNaws.events.rule-name
: EventBridge 규칙의 이름aws.events.event.ingestion-time
: 이벤트 수신 시간 (ISO 8601 타임스탬프)aws.events.event
: 원본 이벤트 페이로드 (detail 필드 제외)aws.events.event.json
: 전체 원본 이벤트 페이로드 (detail 필드 포함)
3. Input Transformation 구성하기
3.1 Input Path 작성법
- Input Path는 변수를 정의하는 데 사용됩니다.
- 원본 이벤트에서 값을 추출하고 변수로 사용할 JSON Path를 작성합니다.
- 이렇게 정의된 변수는 Input Template에서 참조할 수 있습니다.
예시
{
"version": "0",
"id": "7bf73129-1428-4cd3-a780-95db273d1602",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "123456789012",
"time": "2015-11-11T21:29:54Z",
"region": "us-east-1",
"resources": [
"arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
],
"detail": {
"instance-id": "i-0123456789",
"state": "RUNNING"
}
}
- 위는 EC2 인스턴스 상태 변경 알림의 예시입니다.
{
"timestamp": "$.time",
"instance": "$.detail.instance-id",
"state": "$.detail.state",
"resource": "$.resources[0]"
}
- 위 Input Path는 원본 이벤트 에서
time
,detail.instance-id
,detail.state
,resources[0]
값을 추출하여 변수로 정의합니다. - 이렇게 정의된 변수는 Input Template에서 참조할 수 있습니다.
3.2 Input Template 작성법
- Input Template은 타겟에 전달할 정보의 템플릿을 정의합니다.
- 문자열이나 JSON 형식으로 작성할 수 있습니다.
3.2.1 문자열 템플릿 예시
예시
"instance <instance> is in <state>"
- 위 템플릿은
instance
와state
변수를 참조하여 문자열을 생성합니다.
결과
"instance i-0123456789 is in RUNNING"
- 위 결과는 Input Path에서 추출한 변수를 템플릿에 적용한 결과입니다.
3.2.2 JSON 템플릿 예시
예시
{
"instance": <instance>,
"state": "<state>",
"instanceStatus": "instance \"<instance>\" is in <state>"
}
결과
{
"instance": "i-0123456789",
"state": "RUNNING",
"instanceStatus": "instance \"i-0123456789\" is in RUNNING"
}
- 위 결과는 Input Path에서 추출한 변수를 템플릿에 적용한 결과입니다.
4. 일반적인 문제와 해결 방법
4.1 주의사항
- 문자열의 경우 따옴표가 필요합니다
- JSON path 생성 시 유효성 검사가 없습니다
- 존재하지 않는 JSON path를 참조하는 변수는 출력에 나타나지 않습니다
aws.events.event.json
같은 JSON 속성은 JSON 필드의 값으로만 사용 가능합니다