

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

# 搭配 Amazon Elastic File System 使用 Elastic Beanstalk
<a name="services-efs"></a>

您可以使用 Amazon Elastic File System (Amazon EFS) 來建立網路檔案系統，多個可用區域中的執行個體可掛載這些檔案系統。Amazon EFS 檔案系統是一種 AWS 資源，使用安全群組來控制對您預設或自訂 VPC 中網路的存取。

在 Elastic Beanstalk 環境中，您可以使用 Amazon EFS 來建立共用的目錄，供您的應用程式儲存使用者上傳和修改的檔案。您的應用程式可以處理掛載的 Amazon EFS 磁碟區，例如本機儲存體。這樣一來，您就不需為了擴展成多個執行個體而變更應用程式的程式碼。

如需 Amazon EFS 的詳細資訊，請參閱 [Amazon Elastic File System 使用者指南](https://docs.aws.amazon.com/efs/latest/ug/)。



**注意**  
Elastic Beanstalk 會建立 *webapp* 使用者，您可以將其設定為 Amazon EC2 執行個體上應用程式目錄的擁有者。如需詳細資訊，請參閱本指南的*設計考量*主題中的[持久性儲存](concepts.concepts.design.md#concepts.concepts.design.storage)。

**Topics**
+ [組態檔案](#services-efs-configs)
+ [加密的檔案系統](#services-efs-encrypted)
+ [範例應用程式](#services-efs-samples)
+ [清除檔案系統](#services-efs-cleanup)

## 組態檔案
<a name="services-efs-configs"></a>

Elastic Beanstalk 提供[組態檔案](ebextensions.md)，可用來建立和掛載 Amazon EFS 檔案系統。您可以建立 Amazon EFS 磁碟區來做為您環境的一部分，或是掛載您在 Elastic Beanstalk 以外另行建立的 Amazon EFS 磁碟區。
+ **[storage-efs-createfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config)** - 使用 `Resources` 金鑰，來在 Amazon EFS 中建立新的檔案系統和掛載點。您環境中的所有執行個體，都可以連接到相同的檔案系統，來使用共用、可擴展的儲存空間。請使用 `storage-efs-mountfilesystem.config`，來在每個執行個體上掛載檔案系統。
**內部資源**  
您使用組態檔案建立的任何資源都會與您環境的生命週期連結。如果您終止環境或移除組態檔案，就會失去這些資源。
+ **[storage-efs-mountfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-mountfilesystem.config)** - 將 Amazon EFS 檔案系統，掛載到您環境中執行個體上的本機路徑。您可以在環境中使用 `storage-efs-createfilesystem.config` 建立磁碟區。或者，您可以使用 Amazon EFS 主控台 AWS CLI或 AWS SDK 將其掛載到您的環境。

若要使用組態檔案，請先利用 `storage-efs-createfilesystem.config` 來建立 Amazon EFS 檔案系統。遵循組態檔案中的指示，並將組態檔案加入您原始程式碼中的 [.ebextensions](ebextensions.md) 目錄，以在您的 VPC 中建立檔案系統。

將更新的原始碼部署到您的 Elastic Beanstalk 環境，以便確認檔案系統是否建立成功。然後，加入 `storage-efs-mountfilesystem.config`，以將檔案系統掛載到您環境中的執行個體。在兩個不同的部署中執行此操作，可確保掛載操作失敗時，檔案系統不會受到影響。如果在同一個部署中執行這兩項操作，則任何一個步驟所發生的問題，都會造成檔案系統在部署失敗時終止。

## 加密的檔案系統
<a name="services-efs-encrypted"></a>

Amazon EFS 支援加密的檔案系統。本主題中所討論的 [https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config) 組態檔案定義了兩個自訂選項。您可以使用這些選項來建立 Amazon EFS 加密檔案系統。如需詳細資訊，請參閱組態檔案中的指示。

## 範例應用程式
<a name="services-efs-samples"></a>

Elastic Beanstalk 也提供範例應用程式，這些應用程式使用 Amazon EFS 來共用儲存。兩個專案包括可以搭配標準 WordPress 使用的組態檔案，或是 Drupal 安裝程式，此程式可在負載平衡的環境中，執行部落格或其他內容管理系統。當使用者上傳相片或其他媒體時，檔案會儲存在 Amazon EFS 檔案系統中。這樣可以避免使用替代方案，也就是使用外掛程式將上傳的檔案存儲在 Amazon S3 中。
+ **[Load-balanced WordPress](https://github.com/awslabs/eb-php-wordpress)** - 包括組態檔案，用來安全地安裝 WordPress，並且在負載平衡的 Elastic Beanstalk 環境中執行。
+ **[Load-balanced Drupal](https://github.com/awslabs/eb-php-drupal)** – 包括組態檔案與指示，用來安全地安裝 Drupal，並且在負載平衡的 Elastic Beanstalk 環境中執行。

## 清除檔案系統
<a name="services-efs-cleanup"></a>

如果您在 Elastic Beanstalk 環境中使用組態檔案建立 Amazon EFS 檔案系統，則當您終止環境時，Elastic Beanstalk 會移除檔案系統。為了盡可能降低執行中應用程式的儲存成本，請定期刪除您的應用程式不需要的檔案。或者，請確保應用程式的程式碼正確維護檔案生命週期。

**重要**  
如果您在 Elastic Beanstalk 環境外建立 Amazon EFS 檔案系統，並掛載到環境的執行個體，那麼 Elastic Beanstalk 並不會在您終止環境時移除檔案系統。為了確保不保留個人資訊和降低儲存成本，如果不再需要應用程式存放的檔案，請予以刪除。或者，您可以移除整個檔案系統。