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
복사