Lambda 함수를 Application Load Balancer의 대상으로 구성하고 관련 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Lambda 함수를 Application Load Balancer의 대상으로 구성하고 발생할 수 있는 문제를 해결하는 방법을 알고 있어야 합니다.

해결 방법

Elastic Load Balancing은 Lambda 함수를 대상으로 사용하여 Application Load Balancers의 요청을 처리할 수 있도록 지원합니다. 자세한 내용은 Application Load Balancers와 함께 AWS Lambda 사용을 참조하세요.

1단계: Lambda 함수 생성

1.    Lambda 콘솔에서 함수 페이지를 엽니다.

2.    함수 생성을 선택합니다.

3.    처음 작성자를 선택합니다.

4.    함수 이름을 입력합니다.

5.    런타임 드롭다운에서 이 시나리오의 런타임으로 Python 3.9를 선택합니다.

6.    실행 역할에서 기본 Lambda 권한으로 새 역할 생성을 선택합니다.

참고: 실행 역할에 대한 자세한 내용은 Lambda 실행 역할을 참조하세요.

7.    함수 생성을 선택합니다.

8.    함수를 생성한 후 코드 탭을 선택합니다. 코드 소스 섹션에서 기존 함수 코드를 다음 코드로 바꿉니다.

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.    배포를 선택합니다.

2단계: Lambda 함수의 대상 그룹 생성

참고: 자세한 내용은 1단계를 참조하세요: 대상 그룹을 구성합니다.

1.    Amazon EC2 콘솔을 엽니다.

2.    탐색 창에 있는 로드 밸런싱에서 대상 그룹을 선택합니다.

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

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

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

6.    (선택 사항) 상태 확인을 켜려면 상태 확인 섹션에서 활성화를 선택합니다.

7.    (선택 사항) 다음과 같이 하나 이상의 태그를 추가합니다.

  • 태그 섹션을 확장합니다.
  • 태그 추가를 선택합니다.
  • 태그 키와 태그 값을 입력합니다.

8.    다음을 선택합니다.

9.    Lambda 함수를 대상으로 선택합니다.
-또는-
나중에 함수 추가를 선택하여 Lambda 함수를 나중에 지정합니다.

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

참고: Lambda 함수를 호출할 수 있는 로드 밸런서 권한은 대상 그룹을 생성하고 함수를 등록하는 데 사용된 방법에 따라 다르게 부여됩니다. 자세한 내용은 Lambda 함수 호출 권한을 참조하세요.

3단계: 로드 밸런서 및 리스너 구성

로드 밸런서와 리스너를 구성하려면 3단계의 단계를 따르십시오: 로드 밸런서 및 리스너를 구성합니다.

4단계: 로드 밸런서 테스트

로드 밸런서를 테스트하려면 4단계의 단계를 따르십시오. 로드 밸런서를 테스트합니다. 설정이 작동하는 경우 브라우저에 **“Hello from Lambda!”**라는 메시지가 표시됩니다.

참고: Lambda 함수의 상태 확인을 켜지 않은 경우 상태를 사용할 수 없습니다. 로드 밸런서는 Application Load Balancers의 대상인 Lambda 함수에 영향을 주지 않으므로 상태 확인 없이 테스트할 수 있습니다.

대상으로서의 Lambda 함수의 한계

대상으로서의 Lambda 함수의 제한에 대한 자세한 내용은 Lambda 함수를 대상으로 사용을 참조하고 한계 아래의 정보를 검토하세요.

Lambda 대상 그룹은 단일 Lambda 함수 대상으로 제한됩니다. 자세한 내용은 Lambda 함수 준비를 참조하세요.

대상으로서의 Lambda 함수의 일반적인 오류

“연결 시간이 초과되었습니다.”

이 오류는 로드 밸런서의 보안 그룹이 리스너 포트의 트래픽을 허용하지 않음을 나타냅니다. 이 오류를 해결하려면 보안 그룹을 관리하고 보안 그룹의 인바운드 규칙이 리스너 포트에서 들어오는 트래픽을 허용하는지 확인하세요. ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html)보안 그룹은 상태 유지이므로[ 보안 그룹에는 아웃바운드 규칙이 필요하지 않습니다. 허용된 인바운드 트래픽에 대한 응답은 아웃바운드 규칙에 관계없이 유출될 수 있습니다.

“대상 그룹을 찾을 수 없습니다.”

이 오류는 대상 그룹이 삭제되었음을 나타냅니다. 이 오류를 해결하려면 삭제된 대상 그룹을 사용하여 리소스 정책을 삭제하세요. 리소스 정책을 삭제하면 트리거가 제거됩니다.

1.    Lambda 콘솔에서 함수 페이지를 엽니다.

2.    대상 그룹과 관련된 Lambda 함수를 선택합니다.

3.    구성 탭을 선택한 다음 권한을 선택합니다.

4.    아래로 스크롤하여 리소스 기반 정책 설명 섹션으로 이동한 다음 제거할 정책을 선택합니다.

5.    삭제를 선택한 다음 경고 알림에서 삭제를 선택하여 리소스 정책에서 정책 설명을 영구적으로 삭제할 것인지 결정합니다.

다음 권한 제거 AWS Command Line Interface(AWS CLI) 명령을 사용하여 리소스 기반 정책을 제거할 수도 있습니다.

참고: 다음 명령에서EXAMPLE_FUNCTION을 사용자의 Lambda 함수 이름으로 바꾸고 EXAMPLE_ID를 사용자의 명령문 ID로 바꿉니다.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

“RegisterTargets 작업을 호출할 때 오류가 발생했습니다(액세스가 거부됨). elasticloadbalancing 보안 주체에게는 대상 그룹에서 arn을 호출할 권한이 <Lambda ARN> 없습니다. <Target Group ARN>"

Lambda 함수에 대한 요청이 실패하면 로드 밸런서는 액세스 로그의 error_reason 필드에 사유 코드를 저장합니다. 또한 로드 밸런서는 해당 Amazon CloudWatch 지표를 증가시킵니다. 자세한 내용은 오류 원인 코드를 참조하세요.

AWS CLI를 사용하여 Lambda 함수를 대상으로 등록합니다. 권한 추가 AWS CLI 명령을 사용하여 Lambda 함수를 호출할 수 있는 Elastic Load Balancing 권한을 부여합니다.

대상으로서의 Lambda 함수의 오류

“이 기능과 관련된 새로운 지표(LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes and StandardProcessedBytes)는 ELB 콘솔 모니터링 패널에서 사용할 수 없습니다.“

Amazon CloudWatch 콘솔에서 새로운 Lambda 지표에 액세스할 수 있습니다.

“새로운 ModifyTargetGroup API를 사용하면 120초 상태 확인 제한 시간 값을 구성할 수 있지만 ELB 콘솔에서는 60초 이상의 큰 값을 허용하지 않습니다.“

상태 확인 제한 시간을 60초 이상으로 크게 구성하려면 AWS CLI를 통해 ModifyTargetGroup API를 호출하세요. 값을 최대 120초까지 구성할 수 있습니다.

대상 그룹 modify-target-group 예:

참고: 다음 명령에서EXAMPLE_TARGET_GROUP_ARN을 사용자의 대상 그룹 ARN으로 바꾸고 EXAMPLE_REGION을 사용자의 AWS 리전 코드로 바꿉니다.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

관련 정보

대상으로서의 Lambda 함수

Lambda 함수 버저닝 및 별칭

별칭을 사용한 트래픽 이동

AWS 공식
AWS 공식업데이트됨 일 년 전