Day9 AWS配置EFS、S3
Day9 AWS配置EFS、S3

Day9 AWS配置EFS、S3

内容纲要

Day9 AWS配置EFS、S3

2.配置VPC

在配置EFS之前我们需要先配置VPC

  1. 进入VPC→お使いの VPC →アクション
  2. 选择VPC の設定を編集→勾选DNS ホスト名を有効化保存
  3. 配置安全组(セキュリティーグループ)
  4. 创建一个新的セキュリティーグループ起名qlite-dev-xxx-sg-efs
  5. 选择自己的VPC
  6. 入站规则填入NFS的2049端口
  7. ソース0.0.0.0/0
  8. 保存退出

拓展:

elastic file system. (亚马逊的服务)

network file system (2049)网络文件系统(NFS

2.什么是EFS?

什么是 Amazon Elastic File System?

Amazon Elastic File System (EFS) 旨在提供无服务器、完全弹性的文件存储,让您无需预置或管理存储容量和性能即可共享文件数据。只需在 AWS 管理控制台中选择几个选项即可创建文件系统。这些文件系统可供 Amazon Elastic Compute Cloud (EC2) 实例、Amazon 容器服务(Amazon Elastic Container Service (ECS)、Amazon Elastic Kubernetes Service (EKS) 以及 AWS Fargate)和 AWS Lambda 函数通过文件系统界面(使用标准操作系统文件 I/O API)访问。它们还支持完整的文件系统访问语义(例如强一致性和文件锁定)。

Amazon EFS 文件系统可以自动将数据容量从 GB 级扩展到 PB 级,无需预置存储。数十、数百甚至数千个计算实例可以同时访问一个 Amazon EFS 文件系统,且 Amazon EFS 可以为每个计算实例提供稳定的性能。Amazon EFS 经过专门设计,具有高持久性和高可用性。Amazon EFS 没有最低费用和设置成本,您只需按实际使用量付费。

https://aws.amazon.com/cn/efs/faq/

https://docs.aws.amazon.com/zh_cn/efs/latest/ug/whatisefs.html

貌似就是无限空间的存储块( ;∀;)

3.配置EFS

  1. 打开EFS→ファイルシステムの作成→カスタマイズ
  2. 填入名字(qlite-dev-xxx-efs)
  3. 取消勾选自動バックアップを有効化 其他默认选择次へ
  4. 在ネットワークアクセス选择自己的VPC
  5. 选择アベイラビリティーゾーン1a和1c对着选择自己的私有网pri1a和pri1c
  6. 最后选择自己刚刚创建的安全组选择下一步。
  7. 接着一直默认下一步到创建完成

3.1创建NAT ゲートウェイ

我们完成上面步骤后,因为我们要在web机上下载工具包。

所以创建一个NAT ゲートウェイ

注意⚠️创建的时候要选择我们的pub1a不然没网

并在路由表绑定到我们的pri1a和1c让他们连接网络。

3.2下载amazon-efs-utils

用跳板机登录我们的web1a

sodu su

sudo yum install -y amazon-efs-utils

mkdir /home/ec2-user/efs

mount -t efs fs-0e573c7e83f8b02a0:/ ./efs       #挂载EFS 

touch efstest.txt       #创建一个文件方便我们测试

echo 1234567 > efstest.txt  

cat efstest.txt

我们来看看mount -t efs fs-0e573c7e83f8b02a0:/ ./efs这条命令

mount -t efs是挂载并指定类型

fs-0e573c7e83f8b02a0为EFS的ID可以在网页的自己创建的EFS服务找到ID一般以fs开头

./efs是指定路径为当前路径的efs

3.3测试efs

我们回到bas跳板机来测试

sodu su

sudo yum install -y amazon-efs-utils

mkdir /home/ec2-user/testefs

mount -t efs fs-0e573c7e83f8b02a0:/ /home/ec2-user/testefs

#cd进入testefs来看看我们刚刚创建的efstest.txt  测试有没有挂载成功
cd /home/ec2-user/testefs

ls -all

[ec2-user@bas ~]$ cd testefs/
[ec2-user@bas testefs]$ ls
efstest.txt   #发现文件在,故挂载成功

小插曲:

测试完删掉EFS发现系统df -h无响应,ll也没反应,可以尝试重启实例解决。如果不不行看看这篇文章。

原因:系统有挂载NFS文件出现问题。

查看所有的系统挂载:

mount | column -t

强制卸载nfs文件:

umount /mnt/nfs -f

查看占用nfs文件进程:

fuser -cu /mnt/nfs

kill进程。

可能遇到的问题:

not running but is required for remote locking.
解决方法:

/etc/init.d/rpcbind start

参考:
https://blog.51cto.com/hezun/1672444

4.什么是 Amazon S3?

Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。

https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/Welcome.html

简单来说AWS S3就是一个网络传输文件的工具,可以理解为命令行操作的云盘。

5.配置使用S3

配置的大致练习方向

  1. 创建存储桶(网页)
  2. 上传文件(文件)
  3. 下载文件(web1a)
  4. 上传新文件(web1a)
  5. 查看新文件(网页)
  6. 删除存储桶(web1a)

5.1配置VPC

  1. 打开VPC→エンドポイント创建一个エンドポイント
  2. 填入名称qlite-dev-xxx-endpoint
  3. 选择AWSのサービス
  4. サービス (1/4)搜索S3→选择Gateway类型
  5. 选择自己的VPC
  6. ルートテーブル (3/6)选择pub和pri1a和pri1c
  7. 最后直接创建

5.2配置S3

  1. 打开S3→バケットを作成

  2. 输入名称qlite-dev-xxx-bucket

  3. 其他全部默认直接创建

  4. 创建完成我们点击自己的存储桶,随便上传一个名为0117PM.txt的文件

  5. 登录我们的web机

  6. #输入aws s3 ls发现之前设置过代理服务器不行我们删除他
    [ec2-user@web1a ~]$ aws s3 ls
    
    Failed to connect to proxy URL: "http://nlb-060bac24795f3860.elb.ap-northeast-1.amazonaws.com:8080"
    [ec2-user@web1a ~]$ unset http_proxy     #删除变量
    
    [ec2-user@web1a ~]$ aws s3 ls            #再次输入
    Unable to locate credentials. You can configure credentials by running "aws configure".
    
    [ec2-user@web1a ~]$ aws configure   #提示让我们输入aws configure我们就输入
    AWS Access Key ID [None]: 
    AWS Secret Access Key [None]: 
    Default region name [None]: ap-northeast-1
    Default output format [None]: JSON

    AWS Access Key ID和AWS Secret Access Key都可以在之前的IAM下载的CSV里面可以找到,如果没有就再去IAM里面重新创一个

    Default region name [None]可以在AWS网页的区域ID找到因为是东京所以为ap-northeast-1

    Default output format [None]:填JSON

5.3测试下载

#我们先来试试能不能把我们之前上传的0117PM.txt的文件下载下来
aws s3 cp s3://qlite-dev-xxx-bucket/0117PM.txt ./    

cp后面接s3里文件的路径,文件路径可以在网页里找到S3 URI をコピー来复制路径

最后空格接本地机器的路径我选择下载到本地所以我输入了 ./

测试上传

touch s3test.txt

aws s3 cp /home/ec2-user/s3test.txt s3://qlite-dev-xxx-bucket/s3text/s3test.txt

/home/ec2-user/s3test.txt为本地路径

s3://qlite-dev-xxx-bucket/s3text/s3test.txt为S3的路径

如果路径里没有文件夹会自动创建

测试删除

aws s3 rm s3://qlite-dev-oyb-bucket/0117PM.txt

如果想删除整个文件夹怎么办?

在末尾加入--recursive

aws s3 rm s3://qlite-dev-oyb-bucket/s3test/ --recursive

测试创建一个存储桶

aws s3 mb s3://qlite-test-xxx

测试删除一个存储桶

aws s3 rb s3://qlite-test-xxx

查看命令行历史记录history

注意⚠️

测试完了可以删掉エンドポイント因为是收费项目。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注