Google Cloud SDK でGCSにデータをアップロード
個人的なメモ、備忘録です。1 事前準備
google cloud platformのアカウント作成 https://cloud.google.com/iam/docs/creating-managing-service-accounts?hl=ja を参考にアカウントを作成する。 プロジェクトの作成 https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja を参考にプロジェクトを作成する。2 google cloud sdkのインストールと各種設定
インストール
公式によると、「Cloud SDK には Python が必要です。サポートされているバージョンは Python 3(3.5~3.8 を推奨)と Python 2(2.7.9 以降)です。」https://cloud.google.com/sdk/docs/install?hl=ja とのことでしたが、私のローカルでは、2系も3系もどちらもサポート外のバージョンが入っていたので、dockerコンテナ にインストールすることにしました。下を参考に、公式のdockerイメージを使いました。
https://cloud.google.com/sdk/docs/downloads-docker?hl=ja
こんな感じでコンテナを立てました。
root/
├ volumes/
│ ├ data.csv ←最終的にこれをGCSにアップロードしたいので、あらかじめ作った。なくてもいい。
│ ├ entrypoint.sh
├ docker-compose.yml
├ Dockerfile
下の公式を参考にDockerfileを作成。alpineの軽量なものを使った。
https://cloud.google.com/sdk/docs/downloads-docker?hl=ja
FROM gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
WORKDIR googleCloudSdk
ENTRYPOINT ["sh","./entrypoint.sh"]
コンテナ内に入ってからgoogle-cloud-sdkの設定(ログイン、プロジェクトIDの設定)を行いたかったので、コンテナのコマンドはbashとした。
# !/bin/sh
bash
docker-compose.ymlを作成。
(個人的にdocker-composeにした方が、後々見返したときに何をやっているのか、分かりやすい気がする。。。)
version: "3.7"
services:
gcp:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./volumes:/googleCloudSdk
後は、docker image を作って、コンテナ内に入る。
$ docker-compose run gcp
設定
次に、設定をします。具体的には、 1 google cloud platformにログインし 2 プロジェクトIDを設定します。$ gcloud auth login
下のようにリンク先urlが表示されるので、コピペして、ブラウザでアクセスします。
リンク先でアカウントをクリックすると、vertification codeが表示されるので、コピーしてターミナル上に貼り付けます。
$ gcloud auth login
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?xxxxxxx~
Enter verification code:
Enter verification code:xxxxxxxxxxx ←ここに貼り付け
次に、プロジェクトを選択します。
$ gcloud config set project PROJECT_ID
PROJECT_IDはgoogle cloud platform のコンソール画面から確認して貼り付けます。
3 バケットの作成(GCS)
下の公式のサイトを見ながら、バケットを作成します。
$ gsutil mb -p PROJECT_ID gs://BUCKET_NAME ←バケット名を任意につけます。
4 アップロード
次は、データをアップロードします。今回はcsvファイルをアップロードしたいので、サンプルのデータを作成します。$ vi data.csv
id,name,gender,
1,anne,F,
2,jon,M,
3,ken,M,
上記のように、仮に作成したcsvファイルをgoogle cloud storage 上にアップします。
また、公式サイトを確認しながらコマンドを実行します。
https://cloud.google.com/storage/docs/uploading-objects?hl=ja
$ gsutil cp data.csv gs://BUCKET_NAME
無事、GCSにデータをアップロードできました。
終わり。