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.BucketAccessControls access = storage.bucketAccessControls();
BucketAccessControl content = new BucketAccessControl();
content.setEntity("エンティティ");
content.setRole("アクセス許可");
Storage.BucketAccessControls.Insert insert = access.insert("バケットID",content);
BucketAccessControl res = insert.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://storage.googleapis.com/storage/v1/b/{バケットID}/acl
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
BucketAccessControlのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setEntity | String | 【作成時のみ必須】 権限を保持するエンティティ 次のいずれかの形式 user-{email} group-{groupId} group-{email} domain-{domain} project-{team-projectId} allUsers allAuthenticatedUsers |
setRole | String | 【作成時のみ必須】 エンティティのアクセス許可 "OWNER"、"READER"、"WRITER" |
1.3. レスポンスの内容
BucketAccessControl
メソッド | 戻り値 | 説明 |
---|---|---|
getId | String | アクセス制御エントリID |
getKind | String | リソースの種類 固定文字列:"storage#bucketAccessControl" |
getBucket | String | バケットの名前 |
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 | BucketAccessControl.ProjectTeam | エンティティに関連付けられているプロジェクトチーム |
getRole | String | エンティティのアクセス許可 "OWNER"、"READER"、"WRITER" |
getSelfLink | String | アクセス制御エントリへのリンク |
BucketAccessControl.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.BucketAccessControls access = storage.bucketAccessControls();
BucketAccessControl content = new BucketAccessControl();
content.setRole("アクセス許可");
Storage.BucketAccessControls.Update update = access.update("バケットID","エンティティ",content);
BucketAccessControl res = update.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
PUT: https://storage.googleapis.com/storage/v1/b/{バケットID}/acl/{エンティティ}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストボディ
BucketAccessControlのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setRole | String | 【必須】エンティティのアクセス許可 "OWNER"、"READER"、"WRITER" |
2.3. レスポンスの内容
BucketAccessControl
1.3. レスポンスの内容(BucketAccessControl)と同じです。
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.BucketAccessControls access = storage.bucketAccessControls();
BucketAccessControl content = new BucketAccessControl();
//更新内容を設定
Storage.BucketAccessControls.Patch patch = access.patch("バケットID","エンティティ",content);
BucketAccessControl res = patch.execute();
System.out.println(res);
}
3.2.1. HTTPリクエスト
PATCH: https://storage.googleapis.com/storage/v1/b/{バケットID}/acl/{エンティティ}
が実行されます。
3.2.2. クエリパラメータ
クエリパラメータはありません。
3.2.3. リクエストボディ
BucketAccessControlのsetメソッドにより、リクエストボディを追加できます。
1.2.3. リクエストボディと同じです。
3.3. レスポンスの内容
BucketAccessControl
1.3. レスポンスの内容(BucketAccessControl)と同じです。
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.BucketAccessControls access = storage.bucketAccessControls();
Storage.BucketAccessControls.Delete delete = access.delete("バケットID","エンティティ");
delete.execute();
}
4.2.1. HTTPリクエスト
DELETE: https://storage.googleapis.com/storage/v1/b/{バケットID}/acl/{エンティティ}
が実行されます。
4.2.2. クエリパラメータ
クエリパラメータはありません。
4.2.3. リクエストボディ
リクエストボディはありません。
4.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合は例外が発生します。
おしまい。。