aws(学习笔记第一课)
- 使用
AWS CLI
学习内容:
- 使用
AWS CLI
- 配置密钥对
- 创建
ec2 server
- 使用
drawio(vscode插件)
进行AWS
的画图
1. 使用AWS CLI
- 注册
AWS
账号
AWS
是通用的云计算平台,可以提供ec2
,vpc
,SNS
以及cloud watch
,RDS
等各种各样的云计算组件,使得用户可以专注于业务层次的开发,方便扩展。
AWS官方网站
AWS官方文档
注册账号相当简单:-
首先需要一个国际信用卡(这里需要去银行办理,之后邮寄)
-
第一年的费用是免费的,但是也有一些
service
是付费的,注意在练习之后马上删除。 -
每次练习之后就立即删除的话,几乎不会花费费用。如果万一使用了过多的费用,也要立即和
AWS
进行沟通。
-
之后就是注册账号,正常进行注册
-
注册之后就会产生一个
根用户
,类似于linux
的root
账户
-
- 创建
AWS
用户
可以使用上面的根用户
,但是非常不建议这么做,因此创建一个新用户。- 使用
根用户
登录AWS
- 点击
IAM
服务,创建新用户 - 指定用户名,这里指定
mycli
- 配置权限
直接附加策略到mycli
用户,这里可以看出策略分为AWS托管
和客户托管
。
AWS托管
是AWS
内置的策略,客户托管
是用户自己创建的策略。这里选择AWS托管
的AdministratorAccess
。
- 创建好了用户
- 使用
- 创建访问密钥
这里的访问密钥代表了该用户,所以一定要注意隐私安全,不要公开给其他人。
- 选择命令行(CLI)
选择之后继续下一步
- 设置标签。
- 最后完成密钥的生成
注意,这里的密钥要在之后的AWS CLI
中配置使用,所以自己要记住。改密钥只能显示一次,所以一定要记住
- 选择命令行(CLI)
- 安装
AWS CLI
这里虽然是windows
系统安装,但是采用git bash
+python
进行安装 AWS CLI是基于python的- 安装
python
- 安装
AWS CLI
执行pip install awscli
- 检查
AWS CLI
的版本
- 安装
- 配置
AWS CLI
-
执行
aws configure
执行aws configure
,第一个和第二个参数指定刚才生成的密钥。Default region name
指定ap-northeast-1(东京,相对近些)
,输出形式指定json
。 -
检查配置的结果
执行cd ~/.aws
,进入配置目录,可以看到两个文件。 -
执行下
AWS CLI
命令
执行下面命令shellaws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro"
可以看到结果为空的
Reservations
,这是由于没有创建ec2 server
,到了这里,AWS CLI
创建OK
-
2. 创建公私钥密钥对
- 创建自己的密钥对
- 进入
ec2
服务,之后点击左面菜单的密钥对
。
- 如下选择,之后点击生成
AWS
自动下载密钥pem
文件(my-cli-key.pem)
这里将密钥文件保存到本地~/.ssh/my-cli-key.pem
,之后会使用该密钥文件进行登录ec2 server
。
- 进入
3. 创建ec2 server
-
执行如下的
AWS CLI
脚本
执行如下的AWS CLI
脚本,进行ec2 server
的创建。shell#!/bin/bash -e # You need to install the AWS Command Line Interface from http://aws.amazon.com/cli/ AMIID=$(aws ec2 describe-images --filters "Name=description, Values=Amazon Linux 2023 AMI 2023.5.20240916.0 x86_64 HVM kernel-6.1" --query "Images[0].ImageId" --output text) VPCID=$(aws ec2 describe-vpcs --filter "Name=isDefault, Values=true" --query "Vpcs[0].VpcId" --output text) SUBNETID=$(aws ec2 describe-subnets --filters "Name=vpc-id, Values=$VPCID" --query "Subnets[0].SubnetId" --output text) SGID=$(aws ec2 create-security-group --group-name mysecuritygroup --description "My security group" --vpc-id $VPCID --output text) aws ec2 authorize-security-group-ingress --group-id $SGID --protocol tcp --port 22 --cidr 0.0.0.0/0 INSTANCEID=$(aws ec2 run-instances --image-id $AMIID --key-name my-cli-key --instance-type t2.small --security-group-ids $SGID --subnet-id $SUBNETID --query "Instances[0].InstanceId" --output text) echo "waiting for $INSTANCEID ..." aws ec2 wait instance-running --instance-ids $INSTANCEID PUBLICNAME=$(aws ec2 describe-instances --instance-ids $INSTANCEID --query "Reservations[0].Instances[0].PublicDnsName" --output text) echo "$INSTANCEID is accepting SSH connections under $PUBLICNAME" echo "ssh -i my-cli-key.pem ec2-user@$PUBLICNAME" read -p "Press [Enter] key to terminate $INSTANCEID ..." aws ec2 terminate-instances --instance-ids $INSTANCEID echo "terminating $INSTANCEID ..." aws ec2 wait instance-terminated --instance-ids $INSTANCEID aws ec2 delete-security-group --group-id $SGID echo "done."
-
创建的
AWS
的结构图
在默认的vpc
的默认subnet
之中创建security group
,之后创建ec2 server
注意,这里的默认vpc
必须能够有个internet gateway
,并且能自动分配public ip address
。
-
查看
AWS CLI
脚本的执行结果-
可以看到,
security group
已经创建,并且已经启动了一个ec2 server
。
-
查看
AWS Console
-
-
使用
私钥
文件来访问ec2 server
shellssh -i my-cli-key.pem ec2-user@ec2-13-114-248-64.ap-northeast-1.compute.amazonaws.com
- 使用
git bash
登录进去ec2 server
。
- 使用
-
练习完毕之后停止
ec2 server
- 一定要停止
ec2 server
注意,重要的事情说3遍,一定要注意清理练习后的环境,否则会发生费用,是美元!!
- 一定要停止
4. 使用drawio(vscode插件)
进行AWS
的画图
- 对于
AWS
的各种service组成的构成图,可以采用drawio
。采用vscode
的drawio
插件。
- 做成一个
aws.drawio
,之后采用vscode
打开。
- 打开
More Shapes
,之后将AWS 19
选项
- 之后使用
drawio
画出AWS
的构成图