Invoke - AWS Lambda

Invoke

Lambda 함수를 호출합니다. 동기식(응답 대기) 또는 비동기식으로 함수를 호출할 수 있습니다. 함수를 비동기식으로 호출하려면 InvocationType을(를) Event(으)로 설정합니다.

동기식 호출에서는 함수 응답에 대한 세부 정보(오류 포함)가 응답 본문과 헤더에 포함됩니다. 두 호출 유형에 대한 자세한 내용은 실행 로그추적에서 찾을 수 있습니다.

오류가 발생하면 함수가 여러 번 호출될 수 있습니다. 재시도 동작은 오류 유형, 클라이언트, 이벤트 소스, 호출 유형에 따라 다릅니다. 예를 들어 함수를 비동기식으로 호출했는 데 오류를 반환한 경우 Lambda는 함수를 최대 두 번 더 실행합니다. 자세한 내용은 재시도 동작을 참조하세요.

비동기 호출의 경우 이벤트를 함수로 보내기 전에 Lambda가 이벤트를 대기열에 추가합니다. 대기열에 맞출 수 있는 함수의 용량이 충분하지 않으면 이벤트가 손실될 수 있습니다. 경우에 따라 오류가 발생하지 않더라도 함수가 동일한 이벤트를 여러 번 수신할 수 있습니다. 처리되지 않은 이벤트를 유지하려면 배달 못한 편지 대기열로 함수를 구성합니다.

API 응답의 상태 코드는 함수 오류를 반영하지 않습니다. 오류 코드는 권한 오류, 제한 오류 또는 함수의 코드 및 구성과 관련된 문제와 같이 함수가 실행되지 못하게 하는 오류를 위해 예약되어 있습니다. 예를 들어 함수 실행으로 계정 수준(ConcurrentInvocationLimitExceeded) 또는 함수 수준(ReservedFunctionConcurrentInvocationLimitExceeded)에서 동시성 한도가 초과되는 경우 Lambda는 TooManyRequestsException을(를) 반환합니다.

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

이 작업에는 lambda:InvokeFunction 작업에 대한 권한이 필요합니다.

요청 구문

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로 인코딩된 데이터의 최대 크기는 3583바이트입니다.

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-_]+))?

Required: Yes

InvocationType

다음 옵션 중 하나를 선택합니다.

  • RequestResponse(기본값) - 함수를 동기적으로 호출합니다. 함수가 응답을 반환하거나 시간이 초과할 때까지 연결을 열어 둡니다. API 응답에는 함수 응답 및 추가 데이터가 포함됩니다.

  • Event - 함수를 비동기적으로 호출합니다. 여러 번 실패한 이벤트를 함수의 배달 못한 편지 대기열로 보냅니다(구성된 경우). API 응답에는 상태 코드만 포함됩니다.

  • DryRun - 파라미터 값의 유효성을 검사하고, 사용자 또는 역할이 함수를 호출할 권한을 가졌는지 확인합니다.

유효한 값: Event | RequestResponse | DryRun

LogType

응답에 실행 로그를 포함하도록 Tail(으)로 설정합니다. 동기식으로 호출된 함수에만 적용됩니다.

유효한 값: None | Tail

Qualifier

함수의 게시된 버전을 호출하려면 버전 또는 별칭을 지정합니다.

길이 제약: 최소 길이는 1입니다. 최대 길이 128.

Pattern: (|[a-zA-Z0-9$_-]+)

요청 본문

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

Payload

Lambda 함수에 입력으로 제공하려는 JSON입니다.

응답 구문

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입니다. 최대 길이는 1,024입니다.

Pattern: (\$LATEST|[0-9]+)

FunctionError

존재하는 경우 함수 실행 중에 오류가 발생했음을 나타냅니다. 오류에 대한 세부 정보가 응답 페이로드에 포함됩니다.

LogResult

실행 로그의 마지막 4KB이며, base64로 인코딩됩니다.

응답에 다음 내용이 HTTP 본문으로 반환됩니다.

Payload

함수의 응답 또는 오류 객체입니다.

Errors

EC2AccessDeniedException

VPC 설정을 구성하려면 추가 권한이 필요합니다.

HTTP 상태 코드: 502

EC2ThrottledException

Lambda 함수에 제공된 실행 역할을 사용하여 Lambda 함수를 초기화하는 동안 AWS Lambda이(가) Amazon EC2에 의해 제한되었습니다.

HTTP 상태 코드: 502

EC2UnexpectedException

Lambda 함수를 설정하는 동안 AWS Lambda이(가) 예기치 않은 EC2 클라이언트 예외를 수신했습니다.

HTTP 상태 코드: 502

EFSIOException

연결된 파일 시스템을 읽거나 쓸 때 오류가 발생했습니다.

HTTP 상태 코드: 410

EFSMountConnectivityException

함수가 구성된 파일 시스템에 네트워크 연결을 수립할 수 없습니다.

HTTP 상태 코드: 408

EFSMountFailureException

권한 또는 구성 문제로 인해 함수가 구성된 파일 시스템을 마운트할 수 없습니다.

HTTP 상태 코드: 403

EFSMountTimeoutException

함수가 구성된 파일 시스템에 네트워크 연결을 수립할 수 있었지만 마운트 작업 시간이 초과되었습니다.

HTTP 상태 코드: 408

ENILimitReachedException

네트워크 인터페이스 제한에 도달했기 때문에 Lambda 함수 구성의 일부로 지정된 VPC에서 AWS Lambda이(가) Elastic Network Interface(ENI)를 생성하지 못했습니다.

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

KMS 액세스가 거부되었기 때문에 Lambda가 환경 변수를 복호화할 수 없습니다. Lambda 함수의 KMS 권한을 확인하세요.

HTTP 상태 코드: 502

KMSDisabledException

오류: 사용된 KMS 키가 비활성화되어 있으므로 Lambda가 환경 변수를 복호화할 수 없습니다. Lambda 함수의 KMS 키 설정을 확인하세요.

HTTP 상태 코드: 502

KMSInvalidStateException

오류: 사용된 KMS 키가 복호화에 대해 잘못된 상태에 있으므로 Lambda가 환경 변수를 복호화할 수 없습니다. 함수의 KMS 키 설정을 확인하세요.

HTTP 상태 코드: 502

KMSNotFoundException

KMS 키를 찾을 수 없기 때문에 Lambda가 환경 변수를 복호화할 수 없습니다. 함수의 KMS 키 설정을 확인하세요.

HTTP 상태 코드: 502

RequestTooLargeException

요청 페이로드가 Invoke 요청 본문 JSON 입력 제한을 초과했습니다. 자세한 내용은 제한을 참조하세요.

HTTP 상태 코드: 413

ResourceConflictException

리소스가 이미 있거나 다른 작업이 진행 중입니다.

HTTP 상태 코드: 409

ResourceNotFoundException

요청에 지정된 리소스가 없습니다.

HTTP 상태 코드: 404

ResourceNotReadyException

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

HTTP 상태 코드: 502

ServiceException

AWS Lambda 서비스에 내부 오류가 발생했습니다.

HTTP 상태 코드: 500

SubnetIPAddressLimitReachedException

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

HTTP 상태 코드: 502

TooManyRequestsException

요청 처리량 제한을 초과했습니다.

HTTP 상태 코드: 429

UnsupportedMediaTypeException

Invoke 요청 본문의 콘텐츠 유형이 JSON이 아닙니다.

HTTP 상태 코드: 415

참고 항목

이 API를 언어별 AWS SDK 중 하나로 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.