Notice
Recent Posts
Recent Comments
Link
투케이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:38728x90
반응형
[개발 환경 설정]
개발 툴 : 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
반응형
'Python' 카테고리의 다른 글
Comments
