选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

教程:创建 EFS 文件系统并将其挂载到 EC2 实例上 AWS CLI

聚焦模式
教程:创建 EFS 文件系统并将其挂载到 EC2 实例上 AWS CLI - Amazon Elastic File System

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建加密的 EFS 文件系统,将其挂载到您的 VPC 中的 EC2 实例上,然后使用测试设置 AWS CLI。

注意

入门在本教程中,您将使用控制台创建 Amazon EC2 和 EFS 资源。在本教程中,您将使用 AWS CLI 来做同样的事情,主要是为了熟悉 Amazon EFS API。

在本教程中,你将在自己的账户中创建以下 AWS 资源:

  • 亚马逊 EC2 资源:

    • 两个安全组(用于您的 EC2 实例和 EFS 文件系统)。

      您可以将规则添加到这些安全组中,以授权适当的入站/出站访问。这样做可以 EC2instance 让你使用标准的 NFSv4 .1 TCP 端口通过装载目标连接到文件系统。

    • 您的 VPC 中的一个 EC2 实例。

  • Amazon EFS 资源:

    • 文件系统。

    • 文件系统的挂载目标。

      要在 EC2 实例上挂载文件系统,您需要在您的 VPC 中创建挂载目标。您可以在 VPC 中的每个可用区分别创建一个挂载目标。有关更多信息,请参阅 Amazon EFS 的工作原理

然后,在您的 EC2 实例上测试文件系统。教程结束时的清理步骤提供了删除这些资源的信息。

本教程在美国西部(俄勒冈州)区域(us-west-2)创建所有这些资源。无论 AWS 区域 您使用哪种方式,请务必始终如一地使用它。您的所有资源(您的 VPC EC2 、资源和 EFS 资源)必须位于同一个资源中。 AWS 区域

先决条件

  • 您可以使用您的根凭证 AWS 账户 登录控制台并尝试入门练习。但是, AWS Identity and Access Management (IAM) 建议您不要使用您的根证书 AWS 账户。而是在您的账户中创建一个管理员用户,并使用这些凭证来管理您的账户中的资源。而是在您的账户中创建一个管理员用户,并使用这些凭证来管理您的账户中的资源。有关更多信息,请参阅用户指南中的为 IAM Identity Cent AWS IAM Identity Center er 用户分配 AWS 账户 访问权限

  • 您可以使用默认 VPC,也可以使用在您的账户中创建的自定义 VPC。对于本演练,可以使用默认的 VPC 配置。但是,如果您使用自定义 VPC,请验证以下情况:

    • 已启用 DNS 主机名。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 中的 DNS 属性

    • Internet 网关已连接到您的 VPC。有关更多信息,请参阅 Amazon VPC 用户指南中的使用互联网网关连接到互联网

    • 已配置 VPC 子网来为 VPC 子网中启动的实例请求公有 IP 地址。有关更多信息,请参阅 Amazon VPC 用户指南中的您的 VPCs 和子网的 IP 地址

    • VPC 路由表包含一个规则,以将 Internet 范围的所有流量发送到 Internet 网关。

  • 您需要设置 AWS CLI 并添加管理员用户配置文件。

设置 AWS CLI

按照以下说明设置 AWS CLI 和用户配置文件。

要设置 AWS CLI
  1. 下载并配置 AWS CLI。有关说明,请参阅《AWS Command Line Interface User Guide》中的 Get started with the AWS CLI

  2. 设置配置文件。

    您将用户凭据存储在 AWS CLI config文件中。本教程中的示例 CLI 命令指定 adminuser 配置文件。在 config 文件中创建 adminuser 配置文件。也可以在 config 文件中将管理员用户配置文件设置为默认配置文件,如下所示。

    [profile adminuser] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2 [default] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2

    前面的配置文件也设置了默认值 AWS 区域。如果没有在 CLI 命令中指定区域,则假定为 us-west-2 区域。

  3. 在命令提示符处输入以下命令来验证设置。两个命令都没有显式提供凭证,所以将使用默认配置文件的凭证。

    • 尝试 help 命令

      您也可以通过添加 --profile 参数来显式指定用户配置文件。

      aws help
      aws help \ --profile adminuser

步骤 1:创建 EC2 资源

在此步骤中,您将执行以下操作:

  • 创建两个安全组。

  • 在安全组中添加规则以授权额外访问。

  • 启动实 EC2 例。在下一步中,您将创建一个 EFS 文件系统并将其挂载到该实例上。

步骤 1.1:创建两个安全组

在本节中,您将在 VPC 中为您的 EC2 实例和 EFS 挂载目标创建安全组。在本教程的稍后部分,您将这些安全组分配给 EC2 实例和 EFS 挂载目标。有关安全组的信息,请参阅适用于 Linux 实例的 Amazon EC2 安全组

创建安全组
  1. 使用 create-security-group CLI 命令创建两个安全组:

    1. 为您的 EC2 实例创建安全组 (efs-walkthrough1-ec2-sg),并提供您的 VPC ID。

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-ec2-sg \ --description "Amazon EFS walkthrough 1, SG for EC2 instance" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      记下安全组 ID。以下为响应示例。

      { "GroupId": "sg-aexample" }

      您可以使用以下命令查找 VPC ID:

      $ aws ec2 describe-vpcs

    2. 为 EFS 挂载目标创建安全组(efs-walkthrough1-mt-sg)。您需要提供 VPC ID。

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-mt-sg \ --description "Amazon EFS walkthrough 1, SG for mount target" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      记下安全组 ID。以下为响应示例。

      { "GroupId": "sg-aexample" }
  2. 验证安全组。

    aws ec2 describe-security-groups \ --group-ids list of security group IDs separated by space \ --profile adminuser \ --region us-west-2

    两个安全组都应当只有一条允许所有出站流量的出站规则。

    在下一节中,您将授权额外访问,以便:

    • 使您能够连接到您的 EC2 实例。

    • 启用 EC2 实例和 EFS 挂载目标之间的流量(您将在本教程的后面部分将这些安全组与之关联)。

步骤 1.2:在安全组中添加规则以授权入站/出站访问

在该步骤中,您将在安全组中添加规则以授权入站/出站访问。

添加规则
  1. 授权传入的安全外壳 (SSH) 连接到您的 EC2 实例的安全组 (efs-walkthrough1-ec2-sg),这样您就可以从任何主机使用 SSH 连接到您的 EC2 实例。

    $ aws ec2 authorize-security-group-ingress \ --group-id id of the security group created for EC2 instance \ --protocol tcp \ --port 22 \ --cidr 0.0.0.0/0 \ --profile adminuser \ --region us-west-2

    验证安全组具有您添加的入站和出站规则。

    aws ec2 describe-security-groups \ --region us-west-2 \ --profile adminuser \ --group-id security-group-id
  2. 授权到 EFS 挂载目标安全组(efs-walkthrough1-mt-sg)的入站访问。

    在命令提示符处,使用管理员用户配置文件运行以下 AWS CLI authorize-security-group-ingress命令来添加入站规则。

    $ aws ec2 authorize-security-group-ingress \ --group-id ID of the security group created for Amazon EFS mount target \ --protocol tcp \ --port 2049 \ --source-group ID of the security group created for EC2 instance \ --profile adminuser \ --region us-west-2
  3. 确认两个安全组现在都授权了入站访问。

    aws ec2 describe-security-groups \ --group-names efs-walkthrough1-ec2-sg efs-walkthrough1-mt-sg \ --profile adminuser \ --region us-west-2

步骤 1.3:启动 EC2 实例

在此步骤中,您将启动一个 EC2 实例。

启动实 EC2 例
  1. 收集启动 EC2 实例时需要提供的以下信息:

    • 密钥对名称。有关创建密钥对的说明,请参阅亚马逊 EC2 用户指南中的为您的亚马逊 EC2 实例创建密钥对

    • 要启动的 Amazon 系统映像 (AMI) 的 ID。

      用于启动 EC2 实例的 AWS CLI 命令需要将要部署的 Amazon 系统映像 (AMI) 的 ID 作为参数。本练习使用 Amazon Linux HVM AMI。

      注意

      您可以使用大多数基于 Linux 的通用型 AMIs。如果您使用其他 Linux AMI,请确保使用分发包管理器在实例上安装 NFS 客户端。此外,您可能还需要添加一些软件包。

      对于亚马逊 Linux HVM AMI,你可以在亚马逊 Linux AMI IDs 上找到最新版本。您可以按如下方式从亚马逊 Linux AMI IDs 表中选择 ID 值:

      • 选择美国西部(俄勒冈)区域。本演练假定您将在美国西部(俄勒冈州)区域(us-west-2)创建所有资源。

      • 选择 EBS 支持的 HVM 64 位类型(因为您在 CLI 命令中指定 t2.micro 实例类型,它不支持实例存储)。

    • 您为 EC2 实例创建的安全组的 ID。

    • AWS 区域。本演练使用 us-west-2 区域。

    • 您要在其中启动实例的 VPC 子网的 ID。可以使用 describe-subnets 命令获取子网列表。

      $ aws ec2 describe-subnets \ --region us-west-2 \ --filters "Name=vpc-id,Values=vpc-id" \ --profile adminuser

      选择子网 ID 后,记下 describe-subnets 结果中的以下值:

      • 子网 ID – 创建挂载目标时需要此值。在本练习中,您将在启动 EC2 实例的同一子网中创建挂载目标。

      • 子网的可用区-您需要此值来构造挂载目标 DNS 名称,该名称用于在 EC2 实例上挂载文件系统。

  2. 运行以下 AWS CLI run-instances命令启动 EC2实例。

    $ aws ec2 run-instances \ --image-id AMI ID \ --count 1 \ --instance-type t2.micro \ --associate-public-ip-address \ --key-name key-pair-name \ --security-group-ids ID of the security group created for EC2 instance \ --subnet-id VPC subnet ID \ --region us-west-2 \ --profile adminuser
  3. 记下 run-instances 命令返回的实例 ID。

  4. 您创建的 EC2 实例必须具有公有 DNS 名称,用于连接到该 EC2 实例并在其上挂载文件系统。公有 DNS 名称的形式为:

    ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

    运行以下 CLI 命令,并记下公有 DNS 名称。

    aws ec2 describe-instances \ --instance-ids EC2 instance ID \ --region us-west-2 \ --profile adminuser

    如果找不到公有 DNS 名称,请检查启动 EC2 实例的 VPC 的配置。有关更多信息,请参阅 先决条件

  5. (可选)为您创建的 EC2 实例分配一个名称。为此,请添加一个标签,其中键名和值设置为要分配给实例的名称。您可以通过运行以下 AWS CLI create-tags命令来完成此操作。

    $  aws ec2 create-tags \ --resources EC2-instance-ID \ --tags Key=Name,Value=Provide-instance-name  \ --region us-west-2 \ --profile adminuser

步骤 2:创建 EFS 资源

在此步骤中,您将执行以下操作:

  • 创建加密 EFS 文件系统。

  • 启用生命周期管理

  • 在启动了 EFS 实例的可用区创建挂载目标。

步骤 2.1:创建 EFS 文件系统

在该步骤中,您将创建一个 EFS 文件系统。记下 FileSystemId,以便稍后在下一步中为文件系统创建挂载目标时使用。

创建文件系统
  • 创建文件系统并添加可选的 Name 标签。

    1. 在命令提示符处,运行以下 AWS CLI create-file-system 命令。

      $ aws efs create-file-system \ --encrypted \ --creation-token FileSystemForWalkthrough1 \ --tags Key=Name,Value=SomeExampleNameValue \ --region us-west-2 \ --profile adminuser

      您将收到以下响应。

      { "OwnerId": "111122223333", "CreationToken": "FileSystemForWalkthrough1", "FileSystemId": "fs-c657c8bf", "CreationTime": 1548950706.0, "LifeCycleState": "creating", "NumberOfMountTargets": 0, "SizeInBytes": { "Value": 0, "ValueInIA": 0, "ValueInStandard": 0 }, "PerformanceMode": "generalPurpose", "Encrypted": true, "KmsKeyId": "arn:aws:kms:us-west-2:111122223333:a5c11222-7a99-43c8-9dcc-abcdef123456", "ThroughputMode": "bursting", "Tags": [ { "Key": "Name", "Value": "SomeExampleNameValue" } ] }
    2. 记下 FileSystemId 的值。在步骤 2.3:创建挂载目标中为该文件系统创建挂载目标时需要该值。

步骤 2.2:启用生命周期管理

在该步骤中,您将在文件系统上启用生命周期管理,以便使用 EFS 不频繁访问(IA)存储类。要了解更多信息,请参阅 管理 EFS 文件系统的存储生命周期策略EFS 存储类

启用生命周期管理
  • 在命令提示符处,运行以下 AWS CLI put-lifecycle-configuration命令。

    $ aws efs put-lifecycle-configuration \ --file-system-id fs-c657c8bf \ --lifecycle-policies TransitionToIA=AFTER_30_DAYS \ --region us-west-2 \ --profile adminuser

    您将收到以下响应。

    { "LifecyclePolicies": [ { "TransitionToIA": "AFTER_30_DAYS" } ] }

步骤 2.3:创建挂载目标

在此步骤中,您将在启动 EC2 实例的可用区中为文件系统创建挂载目标。

  1. 确保您已获得以下信息:

    • 您为其创建挂载目标的文件系统 (例如 fs-example) 的 ID。

    • 您在其中启动 EC2 实例的 VPC 子网 ID 步骤 1:创建 EC2 资源

      在本教程中,您在启动 EC2 实例的同一子网中创建挂载目标,因此您需要子网 ID(例如subnet-example)。

    • 在上一步中您为挂载目标创建的安全组的 ID。

  2. 在命令提示符处,运行以下 AWS CLI create-mount-target命令。

    $ aws efs create-mount-target \ --file-system-id file-system-id \ --subnet-id subnet-id \ --security-group ID-of-the security-group-created-for-mount-target \ --region us-west-2 \ --profile adminuser

    您将收到以下响应。

    { "MountTargetId": "fsmt-example", "NetworkInterfaceId": "eni-example", "FileSystemId": "fs-example", "PerformanceMode" : "generalPurpose", "LifeCycleState": "available", "SubnetId": "fs-subnet-example", "OwnerId": "account-id", "IpAddress": "xxx.xx.xx.xxx" }
  3. 您还可以使用 describe-mount-targets 命令来获取为文件系统创建的挂载目标的描述。

    $ aws efs describe-mount-targets \ --file-system-id file-system-id \ --region us-west-2 \ --profile adminuser

步骤 3:在 EC2 实例上挂载文件系统并进行测试

在此步骤中,您将执行以下操作:

  • 收集所需信息。

  • 在您的 EC2 实例上安装 NFS 客户端。

  • 在您的 EC2 实例上安装文件系统并进行测试。

步骤 3.1:收集信息

在执行本节的步骤时,确保您获取以下信息:

  • 您的 EC2 实例的公有 DNS 名称采用以下格式:

    ec2-xx-xxx-xxx-xx.aws-region.compute.amazonaws.com
  • 文件系统的 DNS 名称。您可以使用以下通用形式构建此 DNS 名称:

    file-system-id.efs.aws-region.amazonaws.com

    使用挂载目标挂载文件系统的 EC2 实例可以将文件系统的 DNS 名称解析为挂载目标的 IP 地址。

注意

Amazon EFS 不要求您的 EC2 实例具有公有 IP 地址或公有 DNS 名称。前面列出的要求仅针对本演练示例,目的是确保您可以使用 SSH 从 VPC 外部连接到实例。

步骤 3.2:在您的 EC2 实例上安装 NFS 客户端

你可以从 Windows、运行 Linux、macOS X 或任何其他 Unix 变体的计算机连接到你的 EC2 实例。

安装 NFS 客户端
  1. Connect 连接到您的 EC2 实例。有关更多信息,请参阅 Amazon EC2 用户指南中的 Connect 到您的 EC2 实例

  2. 使用 SSH 会话在 EC2 实例上执行以下命令:

    1. (可选) 获取更新并重启。

      $ sudo yum -y update $ sudo reboot

      重启后,重新连接到您的 EC2 实例。

    2. 安装 NFS 客户端。

      $ sudo yum -y install nfs-utils
      注意

      如果您在启动 EC2 实例时选择亚马逊 Linux AMI 2016.03.0 Amazon Linux AMI,则无需nfs-utils安装,因为它已默认包含在 AMI 中。

步骤 3.3:在您的 EC2实例上挂载文件系统并进行测试

现在,您将文件系统挂载到您的 EC2 实例上。

  1. 创建目录 (” efs-mount-point “)。

    $ mkdir ~/efs-mount-point
  2. 挂载 EFS 文件系统。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-DNS:/ ~/efs-mount-point

    EC2 实例可以将挂载目标 DNS 名称解析为 IP 地址。您也可以直接指定挂载目标的 IP 地址。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/  ~/efs-mount-point
  3. 现在,您已经在 EC2 实例上安装了 EFS 文件系统,就可以创建文件了。

    1. 更改目录。

      $ cd ~/efs-mount-point
    2. 列出目录的内容。

      $ ls -al

      它应该是空的。

      drwxr-xr-x 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..

    3. 刚创建的文件系统的根目录由根用户拥有并且只能由根用户写入,因此您需要更改权限以添加文件。

      $ sudo chmod go+rw .

      现在,如果您尝试 ls -al 命令,可以看到权限已更改。

      drwxrwxrwx 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..
    4. 创建 文本文件。

      $ touch test-file.txt
    5. 列出目录的内容。

      $ ls -l

现在,您已成功在 VPC 中的 EC2 实例上创建并安装了 EFS 文件系统。

重启后挂载的文件系统将不复存在。为了自动重新挂载目录,可以使用 fstab 文件。如果您使用 Auto Scaling 组启动 EC2 实例,则还可以在启动配置中设置脚本。

步骤 4:清除

如果不再需要使用创建的资源,应将其删除。可以使用 CLI 删除。

  • 移除 EC2 资源( EC2 实例和两个安全组)。当您删除挂载目标时,Amazon EFS 会删除网络接口。

  • 删除 EFS 资源(文件系统、挂载目标)。

删除在本演练中创建的 AWS 资源
  1. 终止您为本教程创建的 EC2 实例。

    $ aws ec2 terminate-instances \ --instance-ids instance-id \ --profile adminuser

    您也可以使用控制台删除 EC2 资源。有关说明,请参阅终止实例

  2. 删除挂载目标。

    只有在删除为文件系统创建的挂载目标后才能删除文件系统。可以使用 describe-mount-targets CLI 命令获得挂载目标列表。

    $ aws efs describe-mount-targets \ --file-system-id file-system-ID \ --profile adminuser \ --region aws-region

    然后,使用 delete-mount-target CLI 命令删除挂载目标。

    $ aws efs delete-mount-target \ --mount-target-id ID-of-mount-target-to-delete \ --profile adminuser \ --region aws-region
  3. (可选) 删除您创建的两个安全组。创建安全组不需要支付费用。

    在删除 EC2 实例的安全组之前,必须先删除挂载目标的安全组。挂载目标的安全组有一条引用该 EC2 安全组的规则。因此,您不能先删除 EC2 实例的安全组。

    有关说明,请参阅 Amazon EC2 用户指南中的删除您的安全组

  4. 通过 delete-file-system CLI 命令删除文件系统。可以使用 describe-file-systems CLI 命令获得文件系统列表。可以从响应中获得文件系统 ID。

    aws efs describe-file-systems \ --profile adminuser \ --region aws-region

    通过提供文件系统 ID 删除文件系统。

    $ aws efs delete-file-system \ --file-system-id ID-of-file-system-to-delete \ --region aws-region \ --profile adminuser
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。