将您的文件系统链接到 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 存储段或前缀。

注意

数据存储库关联、自动导出和对多个数据存储库的支持仅在Persistent 2文件系统上可用。如果您使用的文件系统采用较旧 FsX for Lustre 部署类型,请参阅使用较旧的部署类型

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

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

重要

如果您在文件系统和 S3 存储桶中修改相同的文件,则应确保应用程序级别的协调以防止冲突。FsX for Lustre 无法防止在多个位置发生写入冲突。

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

  • 文件系统路径-输入文件系统上的本地路径,该路径指向将使用下面的指定数据存储库路径映射 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和Amazon Command Line Interface (Amazon CLI) 完成为Persistent 2文件系统与现有 S3 存储桶创建数据存储库关联的过程。

注意

数据存储库无法链接到启用了文件系统备份的文件系统。在链接到数据存储库之前禁用备份。

  1. 通过 https://console.aws.amazon.com/fsx/ 打开亚马逊 FSx 控制台。

  2. 按照 “入门” 部分步骤 1:为 Lustre 文件系统创建 Amazon FSx中描述的创建新文件系统的步骤进行操作。

  3. 打开数据存储库Import/Export-可选部分。默认情况下禁用此功能。

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

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

    • 文件系统路径:输入 Amazon FSx 文件系统中将与 S3 数据存储库关联的高级目录(例如/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 存储桶。例如,选择 Chan g ed 可导出文件系统上内容或元数据已更改的对象。有关导出政策的更多信息,请参阅自动将更新导出到您的 S3 存储桶

    
                  导出设置配置对话框,用于设置自动导出的导出策略。
  8. 继续执行文件系统创建向导的下一部分。

  1. 通过 https://console.aws.amazon.com/fsx/ 打开亚马逊 FSx 控制台。

  2. 从仪表板中选择 File syst ems,然后选择要为其创建数据存储库关联的文件系统。

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

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

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

    • 文件系统路径:输入 Amazon FSx 文件系统中将与 S3 数据存储库关联的高级目录(例如/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 存储桶。例如,选择 Chan g ed 可导出文件系统上内容或元数据已更改的对象。有关导出政策的更多信息,请参阅自动将更新导出到您的 S3 存储桶

    
                  导出设置配置对话框,用于设置自动导出的导出策略。
  8. 选择 Create(创建)

以下示例创建了将 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]}"

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

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

更新数据存储库关联设置

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

注意

创建 DRA 后,您无法对其进行更新。File system pathData repository path如果要更改File system pathData repository path,则必须删除 DRA 并重新创建。

  1. 通过 https://console.aws.amazon.com/fsx/ 打开亚马逊 FSx 控制台。

  2. 从仪表板中选择文件系统,然后选择要管理的文件系统。

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

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

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

  6. 对于导入设置-可选,您可以更新您的导入策略。有关导入政策的更多信息,请参阅自动从 S3 存储桶导入更新

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

  8. 选择 Update(更新)。

  • 要更新数据存储库关联,请使用 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 Web Services Management Console和Amazon Command Line Interface (Amazon CLI) 完成将数据存储库关联从现有 Amazon FSx 文件系统删除到现有 S3 存储桶的过程。删除数据存储库关联会将文件系统与 S3 存储桶的链接断开。

  1. 通过 https://console.aws.amazon.com/fsx/ 打开亚马逊 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 控制台、和 API 查看数据存储库关联的详细信息。Amazon CLI详细信息包括 DRA 的关联 ID、文件系统路径、数据存储库路径、导入设置、导出设置、状态及其关联文件系统的 ID。

  1. 通过 https://console.aws.amazon.com/fsx/ 打开亚马逊 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 支持 Amazon S3 存储桶,这些存储桶使用具有 S3 托管密钥 (SSE-KMS) 和 (SSE-KMS)Amazon KMS keys 存储于Amazon Key Management Service (SSE-KMS))。SSE-S3

如果您希望 Amazon FSx 在写入 S3 存储桶时加密数据,则需要将 S3 存储桶的默认加密设置为 SSE-S3 或 SSE-KMS。有关更多信息,请参阅 Amazon S3 用户指南中的启用 Amazon S3 默认存储桶加密。当将文件写入 S3 存储桶后,Amazon FSx 会遵循您的 S3 存储桶的默认加密策略。

默认情况下,亚马逊 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 for Lustre 使用服务相关角色