上传和下载存储对象

借助 Google Distributed Cloud (GDC) 网闸隔离配置中的对象存储区,您可以在项目级存储桶之间传输和检索文件、目录和版本化数据。您可以通过 GDC 控制台或 gdcloud CLI 运行单文件或多部分操作,并使用自定义 AEADKey 加密保护对象。

准备工作

存储桶是限定于特定项目的资源。项目充当容器,对存储桶进行分组,并支持通过 Management API 服务器对其进行管理。您必须先创建一个新项目,或选择一个您拥有足够权限的现有项目,然后才能执行本页面上的操作。

所需 IAM 角色

请与您的 IAM 项目管理员联系,请求在项目命名空间中授予以下角色:

  • Bucket Project Admin (project-bucket-admin):创建、更新和删除存储桶。
  • Bucket Object Project Viewer (project-bucket-object-viewer):查看和检查存储桶和对象的详细信息。

如需了解详情,请参阅授予存储桶访问权限。

准备环境

如需针对管理 API 服务器或全局 API 服务器运行命令,请执行以下操作:

  1. 如果您没有可用区级管理 API 服务器的 kubeconfig 文件,请登录并生成该文件。
  2. 对于双可用区存储桶,请执行以下操作:
    • 请与您的基础架构运维人员 (IO) 确认,是否已为您的配对可用区创建 BucketLocationConfig 自定义资源。
    • 为全局 API 服务器生成 kubeconfig 文件。

对象命名准则

请遵循以下准则来命名对象:

  • 为对象命名时,请使用 UTF-8 字符。
  • 长度介于 1 到 55 个字符之间。
  • 请勿包含任何个人身份信息 (PII)。

将对象上传到存储桶

控制台

  1. 在导航菜单中,点击对象存储。
  2. 点击要将对象上传到的存储桶的名称。
  3. 可选:如果您想创建一个文件夹来存储对象,请点击创建文件夹 > 输入文件夹名称 > 点击创建。
  4. 直接点击上传文件,或进入您刚刚创建的文件夹,然后点击上传文件。
  5. 选择所需文件,然后点击打开。
  6. 等待确认上传成功的消息。

gdcloud

如需上传对象,请运行以下命令:

gdcloud storage cp LOCAL_PATH s3://REMOTE_PATH
gdcloud storage cp s3://FULLY_QUALIFIED_SOURCE_BUCKET_NAME s3://FULLY_QUALIFIED_DESTINATION_BUCKET_NAME
gdcloud storage mv s3://FULLY_QUALIFIED_SOURCE_BUCKET_NAME s3://FULLY_QUALIFIED_DESTINATION_BUCKET_NAME

以下命令需要 FULLY_QUALIFIED_BUCKET_NAME。使用查看存储桶配置部分中的 GET 或 DESCRIBE 命令,获取完全限定的存储桶名称。

以下命令会将本地目录中的所有文本文件上传到存储桶:

gdcloud storage cp *.txt s3://FULLY_QUALIFIED_BUCKET_NAME

以下命令会将多个文件从本地目录上传到存储桶:

gdcloud storage cp abc1.txt abc2.txt s3://FULLY_QUALIFIED_BUCKET_NAME

如需将文件夹上传到存储桶,请使用 --recursive 选项复制整个目录树。以下命令会上传目录树 dir:

gdcloud storage cp DIRECTORY_NAME s3://FULLY_QUALIFIED_BUCKET_NAME --recursive

对大型对象执行分段上传,或者在要上传的文件大于 15 MB 时自动使用分段上传。在这种情况下,文件会拆分为多个部分,每个部分的大小为 15 MB。 最后一部分较小。每个部分会单独上传,并在传输完成后在目标位置重新组合。

如果某个部分的上传失败,您可以重新开始上传,而不会影响已上传的其他任何部分。

有两个与分段上传相关的选项:

  • --disable-multipart:为所有文件停用分段上传。
  • --multipart-chunk-size-mb=SIZE:设置分段上传的每个分块的大小。

大于 SIZE 的文件会自动以多线程分段方式上传。较小的文件使用传统方法上传。SIZE 以兆字节为单位。默认分块大小为 15 MB。允许的最小分块大小为 5 MB,最大为 5 GB。

从存储桶下载对象

控制台

  1. 在导航菜单中,点击对象存储。
  2. 点击包含对象的存储桶的名称。
  3. 选中要下载的对象名称旁边的复选框。
  4. 点击下载。

gdcloud

如需从存储桶中获取对象,请执行以下操作:

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/OBJECT LOCAL_FILE_TO_SAVE

如需将存储桶中的所有文本文件下载到当前目录,请运行以下命令:

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/*.txt .

如需将文本文件 abc.txt 从存储桶下载到当前目录,请运行以下命令:

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt .

如需下载文件的旧版本,请先列出文件的所有版本:

gdcloud storage ls s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt --all-versions

输出示例:

s3://my-bucket/abc.txt#OEQxNTk4MUEtMzEzRS0xMUVFLTk2N0UtQkM4MjAwQkJENjND
s3://my-bucket/abc.txt#ODgzNEYzQ0MtMzEzRS0xMUVFLTk2NEItMjI1MTAwQkJENjND
s3://my-bucket/abc.txt#ODNCNDEzNzgtMzEzRS0xMUVFLTlDOUMtQzRDOTAwQjg3RTg3

然后,从存储桶中将特定版本的文本文件 abc.txt 下载到当前目录:

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt#OEQxNTk4MUEtMzEzRS0xMUVFLTk2N0UtQkM4MjAwQkJENjND .

使用自定义 AEADKey

如需进行更深入的自定义,您可以创建自己的 AEADKey,并在加密存储桶中的对象时直接使用该密钥。这样一来,您就可以完全控制加密密钥,而无需使用默认密钥。按照创建密钥中的说明创建新的 AEADKey,并确保它与您要使用的存储桶位于同一 Namespace 中。然后,在发送请求时,请确保 HEADER 配置了 x-amz-server-side-encryption: SSE-KMS 和 x-amz-server-side-encryption-aws-kms-key-id: NAMESPACE_NAME/AEADKey_NAME