빠른 보기: 관리 센터 > 앱 및 연동 서비스 > 작업 및 웹훅 > 웹훅
Zendesk 웹훅은 Zendesk 계정의 변경 내용으로 다른 시스템을 계속 업데이트할 수 있는 강력한 도구입니다. 웹훅을 사용하여 Amazon EventBridge와 연동하면 실시간 데이터 처리를 통해 더욱 정교한 워크플로우를 구현할 수 있습니다. 이 문서에서는 웹훅을 사용하여 Zendesk 이벤트를 Amazon EventBridge로 보내는 방법을 설명합니다.
웹훅을 사용하여 Amazon EventBridge로 이벤트를 보내기 위한 요구 사항
웹훅을 사용하여 Amazon EventBridge와 연결하려면 다음 요구 사항을 충족해야 합니다.
- Zendesk 계정의 관리자여야 합니다.
- EventBridge가 설정된 AWS 계정이 있어야 합니다.
또한 EventBridge를 포함한 AWS 서비스에 대한 기본적인 이해가 있어야 합니다.
EventBridge 이벤트 버스 만들기
웹훅을 만들기 전에 EventBridge 이벤트 버스를 만들어야 합니다.
이후 단계에서 필요한 ARN을 적어둡니다. ARN의 형식은 다음과 같아야 합니다.
arn:aws:events:{REGION}:{AWS_ID}:event-bus/{EVENT_BUS_ID}
Lambda 함수를 만들어 웹훅 페이로드 받기
웹훅을 받고, 웹훅의 서명을 확인하고, 만든 EventBridge 이벤트 버스에 웹훅 페이로드를 전달하려면 Lambda 함수가 필요합니다.
Lambda 함수를 만들려면 다음과 같이 하세요.
-
AWS Lambda 콘솔을 사용하여 새 Lambda 함수를 만듭니다. 필요에 따라 필드를 완성합니다. 고급 설정 아래에서 함수 URL 사용을 선택한 후 인증 방법에 대해 없음을 선택합니다.
함수 URL을 적어둡니다. 웹훅을 연결할 공개 URL입니다.
-
코드 소스 창에 다음 코드를 추가한 후 배포를 클릭합니다.
import json import hashlib import hmac import os import base64 import logging import boto3 LOGGER = logging.getLogger() LOGGER.setLevel('INFO') EVENTBRIDGE = boto3.client('events') # Set these values in your Lambda function environment variables. EVENT_BUS_ARN = os.environ['EVENT_BUS_ARN'] WEBHOOK_SECRET = os.environ['WEBHOOK_SECRET'].encode('utf-8') def verify_signature(payload, signature, timestamp): '''Verify the provided webhook signature was created by Zendesk's Webhook feature.''' combined = timestamp + payload combined_bytes = combined.encode('utf-8') computed_hmac = hmac.new(WEBHOOK_SECRET, combined_bytes, hashlib.sha256) computed_signature = base64.b64encode(computed_hmac.digest()).decode('utf-8') return hmac.compare_digest(computed_signature, signature) def webhook_to_eventbridge(event): '''Forward the webhook body to AWS EventBridge.''' payload = event['body'] signature = event['headers'].get('x-zendesk-webhook-signature', '') timestamp = event['headers'].get('x-zendesk-webhook-signature-timestamp', '') if not verify_signature(payload, signature, timestamp): LOGGER.warning('Received webhook with invalid signature') return { 'statusCode': 403, 'body': json.dumps({'message': 'Forbidden'}), } payload_dict = json.loads(payload) if isinstance(payload, str) else payload event_source = payload_dict.get('source', 'webhook.custom') detail_type = payload_dict.get('type', 'defaultDetailType') put_events_response = EVENTBRIDGE.put_events( Entries=[ { 'Source': event_source, 'DetailType': detail_type, 'Detail': json.dumps(payload_dict), 'EventBusName': EVENT_BUS_ARN, } ] ) response_entries = put_events_response.get('Entries', []) if len(response_entries) == 0 or 'ErrorCode' in response_entries[0]: LOGGER.error(f'Push to event bridge failed: {response_entries}') return { 'statusCode': 500, 'body': json.dumps( { 'message': 'Failed to send event to EventBridge', 'response': put_events_response, } ), } return { 'statusCode': 200, 'body': json.dumps( { 'message': 'Event successfully sent to EventBridge', 'response': put_events_response, } ), } def lambda_handler(event, context): try: return webhook_to_eventbridge(event) except Exception as e: LOGGER.exception('Error handling webhook') return { 'statusCode': 500, 'body': json.dumps({'message': 'Error handling webhook', 'error': str(e)}), }
- 다음과 같은 두 개의 환경 변수를 Lambda 함수에 추가합니다.
-
EVENT_BUS_ARN
: EventBridge 이벤트 버스를 만들 때 받은 ARN 값에 이 변수를 설정합니다. 이것이 이벤트 버스 위치입니다. -
WEBHOOK_SECRET
: 웹훅을 만든 후 이 변수를 웹훅 비밀키에 설정해야 합니다.
-
-
AWS IAM 콘솔을 사용하여 AWS Lambda 서비스에 대한 역할을 만듭니다.
역할의 이름을 적어둡니다. 역할을 Lambda 함수에 배정하는 데 이 정보가 필요합니다.
- 역할을 만든 후 편집하여 EventBridge 이벤트 버스 ARN을 추가합니다.
- 역할을 엽니다.
- 2단계: 권한 추가 아래에서 편집을 클릭하고 인라인 정책 만들기를 선택합니다.
- EventBridge 서비스를 검색하여 PutEvents 메서드를 선택합니다.
- 리소스 아래에서 ARN 추가를 클릭합니다.
- EventBridge 이벤트 버스 ARN을 입력하고 다음을 클릭합니다.
- 정책의 이름을 입력하고 정책 만들기를 클릭합니다.
- AWS Lambda 콘솔을 사용하여 만든 Lambda 함수를 열고 IAM 역할을 배정합니다. 구성 탭에서 권한을 선택하고 편집을 클릭합니다. 페이지 아래쪽에서 역할의 이름을 선택하고 저장을 클릭합니다.
Zendesk 웹훅을 만들어 Amazon EventBridge에 연결하기
EventBridge 이벤트 버스를 만들고 Lambda 함수를 구성한 후에는 웹훅을 만들어야 합니다.
웹훅을 만들어 Amazon EventBridge와 연동하려면 다음과 같이 하세요.
- 관리 센터의 사이드바에서 앱 및 연동 서비스를 클릭한 다음 작업 및 웹훅 > 웹훅을 선택합니다.
-
반드시 다음 값을 지정하여 웹훅을 만듭니다.
- 엔드포인트 URL을 Lambda 함수를 만들 때 받은 함수 URL로 설정합니다.
- 인증을 없음으로 설정합니다.
- 웹훅 만들기를 클릭합니다.
참고: Zendesk는 각 웹훅 만들기 프로세스 중 비밀키를 생성합니다. 웹훅을 Amazon EventBridge에 성공적으로 연결하려면 이 비밀키를 복사하여 Lambda 함수의
WEBHOOK_SECRET
환경 변수에 붙여 넣어야 합니다. Lambda 함수를 만들어 웹훅 페이로드 받기를 참조하세요.
참고: 연동 코드를 포함한 이 문서는 일반적인 정보 제공 목적으로만 제공됩니다. Zendesk는 코드를 지원하거나 보장하지 않습니다. 또한 Zendesk는 Amazon EventBridge와 같은 타사 기술에 대한 지원을 제공할 수 없습니다. 문제가 있는 경우 댓글 섹션에 게시하거나 온라인으로 해결 방법을 검색해 보세요.