내용으로 건너뛰기

AWS 리전에서 동시성이 프로비저닝되고 예약된 Lambda 함수를 나열하려면 어떻게 해야 합니까?

4분 분량
0

AWS 리전 내에서 동시성이 예약되고 프로비저닝된 AWS Lambda 함수를 나열하고 싶습니다.

해결 방법

Lambda 콘솔에는 동시성이 예약되고 프로비저닝되도록 구성된 Lambda 함수가 표시되지 않습니다. Lambda Python 스크립트를 사용하여 특정 AWS 리전의 대상으로 프로비저닝되고 예약된 동시성이 있는 함수를 나열할 수 있습니다.

사전 요구 사항

Lambda 함수의 AWS Identity and Access Management(IAM) 역할에 다음과 같은 권한이 있는지 확인하십시오.

  • lambda:GetFunctionConcurrency
  • lambda:ListFunctions
  • lambda:ListProvisionedConcurrencyConfigs

Lambda 함수를 위한 IAM 역할 생성

다음 단계를 완료하십시오.

  1. 사용자에게 다음과 같은 권한이 있는 IAM 역할이 있는지 확인합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateRole",
            "iam:PassRole"
          ],
          "Resource": "*"
        }
      ]
    }
  2. IAM 콘솔에 로그인합니다.

  3. 왼쪽 탐색 창에서 역할을 선택합니다.

  4. 역할 만들기 버튼을 선택합니다.

  5. 신뢰할 수 있는 엔터티 유형 선택 섹션에서 AWS 서비스를 선택한 다음 사용 사례로 Lambda를 선택합니다. 다음: 권한 버튼을 선택합니다.

  6. AWSLambdaBasicExecutionRole 정책을 검색한 다음 선택합니다. 이 정책은 Lambda 함수에 기본 실행 권한을 부여합니다.

  7. 다음과 같이 필요한 사용자 지정 권한을 연결합니다.

    새 브라우저 탭 또는 창에서 정책 생성을 선택하여 역할 생성 프로세스를 그대로 유지합니다.

    정책 생성 도구에서 JSON 탭으로 전환하고 다음 정책 문서를 입력합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "lambda:GetFunctionConcurrency",
            "lambda:ListFunctions",
            "lambda:ListProvisionedConcurrencyConfigs"
          ],
          "Resource": "*"
        }
      ]
    }
  8. 정책 미리 보기를 선택하고 정책 이름(예: LambdaConcurrencyPermissions)을 지정한 다음 정책 생성을 선택합니다.

  9. 역할 생성 탭 또는 창으로 돌아갑니다. (필요한 경우) 정책 목록을 새로 고친 다음 이름을 검색하고 선택하여 방금 생성한 정책을 연결합니다.

  10. (선택 사항) 다음: 태그를 선택합니다. 필요한 경우 태그를 추가하고 다음: 검토를 선택합니다.

  11. 역할 이름을 지정합니다(예: LambdaExecutionRoleWithConcurrencyPermissions). 역할을 검토한 다음 역할 생성을 선택합니다.

Lambda 함수 생성

다음 단계를 완료하십시오.

  1. AWS Lambda 콘솔을 엽니다.
  2. 함수 생성 버튼을 선택합니다.
  3. 새로 작성 섹션으로 이동합니다.
  4. 함수 이름 필드에 Lambda 함수의 이름을 입력합니다.
  5. 런타임으로 Python 3.10을 선택합니다.
  6. 권한 섹션의 기본 실행 역할 변경에서 기존 역할 사용을 선택합니다.
  7. 기존 역할 드롭다운 목록에서 이전 단계에서 생성한 IAM 역할을 선택합니다.
  8. 역할을 선택한 후 함수 생성을 선택합니다.

다음 코드를 사용하여 기본 Lambda 함수 코드를 대체합니다.

import json
import boto3

def lambda_handler(event, context):
    # Select the region you would like to list function concurrency
    region = "region"

    lambda_client = boto3.client('lambda', region_name=region)
    count = 0

    # Create a paginator for the 'list_functions' operation.
    paginator = lambda_client.get_paginator('list_functions')
    lambda_iterator = paginator.paginate()

    # For loop to iterate through listed functions and return function name and concurrency response
    for items in lambda_iterator:
        for function in items['Functions']:
            function_name = function['FunctionName']

            try:
                response = lambda_client.get_function_concurrency(
                    FunctionName=function_name
                )

                # If reserved concurrency is configured, print the details
                if 'ReservedConcurrentExecutions' in response:
                    count += 1
                    reserved_concurrency = response['ReservedConcurrentExecutions']
                    print(f"{count}. Function Name: {function_name}, Reserved Concurrency: {reserved_concurrency}")

            except lambda_client.exceptions.ResourceNotFoundException:
                # If the function is not found, skip it
                pass
            except Exception as e:
                print(f"Error retrieving concurrency for {function_name}: {e}")

            try:
                response = lambda_client.list_provisioned_concurrency_configs(
                    FunctionName=function_name
                )

                # If provisioned concurrency is configured, print the details
                if 'ProvisionedConcurrencyConfigs' in response and response['ProvisionedConcurrencyConfigs']:
                    provisioned_concurrency = response['ProvisionedConcurrencyConfigs'][0]['RequestedProvisionedConcurrentExecutions']
                    count += 1
                    print(f"{count}. Function Name: {function_name}, Provisioned Concurrency: {provisioned_concurrency}")

            except lambda_client.exceptions.ResourceNotFoundException:
                # If the function is not found, skip it
                pass
            except Exception as e:
                print(f"Error retrieving provisioned concurrency for {function_name}: {e}")

코드는 각 Lambda 함수를 통해 반복됩니다. 이 함수는 get_function_concurrency 메서드를 호출하여 지정된 AWS 리전의 각 함수에 대해 예약되거나 프로비저닝된 동시성 구성에 대한 세부 정보를 검색합니다.

함수 코드를 원하는 대상 AWS 리전으로 업데이트합니다.

Lambda 함수를 사용하기 전에 동시성이 프로비저닝되고 예약된 함수를 나열하려는 위치로 리전을 업데이트하십시오.

예를 들어, us-east-1 AWS 리전의 Lambda 함수에 대해 예약되고 프로비저닝된 동시성을 보려면 아래와 같이 region 변수를 업데이트합니다.

region = "us-east-1"

Lambda 함수 실행

생성한 Lambda 함수를 실행하려면 테스트 탭으로 이동합니다. 그런 다음 아래 표시된 단계를 따릅니다.

  1. Lambda 함수에서 테스트 탭을 선택합니다.
  2. 테스트 이벤트 구성 대화 상자에서 예제 이벤트 템플릿을 사용하여 테스트를 실행합니다.
  3. 테스트의 이벤트 이름(예: 테스트)을 입력합니다.
  4. 테스트 이벤트를 생성하려면 저장을 선택합니다.
  5. 완료되면 테스트를 선택하여 테스트를 실행합니다.

함수 로그에서 출력값 목록을 볼 수 있습니다. 또는 테스트 탭에서 동시성이 예약되거나 프로비저닝된 Lambda 함수의 목록을 볼 수 있습니다. 목록에는 다음 데이터가 포함됩니다.

  • 함수 이름
  • 구성된 동시성 유형
  • 구성된 동시성 수

출력 예시:

1. Function Name: ProvisionedConcurrencyTest, Provisioned Concurrency: 10
2. Function Name: ReservedConcurrencyTest, Reserved Concurrency: 50

관련 정보

콘솔을 사용하여 Lambda 함수 생성

AWS 공식업데이트됨 2년 전