LoginSignup
0
0

[Cloud Storage API(V2)] Javaでデフォルトのアクセス制御リスト(ACL)エントリを作成・更新・削除する

Posted at

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. レスポンスの内容

レスポンスはありません。
削除に失敗した場合は例外が発生します。



おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0