Invoke - AWS Lambda

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 중 하나로 사용하는 방법에 대한 자세한 설명은 다음을 참조하세요.