Cloud Storage API V2(Java)を使用して、
Cloud StorageのHMACキー情報を作成・更新・削除する方法
についてご紹介します。
HMACキーとは
アカウントに関連付けられた認証情報の一種です。
HMACキーを使用して署名を作成すると、その署名がCloudStorageに対するリクエストに組み込まれます。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う
を参照ください。
No | 目次 | ||
---|---|---|---|
1 | HMACキーリストを作成 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
2 | HMACキーを更新 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 | ||
3 | HMACキーを削除 | ||
1 | スコープ | ||
2 | 実行 | ||
3 | レスポンスの内容 |
1. HMACキーリストを作成
指定したプロジェクトのHMACキーを作成します。
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.Projects projects = storage.projects();
Storage.Projects.HmacKeys hmacKeys = projects.hmacKeys();
Storage.Projects.HmacKeys.Create create = hmacKeys.create("プロジェクトID","サービスアカウントのメールアドレス");
HmacKey res = create.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST : https://storage.googleapis.com/storage/v1/projects/{プロジェクトID}/hmacKeys
が実行されます。
1.2.2. クエリパラメータ
Storage.Projects.HmacKeysのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setServiceAccountEmail | String | サービスアカウントのメールアドレス |
1.2.3. リクエストボディ
リクエストボディはありません。
1.3. レスポンスの内容
HmacKey
メソッド | 戻り値 | 説明 |
---|---|---|
getKind | String | リソースの種類 固定文字列:"storage#hmacKey" |
getSecret | String | HMAC秘密鍵のマテリアル |
getMetadata | HmacKeyMetadata | HMACキーのメタデータ |
HmacKeyMetadata
メソッド | 戻り値 | 説明 |
---|---|---|
getId | String | HMACキーID |
getKind | String | リソースの種類 固定文字列:"storage#hmacKeyMetadata" |
getAccessId | String | HMACキーのアクセスID |
getEtag | String | HMACキーのHTTPエンティティタグ |
getSelfLink | String | リソースへのリンク |
getProjectId | String | キーが認証するサービスアカウントを所有するプロジェクトID |
getServiceAccountEmail | String | キーに関連付けられたサービスアカウントのメールアドレス |
getState | String | キーの状態 "ACTIVE"、"INACTIVE"、"DELETED" |
getTimeCreated | DateTime | HMACキーの作成時刻 |
getUpdated | DateTime | HMACキーメタデータの更新時刻 |
2. HMACキーを更新
指定したHMACキーのメタデータを更新します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
2.2. 実行
HMACキーのアクセスIDは、HmacKeyMetadataのgetAccessId()で取得できる値を使用します。
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.Projects projects = storage.projects();
Storage.Projects.HmacKeys hmacKeys = projects.hmacKeys();
HmacKeyMetadata content = new HmacKeyMetadata();
//更新内容を設定
Storage.Projects.HmacKeys.Update update = hmacKeys.update("プロジェクトID","HMACキーのアクセスID",content);
HmacKeyMetadata res = update.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
PUT: https://storage.googleapis.com/storage/v1/projects/{プロジェクトID}/hmacKeys/{HMACキーのアクセスID}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストパラメータ
HmacKeyMetadataのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setEtag | String | 更新するHMACキーのHTTP1.1エンティティタグ (一致しない場合は更新されません) |
setState | String | キーの状態 "ACTIVE"、"INACTIVE"、"DELETED" |
2.3. レスポンスの内容
HmacKeyMetadata
2.3. レスポンスの内容(HmacKeyMetadata)と同じです。
3. HMACキーを削除
指定したHMACキーを削除します。
キーの状態(2.2.3. リクエストパラメータのstate)が
"ACTIVE"の状態では削除することはできません。
削除するにはstateを"INACTIVE"に変更してください。
3.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
StorageScopes.CLOUD_PLATFORM
StorageScopes.DEVSTORAGE_FULL_CONTROL
⧉[Cloud Storage API(V2)] JavaでCloud Storageを使う(2.2 Storageインスタンスを取得)
でスコープを指定してください。
3.2. 実行
HMACキーのアクセスIDは、HmacKeyMetadataのgetAccessId()で取得できる値を使用します。
public static void main(String[] args) throws Exception{
Storage storage = getStorage();
Storage.Projects projects = storage.projects();
Storage.Projects.HmacKeys hmacKeys = projects.hmacKeys();
Storage.Projects.HmacKeys.Delete delete = hmacKeys.delete("プロジェクトID","HMACキーのアクセスID");
delete.execute();
}
3.2.1. HTTPリクエスト
DELETE: https://storage.googleapis.com/storage/v1/projects/{プロジェクトID}/hmacKeys/{HMACキーのアクセスID}
が実行されます。
3.2.2. クエリパラメータ
クエリパラメータはありません。
3.2.3. リクエストボディ
リクエストボディはありません。
3.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合は例外が発生します。
おしまい。。