aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图

aws(学习笔记第一课)

  • 使用AWS CLI

学习内容:

  • 使用AWS CLI
  • 配置密钥对
  • 创建ec2 server
  • 使用drawio(vscode插件)进行AWS的画图

1. 使用AWS CLI

  1. 注册AWS账号
    AWS是通用的云计算平台,可以提供ec2vpcSNS以及cloud watchRDS等各种各样的云计算组件,使得用户可以专注于业务层次的开发,方便扩展。
    AWS官方网站
    AWS官方文档

    注册账号相当简单:
    • 首先需要一个国际信用卡(这里需要去银行办理,之后邮寄)

      • 第一年的费用是免费的,但是也有一些service是付费的,注意在练习之后马上删除。

      • 每次练习之后就立即删除的话,几乎不会花费费用。如果万一使用了过多的费用,也要立即和AWS进行沟通。

    • 之后就是注册账号,正常进行注册

    • 注册之后就会产生一个根用户,类似于linuxroot账户

  2. 创建AWS用户
    可以使用上面的根用户,但是非常不建议这么做,因此创建一个新用户。
    • 使用根用户登录AWS
    • 点击IAM服务,创建新用户
    • 指定用户名,这里指定mycli
    • 配置权限
      直接附加策略到mycli用户,这里可以看出策略分为AWS托管客户托管
      AWS托管AWS内置的策略,客户托管是用户自己创建的策略。这里选择AWS托管AdministratorAccess
    • 创建好了用户
  3. 创建访问密钥
    这里的访问密钥代表了该用户,所以一定要注意隐私安全,不要公开给其他人。
    • 选择命令行(CLI)
      选择之后继续下一步
    • 设置标签。
    • 最后完成密钥的生成
      注意,这里的密钥要在之后的AWS CLI中配置使用,所以自己要记住。改密钥只能显示一次,所以一定要记住
  4. 安装AWS CLI
    这里虽然是windows系统安装,但是采用git bash + python进行安装 AWS CLI是基于python的
    • 安装python
    • 安装AWS CLI
      执行pip install awscli
    • 检查AWS CLI的版本
  5. 配置AWS CLI
    • 执行aws configure
      执行aws configure,第一个和第二个参数指定刚才生成的密钥。Default region name指定ap-northeast-1(东京,相对近些),输出形式指定json

    • 检查配置的结果
      执行cd ~/.aws,进入配置目录,可以看到两个文件。

    • 执行下AWS CLI命令
      执行下面命令

      shell 复制代码
      aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro"

      可以看到结果为空的Reservations,这是由于没有创建ec2 server,到了这里,AWS CLI创建OK

2. 创建公私钥密钥对

  1. 创建自己的密钥对
    • 进入ec2服务,之后点击左面菜单的密钥对
    • 如下选择,之后点击生成
    • AWS自动下载密钥pem文件(my-cli-key.pem)
      这里将密钥文件保存到本地~/.ssh/my-cli-key.pem,之后会使用该密钥文件进行登录ec2 server

3. 创建ec2 server

  1. 执行如下的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."
  2. 创建的AWS的结构图
    在默认的vpc的默认subnet之中创建security group,之后创建ec2 server
    注意,这里的默认vpc必须能够有个internet gateway,并且能自动分配public ip address

  3. 查看AWS CLI脚本的执行结果

    • 可以看到,security group已经创建,并且已经启动了一个ec2 server

    • 查看AWS Console

  4. 使用私钥文件来访问ec2 server

    shell 复制代码
    	ssh -i my-cli-key.pem ec2-user@ec2-13-114-248-64.ap-northeast-1.compute.amazonaws.com
    • 使用git bash登录进去ec2 server
  5. 练习完毕之后停止ec2 server

    • 一定要停止ec2 server
      注意,重要的事情说3遍,一定要注意清理练习后的环境,否则会发生费用,是美元!!

4. 使用drawio(vscode插件)进行AWS的画图

  1. 对于AWS的各种service组成的构成图,可以采用drawio。采用vscodedrawio插件。
  2. 做成一个aws.drawio,之后采用vscode打开。
  3. 打开More Shapes,之后将AWS 19选项
  4. 之后使用drawio画出AWS的构成图
相关推荐
蜡笔小新星7 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
攸攸太上21 分钟前
JMeter学习
java·后端·学习·jmeter·微服务
speop32 分钟前
【笔记】I/O总结王道强化视频笔记
笔记·音视频
Ljubim.te1 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
yngsqq1 小时前
031集——文本文件按空格分行——C#学习笔记
笔记·学习·c#
zengy52 小时前
Effective C++中文版学习记录(三)
数据结构·c++·学习·stl
cyt涛2 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
Willliam_william2 小时前
SystemC学习(1)— SystemC安装与HelloWorld
学习
布丁不叮早起枣祈2 小时前
10.5学习
学习