About me
home
Portfolio
home
🛠

3. HTTP API 로 트리거 (성공)

exec_anomaly_seg Lambda 함수 생성

import boto3 import json import time import subprocess def install_requirements(): # requirements.txt 파일이 있는 디렉토리로 이동 #subprocess.run(["cd", "/path/to/your/directory"], check=True) # pip install 실행 subprocess.run(["pip", "install", "-r", "requirements.txt"], check=True) install_requirements() def lambda_handler(event, context): # EC2 인스턴스 제어 로직 ec2_client = boto3.client('ec2') instance_id = 'i-0935dbc04a9ee31ba' # 실행할 EC2 인스턴스의 ID # EC2 인스턴스에서 명령어 실행 ssm_client = boto3.client('ssm') # 'anomaly_seg_list.sh' 스크립트를 실행하는 명령어 commands_to_run = [ "cd /home/ssm-user/rd_ws/RD4AD", "/bin/bash /home/ssm-user/rd_ws/RD4AD/anomaly_seg_list.sh" ] response = ssm_client.send_command( InstanceIds=[instance_id], DocumentName='AWS-RunShellScript', Parameters={'commands': commands_to_run} ) print(f"EC2 인스턴스에서 스크립트 실행 - InstanceId: {instance_id}") # 명령어 실행 결과 확인 command_id = response['Command']['CommandId'] # 명령어 실행 결과를 가져옴 while True: time.sleep(10) # 10초마다 체크 output = ssm_client.get_command_invocation(CommandId=command_id, InstanceId=instance_id) if output['Status'] == 'Success': print(f"### 명령어 실행 결과: {output['StandardOutputContent']}") break elif output['Status'] == 'Failed': print(f"### 명령어 실행이 실패했습니다: {output['StandardErrorContent']}") break return { 'statusCode': 200, 'body': json.dumps('Results on seg_result folder') }
Python
복사
curl -X GET 'https://oljrqvnae4.execute-api.us-east-1.amazonaws.com/default/exec_anomaly_seg' -H 'x-api-key: M46h3EHGkqa2wzywa2LtY7CWn2XMNqOS2nJhRK9M'
Python
복사