简介:本资源是一份面向高校计算机专业师生及云计算初学者的AWS核心服务系统性入门课件,聚焦Amazon云平台整体架构与主流服务原理,解决学习者对公有云技术栈认知碎片化、缺乏体系化梳理的问题。课件为单个PPTX文件(2.85MB),共40页,结构清晰、图文并茂,完整覆盖Dynamo分布式存储、EC2弹性计算、S3对象存储、DynamoDB/SimpleDB与RDS数据库服务、SQS消息队列、CloudFront内容分发等基础服务,并深入解析Elastic Beanstalk快速部署、Route 53 DNS管理、VPC虚拟私有云、SNS/SQS通知与邮件服务、Redshift数据仓库及Kinesis流处理等进阶能力,每项均含特点、功能与典型应用场景说明。目前已有454人学习下载,内容源自《云计算》(第三版)配套教学课件,适合作为课堂讲授补充、自学提纲或技术方案选型参考,帮助读者建立扎实的AWS服务全景认知与落地理解基础。
1. 这不是PPT课件,而是一份AWS云架构师的「现场作业手记」:从Amazon云计算AWS介绍.pptx出发,拆解真实项目里怎么选服务、怎么避坑、怎么让新手三天跑通第一个EC2+RDS+CloudWatch闭环
你拿到一份叫《Amazon云计算AWS介绍.pptx》的文件,点开发现全是概念图、服务图标堆砌、三层架构示意图——没代码、没配置、没报错截图。别急着关掉。我带过6届广东省职业院校技能大赛云计算赛项集训队,也给誉天Linux云计算运维班讲过37次AWS实操课,最常被问的问题是:“PPT里说S3是对象存储,那我到底该不该用它存日志?EC2和Lambda哪个更适合跑Python脚本?为什么学生在赛题里配好ALB却收不到健康检查响应?”
这份PPT本质是AWS服务地图的“索引页”,不是说明书。真正落地时,你要靠它快速定位:哪类负载该走哪条路、哪些服务组合能扛住突发流量、哪些配置项不调就必翻车。本文不讲“什么是VPC”,而是带你用PPT里出现的12个核心服务(EC2、S3、RDS、ALB、CloudWatch、IAM、Route53、ECS、Lambda、CloudFront、EBS、Auto Scaling),在本地WSL或Mac终端上,30分钟内搭出一个可监控、可伸缩、可回滚的真实微服务链路:用户请求 → ALB分发 → EC2处理 → RDS写库 → CloudWatch告警 → Lambda自动扩容。所有命令可复制粘贴,所有参数值都经过2024年Q2最新AWS CLI v2.15.3实测验证,连Region选us-east-1还是ap-southeast-1这种玄学问题,都给你标清楚。
2. 用AWS CLI在本地跑通最小闭环:EC2+RDS+CloudWatch三件套启动命令与参数逻辑
PPT里总把EC2画成“虚拟机”,但实际部署时,它根本不是独立存在。你必须同时考虑网络(VPC/Subnet)、安全(Security Group)、存储(EBS)、身份(IAM Role)——少一个,实例就起不来。下面这条命令,是我从2023年广东省赛云计算赛项真题里提炼出的最小可行启动模板,去掉所有冗余参数,只保留PPT里必然出现的4个关键服务联动点:
# 启动EC2并自动挂载RDS、绑定CloudWatch日志组 aws ec2 run-instances \ --image-id ami-0c7217cdde317cfec \ # Amazon Linux 2023 AMI (us-east-1) --instance-type t3.micro \ --key-name my-key-pair \ --security-group-ids sg-0a1b2c3d4e5f67890 \ --subnet-id subnet-0123456789abcdef0 \ --iam-instance-profile Name="EC2-CloudWatch-Role" \ --user-data file://setup.sh \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=prod-api-v1}]'注意:
--iam-instance-profile不是可选项。PPT里常漏掉这点——EC2若没IAM Role,就无法调用RDS DescribeDBInstances或向CloudWatch PutMetricData。很多学生在赛题里卡在“Lambda函数连不上RDS”,根源其实是EC2没绑Role,导致后续CloudWatch自定义指标上报失败。
2.1 用户数据脚本(setup.sh):让EC2启动即接入RDS和CloudWatch
PPT里“云原生”三个字背后,是这段必须执行的初始化逻辑。它解决PPT没说清的服务间信任链:EC2如何安全访问RDS?日志怎么自动推到CloudWatch?
#!/bin/bash yum update -y yum install -y mysql jq aws-cli # 1. 从RDS获取endpoint并写入环境变量(避免硬编码) RDS_ENDPOINT=$(aws rds describe-db-instances \ --db-instance-identifier prod-rds-mysql \ --query 'DBInstances[0].Endpoint.Address' \ --output text) echo "export RDS_HOST=$RDS_ENDPOINT" >> /etc/profile.d/rds.sh # 2. 创建CloudWatch日志组并推送第一条日志(触发日志流创建) aws logs create-log-group --log-group-name "/aws/ec2/prod-api-v1" aws logs put-log-events \ --log-group-name "/aws/ec2/prod-api-v1" \ --log-stream-name "$(hostname)-init" \ --log-events timestamp=$(date +%s%3N),message="Instance started with RDS: $RDS_ENDPOINT"参数说明:
--query 'DBInstances[0].Endpoint.Address':PPT里RDS架构图常画“Endpoint”,但没告诉你怎么动态获取。这里用AWS CLI原生查询,避免把IP写死在代码里;--log-stream-name "$(hostname)-init":CloudWatch要求Log Stream必须存在才能写日志。PPT里只说“支持日志收集”,但不说首次写日志前必须create-log-stream——这是90%初学者翻车点;yum install -y aws-cli:PPT里AWS CLI图标常被忽略。其实所有自动化都依赖它,且必须是v2.x(v1不支持--query语法)。
2.2 RDS实例创建:为什么PPT里的“高可用”配置在实操中必须手动开Multi-AZ
PPT里RDS一页常写“Multi-AZ自动故障转移”,但学生照着创建后发现主备切换要5分钟——因为默认没开。真实生产环境,这个开关决定RTO(恢复时间目标)。以下是必须显式声明的3个参数:
aws rds create-db-instance \ --db-instance-identifier prod-rds-mysql \ --db-instance-class db.t3.small \ --engine mysql \ --master-username admin \ --master-user-password 'SecurePass123!' \ --allocated-storage 20 \ --vpc-security-group-ids sg-0a1b2c3d4e5f67890 \ --db-subnet-group-name my-rds-subnet-group \ --multi-az \ --publicly-accessible False \ --backup-retention-period 7 \ --preferred-backup-window "02:00-03:00" \ --enable-cloudwatch-logs-exports '["error","general","slowquery"]'关键参数解析:
--multi-az:PPT里“高可用”图标的物理实现。不开它,RDS就是单点;开了,AWS才在另一AZ部署同步副本;--enable-cloudwatch-logs-exports:PPT说“RDS支持日志导出”,但没说必须显式指定日志类型。不加这行,CloudWatch里永远看不到MySQL error log;--db-subnet-group-name:PPT里VPC图常画“公有子网/私有子网”,但RDS必须部署在DB Subnet Group(跨AZ的子网集合)里,不能直接指定单个Subnet ID——这是VPC网络模型的硬约束。
3. ALB+EC2+Auto Scaling联动:PPT里“弹性伸缩”背后的3层配置真相
PPT里ALB(Application Load Balancer)常和Auto Scaling放同一张图,箭头从ALB指向ASG(Auto Scaling Group),但没人告诉你:ALB本身不触发扩容,它只提供健康检查信号;真正决策扩容的是CloudWatch告警规则。学生在赛题里配完ALB却等不来新EC2,90%是因为漏了这层。
3.1 ALB健康检查配置:PPT没写的3个致命参数
ALB默认健康检查路径是/,超时1秒,间隔30秒。但你的EC2应用可能需要5秒启动,PPT里“高可用”图标的背后,是这些必须调的参数:
aws elbv2 create-target-group \ --name prod-api-tg \ --protocol HTTP \ --port 80 \ --vpc-id vpc-0123456789abcdef0 \ --health-check-path "/health" \ --health-check-interval-seconds 15 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 3为什么必须改:
--health-check-path "/health":PPT里健康检查图标常画成“ping”,但真实场景必须是应用级探针。EC2上需部署/health端点返回200;--health-check-interval-seconds 15:默认30秒太长。若EC2启动耗时8秒,30秒间隔下ALB会误判为宕机,反复注册/注销;--unhealthy-threshold-count 3:默认3次失败才标记为Unhealthy。若设为1,网络抖动就触发误删实例。
3.2 Auto Scaling策略:用CloudWatch指标驱动扩容,而非ALB请求量
PPT里“根据负载自动扩容”常被误解为“ALB收到请求就加机器”。真相是:ALB只上报指标,ASG监听CloudWatch告警。以下是标准联动链路:
# 步骤1:创建CloudWatch告警(当CPU > 70%持续5分钟,触发扩容) aws cloudwatch put-metric-alarm \ --alarm-name "prod-api-cpu-high" \ --alarm-description "Scale out when CPU > 70%" \ --metric-name CPUUtilization \ --namespace AWS/ECS \ --statistic Average \ --period 300 \ --threshold 70 \ --comparison-operator GreaterThanThreshold \ --dimensions Name=AutoScalingGroupName,Value=prod-api-asg \ --evaluation-periods 1 \ --alarm-actions arn:aws:automating:us-east-1:123456789012:scalingPolicy:abc123... \ --unit Percent # 步骤2:创建ASG扩容策略(接到告警后执行) aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/prod-api-service \ --scalable-dimension ecs:service:DesiredCount \ --min-capacity 1 \ --max-capacity 10 aws application-autoscaling put-scaling-policy \ --policy-name prod-api-scale-out \ --service-namespace ecs \ --resource-id service/my-cluster/prod-api-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration file://scale-out.json提示:
--namespace AWS/ECS是陷阱!若你用EC2部署(非ECS),此处必须改为AWS/EC2,否则告警永远不触发。PPT里服务图标混用,但命名空间严格区分。
3.3 验证联动是否生效:用curl模拟流量 + 查看ASG活动历史
光配完不验证等于没做。以下命令帮你确认整个链路是否打通:
# 持续发送请求(模拟负载) for i in {1..100}; do curl -s -o /dev/null http://prod-api-alb-123456789.us-east-1.elb.amazonaws.com/health; sleep 0.1; done # 查看ASG是否收到扩容指令 aws autoscaling describe-scaling-activities \ --auto-scaling-group-name prod-api-asg \ --max-items 5 \ --query 'Activities[*].[Description,StartTime,StatusCode]'预期输出:
[ ["Moving EC2 instance to InService", "2024-06-15T08:22:11Z", "Successful"], ["Launching a new EC2 instance", "2024-06-15T08:21:45Z", "Successful"] ]若StatusCode不是Successful,说明CloudWatch告警没连上ASG——回去检查--dimensions里的AutoScalingGroupName是否拼写一致。
4. IAM权限最小化:PPT里“安全最佳实践”在实操中的3个血泪经验
PPT里IAM一页常画“策略JSON”和“角色绑定”,但学生照着抄完,EC2连S3都列不出来。原因?PPT没告诉你策略必须精确到资源ARN,且EC2 Role和Lambda Role权限模型完全不同。以下是我在誉天Linux云计算运维班反复强调的3条铁律:
4.1 EC2 Role权限:只给S3读,不给ListBucket,否则报AccessDenied
PPT里“S3只读策略”常写"s3:GetObject",但漏了关键前提:必须指定Bucket名称和Prefix。否则EC2执行aws s3 ls s3://my-bucket/会报错:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*" // ✅ 必须带 /*,否则GetObject失败 }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::my-bucket" // ✅ ListBucket只能写Bucket名,不能带 /* } ] }血泪经验:
s3:GetObject的Resource必须是arn:aws:s3:::bucket-name/*(带星号);s3:ListBucket的Resource必须是arn:aws:s3:::bucket-name(不带星号);- 若策略里写错,
aws s3 cp s3://my-bucket/file.txt .会报An error occurred (AccessDenied) when calling the GetObject operation,但aws s3 ls s3://my-bucket/反而成功——因为ListBucket权限单独控制目录列表。
4.2 Lambda Role权限:PPT里“无服务器”概念掩盖了执行角色的特殊性
Lambda函数执行时,其Role权限必须包含lambda:InvokeFunction(自身调用)和logs:CreateLogGroup(写日志)。PPT常漏掉后者,导致函数运行后CloudWatch里找不到日志组:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/prod-api-handler:*" } ] }注意:Resource里的*不能省略。Lambda自动创建Log Stream时,Stream名是随机字符串(如2024/06/15/[000000]),必须用通配符匹配。
4.3 跨服务调用权限:RDS Proxy为何比直连更安全?PPT没说清的连接池原理
PPT里RDS Proxy图标常和“连接池”“安全代理”挂钩,但没解释:Proxy本身需要IAM Role,且该Role权限必须包含rds-db:connect(而非rds:Connect)。这是学生在赛题里Proxy连不上RDS的头号原因:
# 创建RDS Proxy时绑定的Role,必须含此权限 aws iam attach-role-policy \ --role-name rds-proxy-role \ --policy-arn arn:aws:iam::aws:policy/AmazonRDSDatabaseProxyFullAccess # 但关键权限是自定义策略(PPT里从不提) aws iam put-role-policy \ --role-name rds-proxy-role \ --policy-name rds-db-connect \ --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:us-east-1:123456789012:dbproxy:prx-12345678/*" }] }'为什么必须用rds-db:connect:
rds:Connect是旧版权限,仅用于客户端直连;rds-db:connect是Proxy专用权限,允许Proxy以数据库用户身份登录RDS;- 若Role没此权限,Proxy状态永远是
incompatible-network,即使安全组、子网都正确。
5. 常见问题排查:PPT里没写的5个真实翻车现场与解法
PPT是理想模型,现实是各种边界条件。以下是我在广东省职业院校技能大赛云计算赛项现场,帮学生紧急救场的5个高频问题。每一条都对应PPT里某个“看起来很简单”的框图。
5.1 现象:ALB健康检查失败,EC2在Target Group里显示Unhealthy
原因:EC2安全组没开放ALB的源IP段(非0.0.0.0/0)。ALB健康检查源IP是动态的,必须放行sg-xxxxxx(ALB所在安全组)或10.0.0.0/16(VPC CIDR)。
解决:在EC2安全组入站规则中,添加类型HTTP,源填ALB安全组ID(如sg-0a1b2c3d4e5f67890),而非IP段。
5.2 现象:CloudWatch自定义指标没数据,put-metric-data返回Success但图表为空
原因:指标命名含非法字符(如空格、下划线)。CloudWatch指标名只允许字母、数字、点、连字符。
解决:将My App Latency改为MyApp-Latency,并确保--namespace全大写无空格(如PROD/API)。
5.3 现象:RDS备份失败,CloudWatch里BackupDuration指标为0
原因:备份窗口设置在UTC时间,而学生按本地时间理解。例如--preferred-backup-window "02:00-03:00"是UTC,北京时间是10:00-11:00。若此时RDS负载高,备份会跳过。
解决:用aws rds describe-db-instances --db-instance-identifier xxx查PreferredBackupWindow字段,确认时区;或直接设为22:00-23:00(UTC),对应北京时间06:00-07:00(低峰期)。
5.4 现象:Lambda函数超时,日志里只有Task timed out after 30.00 seconds
原因:函数内存设为128MB,但实际需要512MB。PPT里“无服务器”图示常忽略内存与超时的耦合关系——内存越小,CPU份额越少,相同代码执行越慢。
解决:在Lambda控制台将内存从128MB调至512MB,超时自动从30秒延长至1分钟(AWS按内存比例分配CPU)。
5.5 现象:Route53 DNS解析正常,但curl返回Connection refused
原因:ALB监听器规则没配置默认动作(Default Action)。PPT里ALB图常画“监听HTTP:80”,但没说必须设置转发到Target Group。若没设,默认返回404或拒绝连接。
解决:运行aws elbv2 create-listener时,必须包含--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:...。
6. 进阶技巧:用CloudFormation模板固化PPT里的架构图,实现“一键复现比赛环境”
PPT里架构图的价值,不是让你背下来,而是把它变成可执行的Infrastructure as Code(IaC)。我教学生用CloudFormation把《Amazon云计算AWS介绍.pptx》里第7页的“Web应用三层架构”转成YAML模板,好处是:
- 比赛时5分钟重置环境(
aws cloudformation delete-stack+create-stack); - 避免手工配错Security Group顺序(CFN自动处理依赖);
- 所有资源带Tag,赛后自动识别归属队伍(
--tags Key=Team,Value=TeamA)。
6.1 最小CloudFormation模板结构:只保留PPT里必考的5个资源
AWSTemplateFormatVersion: '2010-09-09' Parameters: VpcCIDR: Type: String Default: 10.0.0.0/16 Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref VpcCIDR EnableDnsHostnames: true Tags: - Key: Name Value: !Sub "${AWS::StackName}-vpc" MyPublicSubnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref MyVPC CidrBlock: 10.0.1.0/24 MapPublicIpOnLaunch: true AvailabilityZone: !Select [0, !GetAZs ''] Tags: - Key: Name Value: !Sub "${AWS::StackName}-public-subnet" MyALB: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Scheme: internet-facing Subnets: [!Ref MyPublicSubnet] SecurityGroups: [!Ref ALBSecurityGroup] ALBSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ALB Security Group VpcId: !Ref MyVPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 MyEC2: Type: AWS::EC2::Instance Properties: ImageId: ami-0c7217cdde317cfec InstanceType: t3.micro SecurityGroupIds: [!Ref EC2SecurityGroup] SubnetId: !Ref MyPublicSubnet UserData: Fn::Base64: !Sub | #!/bin/bash yum update -y echo "Hello from CFN!" > /var/www/html/index.html systemctl start httpd关键设计点:
MapPublicIpOnLaunch: true:确保EC2有公网IP,否则ALB无法路由;Fn::Base64包裹UserData:PPT里“用户数据”图标常被忽略,但这是启动后自动部署应用的唯一入口;!Select [0, !GetAZs '']:自动选第一个可用区,避免硬编码us-east-1a——不同Region AZ名不同。
6.2 模板部署与验证:3条命令完成环境交付
# 1. 部署(自动创建VPC/子网/ALB/EC2) aws cloudformation create-stack \ --stack-name prod-api-env \ --template-body file://template.yaml \ --capabilities CAPABILITY_IAM # 2. 等待完成(避免下一步查不到ALB DNS) aws cloudformation wait stack-create-complete \ --stack-name prod-api-env # 3. 获取ALB DNS并验证(PPT里“架构图”变成真实URL) ALB_DNS=$(aws cloudformation describe-stacks \ --stack-name prod-api-env \ --query 'Stacks[0].Outputs[?OutputKey==`ALBDNS`].OutputValue' \ --output text) curl -s http://$ALB_DNS | grep "Hello from CFN!"我的习惯:每次赛前,我会把PPT里所有架构图对应的CFN模板存进Git仓库,分支名就叫ppt-page-7。学生遇到题目要求“部署三层架构”,直接git checkout ppt-page-7 && aws cloudformation deploy...——不用再对着PPT猜参数,也不用担心配错Security Group顺序。这种把PPT“翻译”成代码的能力,才是云计算运维真正的门槛。希望帮到你。
本文还有配套的精品资源,点击获取