教學課程:建立EFS檔案系統並使用 EC2 AWS CLI - Amazon Elastic File System

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:建立EFS檔案系統並使用 EC2 AWS CLI

建立加密的EFS檔案系統,將其掛載到您的EC2執行個體上VPC,然後使用 AWS CLI.

注意

開始使用教學中,您可以使用主控台來建立 Amazon EC2 和EFS資源。在本教程中,您可以使用 AWS CLI 來執行相同的操作 — 主要是為了熟悉 Amazon。EFS API

在本教學課程中,您會在帳戶中建立下列 AWS 資源:

  • Amazon EC2 資源:

    • 兩個安全群組 (適用於您的EC2執行個體和EFS檔案系統)。

      您對安全群組新增規則以授予適當傳入/傳出存取權。這樣做可讓您EC2instance使用標準的 NFSv4 .1 連接TCP埠,透過掛載目標連接至檔案系統。

    • 您的EC2執行個體中的VPC.

  • 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身分識別中心使用AWS IAM Identity Center 者的 AWS 帳戶 存取權。

  • 您可以使用您在帳戶中建立的預設值VPC或自訂VPC。對於本逐步解說,預設VPC組態可運作。但是,如果您使用自訂VPC,請確認下列事項:

    • DNS主機名稱已啟用。如需詳細資訊,請參閱 Amazon VPC 使用者指南VPC的DNS屬性

    • 網際網路閘道已連接到您的VPC. 如需詳細資訊,請參閱 Amazon 使用VPC者指南中的使用網際網路閘道 Connect 到網際網路。

    • VPC子網路設定為要求在子網路中啟動的執行個體的公用 IP 位址。VPC如需詳細資訊,請參閱 Amazon VPC 使用者指南的您VPCs和子網路的 IP 定址

    • VPC路由表包含一個規則,可將所有網際網路繫結的流量傳送至網際網路閘道。

  • 您需要設置 AWS CLI 並添加管理員用戶配置文件。

正在設定 AWS CLI

請使用下列指示來設定 AWS CLI 和使用者設定檔。

若要設定 AWS CLI
  1. 下載和設定 AWS CLI。如需指示,請參閱《使用者指南》 AWS CLI中的〈開始AWS Command Line Interface使用〉

  2. 設定設定檔。

    您可以將使用者認證儲存在 AWS CLI config檔案中。本自學課程中的範例指CLI令會指定管理員使用者紀要。在 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:建立兩個安全群組

在本節中,您將在您的VPCEC2執行個體和EFS掛載目標中建立安全群組。稍後在教學課程中,您會將這些安全群組指派給EC2執行個體和EFS裝載目標。如需安全群組的相關資訊,請參閱 Linux 執行個體適用的 Amazon EC2 安全群組

建立安全群組
  1. 使用以下create-security-groupCLI指令建立兩個安全性群組:

    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. 授權傳入的 Secure Shell (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) 之安全性群組的輸入存取權。

    在命令提示字元中,使用 admin 使用者設定檔執行下列 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執行個體時需要提供的下列資訊:

    • 金鑰對名稱. 如需建立 key pair 的說明,請參閱 Amazon EC2使用者指南的為 Amazon EC2 執行個體建立 key pair

    • 您要啟動的 Amazon 機器映像(AMI)的 ID。

      您用來啟動EC2執行個體的 AWS CLI 命令需要您要部署為參數的 Amazon 機器映像 (AMI) 的 ID。該練習使用 Amazon Linux HVM AMI。

      注意

      您可以使用最通用的 Linux 為基礎AMIs。如果您使用其他 LinuxAMI,請確定您使用發行版的套件管理員在執行個體上安裝用NFS戶端。此外,您可能要視情況新增套裝軟體。

      對於 Amazon Linux HVMAMI,你可以找到最新IDs的 Amazon Linux AMI。您可以從 Amazon Linux AMI IDs 表中選擇 ID 值,如下所示:

      • 選擇 US West Oregon (美國西部奧勒岡) 區域。此逐步解說假設您正在美國西部 (奧勒岡) (us-west-2) 中建立所有資源。

      • 選擇 EBS-backed HVM 64 位類型(因為在CLI命令中指定了不支持t2.micro實例存儲的實例類型)。

    • 您為EC2執行個體建立的安全性群組識別碼。

    • 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名稱,請檢查您VPC在其中啟動EC2執行個體的設定。如需詳細資訊,請參閱 必要條件

  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 CLIcreate-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:啟用生命週期管理

在此步驟中,您可以在 FILE 系統上啟用生命週期管理,以便使用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. 請務必備妥下列資訊:

    • 您欲建立掛載目標的檔案系統 ID (例如,fs-example)。

    • VPC您在其中啟動EC2執行個體的子網路識別碼步驟 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、EC2執行 Linux、macOS X 或任何其他 Unix 變體的電腦連線至執行個體。

若要安裝用NFS戶端
  1. 連線到您的 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執行個體AMI時選擇 Amazon Linux AMI 2016.03.0 Amazon Linux,則不需要安裝,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

您現在已成功地在您的EC2執行個體上建立並掛載EFS檔案系統VPC。

您掛載的檔案系統在重新啟動期間將不會保留。若要自動重新掛載目錄,您可以使用 fstab 檔案。如果您使用 Auto Scaling 群組來啟動EC2執行個體,也可以在啟動設定中設定指令碼。

步驟 4:清理

如果您不再需要您建立的資源,您應該予以移除。您可以使用CLI.

  • 移除EC2資源 (EC2執行個體和兩個安全群組)。當您EFS刪除掛載目標時,Amazon 會刪除網路介面。

  • 移除EFS資源 (檔案系統、掛載目標)。

若要刪除本逐步解說中建立的 AWS 資源
  1. 終止您為此教學課程建立的EC2執行個體。

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

    您也可以使用控制台刪除EC2資源。如需說明,請參閱終止執行個體

  2. 刪除該掛載目標。

    在刪除檔案系統前,您必須刪除為該檔案系統建立的掛載目標。您可以使用describe-mount-targetsCLI指令取得掛載目標的清單。

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

    然後使用delete-mount-targetCLI指令刪除裝載目標。

    $ 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-systemCLI指令刪除檔案系統。您可以使用describe-file-systemsCLI指令取得檔案系統的清單。您可以自回應取得檔案系統 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