個人用gcloud project設定

個人用アカウントとその他アカウントの両立

公開日: 2023-07-29
更新日: 2024-02-21

  Table of Contents

はじめに

個人用に新たにGoogle Cloud projectを設定し, そのprojectを対象にlocal側から gcloudをコマンドを叩けるようにする設定をまとめます.

この手法は同一アカウントのprojectの切り替えに加えて, アカウント自体の切り替えにも活用できます.

Prerequisites

  • 個人用project作成済み
  • gcloud CLIインストール済み(see here)
  • gcloud initですでにデフォルトのconfigurationは作成済み

gcloud CLIインストールの確認

gcloud CLIインストール済みかどうかはTerminalで

1
2
3
4
5
6
7
8
9
10
% gcloud --version
Google Cloud SDK 441.0.0
bq 2.0.95
bundled-python3-unix 3.9.16
core 2023.07.28
gcloud-crc32c 1.0.0
gsutil 5.25
Updates are available for some Google Cloud CLI components.  To install them,
please run:
  $ gcloud components update

上記のような出力が確認できれば大丈夫です.

デフォルトのconfigurationの確認

なにかしらのconfigurationが設定されている場合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% gcloud init
Welcome! This command will take you through the configuration of gcloud.

Settings from your current configuration [default] are:
compute:
  region: asia-northeast1
  zone: asia-northeast1-b
core:
  account: hosinokirby@gmail.com
  disable_usage_reporting: 'True'
  project: dedede-daioh

Pick configuration to use:
 [1] Re-initialize this configuration [default] with new settings 
 [2] Create a new configuration
 [3] Switch to and re-initialize existing configuration: [pokemon]
Please enter your numeric choice:

という出力となるはずです. ただ, この情報はUbuntuにおいては~/.config/gcloud配下につくられており, 直接確認しに行くことも出来ます. または, gcloud config configurations list で確認することもできます.

1
2
3
4
% gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                    PROJECT               COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default  True       hoshinokirby@gmail.com     dedede-daioh          asia-northeast1-b     asia-northeast1
pokemon  False      hoshinokirby@gmail.com     pokemon               asia-northeast1-a     asia-northeast1

gcloud configの設定

手順

  1. configurationの追加とactivate
  2. accountの追加
  3. projectの設定
  4. compute/zone, compute/regionの設定

既存の設定に加えて新しいconfigurationを追加します. ここではtestとします.

1
2
3
% gcloud config configurations create test
Created [test].
Activated [test].

作成とともにactivatedされます. このとき, まだ他の設定はしていないので

1
2
3
4
5
% gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                    PROJECT               COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default  False      hoshinokirby@gmail.com     dedede-daioh          asia-northeast1-b     asia-northeast1
pokemon  False      hoshinokirby@gmail.com     pokemon               asia-northeast1-a     asia-northeast1
test     True

次にアカウントの設定を行います. 他の設定のアカウントと異なりmudahmudahmudah@gmail.comのアカウントで設定するとします. これはaccess認証がまだ済んでいないのでgcloud auth loginが必要となります.

1
2
## accountの設定
% gcloud config set account mudahmudahmudah@gmail.com

access認証がまだ未実施なので, project一覧を取得しようとすると以下のようなエラーが出ます.

1
2
3
4
5
6
7
8
9
10
% gcloud projects list
ERROR: (gcloud.projects.list) Your current active account [mudahmudahmudah@gmail.com] does not have any valid credentials
Please run:

  $ gcloud auth login

to obtain new credentials.

For service account, please activate it first:
  $ gcloud auth activate-service-account ACCOUNT

次にgcloud auth loginを叩くと, 認証ページURLが表示されるのでブラウザでloginします. login後, You are now logged in as [mudahmudahmudah@gmail.com].が以下のように表示されます.

1
2
3
4
5
6
7
8
9
## access credentialsの取得
% gcloud auth login
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?.....


You are now logged in as [mudahmudahmudah@gmail.com].
Your current project is [None].  You can change this setting by running:

次に, project, compute/zone, compute/regionを設定します.

1
2
3
% gcloud config set project dio-the-world
% gcloud config set compute/zone asia-northeast1-b
% gcloud config set compute/region asia-northeast1

設定が成功した場合, 以下のように設定一覧が見えるはずです

1
2
3
4
5
% gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                    PROJECT               COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default  False      hoshinokirby@gmail.com     dedede-daioh          asia-northeast1-b     asia-northeast1
pokemon  False      hoshinokirby@gmail.com     pokemon               asia-northeast1-a     asia-northeast1
test     True       mudahmudahmudah@gmail.com  dio-the-world         asia-northeast1-b     asia-northeast1

bq commandのテスト

local側に存在する, 四半期ごとの中国のGDPを格納したgdpquarterlychina1992Jan_2017Apr.csvをBQに上げてみます.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
### gdpquarterlychina1992Jan_2017Apr.csv
time_index,GDP
1992-03-31,5234.8
1992-06-30,6536.8
1992-09-30,7122.5
1992-12-31,8174.3
1993-03-31,6803.1
...

### schema.json
[
  {
    "name": "time_index",
    "type": "DATE",
    "mode": "REQUIRED",
    "description": "quarter"
  },
  {
    "name": "GDP",
    "type": "FLOAT",
    "mode": "NULLABLE",
    "description": "Chinese quaterly GDP"
  }
]

まず, datasetを作成します. ちゃんと明示的にlocationは設定しましょう.

1
2
3
4
5
6
7
8
9
% bq --location asia-northeast1 mk -d \
        --description "For personal Use or statistical analysis." \
        timeseries_dataset
Dataset 'dio-the-world:timeseries_dataset' successfully created.

% bq ls
      datasetId       
 -------------------- 
  timeseries_dataset 

次にテーブルを作成します. headerがカラム名となっているのでskipを指定します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## syntax
bq --location=location load \
    --source_format=format\
    dataset.table\
    path_to_source\
    schema

## 実行
% bq load  \
        --source_format=CSV \
        --skip_leading_rows=1 \
        timeseries_dataset.gdpquarterlychina1992Jan_2017Apr \
        ./gdpquarterlychina1992Jan_2017Apr.csv \
        ./schema.json

Upload complete.
Waiting on bqjob_ ... (0s) Current status                                                                             Waiting on bqjob_ ... (0s) Current status: DONE 

もし間違ったものを上げてしまった場合は

1
% bq rm -t timeseries_dataset.gdpquarterlychina1992Jan_2017Apr

四半期別GDPを年間換算に直してLockerで簡単に可視化すると以下のようになります

gcloud configコマンド

configの切り替え

1
% gcloud config configurations activate <config name>

でconfigを切り替えることが出来ます. defaultへ切り替えたい場合の例として

1
2
% gcloud config configurations activate default
Activated [default].

不要なconfgの削除

なお以下のコマンドはactiveなconfigに対しては使用できません. 使用する前に別configへのactivateを実行するようにしてください.

1
2
3
4
5
## 一つのconfigの削除
% gcloud config configurations delete my-config

## 複数configの削除
% gcloud config configurations delete my-config1 my-config2

References



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)