Notice
Recent Posts
Recent Comments
Link
투케이2K
230. (python/파이썬) [AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 GetFunction Lambda 함수 세부 정보 조회 본문
Python
230. (python/파이썬) [AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 GetFunction Lambda 함수 세부 정보 조회
투케이2K 2026. 3. 1. 10:07728x90
반응형
[개발 환경 설정]
개발 툴 : Aws / Lambda / Runtime Python 3.13
개발 언어 : python

[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Python
- 개발 툴 : Aws / Lambda / Runtime Python 3.13
- 개발 기술 : AWS Lambda 이벤트 동작 함수
- 사전) AWS Lambda 설명 :
>> Aws Lambda 는 서버 리스 FaaS 솔루션으로, 함수의 인스턴스를 실행하여 이벤트를 처리할 수 있습니다.
>> Aws Lambda 는 이벤트에 응답하여 코드를 실행 하고 해당 코드에 필요한 컴퓨팅 리소스를 자동으로 관리합니다.
- 사전) AWS GetFunction API 설명 :
>> GetFunction 는 Lambda 함수 (또는 특정 함수 버전/별칭) 에 대한 상세 정보를 조회하는 API입니다.
>> GetFunction API 를 호출하면 함수 메타데이터 + 배포 패키지 다운로드 URL (10분 유효) 등을 포함한 다양한 정보를 반환합니다.
>> GetFunction 주요 기능 :
- 함수 정보 조회 : 함수 이름, ARN, 메모리/타임아웃 설정, 역할(Role), 런타임 등 Configuration 정보를 반환합니다.
- 배포 패키지 다운로드 링크 제공 : Code.Location 필드에 10분간 유효한 다운로드 URL을 제공합니다.
- 동시성 설정 정보 : 예약된 동시 실행 수 (ReservedConcurrentExecutions) 정보를 포함할 수 있습니다.
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
# ========================================================================
# [Aws] : [boto3 모듈] : IAM 계정 정보 사용해 Lambda 함수 세부 정보 조회 수행 - GetFunction
# ========================================================================
# [참고] : API Gateway 와 연동 되어 Post 방식으로 Lambda 함수 호출 및 응답 값 반환 수행
# ========================================================================
"""
1. aws lambda python 3.13 런타임 환경 기반
2. boto3 모듈 기본 내장 AWS 사용 모듈
3. import ClientError : AWS SDK for Python 인 boto3 에서 발생할 수 있는 예외 중 하나로, AWS 서비스 호출 중 오류가 발생했을 때 사용됩니다
"""
# ========================================================================
import json
import os
import boto3
from botocore.exceptions import ClientError
from decimal import Decimal
def lambda_handler(event, context): # Lambda 호출 시 동작 되는 메인 함수
# [event , context 정보 디버깅 로그 출력]
print(f"DLOG = event : {event} / context {context}")
# [Return 반환 Json 변수 선언]
response = {
"statusCode" : 0,
"headers" : {},
"body" : ""
}
# [AWS IAM 계정 AccessKey, SecretKey 변수 선언]
iamAccessKey = "AK..A6"
iamSecretKey = "mP..5J"
iamRegion = "ap-northeast-2" # 서울 리전
# [명시적 인증 정보로 세션 생성]
session = boto3.Session(
aws_access_key_id=iamAccessKey,
aws_secret_access_key=iamSecretKey,
region_name = iamRegion
)
# [AWS 클라이언트 생성]
aws_client = session.client('lambda')
try:
# ---------------------------------------------
# ✅ [주요 에러 정리]
# ---------------------------------------------
# ResourceNotFoundException : 존재하지 않는 함수명/버전/에일리어스 요청 시
# ---------------------------------------------
# InvalidParameterValueException : FunctionName 형식/Qualifier가 유효하지 않은 경우 등 잘못된 파라미터
# ---------------------------------------------
# TooManyRequestsException : 호출이 과도할 때(서빙 한도 초과), 재시도(backoff) 필요
# ---------------------------------------------
# ServiceException : 내부 서비스 오류. 보통 재시도 시 복구
# ---------------------------------------------
# [요청 파라미터 생성]
functionName = 'device-queue-manager'
# [요청 수행]
aws_res = aws_client.get_function(FunctionName=functionName)
print(f"DLOG = aws_res : {aws_res}")
# [응답 데이터 파싱]
configuration = aws_res["Configuration"]
# [리턴 변수 삽입] : ApiGateWay 응답 반환 설정 : Lambda 통합 요청 사용
response["statusCode"] = 200
response["headers"] = {
"Content-Type": "application/json",
'Access-Control-Allow-Origin': '*', # CORS 허용 (필요 시)
}
response["body"] = json.dumps({
"getFunction": configuration
})
except ClientError as e: # AWS 서비스 호출 중 오류 발생 처리
error_code = e.response['Error']['Code']
error_message = e.response['Error']['Message']
# [리턴 변수 삽입]
response["statusCode"] = 400
response["headers"] = {
"Content-Type": "application/json",
'Access-Control-Allow-Origin': '*', # CORS 허용 (필요 시)
}
response["body"] = json.dumps(
{
"exception" : "ClientError",
"error_code" : error_code,
"error_message" : error_message
}
)
# [리턴 반환 수행]
return response
# ========================================================================
"""
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
},
"body": "{\"getFunction\": {\"FunctionName\": \"device-queue-manager\", \"FunctionArn\": \"arn:aws:lambda:ap-northeast-2:123456789012:function:device-queue-manager\", \"Runtime\": \"python3.9\", \"Role\": \"arn:aws:iam::123456789012:role/device-queue-manager-role\", \"Handler\": \"lambda_function.lambda_handler\", \"CodeSize\": 858, \"Description\": \"\", \"Timeout\": 3, \"MemorySize\": 128, \"LastModified\": \"2025-06-09T06:19:29.025+0000\", \"CodeSha256\": \"tBoKtKGrc=\", \"Version\": \"$LATEST\", \"Environment\": {\"Variables\": {\"SQS_QUEUE_URL\": \"https://sqs.ap-northeast-2.amazonaws.com/123456789012/store-status-queue\"}}, \"TracingConfig\": {\"Mode\": \"PassThrough\"}, \"RevisionId\": \"1c361055-23ea-40ac-a5d3-624344452f69\", \"State\": \"Active\", \"LastUpdateStatus\": \"Successful\", \"PackageType\": \"Zip\", \"Architectures\": [\"x86_64\"], \"EphemeralStorage\": {\"Size\": 512}, \"SnapStart\": {\"ApplyOn\": \"None\", \"OptimizationStatus\": \"Off\"}, \"RuntimeVersionConfig\": {\"RuntimeVersionArn\": \"arn:aws:lambda:ap-northeast-2::runtime:9af3f3c4a\"}, \"LoggingConfig\": {\"LogFormat\": \"Text\", \"LogGroup\": \"/aws/lambda/device-queue-manager\"}}}"
}
"""
# ========================================================================
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[자바스크립트 AWS Lambda 함수 세부 정보 조회 수행 - GetFunction]
https://kkh0977.tistory.com/8647
https://blog.naver.com/kkh0977/224193151696
[자바스크립트 AWS Lambda 함수 목록 리스트 조회 수행 - ListFunctions]
https://kkh0977.tistory.com/8645
https://blog.naver.com/kkh0977/224190780409
[Amazon API Gateway] Aws API Gateway 게이트웨이 설명 정리 - 중개 서버
https://blog.naver.com/kkh0977/223827753479
[Aws Lambda] Aws 사이트에서 생성 된 Lambda 람다 검증 함수 리스트 및 내용 소스 코드 확인 방법
https://blog.naver.com/kkh0977/223765198383
[AWS] Lambda 람다 함수 수행 errorType Sandbox.Timedout 에러 발생
https://blog.naver.com/kkh0977/223962778768
// --------------------------------------------------------------------------------------
728x90
반응형
'Python' 카테고리의 다른 글
Comments
