将您的文件系统链接到 S3 桶 - FSx for Lustre
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将您的文件系统链接到 S3 桶

您可以将 Amazon FSx for Lustre 文件系统链接到 Amazon S3 中的数据存储库。您可以在创建文件系统时,或者在文件系统创建后的任何时间创建该链接。

文件系统上的目录与 S3 桶或前缀之间的链接称为数据存储库关联(DRA)。一个 FSx for Lustre 文件系统上最多可以配置 8 个数据存储库关联。最多 8 个 DRA 请求可以加入队列,但文件系统每次只能处理一个请求。每个 DRA 必须有唯一的 FSx for Lustre 文件系统目录以及唯一的 S3 桶或前缀与之关联。

注意

FSx for Lustre 2.10 文件系统或 Scratch 1 文件系统不提供数据存储库关联、自动导出和针对多个数据存储库的支持。

要以文件系统上文件和目录的形式访问 S3 数据存储库上的对象,文件和目录元数据必须加载到文件系统中。您可以在创建 DRA 时从链接的数据存储库加载元数据,或者在稍后使用导入数据存储库任务时为您要通过 FSx for Lustre 文件系统访问的批量文件和目录加载元数据,或者在对象添加到数据存储库、在其中发生更改或者从中删除时通过自动导出自动加载元数据。

您可以将 DRA 配置为仅用于自动导入、仅用于自动导出或同时用于两者。同时用于自动导入和自动导出的数据存储库关联在文件系统和关联 S3 存储桶之间双向传播数据。当您对 S3 数据存储库中的数据进行更改时,FSx for Lustre 会检测到更改,然后自动将更改导入您的文件系统。当您创建、修改或删除文件时,Amazon FSx for Lustre 将在您的应用程序完成文件修改后,自动异步将更改导出到 Amazon S3。

重要
  • 如果您在文件系统和 S3 桶中修改同一个文件,您应该确保应用程序级协调以防止冲突。FSx for Lustre 无法防止在多个位置发生写入冲突。

  • 对于标有不可变属性的文件,FSx for Lustre 无法在 FSx for Lustre 文件系统与文件系统的链接 S3 桶之间同步更改。长时间设置不可变标志可能会导致 Amazon FSx 和 S3 之间的数据移动性能降低。

在创建数据存储库关联时,您可以配置以下属性:

  • 文件系统路径-输入文件系统上的本地路径,该路径指向将映射 one-to-one 到以下指定数据存储库路径的目录(例如 /ns1//ns1/subdir/)或子目录(例如)。名称中的前导正斜杠必填。两个数据存储库关联不能具有重叠的文件系统路径。例如,如果数据存储库与文件系统路径 /ns1 相关联,则您无法将另一个数据存储库与文件系统路径 /ns1/ns2 相关联。

    注意

    如果您仅指定正斜杠 (/) 作为文件系统路径,则只能将一个数据存储库链接到文件系统。您只能将“/”指定为与文件系统相关联的第一个数据存储库的文件系统路径。

  • 数据存储库路径 – 输入 S3 数据存储库中的路径。该路径可以是 S3 存储桶或格式 s3://myBucket/myPrefix/ 的前缀。该路径指定 S3 数据存储库文件将从中导入或导出到的位置。FSx for Lustre 将在您的数据存储库路径后面附加一个尾部斜杠“/”。例如,如果您提供的数据存储库路径为 s3://myBucket/myPrefix,则 FSx for Lustre 会将其解释为 s3://myBucket/myPrefix/

    两个数据存储库关联不能具有重叠的数据存储库路径。例如,如果采用路径 s3://myBucket/myPrefix/ 的数据存储库与文件系统路径相关联,则您无法将另一个数据存储库与文件系统路径 s3://myBucket/myPrefix/mySubPrefix 相关联。

  • 从存储库导入元数据 – 您可以选择此选项,在创建数据存储库关联后立即从整个数据存储库导入元数据。或者,您可以在创建数据存储库关联后随时运行导入数据存储库任务,将链接的数据存储库中的全部或部分元数据加载到文件系统。

  • 导入设置 – 选择一个导入策略,用于指定更新对象的类型(新对象、已更改和已删除对象的任意组合),这些对象将自动从链接的 S3 桶导入文件系统。当您从控制台添加数据存储库时,自动导入(新建、已更改、已删除)默认处于启用状态,但在使用 Amazon CLI 或 Amazon FSx API 时默认处于禁用状态。

  • 导出设置 – 选择一个导出策略,用于指定更新对象的类型(新对象、已更改和已删除对象的任意组合),这些对象将自动导出到 S3 桶。当您从控制台添加数据存储库时,自动导出(新建、已更改、删除)默认处于启用状态,但在使用 Amazon CLI 或 Amazon FSx API 时默认处于禁用状态。

文件系统路径数据存储库路径设置使 Amazon FSx 中的路径与 S3 中的对象键 1:1 映射。

针对链接的 S3 桶的区域和账户支持

当您创建指向 S3 桶的链接时,请记住以下区域和账户支持限制:

  • 自动导出支持跨区域配置。Amazon FSx 文件系统和链接的 S3 存储桶可以位于相同 Amazon Web Services 区域 或不同位置。 Amazon Web Services 区域

  • 自动导入不支持跨区域配置。Amazon FSx 文件系统和链接的 S3 桶可以位于相同 Amazon Web Services 区域。

  • 自动导出和自动导入都支持跨账户配置。Amazon FSx 文件系统和链接的 S3 存储桶可以属于相同 Amazon Web Services 账户 或不同。 Amazon Web Services 账户

创建指向 S3 桶的链接

以下过程将引导您完成 Amazon Web Services Management Console 使用和 () 为 FSx for Lustre 文件系统创建数据存储库与现有 S3 存储桶关联 Amazon Command Line Interface 的Amazon CLI过程。有关为 S3 桶添加权限以将其链接到文件系统的信息,请参阅添加在 Amazon S3 中使用数据存储库的权限

注意

数据存储库不能链接到已启用文件系统备份的文件系统。在链接到数据存储库之前禁用备份。

  1. 通过以下网址打开 Amazon FSx 控制台:https://console.aws.amazon.com/fsx/

  2. 按照“入门”部分中为你的 FSx for Lustre 文件系统创建所述的步骤创建新文件系统。

  3. 打开数据存储库导入/导出 – 可选部分。该功能在默认情况下处于禁用状态。

  4. 选择从 S3 导入数据和将数据导出到 S3

  5. 数据存储库关联信息对话框中,提供以下字段的信息。

    • 文件系统路径:输入将与 S3 数据存储库关联的 Amazon FSx 文件系统内高级目录(例如 /ns1)或子目录(例如 /ns1/subdir)的名称。路径中的前导正斜杠必填。两个数据存储库关联不能具有重叠的文件系统路径。例如,如果数据存储库与文件系统路径 /ns1 相关联,则您无法将另一个数据存储库与文件系统路径 /ns1/ns2 相关联。文件系统路径设置在文件系统的所有数据存储库关联中必须唯一。

    • 数据存储库路径:输入要与您的文件系统关联的现有 S3 桶或前缀的路径(例如,s3://my-bucket/my-prefix/)。两个数据存储库关联不能具有重叠的数据存储库路径。例如,如果采用路径 s3://myBucket/myPrefix/ 的数据存储库链接到文件系统,您无法创建另一个采用数据存储库路径 s3://myBucket/myPrefix/mySubPrefix 的数据存储库关联。数据存储库路径设置在文件系统的所有数据存储库关联中必须唯一。

    • 从存储库导入元数据:选择此属性,可以选择性运行导入数据存储库任务,以便在链接创建后立即导入元数据。

    “数据存储库关联”配置对话框,这是用于为 S3 数据存储库配置导出和导入链接的对话框之一。
  6. 导入设置 – 可选中,请设置导入策略,确定当您在 S3 桶中添加、更改或删除对象时,文件和目录列表如何保持最新状态。例如,选择,可以针对 S3 桶中创建的新对象将元数据导入文件系统。有关导入策略的更多信息,请参阅自动从 S3 桶导入更新。

    “导入设置”配置对话框,借此您可以为自动导入设置导入策略。
  7. 导出策略中,请设置导出策略,确定当您在文件系统中添加、更改或删除对象时,如何将文件导出到链接的 S3 桶。例如,选择已更改,可以导出文件系统中内容或元数据已更改的对象。有关导出策略的更多信息,请参阅自动将更新导出到 S3 桶

    “导出设置”配置对话框,借此您可以为自动导出设置导出策略。
  8. 继续执行文件系统创建向导的下一部分。

  1. 通过以下网址打开 Amazon FSx 控制台:https://console.aws.amazon.com/fsx/

  2. 在控制面板中,选择文件系统,然后选择您想为其创建数据存储库关联的文件系统。

  3. 选择数据存储库选项卡。

  4. 数据存储库关联窗格中,选择创建数据存储库关联

  5. 数据存储库关联信息对话框中,提供以下字段的信息。

    • 文件系统路径:输入将与 S3 数据存储库关联的 Amazon FSx 文件系统内高级目录(例如 /ns1)或子目录(例如 /ns1/subdir)的名称。路径中的前导正斜杠必填。两个数据存储库关联不能具有重叠的文件系统路径。例如,如果数据存储库与文件系统路径 /ns1 相关联,则您无法将另一个数据存储库与文件系统路径 /ns1/ns2 相关联。文件系统路径设置在文件系统的所有数据存储库关联中必须唯一。

    • 数据存储库路径:输入要与您的文件系统关联的现有 S3 桶或前缀的路径(例如,s3://my-bucket/my-prefix/)。两个数据存储库关联不能具有重叠的数据存储库路径。例如,如果采用路径 s3://myBucket/myPrefix/ 的数据存储库与文件系统路径相关联,则您无法将另一个数据存储库与文件系统路径 s3://myBucket/myPrefix/mySubPrefix 相关联。数据存储库路径设置在文件系统的所有数据存储库关联中必须唯一。

    • 从存储库导入元数据:选择此属性,可以选择性运行导入数据存储库任务,以便在链接创建后立即导入元数据。

    “数据存储库关联”配置对话框,这是用于为 S3 数据存储库配置导出和导入链接的对话框之一。
  6. 导入设置 – 可选中,请设置导入策略,确定当您在 S3 桶中添加、更改或删除对象时,文件和目录列表如何保持最新状态。例如,选择,可以针对 S3 桶中创建的新对象将元数据导入文件系统。有关导入策略的更多信息,请参阅自动从 S3 桶导入更新。

    “导入设置”配置对话框,借此您可以为自动导入设置导入策略。
  7. 导出策略中,请设置导出策略,确定当您在文件系统中添加、更改或删除对象时,如何将文件导出到链接的 S3 桶。例如,选择已更改,可以导出文件系统中内容或元数据已更改的对象。有关导出策略的更多信息,请参阅自动将更新导出到 S3 桶

    “导出设置”配置对话框,借此您可以为自动导出设置导出策略。
  8. 选择创建

以下示例创建将 Amazon FSx 文件系统链接到 S3 桶的数据存储库关联,使用导入策略将任何新的或已更改的文件导入文件系统,并使用导出策略将新的、已更改或已删除的文件导出到链接的 S3 桶。

  • 要创建数据存储库关联,请使用 Amazon FSx CLI 命令 create-data-repository-association,如下所示。

    $ aws fsx create-data-repository-association \ --file-system-id fs-0123456789abcdef0 \ --file-system-path /ns1/path1/ \ --data-repository-path s3://mybucket/myprefix/ \ --s3 "AutoImportPolicy={Events=[NEW,CHANGED,DELETED]},AutoExportPolicy={Events=[NEW,CHANGED,DELETED]}"

Amazon FSx 会立即返回 DRA 的 JSON 描述。DRA 是异步创建。

即使在文件系统创建完成之前,您也可以使用此命令来创建数据存储库关联。文件系统可用后,请求将排队并且数据存储库关联将创建。

更新数据存储库关联设置

您可以使用 Amazon Web Services Management Console、 Amazon CLI和 Amazon FSx API 更新现有数据存储库关联的设置,如以下步骤所示。

注意

DRA 创建之后,它的 File system pathData repository path 无法更新。如果您想更改 File system pathData repository path,您必须删除 DRA 并重新创建。

  1. 通过以下网址打开 Amazon FSx 控制台:https://console.aws.amazon.com/fsx/

  2. 在控制面板中,选择文件系统,然后选择您想管理的文件系统。

  3. 选择数据存储库选项卡。

  4. 数据存储库关联窗格中,选择您想更改的数据存储库关联。

  5. 选择更新。针对数据存储库关联的编辑对话框将显示。

  6. 导入设置 – 可选中,您可以更新您的导入策略。有关导入策略的更多信息,请参阅自动从 S3 桶导入更新。

  7. 导出设置 – 可选中,您可以更新您的导出政策。有关导出策略的更多信息,请参阅自动将更新导出到 S3 桶

  8. 选择更新

  • 要更新数据存储库关联,请使用 Amazon FSx CLI 命令 update-data-repository-association,如下所示。

    $ aws fsx update-data-repository-association \ --association-id 'dra-872abab4b4503bfc2' \ --s3 "AutoImportPolicy={Events=[NEW,CHANGED,DELETED]},AutoExportPolicy={Events=[NEW,CHANGED,DELETED]}"

成功更新数据存储库关联的导入和导出策略后,Amazon FSx 将以 JSON 的形式返回已更新的数据存储库关联的描述。

删除与 S3 桶的关联

以下过程将引导您完成使用和 Amazon Command Line Interface (Amazon CLI) 将数据存储库关联从现有 Amazon FSx 文件系统删除到现有 S3 存储桶 Amazon Web Services Management Console 的过程。删除数据存储库关联将取消文件系统与 S3 桶的关联。

  1. 通过以下网址打开 Amazon FSx 控制台:https://console.aws.amazon.com/fsx/

  2. 在控制面板中,选择文件系统,然后选择您想为其删除数据存储库关联的文件系统。

  3. 选择数据存储库选项卡。

  4. 数据存储库关联窗格中,选择您想删除的数据存储库关联。

  5. 操作中,选择删除关联

  6. (可选)在删除对话框中,您可以选择删除文件系统中的数据,以物理方式删除与数据存储库关联对应的文件系统中的数据。

  7. 选择删除,从文件系统中删除数据存储库关联。

以下示例删除了将 Amazon FSx 文件系统链接到 S3 桶的数据存储库关联。--association-id 参数指定要删除的数据存储库关联的 ID。

  • 要删除数据存储库关联,请使用 Amazon FSx CLI 命令 delete-data-repository-association,如下所示。

    $ aws fsx delete-data-repository-association \ --association-id dra-872abab4b4503bfc \ --delete-data-in-file-system false

成功删除数据存储库关联后,Amazon FSx 以 JSON 格式返回它的描述。

查看数据存储库关联详细信息

您可以使用 FSx for Lustre 控制台 Amazon CLI、和 API 查看数据存储库关联的详细信息。详细信息包括 DRA 的关联 ID、文件系统路径、数据存储库路径、导入设置、导出设置、状态及其关联文件系统的 ID。

  1. 通过以下网址打开 Amazon FSx 控制台:https://console.aws.amazon.com/fsx/

  2. 在控制面板中,选择文件系统,然后选择您想查看其数据存储库关联详细信息的文件系统。

  3. 选择数据存储库选项卡。

  4. 数据存储库关联窗格中,选择您想查看的数据存储库关联。摘要页面会显示,展示 DRA 详细信息。

    数据存储库关联的 Amazon FSx 详细信息页面。
  • 要删除特定数据存储库关联的详细信息,请使用 Amazon FSx CLI 命令 describe-data-repository-associations,如下所示。

    $ aws fsx describe-data-repository-associations \ --association-ids dra-872abab4b4503bfc2

    Amazon FSx 会以 JSON 格式返回数据存储库关联的描述。

数据存储库关联生命周期状态

数据存储库关联生命周期状态提供有关特定 DRA 的状态信息。数据存储库关联可以具有以下生命周期状态

  • 正在创建 – Amazon FSx 正在文件系统与链接的数据存储库之间创建数据存储库关联。数据存储库不可用。

  • 可用 – 数据存储库关联可供使用。

  • 正在更新 – 数据存储库关联正在进行客户发起的更新,这可能会影响其可用性。

  • 正在删除 – 数据存储库关联正在进行客户发起的删除。

  • 错误配置 – 在数据存储库关联配置正确之前,Amazon FSx 无法自动从 S3 桶导入更新,也无法自动将更新导出到 S3 桶。

  • 失败 – 数据存储库关联处于无法恢复的终端状态(例如,因为其文件系统路径已删除或 S3 桶已删除)。

您可以使用 Amazon FSx 控制台、和 Amazon FSx API 查看数据存储库关联的 Amazon Command Line Interface生命周期状态。有关更多信息,请参阅 查看数据存储库关联详细信息

使用服务器端加密的 Amazon S3 桶

FSx for Lustre 支持使用 S3 托管密钥 (SSE-S3) 和存储在 (SSE-KMS) 中的服务器端加密的 Amazon S3 存储桶。 Amazon KMS keys Amazon Key Management Service

如果您希望 Amazon FSx 在写入您的 S3 桶时对数据进行加密,您需要将 S3 桶上的默认加密设置为 SSE-S3 或 SSE-KMS。有关更多信息,请参阅《Amazon S3 用户指南》中的配置原定设置加密。将文件写入您的 S3 桶时,Amazon FSx 将遵循您的 S3 存储桶的原定设置加密策略。

默认情况下,Amazon FSx 支持使用 SSE-S3 加密的 S3 桶。如果您想将您的 Amazon FSx 文件系统链接到使用 SSE-KMS 加密的 S3 桶,您需要为客户托管密钥政策添加声明,允许 Amazon FSx 使用您的 KMS 密钥加密和解密 S3 桶中的对象。

以下声明允许特定 Amazon FSx 文件系统为特定 S3 桶 bucket_name 加密和解密对象。

{ "Sid": "Allow access through S3 for the FSx SLR to use the KMS key on the objects in the given S3 bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::aws_account_id:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/AWSServiceRoleForFSxS3Access_fsx_file_system_id" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "s3.bucket-region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket_name/*" } } }
注意

如果您使用带 CMK 的 KMS 在启用了 S3 桶密钥的情况下加密您的 S3 桶,请将 EncryptionContext 设置为桶 ARN,而不是对象 ARN,如下例所示:

"StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket_name" }

以下策略声明允许您的账户中的所有 Amazon FSx 文件系统链接到特定的 S3 桶。

{ "Sid": "Allow access through S3 for the FSx SLR to use the KMS key on the objects in the given S3 bucket", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "s3.bucket-region.amazonaws.com" }, "StringLike": { "aws:userid": "*:FSx", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket_name/*" } } }

以不同的方式访问服务器端加密的 Amazon S3 存储桶 Amazon Web Services 账户

创建链接到加密 Amazon S3 桶的 FSx for Lustre 文件系统后,您必须授权 AWSServiceRoleForFSxS3Access_fs-01234567890 服务相关角色(SLR)访问用于加密 S3 桶的 KMS 密钥,然后才能从链接的 S3 桶读取或写入数据。您可以使用已拥有 KMS 密钥权限的 IAM 角色。

注意

此 IAM 角色必须位于 FSx for Lustre 文件系统的创建账户(与 S3 SLR 相同的账户),而不是 KMS 密钥/S3 桶所属的账户。

您可以使用 IAM 角色调用以下 Amazon KMS API 为 S3 SLR 创建授权,以便 SLR 获得对 S3 对象的权限。要查找与您的 SLR 关联的 ARN,请使用您的文件系统 ID 作为搜索字符串来搜索您的 IAM 角色。

$ aws kms create-grant --region fs_account_region \ --key-id arn:aws:kms:s3_bucket_account_region:s3_bucket_account:key/key_id \ --grantee-principal arn:aws:iam::fs_account_id:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/AWSServiceRoleForFSxS3Access_file-system-id \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

有关服务相关角色的更多信息,请参阅使用 Amazon FSx 的服务相关角色