Cloud Storage API V2(Java)を使用して、
Cloud Storageのデフォルトのアクセス制御リスト(ACL)エントリを作成・更新・削除する方法
についてご紹介します。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う
を参照ください。
No | 目次 | ||
---|---|---|---|
1 | ACLを作成 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
2 | ACLを上書き | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
3 | ACLを更新 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
4 | ACLを削除 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 |
1. ACLを作成
指定したバケットにデフォルトのACLエントリを作成します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.DefaultObjectAccessControls access = storage.defaultObjectAccessControls();
ObjectAccessControl content = new ObjectAccessControl();
content.setEntity("エンティティ");
content.setRole("アクセス許可");
Storage.DefaultObjectAccessControls.Insert insert = access.insert("バケットID",content);
ObjectAccessControl res = insert.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://storage.googleapis.com/storage/v1/b/{バケットID}/defaultObjectAcl
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
ObjectAccessControlのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setEntity | String | 【作成時のみ必須】 権限を保持するエンティティ 次のいずれかの形式 user-{email} group-{groupId} group-{email} domain-{domain} project-{team-projectId} allUsers allAuthenticatedUsers |
setRole | String | 【作成時のみ必須】 エンティティのアクセス許可 "OWNER"、"READER" |
1.3. レスポンスの内容
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" |
ObjectAccessControl.ProjectTeam
メソッド | 戻り値 | 説明 |
---|---|---|
getProjectNumber | String | プロジェクト番号 |
getTeam | String | チーム役割 "editors"、"owners"、"viewers" |
2. ACLを上書き
指定したバケットにデフォルトのACLエントリを上書きします。
3. ACLを更新と違うところは、
指定した存在するACLエントリを新しいACLエントリに置き換えます。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.DefaultObjectAccessControls access = storage.defaultObjectAccessControls();
ObjectAccessControl content = new ObjectAccessControl();
content.setRole("アクセス許可");
Storage.DefaultObjectAccessControls.Update update = access.update("バケットID","エンティティ",content);
ObjectAccessControl res = update.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
PUT: https://storage.googleapis.com/storage/v1/b/{バケットID}/defaultObjectAcl/{エンティティ}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストボディ
ObjectAccessControlのsetメソッドにより、リクエストボディを追加できます。
1.2.3. リクエストボディと同じです。
2.3. レスポンスの内容
ObjectAccessControl
1.3. レスポンスの内容(ObjectAccessControl)と同じです。
3. ACLを更新
指定したバケットにデフォルトのACLエントリを更新します。
2. ACLを上書きと違うところは、
指定したバケットのデフォルトのACLエントリのみを更新します。
3.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
3.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.DefaultObjectAccessControls access = storage.defaultObjectAccessControls();
ObjectAccessControl content = new ObjectAccessControl();
//更新内容を設定
Storage.DefaultObjectAccessControls.Patch patch = access.patch("バケットID","オブジェクト名",content);
ObjectAccessControl res = patch.execute();
System.out.println(res);
}
3.2.1. HTTPリクエスト
PATCH: https://storage.googleapis.com/storage/v1/b/{バケットID}/defaultObjectAcl/{エンティティ}
が実行されます。
3.2.2. クエリパラメータ
クエリパラメータはありません。
3.2.3. リクエストボディ
ObjectAccessControlのsetメソッドにより、リクエストボディを追加できます。
1.2.3. リクエストボディと同じです。
3.3. レスポンスの内容
ObjectAccessControl
1.3. レスポンスの内容(ObjectAccessControl)と同じです。
4. ACLを削除
指定したバケットのデフォルトのACLエントリを削除します。
4.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
4.2. 実行
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.DefaultObjectAccessControls access = storage.defaultObjectAccessControls();
Storage.DefaultObjectAccessControls.Delete delete = access.delete("バケットID","エンティティ");
delete.execute();
}
4.2.1. HTTPリクエスト
DELETE: https://storage.googleapis.com/storage/v1/b/{バケットID}/defaultObjectAcl/{エンティティ}
が実行されます。
4.2.2. クエリパラメータ
クエリパラメータはありません。
4.2.3. リクエストボディ
リクエストボディはありません。
4.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合は例外が発生します。
おしまい。。