Google Cloud CLI(SDK)のコンフィグ設定方法

# 紹介

イオンリテール（株）デジタル戦略部データソリューションGの丸尾です。
当チームは実店舗出身&非エンジニア人材のみで構成された
システムの内製化チームとなっておりまして、
今回はその中で利用しているものを共有します。

# 概要
本投稿ではGoogle Cloud Platform(GCP)とローカルPCを、
特定のCLI(SDK)ツールを利用してファイルの送受信や、
Biqueryからのデータ抽出を行う際のコンフィグ設定を説明します。

実際のイントラネットを介した連携は、
詳細なシステムを組んだ方が良いですが、
POC検証やクイックに試したい場合は参考にして下さい。

投稿はいくつか分けて投稿しますので各リンク先をご参照下さい。


# 稼働環境
💻windowsマシン(windows10)
弊社の従業員向けPCが基本windowsなのでwindowsマシンの方法を記載
公式リファランスにはmac,linuxマシンでの導入方法が記載されています

# 対象者
①本投稿はGCP初心者の方
②Azcopyなど別クラウドのsdkを使っていた方
③ベンダーに特定ファイルの連携行わせたい方

# 実施方法

Google Cloud CLI(SDK)を導入したらまず初めに以下を実行
※CLIの導入方法は➡[こちら](https://qiita.com/bleachonn77/items/8beb3bad335be39bb7bf)


```bash
gcloud init 
```

もしくは以下のショートカットコマンドを実行して下さい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668769/8d077388-fdac-a78d-fdb0-b4e742aa7ec8.png)


初めてGoogle CloudSDK shell を開いた時、下図のような画面が表示されます。
　　　ログインに進むため「　Y　」 (大文字)を入力して下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668769/1c2feddf-e0a6-e432-1afa-5a854ebf58bf.png)

ブラウザが開かれ、アカウントを選択する画面に遷移します。
　　  普段GCPを利用しているアカウントを選択し、リクエストが表示されるので許可を押す。
　　　そうすると、自身のアカウントに紐づいているプロジェクトがshell上に表示されるので、自分がローカルPCから操作したいプロジェクトの左にある番号を入力し、Enterを押して下さい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668769/f366472f-2eef-b081-8fe3-a9fe8d8a9c45.png)

以下の表示が出てデフォルトのリージョン/ゾーンを指定したい方は「y」
よくわからない方は「n」を入力してEnter

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668769/a0e5356f-522e-4bb2-45a9-e00017fc3fe0.png)

これで最低限のコンフィグ入力は完了です

試しにもう一度以下を入力すると

```bash
gcloud init 
```

以下のような結果が表示され、
現行のアクティブ化されているアカウントの簡易的な情報が得られます

```bash
Settings from your current configuration [default] are:
accessibility:
  screen_reader: 'False'
core:
  account: ~~~~~~~~@gmail.com
  project: my-pj
Pick configuration to use:
 [1] Re-initialize this configuration [default] with new settings
 [2] Create a new configuration
 Please enter your numeric choice:
```

このコンフィグはローカルPC内で複数設定が可能で、
上の状態で「1」を入力すると「default」という名前のコンフィグ情報を変更
「2」を入力すると新しい名前のコンフィグ作成ができます。

アカウント一覧は以下のコマンドで確認できます

```bash
gcloud auth list
```

またこのアカウントに個々のプロジェクトを紐づけることができるので
コマンドをバッチ実行する時に以下のコマンドで切り替えて操作可能です

```bash
gcloud config set account <アカウント名>
```

```例：batでmain.pyを定期実行
@echo off
@REM このbatファイルがある場所へ移動
cd /d "%~dp0"
gcloud config configurations activate default && python main.py 

@REM エラーが発生する際はpauseのコメントアウトを外す
@REM pause
```

&&が付いているのは「configurations activate」の実行で終了してしまわないように付けています。
他にも以下のコンフィグを付けることで各環境を切り替えて実行ができます

```コンフィグ例
gcloud config configurations activate default
gcloud config set account ~~~@gmail.com
gcloud config set project my-pj
gcloud auth activate-service-account --key-file "C:\path\to\~~~.json" 
```

コンフィグが正常に設定できているかは、
ご自身にBig queryの権限がついていれば以下のコマンドを叩いてみて下さい。

```bash
bq ls 
```

```結果
C:\Users>bq ls
    datasetId
 ---------------
  table_test1
  table_test2
```

以上の様に表示されれば正常に設定ができています。
他にもconfig設定は複数あるのでご自身の用途に合わせて調べてみて下さい。


注)ここまで説明してきたコンフィグ設定ですが、エラーとなる場合
　　接続・権限問題やプロキシー設定をご注意下さい
  
特にプロキシーは以下のように設定できます。
プロキシーは取り扱い注意で社内でご確認下さい。

```bash
#入力漏れがあると接続失敗します
#コピペで入力して「\n」のような改行が入ると、直接configファイルを修正しなければいけない等、面倒なことになるのでご注意下さい
gcloud config set proxy/address 999.999.999.999
gcloud config set proxy/port 8080
gcloud config set proxy/type http
```

また、プロキシー設定がある環境化で新しいコンフィグを作成しようとして、
「gcloud init> [2] Create a new configuration」を実行し名前を設定した時点で通信が途絶えてしまうのでその際はcmdを開き直すなどして上記の各「gcloud config set proxy」コマンドを実行下さい

実際のRPAコマンドなどは[こちら](https://qiita.com/bleachonn77/items/bca83ba62d69cb3d8dc4)