在AWS CDK中创建一个EC2实例。
在实例启动期间,在UserData
中添加脚本以安装必要的软件并启动Flask应用程序。
以下是一个示例CDK代码:
from aws_cdk import (
aws_ec2 as ec2,
aws_iam as iam,
aws_autoscaling as autoscaling,
core,
)
class FlaskOnEC2Stack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# 创建VPC
vpc = ec2.Vpc(
self, "MyVPC",
max_azs=2,
nat_gateways=1
)
asg_role = iam.Role(
self, "ASGRole",
assumed_by=iam.ServicePrincipal("ec2.amazonaws.com"),
)
# 启动脚本
script = """#!/bin/bash
yum update -y
yum install -y git mysql gcc python3-devel python3-pip
pip3 install Flask uwsgi
cd /home/ec2-user
git clone ${FLASK_APP_REPO}
cd my_flask_app
mkdir /home/ec2-user/logs
uwsgi --socket 127.0.0.1:3333 --module my_flask_app:app --callable app --stats /tmp/stats.sock &
# 下面的命令将启动uWSGI进程并将输出重定向到文件
uwsgi_cmd='/usr/local/bin/uwsgi --socket 127.0.0.1:3333 --module my_flask_app:app --callable app --stats /tmp/stats.sock'
echo "Starting uwsgi with command $uwsgi_cmd" >> /home/ec2-user/logs/startup.log
$uwsgi_cmd >> /home/ec2-user/logs/uwsgi.log 2>&1 &
"""
# 创建启动配置
launch_config = autoscaling.LaunchConfiguration(
self, "LaunchConfig",
instance_type=ec2.InstanceType