1. 需要准备
  • 申请到API Key和API Secret。
  • 电脑集成AWS CLI开发环境,Mac可以使用HomeBrew一键安装。
brew install awscli
  • 了解AWS的区域ID
AWS Region Name 包括 (但不限于):

us-east-1 (北弗吉尼亚): 这是 AWS 的第一个 Region,通常被称为 "us-east-1"。
us-east-2 (俄亥俄)
us-west-1 (北加州)
us-west-2 (俄勒冈)
ap-south-1 (孟买)
ap-northeast-1 (东京)
ap-northeast-2 (首尔)
ap-southeast-1 (新加坡)
ap-southeast-2 (悉尼)
eu-central-1 (法兰克福)
eu-west-1 (爱尔兰)
eu-west-2 (伦敦)
eu-west-3 (巴黎)
eu-north-1 (斯德哥尔摩)
sa-east-1 (圣保罗)
ca-central-1 (加拿大中部)
  • 了解AWS不同镜像下的默认用户名
根据实例AMI不同,默认用户名可能是:
Amazon Linux: ec2-user
Ubuntu: ubuntu
CentOS: centos
RHEL: ec2-user或root
  1. 开始操作
  • 登录:
root@iMac:~# aws configure
AWS Access Key ID [None]: AK******************    #API Key
AWS Secret Access Key [None]: Rk**************************************    #API Secret
Default region name [None]: ap-southeast-2    #我选的悉尼区
Default output format [None]: json    #以JSON输出内容
  • 创建密钥对:
root@iMac:~# aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem

--key-name MyKeyPair: 指定密钥对的名称。名称必须在你的账户内唯一。
--query 'KeyMaterial' --output text: 提取私钥内容并以文本格式输出。
> MyKeyPair.pem: 将私钥保存到名为 MyKeyPair.pem 的文件中。 这是至关重要的步骤,因为 AWS 不会为你存储私钥。丢失私钥将无法访问使用该密钥对启动的实例。
  • 此时在命令行执行ls -a就可以查看到当前路径下的密钥文件MyKeyPair.pem
  • 查询当前区域可用的符合Free Tier的实例类型:
root@iMac:~# aws ec2 describe-instance-types \
    --filters "Name=free-tier-eligible,Values=true" \
    --query "InstanceTypes[].InstanceType"
    
[
    "t2.micro"
]
  • 查询当前区域可用的镜像AMI
root@iMac:~# aws ec2 describe-images --filters "Name=name,Values=*Ubuntu*" --owners amazon --output table    #这将列出名称包含 "Ubuntu" 的 Amazon AMI。 你可以使用通配符 * 来匹配部分名称。

||  ImageId                  |  ami-00fdfd2f612bf964f #我选第一个结果                           
  • 创建当前区域的安全组:
root@iMac:~# aws ec2 create-security-group --group-name FreeTier-Sydney --description "Free Tier Security Group"
  • 查看安全组ID:
root@iMac:~# aws ec2 describe-security-groups

"GroupId": "sg-0d5ab08be8cc8ee2e",
  • 创建实例:
root@iMac:~# aws ec2 run-instances \
    --image-id ami-00fdfd2f612bf964f \  # Ubuntu AMI (根据区域替换为最新AMI)
    --instance-type t2.micro \          # Free Tier符合条件的实例类型
    --key-name MyKeyPair \              # 替换为你的密钥对名称
    --security-group-ids sg-0d5ab08be8cc8ee2e \  # 替换为你的安全组ID
    --count 1 \
    --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=FreeTier-Instance}]'
  • 获取实例ID:
root@iMac:~# aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' --output text

i-00848d6f4b5b3183f
  • 获取公网IP(可能需要等待一会才能获取到公网IP):
root@iMac:~# aws ec2 describe-instances --instance-ids i-00848d6f4b5b3183f --query 'Reservations[].Instances[].PublicIpAddress' --output text

54.255.138.44
  • 允许公网访问22端口:
root@iMac:~# aws ec2 authorize-security-group-ingress \
    --group-id sg-0d5ab08be8cc8ee2e \
    --protocol tcp \
    --port 22 \
    --cidr 0.0.0.0/0  # 生产环境建议限制为您的IP
  • ssh登录服务器:
root@iMac:~# ssh -i MyKeyPair.pem ubuntu@54.255.138.44
  1. 防止反薅
  • 严格验证实例类型:
root@iMac:~# aws ec2 describe-instances \
    --instance-ids i-00848d6f4b5b3183f \
    --query 'Reservations[0].Instances[0].InstanceType'
    
"m1.small"    #擦,我慌了,不是"t2.micro"
  • 将实例类型改为"t2.micro"
# 先马上停止实例
root@iMac:~# aws ec2 stop-instances --instance-ids i-00848d6f4b5b3183f

#修改类型为 t2.micro
root@iMac:~# aws ec2 modify-instance-attribute \
    --instance-id i-00848d6f4b5b3183f \
    --instance-type "t2.micro"
    
#再次验证实例类型
root@iMac:~# aws ec2 describe-instances \
    --instance-ids i-00848d6f4b5b3183f \
    --query 'Reservations[0].Instances[0].InstanceType'
    
"t2.micro"
  1. 可以愉快的玩耍了