VPC Lattice에서 대상으로서 Lambda 함수 - Amazon VPC Lattice

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

VPC Lattice에서 대상으로서 Lambda 함수

Lambda 함수를 VPC Lattice 대상 그룹에 대상으로 등록하고 Lambda 함수에 대한 대상 그룹에 요청을 전달하도록 리스너 규칙을 구성할 수 있습니다. 서비스가 Lambda 함수를 대상으로 사용하는 대상 그룹에 요청을 전달하면 Lambda 함수를 호출하고 요청 콘텐츠를 Lambda 함수에 JSON 형식으로 전달합니다. 자세한 내용은 개발자 안내서의 Amazon VPC AWS Lambda Lattice와 함께 사용을 참조하십시오.AWS Lambda

제한 사항
  • Lambda 함수와 대상 그룹은 동일한 계정 및 동일한 리전에 있어야 합니다.

  • Lambda 함수에 전송할 수 있는 요청 본문의 최대 크기는 6MB입니다.

  • Lambda 함수가 전송할 수 있는 응답 JSON의 최대 크기는 6MB입니다.

  • 프로토콜은 HTTP 또는 HTTPS여야 합니다.

Lambda 함수 준비

다음 권장 사항은 와 함께 VPC Lattice 서비스에 Lambda 함수를 사용하는 경우에 적용됩니다.

Lambda 함수를 호출할 권한

대상 그룹을 생성하고 또는 를 사용하여 AWS Management Console Lambda 함수를 등록하면 VPC Lattice는 사용자를 대신하여 Lambda 함수 정책에 필요한 권한을 추가합니다. AWS CLI

다음 API 직접 호출을 사용하여 직접 권한을 추가할 수도 있습니다.

aws lambda add-permission \ --function-name lambda-function-arn-with-alias-name \ --statement-id vpc-lattice \ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn target-group-arn
Lambda 함수 버전 관리

대상 그룹당 하나의 Lambda 함수를 등록할 수 있습니다. Lambda 함수를 변경할 수 있는지 확인하고 VPC Lattice 서비스가 항상 현재 버전의 Lambda 함수를 호출하도록 하려면 Lambda 함수를 VPC Lattice 서비스에 등록할 때 함수 별칭을 생성하고 별칭을 함수 ARN에 포함시킵니다. 자세한 내용은 개발자 안내서의 Lambda 함수 버전 및 Lambda 함수의 별칭 생성을 참조하십시오.AWS Lambda

Lambda 함수에 대한 대상 그룹 생성

라우팅 요청에서 사용되는 대상 그룹을 만듭니다. 요청 콘텐츠가 해당 콘텐츠를 이 대상 그룹에 전달하는 작업이 포함된 리스너 규칙과 일치하는 경우 VPC Lattice 서비스는 등록된 Lambda 함수를 호출합니다.

콘솔을 사용하여 대상 그룹을 생성하고 Lambda 함수를 등록하는 방법
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 여세요.

  2. 탐색 창의 VPC Lattice에서 대상 그룹을 선택합니다.

  3. 대상 그룹 생성을 선택합니다.

  4. 대상 유형에서 Lambda 함수를 선택합니다.

  5. 대상 그룹 이름에 대상 그룹의 이름을 입력합니다.

  6. Lambda 이벤트 구조 버전에서 버전을 선택합니다. 자세한 정보는 VPC Lattice 서비스에서 이벤트 수신을 참조하세요.

  7. (선택 사항) 태그를 추가하려면 태그를 확장하고 새 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.

  8. 다음을 선택합니다.

  9. Lambda 함수에 대해 다음 중 하나를 수행합니다.

    • 기존 Lambda 함수를 선택합니다.

    • 새 Lambda 함수를 생성하고 선택합니다.

    • 나중에 Lambda 함수를 등록합니다.

  10. 대상 그룹 생성을 선택합니다.

AWS CLI를 사용하여 대상 그룹을 생성하고 Lambda 함수를 등록하는 방법

및 register-targets 명령을 사용하십시오. create-target-group

VPC Lattice 서비스에서 이벤트 수신

VPC Lattice 서비스는 HTTP 및 HTTPS를 통한 요청에 대한 Lambda 호출을 지원합니다. 서비스는 JSON 형식으로 이벤트를 전송하고 모든 요청에 X-Forwarded-For 헤더를 추가합니다.

Base64 인코딩

Base64 서비스는 content-encoding 헤더가 존재하고 콘텐츠 유형이 다음 중 하나가 아닌 경우 본문을 인코딩합니다.

  • text/*

  • application/json

  • application/xml

  • application/javascript

content-encoding 헤더가 없으면 Base64 인코딩은 콘텐츠 유형에 따라 다릅니다. 위 콘텐츠 유형의 경우 서비스는 Base64 인코딩 없이 본문을 있는 그대로 전송합니다.

이벤트 구조 형식

LAMBDA 유형의 대상 그룹을 생성하거나 업데이트할 때 Lambda 함수가 수신하는 이벤트 구조의 버전을 지정할 수 있습니다. 가능한 버전은 V1V2입니다.

예시 이벤트: V2
{ "version": "2.0", "path": "/", "method": "GET|POST|HEAD|...", "headers": { "header-key": ["header-value", ...], ... }, "queryStringParameters": { "key": ["value", ...] }, "body": "request-body", "isBase64Encoded": true|false, "requestContext": { "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a", "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c", "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09", "identity": { "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339", "type": "AWS_IAM", "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session", "principalOrgID": "o-50dc6c495c0c9188", "sessionName": "i-0c7de02a688bde9f7", "x509IssuerOu": "string", "x509SanDns": "string", "x509SanNameCn": "string", "x509SanUri": "string", "x509SubjectCn": "string" }, "region": "region", "timeEpoch": "1690497599177430" } }
body

요청의 본문. 프로토콜이 HTTP, HTTPS 또는 gRPC인 경우에만 표시됩니다.

headers

요청의 HTTP 상태. 프로토콜이 HTTP, HTTPS 또는 gRPC인 경우에만 표시됩니다.

identity

자격 증명 정보. 가능한 필드는 다음과 같습니다.

  • principal – 인증된 보안 주체. AWS 인증에 성공한 경우에만 표시됩니다.

  • principalOrgID – 인증된 보안 주체의 조직 ID. AWS 인증이 성공한 경우에만 표시됩니다.

  • sessionName – 인증된 사용자의 사용자 이름. AWS 인증이 성공한 경우에만 표시됩니다.

  • sourceVpcArn – 요청이 시작된 VPC의 ARN. 소스 VPC를 식별할 수 있는 경우에만 표시됩니다.

  • type— 값은 AWS_IAM AWS 인증 정책을 사용하고 인증에 성공했는지 여부입니다.

Roles Anywhere 보안 인증을 사용하고 인증에 성공하면 가능한 필드는 다음과 같습니다.

  • x509IssuerOu – 발급자(OU).

  • x509SanDns – 주체 대체 이름(DNS).

  • x509SanNameCn – 발급자 대체 이름(이름/CN).

  • x509SanUri – 주체 대체 이름(URI).

  • x509SubjectCn – 주체 이름(CN).

isBase64Encoded

본문이 base64로 인코딩되었는지 여부를 나타냅니다. 프로토콜이 HTTP, HTTPS 또는 gRPC이고 요청 본문이 아직 문자열이 아닌 경우에만 표시됩니다.

method

요청의 HTTP 메서드. 프로토콜이 HTTP, HTTPS 또는 gRPC인 경우에만 표시됩니다.

path

요청의 경로. 프로토콜이 HTTP, HTTPS 또는 gRPC인 경우에만 표시됩니다.

queryStringParameters

HTP 쿼리 문자열 파라미터. 프로토콜이 HTTP, HTTPS 또는 gRPC인 경우에만 표시됩니다.

serviceArn

요청을 수신하는 서비스의 ARN.

serviceNetworkArn

요청을 전달하는 서비스 네트워크의 ARN.

targetGroupArn

요청을 수신하는 대상 그룹의 ARN.

timeEpoch

시간(초 단위).

예시 이벤트: V1
{ "raw_path": "/path/to/resource", "method": "GET|POST|HEAD|...", "headers": {"header-key": "header-value", ... }, "query_string_parameters": {"key": "value", ...}, "body": "request-body", "is_base64_encoded": true|false }

VPC Lattice 서비스에 응답

Lambda 함수의 응답에는 Base64 인코딩 상태, 상태 코드 및 헤더가 포함됩니다. 본문을 생략할 수 있습니다.

응답의 본문에 바이너리 콘텐츠를 포함시키려면 콘텐츠를 Base64로 인코딩하고 isBase64Encodedtrue롤 설정해야 합니다. 서비스는 콘텐츠를 디코딩하여 바이너리 콘텐츠를 수신하고 이 콘텐츠를 HTTP 응답의 본문으로 클라이언트에 전송합니다.

VPC Lattice 서비스는 또는 와 같은 hop-by-hop 헤더를 존중하지 않습니다. Connection Transfer-Encoding 응답을 클라이언트에 전송하기 전에 서비스가 컴퓨팅하기 때문에 Content-Length 헤더를 생략할 수 있습니다.

다음은 Lambda 함수의 응답 예시입니다.

{ "isBase64Encoded": false, "statusCode": 200, "statusDescription": "200 OK", "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }

다중 값 헤더

기본적으로 VPC Lattice는 클라이언트의 요청 또는 Lambda 함수의 응답에 다중 값이 있는 헤더가 포함되거나 동일한 헤더가 여러 번 포함되는 경우 지원합니다. 또한 VPC Lattice는 동일한 키에 대해 여러 값이 있는 쿼리 파라미터를 지원합니다.

요청 헤더의 경우 여러 파라미터가 동일한 이름을 공유하는 경우 VPC Lattice는 두 값을 모두 대상에 전달합니다. 다음 예시는 두 개별 헤더의 이름이 header 1인 경우입니다.

header1 = foo header1 = bar

그런 다음 VPC Lattice는 두 값을 모두 대상으로 전송합니다.

"header1": ["foo", "bar"]

쿼리 문자열의 경우 여러 파라미터가 같은 이름을 공유하는 경우 마지막 값이 우선합니다. 즉, 파라미터는 동일한 키 이름을 공유하는 경우 단일 값에 _not_ coalesced 처리됩니다.

다음 예시는 이름이 QS1로 같은 파라미터의 값이 foobar인 경우입니다.

http://www.example.com?&QS1=foo&QS1=bar

그런 다음 VPC Lattice는 마지막 값을 대상으로 전송합니다.

"QS1": "bar"

Lambda 함수 등록 취소

트래픽을 Lambda 함수에 더 이상 전송할 필요가 없는 경우 해당 함수의 등록을 취소할 수 있습니다. Lambda 함수의 등록을 취소한 후에는 처리 중인 요청이 HTTP 5XX 오류와 함께 실패합니다.

Lambda 함수를 바꾸려면 새 대상 그룹을 생성하고, 새 함수를 새 대상 그룹에 등록한 다음, 새 대상 그룹을 기존 대상 그룹 대신 사용하도록 리스너 규칙을 업데이트하는 것이 좋습니다.

콘솔을 사용하여 Lambda 함수의 등록을 취소하는 방법
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 여세요.

  2. 탐색 창의 VPC Lattice에서 대상 그룹을 선택합니다.

  3. 대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.

  4. 대상 탭에서 등록 취소를 선택합니다.

  5. 확인 메시지가 나타나면 confirm을 입력한 다음 등록 취소를 선택합니다.

를 사용하여 Lambda 함수를 등록 취소하려면 AWS CLI

deregister-targets 명령을 사용합니다.