Search

Bastion

Bastion

Name : wsi-bastion-ec2

Amazon Linux 2 선택 및 x86 아키텍처 선택

VPC 선택 및 public-subnet-a 선택 후 IP 자동 할당 활성화 및 보안그룹 생성

PowerUserAccess 권한을 가진 Role 선택

UserData 입력

#!/bin/bash yum update -y yum install python3 python3-pip -y pip3 install flask mkdir /var/log/app touch /var/log/app/app.log chmod 777 /var/log/app/app.log cat << EOF > /home/ec2-user/app.py #!/usr/bin/python3 from flask import Flask, abort, request, jsonify import logging logging.basicConfig( format = '%(asctime)s %(levelname)s %(message)s', datefmt = '%Y-%m-%d %H:%M:%S', filename = "/var/log/app/app.log", level = logging.INFO ) app = Flask(__name__) @app.route('/v1/color', methods=['GET']) def get_color(): try: color_name = request.args['name'] color_hash = request.args['hash'] ret = {'code': '', 'name': ''} if color_name == 'red': ret['code'] = 'f34a07' ret['name'] = 'orange' elif color_name == 'blue': ret['code'] = '71f0f9' ret['name'] = 'sky' else: ret['code'] = 'ff00ff' ret['name'] = 'pink' return jsonify(ret), 200 except Exception as e: logging.error(e) abort(500) @app.route('/health', methods=['GET']) def get_health(): try: ret = {'status': 'ok'} return jsonify(ret), 200 except Exception as e: logging.error(e) abort(500) if __name__ == "__main__": app.run(host='0.0.0.0', port=8080) EOF cat << EOF > /etc/systemd/system/myapp.service [Unit] Description=My Flask App [Service] User=ec2-user WorkingDirectory=/home/ec2-user ExecStart=/usr/bin/python3 /home/ec2-user/app.py Restart=always [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl start myapp.service systemctl enable myapp.service systemctl status myapp.service
Shell
복사

EIP 연결