ストレージ オブジェクトのアップロードとダウンロード

Google Distributed Cloud(GDC)エアギャップのオブジェクト ストレージを使用すると、プロジェクト スコープのバケット間でファイル、ディレクトリ、バージョニングされたデータを転送、取得できます。GDC コンソールまたは gdcloud CLI を使用して、単一ファイルまたはマルチパート オペレーションを実行し、カスタム AEADKey 暗号化でオブジェクトを保護できます。

始める前に

ストレージ バケットは、特定のプロジェクトを対象とするリソースです。プロジェクトはコンテナとして機能し、バケットをグループ化して、Management API サーバーを介して管理できるようにします。このページで操作を行う前に、新しいプロジェクトを作成するか、十分な権限を持つ既存のプロジェクトを選択する必要があります。

必要な IAM のロール

IAM プロジェクト管理者に連絡して、プロジェクトの名前空間で次のロールをリクエストします。

  • プロジェクト バケット管理者(project-bucket-admin): ストレージ バケットを作成、更新、削除します。
  • プロジェクト バケット オブジェクト閲覧者(project-bucket-object-viewer): ストレージ バケットとオブジェクトの詳細を表示して確認します。

詳細については、バケットへのアクセス権を付与するをご覧ください。

環境を準備する

Management 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 になります。最後の部分は小さくなっています。各部分は個別にアップロードされ、転送が完了すると宛先で再構築されます。

1 つのパートのアップロードが失敗した場合、すでにアップロードされている他のパートに影響を与えることなく、アップロードを再開できます。

マルチパート アップロードに関連するオプションは 2 つあります。

  • --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 で構成されていることを確認します。