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

管理文件网关

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

添加文档共享

在您的文件网关已经激活并且正在运行后,您可以添加额外的文件共享和授予对 S3 存储桶 (包括与您的文件共享位于不同的 AWS 账户中的存储桶) 的访问权限。有关如何添加文件共享的信息,请参阅创建文件共享

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

在创建文件共享时,文件网关需要访问权限才能将文件上传到 Amazon S3 存储桶中。为了授予此访问权限,文件网关将代入与授予此访问权限的 IAM 策略关联的 IAM 角色。该角色需要此 IAM 策略以及与之有关的安全令牌服务 (STS) 信任关系。此策略确定了该角色可以执行的操作。此外,您的 S3 存储桶还必须具有允许 IAM 角色访问 S3 存储桶的访问策略。您可以自行创建该角色和访问策略,也可以让文件网关为您创建。如果文件网关为您创建了该策略,该策略将包含 S3 操作的列表。有关角色和权限的信息,请参阅 IAM 用户指南 中的创建向 AWS 服务委派权限的角色

以下示例信任策略允许文件网关代入此角色。

{ "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 账户授予对其中的存储桶和对象的访问权限。有关授予此访问权限的信息,请参阅示例 2:存储桶拥有者授予跨账户存储桶权限。有关所需权限的列表,请参阅授予对 Amazon S3 存储桶的访问权限

  2. 您的文件共享用来访问 S3 存储桶的 IAM 角色应包含 s3:GetObjectAcls3:PutObjectAcl 等操作的权限。IAM 角色还需要一个允许您的帐户带入此角色的信任策略。有关信任策略的示例,请参阅授予对 Amazon S3 存储桶的访问权限

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

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

重要

如果您没有正确设置向您的文件共享使用的账户授予跨账户 访问权限的策略,通过您的本地应用程序对文件进行的更新不会传播到 Amazon S3 存储桶。

有关使用可用访问策略选项的准则

访问控制列表 (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 选项。例如,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 StandardS3 Standard-Infrequent Access。默认值为 S3 Standard

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

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

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

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

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

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

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

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

      “Squash level”的默认值为 Root squash

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

      注意

      对于在 Windows 客户端上装载的文件共享,如果您为 Export as 选择 Read-only,则可能会看到有关某个错误阻止您创建文件夹的错误消息。此错误消息是 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 客户端