

# Invoke
<a name="API_Invoke"></a>

Lambda 함수를 호출합니다. 동기식(응답 대기) 또는 비동기식으로 함수를 호출할 수 있습니다. 기본적으로 Lambda는 함수를 동기식으로 간접적으로 호출합니다(예: `InvocationType`은 `RequestResponse`임). 함수를 비동기식으로 호출하려면 `InvocationType`을(를) `Event`(으)로 설정합니다. Lambda는 동기식 호출에 대해서만 `ClientContext` 객체를 함수에 전달합니다.

[동기식 호출](https://docs.aws.amazon.com/lambda/latest/dg/invocation-sync.html)에서는 함수 응답에 대한 세부 정보(오류 포함)가 응답 본문과 헤더에 포함됩니다. 두 호출 유형에 대한 자세한 내용은 [실행 로그](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html) 및 [추적](https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html)에서 찾을 수 있습니다.

오류가 발생하면 함수가 여러 번 호출될 수 있습니다. 재시도 동작은 오류 유형, 클라이언트, 이벤트 소스, 호출 유형에 따라 다릅니다. 예를 들어 함수를 비동기식으로 호출했는 데 오류를 반환한 경우 Lambda는 함수를 최대 두 번 더 실행합니다. 자세한 내용은 [Lambda에서 오류 처리 및 자동 재시도](https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html)를 참조하세요.

[비동기 호출](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)의 경우 이벤트를 함수로 보내기 전에 Lambda가 이벤트를 대기열에 추가합니다. 대기열에 맞출 수 있는 함수의 용량이 충분하지 않으면 이벤트가 손실될 수 있습니다. 경우에 따라 오류가 발생하지 않더라도 함수가 동일한 이벤트를 여러 번 수신할 수 있습니다. 처리되지 않은 이벤트를 유지하려면 [배달 못한 편지 대기열](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq)로 함수를 구성합니다.

API 응답의 상태 코드는 함수 오류를 반영하지 않습니다. 오류 코드는 권한 오류, [할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) 오류 또는 함수의 코드 및 구성과 관련된 문제와 같이 함수가 실행되지 못하게 하는 오류를 위해 예약되어 있습니다. 예를 들어 함수 실행으로 계정 수준(`ConcurrentInvocationLimitExceeded`) 또는 함수 수준(`ReservedFunctionConcurrentInvocationLimitExceeded`)에서 동시성 한도가 초과되는 경우 Lambda는 `TooManyRequestsException`을(를) 반환합니다.

제한 시간이 긴 함수의 경우 클라이언트는 응답을 기다릴 때 동기식 호출 중 연결이 해제될 수 있습니다. HTTP 클라이언트, SDK, 방화벽, 프록시 또는 운영 체제에서 제한 시간과의 장시간 연결 또는 연결 유지 설정을 감안하도록 구성합니다.

이 작업에는 [lambda:InvokeFunction](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awslambda.html) 작업에 대한 권한이 필요합니다. 교차 계정 호출에 대한 권한을 설정하는 방법에 대한 자세한 내용은 [함수에 다른 계정에 대한 액세스 권한 부여](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-xaccountinvoke)를 참조하세요.

## Request Syntax
<a name="API_Invoke_RequestSyntax"></a>

```
POST /2015-03-31/functions/FunctionName/invocations?Qualifier=Qualifier HTTP/1.1
X-Amz-Invocation-Type: InvocationType
X-Amz-Log-Type: LogType
X-Amz-Client-Context: ClientContext

Payload
```

## URI 요청 파라미터
<a name="API_Invoke_RequestParameters"></a>

요청은 다음 URI 파라미터를 사용합니다.

 ** [ClientContext](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-ClientContext"></a>
컨텍스트 객체의 함수에 전달할 호출 클라이언트의 경우 base64로 인코딩된 데이터의 최대 크기는 3,583바이트입니다. Lambda는 동기식 호출에 대해서만 `ClientContext` 객체를 함수에 전달합니다.

 ** [FunctionName](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-FunctionName"></a>
Lambda 함수, 버전 또는 별칭의 이름입니다.  

**이름 형식**
+  **함수 이름** - `my-function`(이름만), `my-function:v1`(별칭 포함).
+  **함수 ARN** - `arn:aws:lambda:us-west-2:123456789012:function:my-function`.
+  **부분적 ARN** - `123456789012:function:my-function`.
모든 형식에 버전 번호 또는 별칭을 추가할 수 있습니다. 길이 제한은 전체 ARN에만 적용됩니다. 함수 이름만 지정하는 경우, 길이가 64자로 제한됩니다.  
길이 제약: 최소 길이는 1입니다. 최대 길이는 170입니다.  
Pattern: `(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?`   
필수 항목 여부: 예

 ** [InvocationType](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-InvocationType"></a>
다음 옵션 중 하나를 선택합니다.  
+  `RequestResponse`(기본값) - 함수를 동기적으로 호출합니다. 함수가 응답을 반환하거나 시간이 초과할 때까지 연결을 열어 둡니다. API 응답에는 함수 응답 및 추가 데이터가 포함됩니다.
+  `Event` - 함수를 비동기적으로 호출합니다. 여러 번 실패한 이벤트를 함수의 배달 못한 편지 대기열로 보냅니다(구성된 경우). API 응답에는 상태 코드만 포함됩니다.
+  `DryRun` - 파라미터 값의 유효성을 검사하고, 사용자 또는 역할이 함수를 호출할 권한을 가졌는지 확인합니다.
유효한 값: `Event | RequestResponse | DryRun` 

 ** [LogType](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-LogType"></a>
응답에 실행 로그를 포함하도록 `Tail`(으)로 설정합니다. 동기식으로 호출된 함수에만 적용됩니다.  
유효한 값: `None | Tail` 

 ** [Qualifier](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-Qualifier"></a>
함수의 게시된 버전을 호출하려면 버전 또는 별칭을 지정합니다.  
길이 제약: 최소 길이는 1입니다. 최대 길이 128.  
Pattern: `(|[a-zA-Z0-9$_-]+)` 

## 요청 본문
<a name="API_Invoke_RequestBody"></a>

요청은 다음의 이진 데이터를 허용합니다.

 ** [Payload](#API_Invoke_RequestSyntax) **   <a name="lambda-Invoke-request-Payload"></a>
Lambda 함수에 입력으로 제공하려는 JSON입니다.  
JSON을 직접 입력할 수 있습니다. 예: `--payload '{ "key": "value" }'`. 파일 경로를 지정할 수도 있습니다. 예: `--payload file://payload.json`.

## Response Syntax
<a name="API_Invoke_ResponseSyntax"></a>

```
HTTP/1.1 StatusCode
X-Amz-Function-Error: FunctionError
X-Amz-Log-Result: LogResult
X-Amz-Executed-Version: ExecutedVersion

Payload
```

## 응답 요소
<a name="API_Invoke_ResponseElements"></a>

작업이 성공하면 서비스가 다음 HTTP 응답을 다시 전송합니다.

 ** [StatusCode](#API_Invoke_ResponseSyntax) **   <a name="lambda-Invoke-response-StatusCode"></a>
요청이 성공한 경우 HTTP 상태 코드가 200 범위에 있습니다. `RequestResponse` 호출 유형의 경우 이 상태 코드는 200입니다. `Event` 호출 유형의 경우 이 상태 코드는 202입니다. `DryRun` 호출 유형의 경우 이 상태 코드는 204입니다.

응답에 다음 HTTP 헤더가 반환됩니다.

 ** [ExecutedVersion](#API_Invoke_ResponseSyntax) **   <a name="lambda-Invoke-response-ExecutedVersion"></a>
실행된 함수의 버전입니다. 별칭이 있는 함수를 호출할 경우 이는 별칭이 귀결된(resolved) 버전을 나타냅니다.  
길이 제약: 최소 길이는 1입니다. 최대 길이는 1024입니다.  
Pattern: `(\$LATEST|[0-9]+)` 

 ** [FunctionError](#API_Invoke_ResponseSyntax) **   <a name="lambda-Invoke-response-FunctionError"></a>
존재하는 경우 함수 실행 중에 오류가 발생했음을 나타냅니다. 오류에 대한 세부 정보가 응답 페이로드에 포함됩니다.

 ** [LogResult](#API_Invoke_ResponseSyntax) **   <a name="lambda-Invoke-response-LogResult"></a>
실행 로그의 마지막 4KB이며, base64로 인코딩됩니다.

응답은 다음 내용을 HTTP 본문으로 반환합니다.

 ** [Payload](#API_Invoke_ResponseSyntax) **   <a name="lambda-Invoke-response-Payload"></a>
함수의 응답 또는 오류 객체입니다.

## Errors
<a name="API_Invoke_Errors"></a>

모든 작업에서 발생하는 일반적인 오류에 대한 자세한 내용은 [일반적인 오류](CommonErrors.md) 섹션을 참조하세요.

 ** EC2AccessDeniedException **   
VPC 설정을 구성하려면 추가 권한이 필요합니다.  
HTTP 상태 코드: 502

 ** EC2ThrottledException **   
Lambda 함수에 제공된 실행 역할을 사용하여 함수를 초기화하는 동안 Amazon EC2가 AWS Lambda를 제한했습니다.  
HTTP 상태 코드: 502

 ** EC2UnexpectedException **   
 Lambda 함수를 설정하는 동안 AWS Lambda이(가) 예기치 않은 Amazon EC2 클라이언트 예외를 수신했습니다.  
HTTP 상태 코드: 502

 ** EFSIOException **   
연결된 파일 시스템을 읽거나 쓸 때 오류가 발생했습니다.  
HTTP 상태 코드: 410

 ** EFSMountConnectivityException **   
Lambda 함수가 구성된 파일 시스템에 네트워크 연결을 수립할 수 없습니다.  
HTTP 상태 코드: 408

 ** EFSMountFailureException **   
권한 또는 구성 문제로 인해 Lambda 함수가 구성된 파일 시스템을 마운트할 수 없습니다.  
HTTP 상태 코드: 403

 ** EFSMountTimeoutException **   
Lambda 함수가 구성된 파일 시스템에 네트워크 연결을 수립했지만 마운트 작업 시간이 초과되었습니다.  
HTTP 상태 코드: 408

 ** ENILimitReachedException **   
 네트워크 인터페이스 제한에 도달했기 때문에 Lambda 함수 구성의 일부로 지정된 VPC에서 AWS Lambda가 Elastic Network Interface(ENI)를 생성하지 못했습니다. 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.  
HTTP 상태 코드: 502

 ** InvalidParameterValueException **   
요청의 파라미터 중 하나가 유효하지 않습니다.  
HTTP 상태 코드: 400

 ** InvalidRequestContentException **   
요청 본문을 JSON으로 구문 분석할 수 없습니다.  
HTTP 상태 코드: 400

 ** InvalidRuntimeException **   
런타임 또는 지정된 런타임 버전이 지원되지 않습니다.  
HTTP 상태 코드: 502

 ** InvalidSecurityGroupIDException **   
Lambda 함수 VPC 구성에 제공된 보안 그룹 ID가 잘못되었습니다.  
HTTP 상태 코드: 502

 ** InvalidSubnetIDException **   
Lambda 함수 VPC 구성에 제공된 서브넷 ID가 잘못되었습니다.  
HTTP 상태 코드: 502

 ** InvalidZipFileException **   
 AWS Lambda이(가) 배포 패키지의 압축을 풀 수 없습니다.  
HTTP 상태 코드: 502

 ** KMSAccessDeniedException **   
AWS KMS 액세스가 거부되었기 때문에 Lambda에서 환경 변수의 암호화를 해제할 수 없습니다. Lambda 함수의 KMS 권한을 확인하세요.  
HTTP 상태 코드: 502

 ** KMSDisabledException **   
사용된 AWS KMS key가 비활성화되어 있으므로 Lambda가 환경 변수를 복호화할 수 없습니다. Lambda 함수의 KMS 키 설정을 확인하세요.  
HTTP 상태 코드: 502

 ** KMSInvalidStateException **   
복호화에 사용된 AWS KMS key의 상태가 유효하지 않기 때문에 Lambda에서 환경 변수의 암호화를 해제할 수 없습니다. 함수의 KMS 키 설정을 확인하세요.  
HTTP 상태 코드: 502

 ** KMSNotFoundException **   
AWS KMS key를 찾을 수 없기 때문에 Lambda에서 환경 변수의 암호화를 해제할 수 없습니다. 함수의 KMS 키 설정을 확인하세요.  
HTTP 상태 코드: 502

 ** RecursiveInvocationException **   
Lambda가 다른 AWS 리소스와 함께 재귀 루프에서 함수가 간접적으로 호출되는 것을 감지하고 함수 간접 호출을 중지했습니다.  
HTTP 상태 코드: 400

 ** RequestTooLargeException **   
요청 페이로드가 `Invoke` 요청 본문 JSON 입력 할당량을 초과했습니다. 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.  
HTTP 상태 코드: 413

 ** ResourceConflictException **   
리소스가 이미 있거나 다른 작업이 진행 중입니다.  
HTTP 상태 코드: 409

 ** ResourceNotFoundException **   
요청에 지정된 리소스가 없습니다.  
HTTP 상태 코드: 404

 ** ResourceNotReadyException **   
함수가 비활성 상태이며 VPC 연결을 더 이상 사용할 수 없습니다. VPC 연결이 다시 설정될 때까지 기다렸다가 다시 시도하세요.  
HTTP 상태 코드: 502

 ** ServiceException **   
AWS Lambda 서비스에 내부 오류가 발생했습니다.  
HTTP 상태 코드: 500

 ** SnapStartException **   
`afterRestore()` [런타임 후크](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-runtime-hooks.html)에서 오류가 발생했습니다. 자세한 내용은 Amazon CloudWatch Logs를 참조하세요.  
HTTP 상태 코드: 400

 ** SnapStartNotReadyException **   
Lambda가 함수를 초기화하고 있습니다. [함수 상태가](https://docs.aws.amazon.com/lambda/latest/dg/functions-states.html) `Active`로 바뀌면 함수를 호출할 수 있습니다.  
HTTP Status Code: 409

 ** SnapStartTimeoutException **   
Lambda가 제한 시간 내에 스냅샷을 복원하지 못했습니다.  
HTTP 상태 코드: 408

 ** SubnetIPAddressLimitReachedException **   
 하나 이상의 구성된 서브넷에 사용 가능한 IP 주소가 없어 AWS Lambda가 Lambda 함수에 대한 VPC 액세스를 설정하지 못했습니다.  
HTTP 상태 코드: 502

 ** TooManyRequestsException **   
요청 처리량 제한을 초과했습니다. 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#api-requests)을 참조하세요.  
HTTP Status Code: 429

 ** UnsupportedMediaTypeException **   
`Invoke` 요청 본문의 콘텐츠 유형이 JSON이 아닙니다.  
HTTP 상태 코드: 415

## 참고
<a name="API_Invoke_SeeAlso"></a>

이 API를 언어별 AWS SDK 중 하나로 사용하는 방법에 대한 자세한 설명은 다음을 참조하세요.
+  [AWS Command Line Interface](https://docs.aws.amazon.com/goto/aws-cli/lambda-2015-03-31/Invoke) 
+  [AWS SDK for .NET](https://docs.aws.amazon.com/goto/DotNetSDKV3/lambda-2015-03-31/Invoke) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/lambda-2015-03-31/Invoke) 
+  [AWS SDK for Go](https://docs.aws.amazon.com/goto/SdkForGoV1/lambda-2015-03-31/Invoke) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/lambda-2015-03-31/Invoke) 
+  [JavaScript V3용 AWS SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/lambda-2015-03-31/Invoke) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/lambda-2015-03-31/Invoke) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/lambda-2015-03-31/Invoke) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/lambda-2015-03-31/Invoke) 