Invoke
Lambda 함수를 호출합니다. 동기식(응답 대기) 또는 비동기식으로 함수를 호출할 수 있습니다. 기본적으로 Lambda는 함수를 동기식으로 간접적으로 호출합니다(예: InvocationType
은 RequestResponse
임). 함수를 비동기식으로 호출하려면 InvocationType
을(를) Event
(으)로 설정합니다. Lambda는 동기식 호출에 대해서만 ClientContext
객체를 함수에 전달합니다.
동기식 호출에서는 함수 응답에 대한 세부 정보(오류 포함)가 응답 본문과 헤더에 포함됩니다. 두 호출 유형에 대한 자세한 내용은 실행 로그 및 추적에서 찾을 수 있습니다.
오류가 발생하면 함수가 여러 번 호출될 수 있습니다. 재시도 동작은 오류 유형, 클라이언트, 이벤트 소스, 호출 유형에 따라 다릅니다. 예를 들어 함수를 비동기식으로 호출했는 데 오류를 반환한 경우 Lambda는 함수를 최대 두 번 더 실행합니다. 자세한 내용은 Lambda에서 오류 처리 및 자동 재시도를 참조하세요.
비동기 호출의 경우 이벤트를 함수로 보내기 전에 Lambda가 이벤트를 대기열에 추가합니다. 대기열에 맞출 수 있는 함수의 용량이 충분하지 않으면 이벤트가 손실될 수 있습니다. 경우에 따라 오류가 발생하지 않더라도 함수가 동일한 이벤트를 여러 번 수신할 수 있습니다. 처리되지 않은 이벤트를 유지하려면 배달 못한 편지 대기열로 함수를 구성합니다.
API 응답의 상태 코드는 함수 오류를 반영하지 않습니다. 오류 코드는 권한 오류, 할당량 오류 또는 함수의 코드 및 구성과 관련된 문제와 같이 함수가 실행되지 못하게 하는 오류를 위해 예약되어 있습니다. 예를 들어 함수 실행으로 계정 수준(ConcurrentInvocationLimitExceeded
) 또는 함수 수준(ReservedFunctionConcurrentInvocationLimitExceeded
)에서 동시성 한도가 초과되는 경우 Lambda는 TooManyRequestsException
을(를) 반환합니다.
제한 시간이 긴 함수의 경우 클라이언트는 응답을 기다릴 때 동기식 호출 중 연결이 해제될 수 있습니다. HTTP 클라이언트, SDK, 방화벽, 프록시 또는 운영 체제에서 제한 시간과의 장시간 연결 또는 연결 유지 설정을 감안하도록 구성합니다.
이 작업에는 lambda:InvokeFunction 작업에 대한 권한이 필요합니다. 교차 계정 호출에 대한 권한을 설정하는 방법에 대한 자세한 내용은 함수에 다른 계정에 대한 액세스 권한 부여를 참조하세요.
Request Syntax
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 요청 파라미터
요청은 다음 URI 파라미터를 사용합니다.
- ClientContext
-
컨텍스트 객체의 함수에 전달할 호출 클라이언트의 경우 base64로 인코딩된 데이터의 최대 크기는 3,583바이트입니다. Lambda는 동기식 호출에 대해서만
ClientContext
객체를 함수에 전달합니다. - FunctionName
-
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
-
다음 옵션 중 하나를 선택합니다.
-
RequestResponse
(기본값) - 함수를 동기적으로 호출합니다. 함수가 응답을 반환하거나 시간이 초과할 때까지 연결을 열어 둡니다. API 응답에는 함수 응답 및 추가 데이터가 포함됩니다. -
Event
- 함수를 비동기적으로 호출합니다. 여러 번 실패한 이벤트를 함수의 배달 못한 편지 대기열로 보냅니다(구성된 경우). API 응답에는 상태 코드만 포함됩니다. -
DryRun
- 파라미터 값의 유효성을 검사하고, 사용자 또는 역할이 함수를 호출할 권한을 가졌는지 확인합니다.
유효한 값:
Event | RequestResponse | DryRun
-
- LogType
-
응답에 실행 로그를 포함하도록
Tail
(으)로 설정합니다. 동기식으로 호출된 함수에만 적용됩니다.유효한 값:
None | Tail
- Qualifier
-
함수의 게시된 버전을 호출하려면 버전 또는 별칭을 지정합니다.
길이 제약: 최소 길이는 1입니다. 최대 길이 128.
Pattern:
(|[a-zA-Z0-9$_-]+)
요청 본문
요청은 다음의 이진 데이터를 허용합니다.
- Payload
-
Lambda 함수에 입력으로 제공하려는 JSON입니다.
JSON을 직접 입력할 수 있습니다. 예:
--payload '{ "key": "value" }'
. 파일 경로를 지정할 수도 있습니다. 예:--payload file://payload.json
.
Response Syntax
HTTP/1.1 StatusCode
X-Amz-Function-Error: FunctionError
X-Amz-Log-Result: LogResult
X-Amz-Executed-Version: ExecutedVersion
Payload
응답 요소
작업이 성공하면 서비스가 다음 HTTP 응답을 다시 전송합니다.
- StatusCode
-
요청이 성공한 경우 HTTP 상태 코드가 200 범위에 있습니다.
RequestResponse
호출 유형의 경우 이 상태 코드는 200입니다.Event
호출 유형의 경우 이 상태 코드는 202입니다.DryRun
호출 유형의 경우 이 상태 코드는 204입니다.
응답에 다음 HTTP 헤더가 반환됩니다.
- ExecutedVersion
-
실행된 함수의 버전입니다. 별칭이 있는 함수를 호출할 경우 이는 별칭이 귀결된(resolved) 버전을 나타냅니다.
길이 제약: 최소 길이는 1입니다. 최대 길이는 1024입니다.
Pattern:
(\$LATEST|[0-9]+)
- FunctionError
-
존재하는 경우 함수 실행 중에 오류가 발생했음을 나타냅니다. 오류에 대한 세부 정보가 응답 페이로드에 포함됩니다.
- LogResult
-
실행 로그의 마지막 4KB이며, base64로 인코딩됩니다.
응답은 다음 내용을 HTTP 본문으로 반환합니다.
- Payload
-
함수의 응답 또는 오류 객체입니다.
Errors
모든 작업에서 발생하는 일반적인 오류에 대한 자세한 내용은 일반적인 오류 섹션을 참조하세요.
- 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 할당량을 참조하세요.
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 할당량을 참조하세요.HTTP 상태 코드: 413
- ResourceConflictException
-
리소스가 이미 있거나 다른 작업이 진행 중입니다.
HTTP 상태 코드: 409
- ResourceNotFoundException
-
요청에 지정된 리소스가 없습니다.
HTTP 상태 코드: 404
- ResourceNotReadyException
-
함수가 비활성 상태이며 VPC 연결을 더 이상 사용할 수 없습니다. VPC 연결이 다시 설정될 때까지 기다렸다가 다시 시도하세요.
HTTP 상태 코드: 502
- ServiceException
-
AWS Lambda 서비스에 내부 오류가 발생했습니다.
HTTP 상태 코드: 500
- SnapStartException
-
afterRestore()
런타임 후크에서 오류가 발생했습니다. 자세한 내용은 Amazon CloudWatch Logs를 참조하세요.HTTP 상태 코드: 400
- SnapStartNotReadyException
-
Lambda가 함수를 초기화하고 있습니다. 함수 상태가
Active
로 바뀌면 함수를 호출할 수 있습니다.HTTP Status Code: 409
- SnapStartTimeoutException
-
Lambda가 제한 시간 내에 스냅샷을 복원하지 못했습니다.
HTTP 상태 코드: 408
- SubnetIPAddressLimitReachedException
-
하나 이상의 구성된 서브넷에 사용 가능한 IP 주소가 없어 AWS Lambda가 Lambda 함수에 대한 VPC 액세스를 설정하지 못했습니다.
HTTP 상태 코드: 502
- TooManyRequestsException
-
요청 처리량 제한을 초과했습니다. 자세한 내용은 Lambda 할당량을 참조하세요.
HTTP Status Code: 429
- UnsupportedMediaTypeException
-
Invoke
요청 본문의 콘텐츠 유형이 JSON이 아닙니다.HTTP 상태 코드: 415
참고
이 API를 언어별 AWS SDK 중 하나로 사용하는 방법에 대한 자세한 설명은 다음을 참조하세요.