将您的文件系统链接到 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 和 Amazon Command Line Interface(Amazon CLI)在 FSx for Lustre 文件系统与现有 S3 桶之间创建数据存储库关联。有关为 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 Web Services Management Console 和 Amazon Command Line Interface(Amazon CLI)删除现有 Amazon FSx 文件系统到现有 S3 桶之间的数据存储库关联。删除数据存储库关联将取消文件系统与 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 Command Line Interface 和 Amazon FSx API 查看数据存储库关联的生命周期状态。有关更多信息,请参阅查看数据存储库关联详细信息

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

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

如果您希望 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 Web Services 账户 访问服务器端加密 Amazon S3 桶

创建链接到加密 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 的服务相关角色