투케이2K

167. (python/파이썬) [AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 AWS 특정 Thing 사물 인증서 정보 확인 본문

Python

167. (python/파이썬) [AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 AWS 특정 Thing 사물 인증서 정보 확인

투케이2K 2025. 8. 14. 19:38
728x90
반응형

[개발 환경 설정]

개발 툴 : Aws / Lambda / Runtime Python 3.13

개발 언어 : python

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Python


- 개발 툴 : Aws / Lambda / Runtime Python 3.13


- 개발 기술 : AWS Lambda 이벤트 동작 함수


- 사전) AWS Lambda 설명 : 

  >> Aws Lambda 는 서버 리스 FaaS 솔루션으로, 함수의 인스턴스를 실행하여 이벤트를 처리할 수 있습니다

  >> Aws Lambda 는 이벤트에 응답하여 코드를 실행 하고 해당 코드에 필요한 컴퓨팅 리소스를 자동으로 관리합니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

# ========================================================================
# [Aws] : [boto3 모듈] : IAM 계정 정보 사용해 Iot Core 특정 Thing 사물 인증서 정보 확인
# ========================================================================
"""
1. aws lambda python 3.13 런타임 환경 기반
2. boto3 모듈 기본 내장 AWS 사용 모듈
3. import ClientError : AWS SDK for Python 인 boto3 에서 발생할 수 있는 예외 중 하나로, AWS 서비스 호출 중 오류가 발생했을 때 사용됩니다
"""
# ========================================================================

import json

import boto3
from botocore.exceptions import ClientError

def lambda_handler(event, context):

    # [event , context 정보 디버깅 로그 출력]
    print(f"DLOG = event : {event} / context {context}")


    # [Return 반환 Json 변수 선언]
    response = {
        "statusCode" : 0,
        "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('iot')


    # [AWS 서비스 호출 수행]
    try:

        # [사물 인증서 ID 입력]
        certId='f2..be7' 


        # [describe_certificate 호출 수행]
        awsRes = aws_client.describe_certificate(certificateId=certId)

        print(f"DLOG = awsRes : {json.dumps(awsRes, default=str)}")


        # [certificateDescription 정보 파싱 수행]
        certificateDescription = {
            "certificateArn": awsRes["certificateDescription"]["certificateArn"],
            "certificateId": awsRes["certificateDescription"]["certificateId"],
            "status": awsRes["certificateDescription"]["status"],
            "certificatePem": awsRes["certificateDescription"]["certificatePem"],
            "creationDate": awsRes["certificateDescription"]["creationDate"].isoformat(),
            "lastModifiedDate": awsRes["certificateDescription"]["lastModifiedDate"].isoformat()
        }    


        # [리턴 변수 삽입]
        response["statusCode"] = awsRes["ResponseMetadata"]["HTTPStatusCode"] # [ResponseMetadata 에서 파싱해서 사용]
        response["body"] = {
            "certificateDescription": certificateDescription
        }
        
    except ClientError as e: # AWS 서비스 호출 중 오류 발생 처리
        error_code = e.response['Error']['Code']
        error_message = e.response['Error']['Message']

        # [리턴 변수 삽입]
        response["statusCode"] = 400
        response["body"] = {
            "exception" : "ClientError",
            "error_code" : error_code,
            "error_message" : error_message
        }


    # [리턴 반환 수행]
    return response

# ========================================================================
"""
Response:
{
  "statusCode": 200,
  "body": {
    "certificateDescription": {
      "certificateArn": "arn:aws:iot:ap-northeast-2:123456789012:cert/f2..be7",
      "certificateId": "f2..be7",
      "status": "ACTIVE",
      "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWT..t7hoywd\n-----END CERTIFICATE-----\n",
      "creationDate": "2025-02-10T06:55:53.321000+00:00",
      "lastModifiedDate": "2025-02-10T06:55:56.536000+00:00"
    }
  }
}
"""
# ========================================================================

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Amazon API Gateway] Aws API Gateway 게이트웨이 설명 정리 - 중개 서버

https://blog.naver.com/kkh0977/223827753479


[Amazon API Gateway] Aws API Gateway 게이트웨이 API 엔드포인트 유형 정리

https://blog.naver.com/kkh0977/223911565693


[Aws Lambda] Aws 사이트에서 생성 된 Lambda 람다 검증 함수 리스트 및 내용 소스 코드 확인 방법

https://blog.naver.com/kkh0977/223765198383


[AWS] Lambda 람다 함수 수행 errorType Sandbox.Timedout 에러 발생

https://blog.naver.com/kkh0977/223962778768

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments