[GCP]Cloud Strageにファイルをcurlコマンドでアップロードする。

PHPプログラムでアップロードする方法とは別に、curlコマンドを使用してファイルをアップロードする方法。

APIの有効化

APIライブラリで「Google Cloud Strage API」を有効化する。

「OAuth同意画面」

任意のアプリケーション名を登録して、スコープの追加を行う。
「Google Cloud Storage のデータの管理」を選択。

認証情報を作成

「認証情報を作成」からOAuthクライアントID を選択して作成を進める。「承認済みのリダイレクト URI」には「http://localhost」を指定して完了すると「クライアントID」と「クライアントシークレット」が表示される。
※「クライアントID」と「クライアントシークレット」は後からJSONファイルをダウンロードして参照することも可能。

認証コード取得

https://accounts.google.com/o/oauth2/v2/auth にクエリを指定してブラウザでアクセスする。

  • redirect_uri:http://localhost を指定
  • client_id:先ほど取得したクライアントIDを指定
  • scope:APIのスコープURIを指定
  • response_type:code(固定値)
  • access_type:offline(固定値)
https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=http://localhost&client_id=xxxxxxx.apps.googleusercontent.com&scope=https://www.googleapis.com/auth/devstorage.read_write&response_type=code&access_type=offline

認証が完了するとlocalhostにリダイレクトするが、エラーとなる。
このエラーURLに含まれているcodeの値を後ほど使用する。

http://localhost/?code=xxxxxxxxx&scope=https://www.googleapis.com/auth/devstorage.read_write

アクセストークン/リフレッシュトークンの取得

先ほど取得したcodeを使用してアクセストークンとリフレッシュトークンを取得する。

  • REDIRECT_URI:http://localhostを指定
  • CLIENT_ID:認証情報作成時のクライアントIDを指定
  • CLIENT_SECRET:認証情報作成時のシークレットIDを指定
  • AUTHORIZATION_CODE:先ほど取得したcodeを指定
curl --data "redirect_uri=[REDIRECT_URI]" \
     --data "client_id=[CLIENT_ID]" \
     --data "client_secret=[CLIENT_SECRET]" \
     --data "code=[AUTHORIZATION_CODE]" \
     --data "grant_type=authorization_code" \
     --data "access_type=offline" \
     https://www.googleapis.com/oauth2/v4/token

{
  "access_token": "xxxx",
  "expires_in": 3600,
  "refresh_token": "xxxx",
  "scope": "https://www.googleapis.com/auth/devstorage.read_write",
  "token_type": "Bearer"
}

curlを実行するとアクセストークンとリフレッシュトークンを取得できる。
この値を使用してファイルをアップロードするためのURLを作成する。

ファイルのアップロード

GETパラメータに下記の値を指定する。

  • OBJECT:アップロードするローカルのファイル
  • OAUTH2_TOKEN:アクセストークン
  • OBJECT_CONTENT_TYPE:アップロードファイルのMIMEタイプ
  • BUCKET_NAME:アップロード先のバケット名
  • OBJECT_NAME:アップロード後のファイル名
curl -X POST --data-binary @[OBJECT] \
                -H "Authorization: Bearer [OAUTH2_TOKEN]" \
                -H "Content-Type: [OBJECT_CONTENT_TYPE]" \
                "https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]"

これでファイルのアップロードが完了する。

参考

【GCP】Google Cloud Storage を curl コマンドで利用する

オブジェクトのアップロード

カテゴリーGCP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

17 + 4 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください