About me
home
Portfolio
home

Lambda

Lambda 함수가 실행되어 이벤트가 발생하면 중지된 EC2 인스턴스를 다시 실행하는 방식을 구현하기 위해 아래와 같은 접근 방법을 고려할 수 있다:
AWS Lambda와 AWS Systems Manager를 사용:
Lambda 함수를 작성하여 이벤트를 처리하고, AWS Systems Manager의 start-instances 명령을 사용하여 중지된 EC2 인스턴스를 시작한다.
import boto3 def lambda_handler(event, context): # S3 이벤트 정보 확인 for record in event['Records']: # 이미지의 S3 경로 추출 input_img_path = record['s3']['object']['key'] print(f"이미지 경로: {input_img_path}, Type : {type(input_img_path)}") # EC2 인스턴스 제어 로직 ec2_client = boto3.client('ec2') instance_id = 'i-0935dbc04a9ee31ba' # 실행할 EC2 인스턴스의 ID # EC2 인스턴스 실행 response = ec2_client.start_instances(InstanceIds=[instance_id]) print(f"EC2 인스턴스 시작 - InstanceId: {instance_id}") # EC2 인스턴스 시작까지 대기 waiter = ec2_client.get_waiter('instance_running') waiter.wait(InstanceIds=[instance_id]) print(f"EC2 인스턴스 실행 완료 - InstanceId: {instance_id}") # EC2 인스턴스에서 명령어 실행 ssm_client = boto3.client('ssm') response = ssm_client.send_command( InstanceIds=[instance_id], DocumentName='AWS-RunShellScript', Parameters={'commands': ['#!/bin/bash', 'cd /home/ssm-user/rd_ws/RD4AD', f'python main.py --input_img_path {input_img_path}']} ) print(f"EC2 인스턴스에서 명령어 실행 - InstanceId: {instance_id}") # 명령어 실행 결과 확인 command_id = response['Command']['CommandId'] output = ssm_client.get_command_invocation(CommandId=command_id, InstanceId=instance_id) print(f"명령어 실행 결과: {output['StandardOutputContent']}")
Python
복사
aws s3 cp /home/kyjub/Reverse-Distillation/mvtec/bottle/test/broken_large/004.png s3://sagemaker-us-east-1-041883464314/fromRPi/bottle/test/broken_large/
Bash
복사
이미지를 업로드하면 아래와 같이 S3에 이미지가 저장이 된다.
또한 EC2가 실행되는 것을 확인할 수 있다.
또한 parser로 input_img_pathfromRPi/bottle/test/broken_large/004.png 으로 받게 된다.
근데 이미지 경로가 mvtec/bottle/ground_truth/broken_large/004_mask.png mvtec/bottle/test/broken_large/004.png 이면 좋다
mvtec 이라는 폴더를 만들었고 이제
aws s3 cp /home/kyjub/Reverse-Distillation/mvtec/bottle/test/broken_large/004.png s3://sagemaker-us-east-1-041883464314/mvtec/bottle/test/broken_large/
Bash
복사
라고 라즈베리파이에서 명령어를 입력하면
input_img_pathmvtec/bottle/test/broken_large/004.png 이 된다.
python main.py --input_img_path mvtec/bottle/test/broken_large/004.png
Bash
복사
CMD에서 접속 명령어
aws ssm start-session --target i-0935dbc04a9ee31ba
Bash
복사