将 Amazon S3 与 Amazon EC2 实例结合使用
Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。您可以使用 Amazon S3 为数据湖、网站、备份和大数据分析等一系列用例存储和检索任意数量的数据,这些数据可以来自 Amazon EC2 实例或互联网上的任何地方。有关更多信息,请参阅什么是 Amazon S3?
有两种方法可以从 Amazon EC2 实例访问 Amazon S3 数据:
-
文件访问:使用 Amazon S3 Files 将 S3 存储桶作为高性能文件系统挂载到实例。
-
对象访问:使用 Amazon S3 API、AWS CLI、AWS SDK 或 wget 等工具在 S3 之间复制对象。
使用 Amazon S3 Files 进行文件访问
Amazon S3 Files 是一个无服务器文件系统,允许您将 S3 通用存储桶作为高性能文件系统挂载到计算实例。借助 S3 Files,您可以通过本地挂载路径上的标准文件系统操作(例如读取和写入),将 S3 对象作为文件进行访问。
您可以在启动时或启动后正在运行的实例上,将 S3 文件系统挂载到 EC2 实例。
先决条件
在使用 EC2 实例设置 S3 Files 之前,务必先满足以下条件:
-
拥有一个 S3 文件系统,以及至少一个处于可用状态的挂载目标。有关创建 S3 文件系统的信息,请参阅《Amazon S3 用户指南》中的使用 Amazon S3 Files。
-
EC2 Linux 实例附加到实例配置文件。有关挂载文件系统所需权限的信息,请参阅《Amazon S3 用户指南》中的 IAM 角色和策略。
-
安全组允许实例与文件系统挂载目标之间的 NFS 流量(端口 2049)。有关所需安全组设置的信息,请参阅《Amazon S3 用户指南》中的安全组。
在启动时使用 EC2 控制台将文件系统挂载到 EC2 实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
选择启动实例。
-
在 Network settings(网络设置)下,执行以下操作:
-
选择编辑。
-
对于 Subnet (子网),选择一个子网。
-
选择默认安全组,以确保 EC2 实例可以访问 S3 文件系统。您不能使用该安全组通过安全外壳 (SSH) 访问您的 EC2 实例。要通过 SSH 进行访问,您可以稍后编辑默认安全组,并添加一个允许 SSH 的规则/新安全组。您可以使用以下设置:
-
类型:SSH
-
协议:TCP
-
端口范围:22
-
源:任何位置 0.0.0.0/0
-
-
-
在配置存储下,执行以下操作:
-
在文件系统下,选择 S3 Files。
-
请选择 Add shared file system(添加共享文件系统)。
-
对于 S3 文件系统,文件系统会根据您在网络设置中选择的子网显示在可用区中。选择要挂载的 S3 文件系统。如果没有任何文件系统,请选择创建新的文件系统创建一个新的。
-
在 EC2 实例上输入要在其中挂载文件系统的本地挂载路径(例如
/mnt/s3files)。 -
将生成一个命令来挂载文件系统并将其添加到 fstab。您可以将此命令添加到高级详细信息下的用户数据字段中。然后,EC2 实例将配置为在启动或重启时挂载 S3 文件系统。您也可以在 EC2 实例启动后运行这些命令。
-
-
在高级详细信息下,将实例配置文件附加到实例。IAM 角色必须具有挂载文件系统和访问 S3 存储桶的权限。有关所需权限的更多信息,请参阅《Amazon S3 用户指南》中的 IAM 角色和策略。
-
选择启动实例。
实例启动后,将安装所需的软件实用程序并挂载文件系统。您可以通过导航到本地挂载路径来查看文件系统。
在启动后将文件系统挂载到 EC2 实例
-
通过 Secure Shell(SSH)或 EC2 控制台中的 EC2 Instance Connect 连接到 EC2 实例。
-
要挂载 S3 文件系统,请使用挂载帮助程序
amazon-efs-utils。根据 Linux 发行版,使用以下命令之一安装amazon-efs-utils软件包:-
如果您使用的是 Amazon Linux,请运行以下命令从 Amazon 存储库安装 efs-utils:
sudo yum -y install amazon-efs-utils -
如果您使用的是其他受支持的 Linux 发行版
,请运行以下命令: curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install -
有关其他 Linux 发行版,请参阅 GitHub 上的 efs-utils
存储库。
-
-
使用以下命令为文件系统挂载点创建一个目录:
sudo mkdir {path/to/mount} -
挂载 S3 文件系统:
FS="{YOUR_FILE_SYSTEM_ID}" sudo mount -t s3files $FS:/ {path/to/mount} -
确认文件系统已挂载:
df -h {path/to/mount}
将 S3 存储桶中的对象作为文件查看
完成上述步骤后,您现在可以使用标准文件系统操作在本地挂载路径上将 S3 对象作为文件进行读取和写入。如果 S3 存储桶中有对象,则可以使用以下命令将其作为文件进行查看:
ls {path/to/mount}
基于对象的访问
您可以使用 S3 API、AWS CLI、AWS SDK 或标准 HTTP 工具在 Amazon S3 之间复制文件。如果您具有所需的权限,可以使用以下方法之一在 Amazon S3 和实例之间复制文件。