Cloud Storage API V2(Java)を使用して、
Cloud Storageのオブジェクトのコピー・置換する方法
についてご紹介します。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う
を参照ください。
No | 目次 | ||
---|---|---|---|
1 | オブジェクトをコピー | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
2 | オブジェクトを置換 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 |
1. オブジェクトをコピー
指定したオブジェクトをコピーします。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
StorageScopes.DEVSTORAGE_READ_WRITE
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.Objects objects = storage.objects();
StorageObject content = new StorageObject();
Storage.Objects.Copy copy = objects.copy(
"コピー元のバケットID",
"コピー元のオブジェクト名",
"コピー先のバケットID",
"コピー先のオブジェクト名"
,content);
StorageObject res = copy.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://storage.googleapis.com/storage/v1/b/{コピー元のバケットID}/o/{コピー元のオブジェクト名}/copyTo/b/{コピー先のバケットID}/o/{コピー先のオブジェクト名}
が実行されます。
1.2.2. クエリパラメータ
Storage.Objects.Copyのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setSourceGeneration | Long | コピー先の世代番号(generation) |
setIfGenerationMatch | Long | コピー元の世代番号(generation)と一致する場合のみ処理を行う |
setIfGenerationNotMatch | Long | コピー元の世代番号(generation)と一致しない場合のみ処理を行う |
setIfMetagenerationMatch | Long | コピー元のメタ世代番号(metageneration)と一致する場合のみ処理を行う |
setIfMetagenerationNotMatch | Long | コピー元のメタ世代番号(metageneration)と一致しない場合のみ処理を行う |
setIfSourceGenerationMatch | Long | コピー先の世代番号(generation)と一致する場合のみ処理を行う |
setIfSourceGenerationNotMatch | Long | コピー先の世代番号(generation)と一致しない場合のみ処理を行う |
setIfSourceMetagenerationMatch | Long | コピー先のメタ世代番号(metageneration)と一致する場合のみ処理を行う |
setIfSourceMetagenerationNotMatch | Long | コピー先のメタ世代番号(metageneration)と一致しない場合のみ処理を行う |
setProjection | String | レスポンスとして受け取るプロパティの指定 "full"(全てのプロパティ)、"noAcl"(ACL以外のプロパティ) |
setDestinationPredefinedAcl | String | コピー元のバケットに定義するアクセス制御リスト(ACL)の定義 |
setDestinationKmsKeyName | String | コピー元のオブジェクトの暗号化に使用されるCloud KMS 鍵のリソース名 |
アクセス制御リスト(ACL)の定義
定義値 | 内容 |
---|---|
authenticatedRead | プロジェクトチームの所有者がOWNERアクセス権を取得し、アクセス権allAuthenticatedUsersを取得 |
private | プロジェクトチームの所有者がOWNERアクセス権を取得 |
projectPrivate | プロジェクトチームのメンバーは、それぞれの役割に応じてアクセス権を取得 |
publicRead | プロジェクトチームの所有者がOWNERアクセス権を取得し、 アクセス権allUsersを取得 |
publicReadWrite | プロジェクトチームの所有者がOWNERアクセス権を取得し、アクセス権allUsersを取得 |
1.2.3. リクエストボディ
StorageObjectのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setName | String | オブジェクトの名前 |
setAcl | List<ObjectAccessControl> | オブジェクトのアクセスコントロール |
setContentDisposition | String | Contentオブジェクトデータの配置 |
setContentEncoding | String | Contentオブジェクトデータのエンコーディング |
setContentLanguage | String | Contentオブジェクトデータの言語 |
setContentType | String | ContentオブジェクトデータのContent-Type |
setEventBasedHold | Boolean | オブジェクトがイベントベースの保留の対象か |
setMd5Hash | String | データのMD5ハッシュ値 |
setMetadata | Map<String,String> | ユーザーが提供するメタデータ |
setRetention | StorageObject.Retention | オブジェクトの保持設定 |
setStorageClass | String | オブジェクトのストレージクラス |
setTemporaryHold | Boolean | オブジェクトが 一時保留の対象か |
setCustomTime | DateTime | ユーザー指定のタイムスタンプ |
setCrc32c | String | CRC32c チェックサム |
ObjectAccessControl(Set)
メソッド | 引数 | 説明 |
---|---|---|
setEntity | String | 権限を保持するエンティティ 次のいずれかの形式 user-{email} group-{groupId} group-{email} domain-{domain} project-{team-projectId} allUsers allAuthenticatedUsers |
setRole | String | エンティティのアクセス許可 "OWNER"、"READER"、"WRITER" |
StorageObject.Retention(Set)
メソッド | 引数 | 説明 |
---|---|---|
setMode | String | 保持設定のモード "Unlocked"(変更可)、"Locked"(変更不可) |
setRetainUntilTime | DateTime | オブジェクトを削除または置換が可能になった時刻 |
1.3. レスポンスの内容
StorageObject
メソッド | 戻り値 | 説明 |
---|---|---|
getId | String | オブジェクトID |
getKind | String | リソースの種類 固定文字列:"storage#object" |
getName | String | オブジェクトの名前 |
getBucket | String | バケット名 |
getSize | BigInteger | データサイズ(バイト単位) |
getGeneration | Long | 世代番号(generation) |
getMetageneration | Long | メタ世代番号(metageneration) |
getEtag | String | オブジェクトのHTTPエンティティタグ |
getMediaLink | String | オブジェクトのデータをダウンロードするためのURL |
getSelfLink | String | オブジェクトのURL |
getAcl | List<ObjectAccessControl> | オブジェクトのアクセスコントロール |
getCacheControl | String | オブジェクトデータのCache-Controlディレクティブ |
getComponentCount | Integer | 複合オブジェクトの場合の非複合オブジェクトの数 |
getContentDisposition | String | Contentオブジェクトデータの配置 |
getContentEncoding | String | Contentオブジェクトデータのエンコーディング |
getContentLanguage | String | Contentオブジェクトデータの言語 |
getContentType | String | ContentオブジェクトデータのContent-Type |
getCustomerEncryption | StorageObject.CustomerEncryption | 顧客が指定した暗号化キーのメタデータ |
getEventBasedHold | Boolean | オブジェクトがイベントベースの保留の対象か |
getKmsKeyName | String | このオブジェクトの暗号化に使用されるCloudKMS鍵 |
getMd5Hash | String | データのMD5ハッシュ値 |
getMetadata | Map<String,String> | ユーザーが提供するメタデータ |
getOwner | StorageObject.Owner | オブジェクトの所有者 |
getRetention | StorageObject.Retention | オブジェクトの保持設定 |
getRetentionExpirationTime | DateTime | オブジェクトが削除可能なる最も早い時間 |
getSoftDeleteTime | DateTime | オブジェクトが論理的に削除された時刻 |
getHardDeleteTime | DateTime | 論理的に削除されたオブジェクトが完全に削除された時刻 |
getStorageClass | String | オブジェクトのストレージクラス |
getTemporaryHold | Boolean | オブジェクトが 一時保留の対象か |
getTimeCreated | DateTime | オブジェクトの作成時刻 |
getTimeDeleted | DateTime | オブジェクトの削除時刻 |
getTimeStorageClassUpdated | DateTime | オブジェクトのストレージクラスが最後に変更された時刻 |
getCustomTime | DateTime | ユーザー指定のタイムスタンプ |
getUpdated | DateTime | オブジェクトのメタデータ変更時刻 |
ObjectAccessControl
メソッド | 戻り値 | 説明 |
---|---|---|
getKind | String | リソースの種類 固定文字列:"storage#objectAccessControl" |
getDomain | String | エンティティに関連付けられているドメイン |
getEmail | String | エンティティに関連付けられているメールアドレス |
getEntity | String | 権限を保持するエンティティ 次のいずれかの形式 user-{email} group-{groupId} group-{email} domain-{domain} project-{team-projectId} allUsers allAuthenticatedUsers |
getEntityId | String | エンティティID |
getEtag | String | アクセス制御エントリのHTTPエンティティタグ |
getProjectTeam | ObjectAccessControl.ProjectTeam | エンティティに関連付けられているプロジェクトチーム |
getRole | String | エンティティのアクセス許可 "OWNER"、"READER"、"WRITER" |
ObjectAccessControl.ProjectTeam
メソッド | 戻り値 | 説明 |
---|---|---|
getProjectNumber | String | プロジェクト番号 |
getTeam | String | チーム役割 "editors"、"owners"、"viewers" |
StorageObject.CustomerEncryption
メソッド | 戻り値 | 説明 |
---|---|---|
getEncryptionAlgorithm | String | 暗号化アルゴリズム |
getKeySha256 | String | 暗号化キーの SHA256 ハッシュ値 |
StorageObject.Owner
メソッド | 戻り値 | 説明 |
---|---|---|
getEntity | String | エンティティ |
getEntityId | String | エンティティID |
StorageObject.Retention
メソッド | 戻り値 | 説明 |
---|---|---|
getMode | String | 保持設定のモード "Unlocked"(変更可)、"Locked"(変更不可) |
getRetainUntilTime | DateTime | オブジェクトを削除または置換が可能になった時刻 |
2. オブジェクトを置換
指定したオブジェクトを置換します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
StorageScopes.DEVSTORAGE_READ_WRITE
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.Objects objects = storage.objects();
StorageObject content = new StorageObject();
Storage.Objects.Rewrite rewrite = objects.rewrite(
"置換元のバケットID",
"置換元のオブジェクト名",
"置換先のバケットID",
"置換先のオブジェクト名"
,content);
RewriteResponse res = rewrite.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
POST: https://storage.googleapis.com/storage/v1/b/{置換元のバケットID}/o/{置換元のオブジェクト名}/rewriteTo/b/{置換先のバケットID}/o/{置換先のオブジェクト名}
が実行されます。
2.2.2. クエリパラメータ
Storage.Objects.Rewriteのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setMaxBytesRewrittenPerCall | Long | 再書き込みリクエストごとに再書き込みされる最大バイト数 |
setRewriteToken | String | 各再書き込み要求にこのフィールド |
setSourceGeneration | Long | コピー先の世代番号(generation) |
setIfGenerationMatch | Long | コピー元の世代番号(generation)と一致する場合のみ処理を行う |
setIfGenerationNotMatch | Long | コピー元の世代番号(generation)と一致しない場合のみ処理を行う |
setIfMetagenerationMatch | Long | コピー元のメタ世代番号(metageneration)と一致する場合のみ処理を行う |
setIfMetagenerationNotMatch | Long | コピー元のメタ世代番号(metageneration)と一致しない場合のみ処理を行う |
setIfSourceGenerationMatch | Long | コピー先の世代番号(generation)と一致する場合のみ処理を行う |
setIfSourceGenerationNotMatch | Long | コピー先の世代番号(generation)と一致しない場合のみ処理を行う |
setIfSourceMetagenerationMatch | Long | コピー先のメタ世代番号(metageneration)と一致する場合のみ処理を行う |
setIfSourceMetagenerationNotMatch | Long | コピー先のメタ世代番号(metageneration)と一致しない場合のみ処理を行う |
setProjection | String | レスポンスとして受け取るプロパティの指定 "full"(全てのプロパティ)、"noAcl"(ACL以外のプロパティ) |
setDestinationPredefinedAcl | String | コピー元のバケットに定義するアクセス制御リスト(ACL)の定義 |
setDestinationKmsKeyName | String | コピー元のオブジェクトの暗号化に使用されるCloud KMS 鍵のリソース名 |
2.2.3. リクエストボディ
StorageObjectのsetメソッドにより、クエリパラメータを追加できます。
1.2.3. リクエストボディと同じです。
2.3. レスポンスの内容
RewriteResponse
メソッド | 戻り値 | 説明 |
---|---|---|
getKind | String | リソースの種類 固定文字列:"storage#rewriteResponse" |
getTotalBytesRewritten | Long | 書き込まれた合計バイト数 |
getObjectSize | Long | コピーされるオブジェクトの合計サイズ (バイト単位) |
getDone | Boolean | コピーが完了したか |
getRewriteToken | String | データのコピーを続行するための後続のリクエストで使用するトークン |
getResource | StorageObject | コピー先のオブジェクトのメタデータを含むリソース |
おしまい。。