ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AWS实战避坑指南:从PPT概念到CLI真机操作

AWS实战避坑指南:从PPT概念到CLI真机操作 简介本资源是一份系统讲解Amazon云计算AWS核心服务的入门级教学PPT面向高校计算机专业师生、云计算初学者及IT运维人员旨在帮助读者快速建立AWS主流服务的知识框架与应用场景认知。课件共40页完整覆盖Dynamo分布式存储、EC2弹性计算、S3对象存储、DynamoDB/SimpleDB非关系数据库、RDS关系数据库、SQS消息队列、CloudFront内容分发等基础服务并深入解析Elastic Beanstalk应用部署、Route 53 DNS管理、VPC虚拟私有云、SNS/SMS通知邮件服务、Redshift数据仓库及Kinesis流分析等进阶能力每部分均包含原理说明、架构特点与典型用例。资源为单个2.85MB的PPTX文件结构清晰、图文并茂适合作为《云计算》课程配套讲义或自学导引材料。目前已有454人学习下载内容源自《云计算》第三版教材配套课件具备教学规范性与技术准确性。1. 这不是PPT是AWS实战路线图从“翻PPT听概念”到“在控制台敲出第一个EC2实例”的真实断层你手头那份《Amazon云计算AWS介绍.pptx》大概率是培训课件、校企合作材料或是某次技术分享的存档幻灯片——它不缺架构图但缺一个能让你在凌晨两点面对生产环境告警时真正知道该点哪个按钮、填哪行参数、查哪条日志的路径。这不是AWS入门科普而是把这份PPT里被压缩成一页的“弹性计算云EC2”“对象存储S3”“虚拟私有云VPC”还原成你在Windows/Mac本地用CLI调通、在Linux服务器上手动部署、在企业混合云场景中真刀真枪配置的最小可行闭环。尤其对正在备赛广东省职业院校技能大赛云计算赛项、或刚拿到誉天Linux云计算运维资料包却卡在“文档看懂了实操就报错”的同学这份PPT里的每张图背后都对应着3个必须亲手敲过的命令、2个必改的配置项、1个容易被忽略的权限陷阱。本文不讲“什么是云计算”只解决“为什么我按PPT步骤创建EC2实例后连不上SSH”“为什么S3桶策略写对了却提示AccessDenied”“为什么VPC子网明明配了路由表RDS还是连不通”。我们从PPT第一页的AWS全球基础设施示意图开始一帧一帧拆解成可执行动作。2. 把PPT里的“全球Region”变成你电脑上的真实连接AWS CLI初始化与区域级资源验证PPT第3页常画一张AWS全球Region分布图标着us-east-1、ap-southeast-1这些代号。但对实操者而言“区域”不是地理概念而是API端点、资源隔离边界、计费单元三者的绑定体。选错Region你的EC2可能创建在东京而SSH密钥却在新加坡Region生成S3桶名全局唯一但桶内对象的访问延迟、合规要求、灾备策略全由Region决定。所以第一步不是开控制台而是让本地终端“认得清自己该跟哪个Region说话”。2.1 用AWS CLI v2完成身份绑定与区域锚定AWS CLI是绕过图形界面直触服务的最短路径。PPT里不会告诉你aws configure命令生成的~/.aws/credentials文件其[default]段落的region字段一旦写错后续所有aws ec2 describe-instances命令都会返回空结果——不是没资源是你在问错地方。# 安装CLI v2macOS示例Windows用MSI安装包Linux用bundle curl https://awscli.amazonaws.com/AWSCLIV2.pkg -o AWSCLIV2.pkg sudo installer -pkg AWSCLIV2.pkg -target / # 初始化配置关键region必须与你实际要操作的Region一致 aws configure # 依次输入 # AWS Access Key ID: [你的AK] # AWS Secret Access Key: [你的SK] # Default region name: ap-southeast-1 # ← 此处必须填你目标Region如备赛常用ap-southeast-1新加坡或cn-north-1北京 # Default output format: json注意Default region name不是“随便选一个”而是你本次实操的主战场。广东省赛题常指定ap-southeast-1誉天资料包默认配置也多在此Region。填错后所有资源创建都在错误Region排查时会浪费大量时间。2.2 验证Region连通性用一条命令确认“我在跟谁对话”PPT里Region图是静态的但CLI能让你实时感知Region状态。执行以下命令不是为了看结果而是验证凭证、网络、Region三者是否真正握手成功# 测试当前Region的EC2服务可用性返回空列表是正常说明连接成功 aws ec2 describe-availability-zones --region ap-southeast-1 # 查看当前Region所有可用区AZ这是后续创建EC2、RDS的物理位置依据 aws ec2 describe-availability-zones --region ap-southeast-1 --query AvailabilityZones[?Stateavailable].ZoneName --output table参数说明--region ap-southeast-1强制指定Region覆盖aws configure中的default设置避免环境变量污染--queryJMESPath语法精准提取ZoneName字段过滤掉冗余信息--output table人类可读格式比JSON更直观看到ap-southeast-1a、ap-southeast-1b等AZ列表。逻辑说明如果命令返回An error occurred (AuthFailure) when calling the DescribeAvailabilityZones operation说明AK/SK无效若返回Could not connect to the endpoint URL则是网络或Region拼写错误如ap-southeast-1误写为ap-southeast-1a只有返回带ap-southeast-1a等AZ名称的表格才证明你已成功锚定到目标Region。3. PPT第5页的“EC2实例生命周期图”落地从AMI选择到SSH登录的7步闭环PPT里EC2生命周期常画成“Launch → Running → Stopped → Terminated”箭头图但实操中90%的失败发生在Launch阶段——不是镜像问题而是安全组、密钥对、子网配置的组合陷阱。我们跳过控制台点击用CLI完成一次最小化EC2创建并确保你能立刻SSH登录。3.1 选择AMI别被PPT里的“Amazon Linux 2”误导先查真实IDPPT常写“使用Amazon Linux 2 AMI”但不同Region、不同架构x86_64 vs arm64的AMI ID完全不同。硬编码ID必然失败。正确做法是动态查询# 查询ap-southeast-1中最新版Amazon Linux 2 x86_64 AMI过滤条件官方、可用、x86_64 aws ec2 describe-images \ --owners amazon \ --filters Namename,Valuesamzn2-ami-hvm-2.0.????????.?-x86_64-gp2 Namestate,Valuesavailable \ --query sort_by(Images, CreationDate)[-1].[ImageId,Name] \ --output table \ --region ap-southeast-1参数说明--owners amazon只查AWS官方AMI排除社区镜像--filters用通配符????????匹配最新日期如2.0.20240515.0确保获取最新安全补丁版本--query取排序后最后一项即最新AMI的ImageId和Name避免人工翻页输出示例| ami-0abcdef1234567890 | amzn2-ami-hvm-2.0.20240515.0-x86_64-gp2 |。3.2 创建EC2实例7个必需参数的血泪经验PPT里“启动实例”按钮背后至少需显式指定7个参数。漏掉任何一个实例要么创建失败要么创建后无法访问# 执行EC2创建替换YOUR_KEY_NAME为你的密钥对名称 aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ # ← 上一步查到的AMI ID --count 1 \ --instance-type t2.micro \ # 免费套餐可用备赛常用 --key-name YOUR_KEY_NAME \ # ← 必须提前创建PPT里常忽略此前提 --security-group-ids sg-0123456789abcdef0 \ # ← 必须放行SSH22端口 --subnet-id subnet-0123456789abcdef0 \ # ← 必须属于VPC且有Route Table指向IGW --associate-public-ip-address \ # ← 关键否则EC2无公网IPSSH连不上 --tag-specifications ResourceTypeinstance,Tags[{KeyName,ValueAWS-PPT-Practice}] \ --region ap-southeast-1关键参数避坑说明--key-name密钥对必须在同一Region创建跨Region无效--security-group-ids安全组规则必须显式添加入站规则22端口源IP0.0.0.0/0或你的公网IP--subnet-id子网必须关联Route Table且Route Table中必须有0.0.0.0/0 → igw-xxxxxxxx路由--associate-public-ip-address默认不分配公网IPPPT图示常隐含此配置实操必须显式声明。4. PPT里“S3桶策略示意图”的玄学失效从Policy JSON到curl验证的完整链路PPT第8页常画一个S3桶策略图标写着“允许特定IP访问”。但实操中策略生效需同时满足Bucket Policy语法正确、Bucket ACL未冲突、IAM用户权限足够、请求签名方式匹配。任何一环断裂curl返回AccessDenied而非NoSuchBucket。4.1 创建桶并附加最小化策略拒绝一切再精准放行# 创建桶桶名全局唯一需替换为你的随机名 aws s3api create-bucket \ --bucket your-unique-bucket-name-20240515 \ --region ap-southeast-1 \ --create-bucket-configuration LocationConstraintap-southeast-1 # 设置桶策略仅允许来自123.45.67.89的GET请求替换为你的真实IP cat bucket-policy.json EOF { Version: 2012-10-17, Statement: [ { Sid: AllowGetFromSpecificIP, Effect: Allow, Principal: *, Action: s3:GetObject, Resource: arn:aws:s3:::your-unique-bucket-name-20240515/*, Condition: { IpAddress: { aws:SourceIp: 123.45.67.89/32 } } } ] } EOF aws s3api put-bucket-policy \ --bucket your-unique-bucket-name-20240515 \ --policy file://bucket-policy.json \ --region ap-southeast-1策略逻辑说明Principal: *允许匿名访问非IAM用户符合PPT中“公开读”场景Condition精确到单IP避免0.0.0.0/0导致策略失效PPT常省略此细节file://前缀CLI要求策略文件路径不能直接内联JSON。4.2 用curl验证策略绕过浏览器缓存直击S3 API# 上传测试文件需先创建test.txt echo Hello from AWS PPT Practice test.txt aws s3 cp test.txt s3://your-unique-bucket-name-20240515/test.txt --region ap-southeast-1 # 用curl模拟外部请求关键加-H Cache-Control: no-cache 避免CDN缓存干扰 curl -I -H Cache-Control: no-cache \ https://your-unique-bucket-name-20240515.s3.ap-southeast-1.amazonaws.com/test.txt现象判断返回HTTP/2 200策略生效IP匹配返回HTTP/2 403IP不匹配或策略未生效返回HTTP/2 404桶名错误或Region错误S3域名中ap-southeast-1必须与创建Region一致。提示S3桶策略调试最易踩坑的是Region域名拼写。ap-southeast-1桶的URL是s3.ap-southeast-1.amazonaws.com而us-east-1桶是s3.amazonaws.com无Region前缀PPT图示常统一画成s3://bucket-name实操必须区分。5. VPC网络拓扑的“黑匣子”破译从PPT里的三层架构图到路由表实测PPT第10页VPC图常画“Internet Gateway → Route Table → Subnet → EC2”但实操中EC2能上网的关键不在IGW存在而在Route Table中0.0.0.0/0是否指向IGW。这个看似简单的路由却是广东省赛云计算赛项高频故障点。5.1 提取VPC默认Route Table并验证路由# 获取当前Region默认VPC的Route Table ID DEFAULT_VPC_ID$(aws ec2 describe-vpcs --filters NameisDefault,Valuestrue --query Vpcs[0].VpcId --output text --region ap-southeast-1) RT_ID$(aws ec2 describe-route-tables \ --filters Namevpc-id,Values$DEFAULT_VPC_ID Nameassociation.main,Valuestrue \ --query RouteTables[0].RouteTableId --output text --region ap-southeast-1) # 查看路由表详情重点检查Destination为0.0.0.0/0的Target aws ec2 describe-route-tables \ --route-table-ids $RT_ID \ --query RouteTables[0].Routes[?DestinationCidrBlock0.0.0.0/0].[DestinationCidrBlock,Target.GatewayId] \ --output table \ --region ap-southeast-1输出解读若返回| 0.0.0.0/0 | igw-0123456789abcdef0 |路由正确EC2可上网若返回空表或| 0.0.0.0/0 | None |路由缺失需手动添加若Target.GatewayId为NoneIGW未关联到VPC或Route Table未关联子网。5.2 修复路由两条命令重建网络出口# 步骤1确保IGW已创建并关联到VPC若未关联先执行 IGW_ID$(aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text --region ap-southeast-1) aws ec2 attach-internet-gateway --internet-gateway-id $IGW_ID --vpc-id $DEFAULT_VPC_ID --region ap-southeast-1 # 步骤2向Route Table添加0.0.0.0/0路由关键Target必须是igw-xxx aws ec2 create-route \ --route-table-id $RT_ID \ --destination-cidr-block 0.0.0.0/0 \ --gateway-id $IGW_ID \ --region ap-southeast-1参数说明--destination-cidr-block 0.0.0.0/0目标网段不可写成0.0.0.0/0以外的值--gateway-id必须是IGW ID不是NAT Gateway ID后者用于私有子网出网执行后再次运行5.1节命令应看到igw-xxxx出现在Target列。6. 避坑PPT没写的5个致命细节每个都曾让我重装系统PPT为简洁常省略实操陷阱但这些细节直接决定你能否在赛场上10分钟内定位故障。以下是我在誉天Linux云计算运维实训、广东省赛模拟中反复踩过的坑按发生频率排序6.1 现象aws configure后aws s3 ls报错Unable to locate credentials原因~/.aws/credentials文件权限过大如644AWS CLI出于安全强制拒绝读取。PPT绝不会提文件权限。解决chmod 600 ~/.aws/credentials确保只有owner可读写。6.2 现象EC2创建成功但ssh -i key.pem ec2-userxx.xx.xx.xx提示Permission denied (publickey)原因密钥对在Region A创建但EC2在Region B启动或PPT演示用ubuntu用户而Amazon Linux 2默认用户是ec2-user。解决确认密钥对与EC2在同一Region检查AMI文档确认默认用户名aws ec2 describe-images --image-ids ami-xxx --query Images[0].Description。6.3 现象S3上传成功但curl返回403 Forbidden而策略JSON语法验证通过原因Bucket Policy中ResourceARN写错如漏掉/*arn:aws:s3:::bucket-name只授权桶操作arn:aws:s3:::bucket-name/*才授权对象操作。解决Policy中Resource必须包含/*后缀且bucket-name与创建时完全一致区分大小写。6.4 现象VPC子网已关联Route Table但EC2仍无法解析DNSping google.com超时原因Route Table有0.0.0.0/0 → igw-xxx但VPC的EnableDnsHostnames和EnableDnsSupport属性为false。PPT网络图从不标这两个开关。解决aws ec2 modify-vpc-attribute --vpc-id $DEFAULT_VPC_ID --enable-dns-hostnames和--enable-dns-support。6.5 现象aws ec2 describe-instances返回空但控制台可见实例原因CLI默认查询us-east-1而实例在ap-southeast-1或--filters参数中Nameinstance-state-name,Valuesrunning写成Namestate,Valuesrunning字段名错误。解决所有EC2命令必须加--region ap-southeast-1用aws ec2 describe-instances --generate-cli-skeleton查看正确字段名。7. 把PPT变成你的“后悔药”用CloudFormation模板固化每次实操告别重复劳动PPT的价值不该止于演示而应成为你自动化脚本的蓝图。我习惯把PPT里每一页架构图转成一份CloudFormation YAML模板——不是为了炫技而是当赛题要求“10分钟内搭建含EC2S3RDS的完整环境”时aws cloudformation create-stack一条命令就能回滚重来比手动点控台快3倍且零配置漂移。7.1 从PPT第12页“典型三层Web架构”生成CFN模板骨架PPT中常见的“ALB → EC2 AutoScaling → RDS → S3”图对应CFN核心资源块# template.yaml AWSTemplateFormatVersion: 2010-09-09 Parameters: KeyName: Type: String Description: Name of an existing EC2 KeyPair Resources: WebServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchConfigurationName: !Ref LaunchConfig MinSize: 1 MaxSize: 3 VPCZoneIdentifier: # ← 从PPT VPC图提取子网ID - subnet-0123456789abcdef0 - subnet-0fedcba9876543210 LaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-0abcdef1234567890 # ← PPT第5页AMI图 InstanceType: t2.micro SecurityGroups: - !Ref WebServerSecurityGroup KeyName: !Ref KeyName WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP and SSH access SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0落地技巧每次打开PPT就打开VS Code新建template.yaml把图中组件名如“Application Load Balancer”作为资源Logical IDALB把PPT标注的参数如“t2.micro”“us-east-1”填入Properties用aws cloudformation validate-template --template-body file://template.yaml即时验证语法比PPT演讲时发现错误早3小时模板存Git每次实操git commit -m PPT p12 web-tier v1赛后复盘时直接git diff看配置演进。7.2 用PPT备注页做CFN参数注释让队友30秒看懂你的设计PPT备注页常写“此处需开启SSL卸载”“RDS建议使用db.t3.small”这些就是CFN Parameters的最佳来源Parameters: SSLCertificateARN: Type: String Description: ARN of ACM certificate for ALB (from PPT p15 note: must be in us-east-1) ConstraintDescription: Must be a valid ACM certificate ARN RDSCapacity: Type: String Default: db.t3.small AllowedValues: - db.t3.small - db.t3.medium Description: RDS instance type (from PPT p16 note: t3.small sufficient for demo load)我的习惯在PPT编辑模式下右键幻灯片→“备注”把实操约束写进去“密钥对必须提前创建”“S3桶名需全局唯一建议加日期后缀”。这些备注就是CFN模板里最真实的Parameter Description。当队友问“为什么这里用t3.small”我直接截图PPT备注页发过去——比写Wiki快比口头解释准。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进