littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于AWS EventBridge、Lambda和Aurora的自动化实例资源预留系统

项目简介

本项目借助AWS EventBridge、Lambda和Aurora实现EC2实例资源的自动化预留,主要用于满足电商行业在大促活动前夕的临时资源需求,通过自动化流程让客户能在短时间内预留所需实例资源,保障业务高峰期资源充足。

项目的主要特性和功能

  • 自动化资源预留:利用EventBridge定时触发Lambda函数,自动检查并预留所需的EC2实例资源。
  • 动态扩展与收缩:采用Aurora Serverless数据库,可根据需求自动调整数据库容量,减少手动管理工作量。
  • 安全性保障:使用AWS Secrets Manager存储数据库登录信息,保障敏感信息安全。
  • 灵活配置:支持通过AWS CLI进行网络和服务的配置,方便用户按需调整。

安装使用步骤

1. 数据库初始化

  • 创建资源需求元数据表sql CREATE Table IF NOT EXISTS <database>.odcr_capacity (InstanceType varchar(255), AvailabilityZone varchar(255),PRIMARY KEY (InstanceType,AvailabilityZone), Target_Capacity int NOT NULL, Current_Capacity int DEFAULT 0)
  • 插入数据sql INSERT INTO <database>.odcr_capacity VALUES ('r5b.2xlarge','ap-northeast-1c',15,0)
  • 更新数据sql UPDATE <database>.odcr_capacity SET Current_Capacity=5 WHERE InstanceType='r5b.2xlarge' AND AvailabilityZone='ap-northeast-1a'

2. 创建网络配置

  • 检查AWS CLI版本sh aws --version
  • 创建VPC和子网sh export VPC_ID=$(aws ec2 create-vpc --cidr-block 172.18.0.0/16 --instance-tenancy default --tag-specifications ResourceType=vpc,Tags='[{Key=Project,Value=ODCR}]' --region $AWS_Region --output text --query Vpc.[VpcId][0])
  • 创建公有子网和私有子网sh export Public_Subnet_ID=$(aws ec2 create-subnet --tag-specifications ResourceType=subnet,Tags='[{Key=Project,Value=ODCR}]' --availability-zone $AWS_AZ_a --cidr-block 172.18.1.0/24 --vpc-id $VPC_ID --region $AWS_Region --output text --query Subnet.[SubnetId][0])

3. 创建Aurora Serverless数据库

  • 创建Subnet Groupssh aws rds create-db-subnet-group --db-subnet-group-name $ODCR_RDS_Subnet_Group_Name --db-subnet-group-description "ODCR RDS Subnet Group" --subnet-ids $Private_Subnet_DB_1 $Private_Subnet_DB_2 --tags Key=Project,Value=ODCR --region $AWS_Region
  • 创建Aurora Serverlesssh export rds_endpoint=$(aws rds create-db-cluster --database-name odcr_db --db-cluster-identifier $rds_db_cluster_identifier --vpc-security-group-ids $ODCR_RDS_SG_ID --db-subnet-group-name $ODCR_RDS_Subnet_Group_Name --engine aurora --port 3306 --master-username $rds_username --master-user-password $rds_password --engine-mode serverless --scaling-configuration MinCapacity=1,MaxCapacity=4,AutoPause=false,TimeoutAction=ForceApplyCapacityChange --enable-http-endpoint --tags Key=Project,Value=ODCR --output text --query DBCluster.[Endpoint][0] --region $AWS_Region)

4. 创建Lambda函数

  • 创建IAM Policysh export odcr_policy_arn=$(aws iam create-policy --policy-name $odcr_iam_policy_name --policy-document file://<your-path>/odcr-iam-policy.json --tags Key=Project,Value=ODCR --region $AWS_Region --output text --query Policy.[Arn][0])
  • 创建Lambda Functionsh export odcr_lambda_arn=$(aws lambda create-function --function-name $odcr_lambda_name --runtime python3.9 --architectures x86_64 --package-type Zip --zip-file fileb://<your-path>/odcr-deployment-package.zip --handler odcr_lambda.lambda_handler --timeout 300 --vpc-config SubnetIds=$Private_Subnet_Lambda_1,$Private_Subnet_Lambda_2,SecurityGroupIds=$ODCR_Lambda_SG_ID --environment "Variables={RegionName=$AWS_Region,SecretName=$secret_manager_rds_name}" --role $odcr_role_arn --tags Key=Project,Value=ODCR --region $AWS_Region --output text --query FunctionArn)

5. 添加触发器

  • 创建EventBridge规则sh export event_bridge_arn=$(aws events put-rule --name my-scheduled-rule --schedule-expression 'rate(5 minutes)' --tags Key=Project,Value=ODCR --region $AWS_Region --output text --query RuleArn)
  • 添加Lambda触发器sh aws lambda add-permission --function-name $odcr_lambda_name --statement-id my-scheduled-event --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn $event_bridge_arn --region $AWS_Region

完成以上步骤,即可成功部署并使用本项目来自动化预留EC2实例资源,确保业务高峰期的资源充足。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】