

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

# Lambda 함수 호출 작업
<a name="receiving-email-action-lambda"></a>

Lambda 작업은 Lambda 함수를 통해 코드를 호출하고, 설정에 따라 Amazon SNS를 통해 알립니다. 이 작업에는 다음 옵션 및 요구 사항이 있습니다.

**옵션**
+ **Lambda 함수 - **Lambda 함수의 ARN입니다. Lambda 함수 ARN의 한 가지 예는 *arn:aws:lambda:us-east-1:account-id:function:MyFunction*입니다.
+ **호출 유형 - **Lambda 함수의 호출 유형입니다. **RequestResponse** 호출 유형은 함수를 실행할 경우 즉각적인 응답이 발생한다는 것을 의미합니다. **Event** 호출 유형은 함수가 비동기식으로 호출된다는 것을 의미합니다. 해당 사용 사례에 반드시 동기식 실행이 필요한 경우가 아니라면 **이벤트(Event)** 호출 유형을 사용할 것을 권장합니다.

  [**RequestResponse**] 호출에는 30초의 요청 제한 시간이 있습니다.

  자세한 내용은 *AWS Lambda 개발자 가이드*의 [Lambda 함수 호출](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html)을 참조하세요.
+ **SNS 주제 - **지정된 Lambda 함수를 트리거한 후 알림을 전송할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 자세한 설명은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 주제 생성](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)을 참조하세요.

**요구 사항**
+ 선택한 Lambda 함수는 이메일 수신에 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 있어야 합니다.
+ 선택한 Amazon SNS 주제는 이메일 수신에 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 있어야 합니다.

## Lambda 함수 작성하기
<a name="receiving-email-action-lambda-function"></a>

이메일을 처리할 때(즉, `Event` 호출 유형을 사용) Lambda 함수를 비동기식으로 호출할 수 있습니다. Lambda 함수에 전달하는 이벤트 객체는 인바운드 이메일 이벤트에 대한 메타데이터를 담고 있습니다. 이 메타데이터를 사용해 Amazon S3 버킷의 메시지 콘텐츠에 액세스할 수도 있습니다.

메일 흐름을 실제로 제어하고 싶다면 Lambda 함수를 동기식으로 호출해야 합니다(즉, `RequestResponse` 호출 유형 사용). 그러면 Lambda 함수가 두 개의 인수가 있는 `callback` 메서드를 호출합니다. 첫 번째 인수는 `null`이고 두 번째 인수는 `STOP_RULE`, `STOP_RULE_SET` 또는 `CONTINUE`로 설정된 `disposition` 속성입니다. 두 번째 인수가 `null`이거나 유효한 `disposition` 속성이 없는 경우, `CONTINUE` 실행 시와 마찬가지로 메일 흐름이 계속되어 작업과 규칙이 순서대로 처리됩니다.

예를 들어 Lambda 함수 코드의 끝에 다음 줄을 추가하면 수신 규칙 세트 처리를 중단시킬 수 있습니다.

```
callback( null, { "disposition" : "STOP_RULE_SET" });
```

 AWS Lambda 코드 샘플은 섹션을 참조하세요[Lambda 함수 예제](receiving-email-action-lambda-example-functions.md). 고급 사용 사례 예시는 다음([사용 사례](receiving-email-action-lambda-example-use-cases.md))을 참조하세요.

### 입력 형식
<a name="receiving-email-action-lambda-input"></a>

Amazon SES는 JSON 형식으로 Lambda 함수에 정보를 전달합니다. 이 최고 레벨 객체는 `Records` 배열을 포함하며, 이 배열에는 `eventSource`, `eventVersion`, `ses` 속성이 들어 있습니다. `ses` 객체에는 `receipt`와 `mail` 객체가 있고, [알림 내용](receiving-email-notifications-contents.md)에서 설명한 Amazon SNS 알림과 형식이 동일합니다.

Amazon SES가 Lambda로 전달하는 데이터에는 메시지에 대한 메타데이터와 여러 이메일 헤더가 포함됩니다. 그러나 메시지의 본문은 포함되어 있지 않습니다.

다음은 Amazon SES가 Lambda 함수에 제공하는 입력 데이터의 구조를 세부적으로 나타낸 것입니다.

```
{
   "Records": [
      {
        "eventSource": "aws:ses",
        "eventVersion": "1.0",
        "ses": {
           "receipt": {
               <same contents as SNS notification>
            },
           "mail": {
               <same contents as SNS notification>
           }
         }
     }
   ]
}
```

### 반환 값
<a name="receiving-email-action-lambda-function-return-values"></a>

Lambda 함수는 다음 값 중 하나를 반환하여 메일 흐름을 제어합니다.
+ `STOP_RULE` - 현재 수신 규칙의 작업 수행은 중단하되 다음 수신 규칙을 처리할 수 있습니다.
+ `STOP_RULE_SET` - 작업 또는 수신 규칙 처리를 완전히 중단합니다.
+ `CONTINUE` 또는 기타 무효 값 - 다음 작업과 수신 규칙을 처리할 수 있습니다.

**Topics**
+ [Lambda 함수 작성하기](#receiving-email-action-lambda-function)
+ [샘플 수신 이메일 이벤트](receiving-email-action-lambda-event.md)
+ [사용 사례](receiving-email-action-lambda-example-use-cases.md)
+ [Lambda 함수 예제](receiving-email-action-lambda-example-functions.md)