AWS Storage Gateway
User Guide (API 版本 2013-06-30)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

管理文件网关

随后,您可以找到有关如何管理文件网关资源的信息。

添加文档共享

在激活和运行 文件网关 后,您可以添加额外的文件共享并为其授予 Amazon S3 存储桶访问权。您可以授权访问的存储桶包括与您的文件共享不在同一个 AWS 账户下的存储桶。有关如何添加文件共享的信息,请参阅创建文件共享

授予对 Amazon S3 存储桶的访问权限

在创建文件共享时,文件网关 需要访问权限才能将文件上传到 Amazon S3 存储桶中。为了授予此访问权限,文件网关 将代入与授予此访问权限的 IAM 策略相关的 AWS Identity and Access Management (IAM) 角色。

该角色需要此 IAM 策略以及与之有关的安全令牌服务 (STS) 信任关系。此策略确定了该角色可以执行的操作。此外,您的 S3 存储桶还必须具有允许 IAM 角色访问 S3 存储桶的访问策略。

您可以自行创建该角色和访问策略,也可以让 文件网关 为您创建。如果 文件网关 为您创建该策略,该策略将包含 S3 操作列表。有关角色和权限的信息,请参阅 IAM 用户指南 中的创建向 AWS 服务委派权限的角色

下面是一个信任策略示例,该策略允许 文件网关 代入 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "storagegateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

如果您不希望 文件网关 代表您创建策略,您可以创建自己的策略并将它附加到文件共享。有关此操作的详细信息,请参阅 创建文件共享

以下示例策略允许 文件网关 执行策略中列出的所有 Amazon S3 操作。语句的第一部分允许对名为 TestBucket 的 S3 存储桶执行列出的所有操作。第二部分允许对 TestBucket 中的所有对象执行列出的操作。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetAccelerateConfiguration", "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::TestBucket", "Effect": "Allow" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::TestBucket/*", "Effect": "Allow" } ] }

使用文件共享进行跨账户访问

当 AWS 账户和该账户的用户获得了对属于其他 AWS 账户的资源的访问权限时,跨账户访问权限便出现了。有了文件网关,您可以使用一个 AWS 账户中的文件共享访问属于另一个 AWS 账户的 Amazon S3 存储桶中的对象。

使用一个 AWS 账户拥有的文件共享访问另一个 AWS 账户中的 S3 存储桶

  1. 确保 S3 存储桶拥有者授权您的 AWS 账户访问您需要访问的 S3 存储桶以及其中的对象。有关如何授予此访问权限的信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的示例 2:存储桶拥有者授予跨账户存储桶权限。有关所需权限的列表,请参阅授予对 Amazon S3 存储桶的访问权限

  2. 确保您的文件共享用来访问 S3 存储桶的 IAM 角色包含 s3:GetObjectAcls3:PutObjectAcl 等操作的权限。此外,确保 IAM 角色包括允许您的账户代入该 IAM 角色的信任策略。有关信任策略的示例,请参阅授予对 Amazon S3 存储桶的访问权限

  3. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  4. 配置文件共享设置对话框的对象元数据设置中,选择给予存储桶拥有者完全控制权限。有关创建或更新文件共享的更多信息,请参阅创建文件共享更新文件共享

在为跨账户访问权限创建或更新文件共享并在本地挂载该文件共享后,我们强烈建议您测试设置。为此,您可以列出目录内容或者编写测试文件并确保这些文件在 S3 存储桶中显示为对象。

重要

确保设置正确的策略以授予跨账户访问文件共享所使用的账户。如果您未这样做,则通过本地应用程序对文件所做的更新不能传播到您正在使用的 Amazon S3 存储桶。

有关访问策略和访问控制列表的更多信息,请参阅以下内容:

Amazon Simple Storage Service 开发人员指南 中的有关使用可用访问策略选项的准则

Amazon Simple Storage Service 开发人员指南 中的 访问控制列表 (ACL) 概述

删除文件共享

如果您不再需要某个文件共享,可以从 AWS Storage Gateway 管理控制台将其删除。删除文件共享时,网关会从文件共享映射到的 Amazon S3 存储桶分离。但是,S3 存储桶及其内容不会被删除。

在删除文件共享时,如果网关正在向 S3 存储桶上传数据,则删除过程需要等到所有数据上传完之后才会完成。在数据完全上传之前,文件共享将具有 DELETING 状态。

如果您希望将数据完全上传,请执行紧跟着的“删除文件共享”步骤。如果您不想等到数据都上传完毕后再删除文件共享,则请参阅本主题稍后的强制删除文件共享步骤。

删除文件共享

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择要删除的文件共享。

  3. 对于 Actions,选择 Delete file share。将出现以下确认对话框。

  4. 在确认对话框中,选中要删除的文件共享对应的复选框,然后选择 Delete

在某些情况下,您可能不想等到写入网络文件系统 (NFS) 文件共享上文件的所有数据都上传完毕后再删除文件共享。例如,您可能想要有意放弃已写入但尚未上传的数据。在另一个示例中,支持文件共享的 Amazon S3 存储桶或对象可能已被删除,这意味着无法再上传指定的数据。

在这些情况下,您可以通过使用 AWS 管理控制台或 DeleteFileShare API 操作强制删除文件共享。此操作会中止数据上传过程。执行此操作后,文件共享将进入 FORCE_DELETING 状态。要强制从控制台删除文件共享,请参阅以下过程。

强制删除文件共享

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择您要强制删除的文件共享并等待几秒钟。删除消息会显示在 Details 选项卡中。

    注意

    您无法撤消强制删除操作。

  3. Details 选项卡上显示的消息中,验证您要强制删除的文件共享的 ID,选中确认框,然后选择 Force delete now

您也可以使用 DeleteFileShare API 操作强制删除文件共享。

更新文件共享

您可以更新默认文件共享设置,可连接到文件共享的客户端以及文件共享的元数据默认值。

编辑文件共享设置

您可以编辑 Amazon S3 存储桶的默认存储类以及文件共享的“Squash level”设置和导出为选项。例如,Export as 选项可能包括 Read-write

编辑文件共享设置

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择要更新的文件共享。

  3. 对于 Actions,选择 Edit file share settings

  4. 执行以下一个或多个操作:

    • 对于 Storage class for new objects,选择 S3 存储桶的默认存储类,然后选择 Save

      新对象可能的存储类值如下:

      • S3 Standard – 将您经常访问的对象数据冗余存储在地理上分开的多个可用区中。

      • S3 Standard_IA – 将您不常访问的对象数据冗余存储在地理上分开的多个可用区中。

      • S3 One Zone_IA – 将您不常访问的对象数据存储在单个可用区中。

        有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的存储类别

    • 对于对象元数据,选择要使用的元数据:

      • 选择 Guess MIME type,根据文件扩展名猜测已上传对象的 MIME 类型。

      • 选择给予存储桶拥有者完全控制权限以向映射到文件 NFS 文件共享的 S3 存储桶的所有者授予完全控制权限。有关使用文件共享来访问其他账户拥有的存储桶中的对象的更多信息,请参阅使用文件共享进行跨账户访问

      • 如果您在要求请求者或读取者 (而不是存储桶拥有者) 支付访问费用的存储桶上使用此文件共享,请选择启用申请方付款。有关更多信息,请参阅申请方付款存储桶

    • 对于 Squash level,选择文件共享所需的压缩级别设置,然后选择 Save。可能的值包括:

      • Root squash (default) - 远程超级用户 (root 用户) 的访问权限将映射到 UID (65534) 和 GID (65534)。

      • No root squash – 远程超级用户 (根用户) 以根用户身份接收访问权限。

      • All squash – 所有用户访问权限将映射到 UID (65534) 和 GID (65534)。

      “Squash level”的默认值为 Root squash

    • 对于 Export as,为文件共享选择一个选项,然后选择 Save。默认值为 Read-write

      注意

      对于在 Microsoft Windows 客户端上装载的文件共享,如果您对于导出为选择了只读,则可能会看到有关某个意外错误正在阻止您创建文件夹的错误消息。此错误消息是 NFS 版本 3 的已知问题。您可以忽略此消息。

编辑元数据默认值

如果您没有为存储桶中的文件或目录设置元数据值,则文件网关将设置元数据默认值。这些值包括文件和文件夹的 Unix 权限。您可以在 AWS Storage Gateway 管理控制台中编辑元数据默认值。

当文件网关在 Amazon S3 中存储文件和文件夹时,Unix 文件权限将存储在对象元数据中。当文件网关发现没有被 文件网关 存储的对象时,系统会为这些对象分配默认 Unix 文件权限。您可以在下表中找到默认 Unix 权限。

元数据 描述
目录权限

“nnnn”形式的 Unix 目录模式。例如,“0666”表示文件共享中所有目录的访问模式。默认值为 0777。

文件权限

Unix 文件模式采用“nnnn”形式。例如,“0666”表示文件共享中的文件模式。默认值为 0666。

用户 ID

文件共享中文件的默认所有者 ID。默认值为 65534。

组 ID 文件共享的默认组 ID。默认值为 65534。

编辑元数据默认值

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择要更新的文件共享。

  3. 对于 Action,选择 Edit file metadata defaults

  4. Edit file metadata defaults 对话框中,提供元数据信息并选择 Save

编辑允许的 NFS 客户端

我们建议您更改文件共享的允许的 NFS 客户端设置。如果您未这样做,则您网络上的任何客户端均可装载到您的文件共享。

编辑允许的 NFS 客户端

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择要更新的文件共享。

  3. 对于 Actions,选择 Edit allowed clients

  4. Edit allowed clients 对话框中,选择 Add entry,为客户端提供 IP 地址或 CIDR,然后选择 Save

刷新 Amazon S3 存储桶中的对象

在 NFS 客户端执行文件系统操作时,您的网关会在与文件共享关联的 Amazon S3 存储桶中维护一个对象清单。您的网关使用此缓存清单来减小 S3 请求的延迟和频率。

要刷新用于文件共享的 S3 存储桶,您可以使用 AWS Storage Gateway 控制台或 AWS Storage Gateway API 中的 RefreshCache 操作。

从控制台刷新 S3 存储桶中的对象

  1. 通过以下网址打开 AWS Storage Gateway 控制台:https://console.amazonaws.cn/storagegateway/home

  2. 选择 File shares,然后选择与要刷新的 S3 存储桶关联的文件共享。

  3. 对于 Actions,选择 Refresh cache。完成刷新所需的时间取决于 S3 存储桶中包含的对象数。

了解文件共享状态

每个文件共享均有关联的状态,让您一目了然地了解文件共享的运行状态。状态大多数时候会显示文件共享运行正常,无需您采取任何行动。在某些情况下,状态指示有问题,可能需要您执行相关操作,也可能不需要。

可以在 AWS Storage Gateway 控制台上查看文件共享状态。对于网关中的每个文件共享,文件共享状态显示在 Status 列中。正常工作的文件共享的状态显示为 AVAILABLE。

在下表中,您可以找到各个文件共享状态的描述,以及基于状态,您是否需要采取行动和应在何时采取行动。在使用文件共享的所有或大部分时间,文件共享都应具有 AVAILABLE 状态。

状态 含义
AVAILABLE

文件共享已正确配置且可供使用。AVAILABLE 状态是文件共享的正常运行状态。

CREATING

正在创建该文件共享,因此尚不能使用它。CREATING (正在创建) 状态是过渡型状态。无需采取行动。如果文件共享停滞在此状态,这可能是因为网关 VM 丢失了与 AWS 的连接。

UPDATING

文件共享配置正在更新。如果文件共享停滞在此状态,这可能是因为网关 VM 丢失了与 AWS 的连接。

DELETING

正在删除文件共享。将不删除文件共享,直到所有数据上传到 AWS。DELETING 状态是过渡型状态,无需执行任何操作。

FORCE_DELETING

正在强制删除文件共享。文件共享将被立即删除并停止上传到 AWS。FORCE_DELETING 状态是过渡性质的,无需执行任何操作。

UNAVAILABLE

文件共享处于不佳状态。某些问题会导致文件共享转为不佳状态。例如,角色策略错误或者文件共享映射到不存在的 Amazon S3 存储桶都会导致此问题。在解决导致状态不佳的问题后,文件将返回 AVAILABLE 状态。

文件共享最佳实践

在此部分中,您可以找到有关创建文件共享的最佳实践的信息。

防止多个文件共享写入到 Amazon S3 存储桶

在创建文件共享时,我们建议您配置您的 Amazon S3 存储桶,以便只有一个文件共享可以向其中写入内容。如果您将 S3 存储桶配置为由多个文件共享写入,则可能出现不可预测的结果。为了防止这种情况发生,您可以创建一个 S3 存储桶策略,拒绝除用于文件共享的角色以外的所有角色在存储桶中放置或删除对象,然后将该策略附加到 S3 存储桶。

以下示例策略拒绝除创建存储桶的角色以外的所有角色写入到 S3 存储桶。将拒绝除 "TestUser" 以外的所有角色的 s3:DeleteObjects3:PutObject 操作。该策略适用于 "arn:aws:s3:::test-bucket/*" 存储桶中的所有对象。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyMultiWrite", "Effect":"Deny", "Principal":"*", "Action":[ "s3:DeleteObject", "s3:PutObject" ], "Resource":"arn:aws:s3:::TestBucket/*", "Condition":{ "StringNotLike":{ "aws:userid":"TestUser:*" } } } ] }

允许特定 NFS 客户端装载您的文件共享

我们建议您更改文件共享允许的 NFS 客户端设置。如果您未这样做,则您网络上的任何客户端均可装载您的文件共享。有关如何编辑 NFS 客户端设置的信息,请参阅 编辑允许的 NFS 客户端