GCPローカルサーバレス開発環境準備(gcloudインストール)

今のところAWSでAPIGateway+Lambda+DynamoDBでサーバレス開発というパターンが多いけど、DynamoDBだとキーをたくさん持てないという制約があってどうしてもフラグをたくさん持たせてあいまいに検索させたいという要件に弱かったりする。一応、こういうのもAWSにあるんだけど料金が24時間連続イメージで一番小さな規模でも最低25,000円超えてしまいそうなので他に何かないか探していたら、GCPの方でDATASTOREとかいうのがあるらしいと知った。けれどFirestoreに切り替わっているじゃないですか。やれることは同等でかつ、料金面でもDynamoDBの料金体系に近いのでアクセス数とか少ないWebサイトのバックエンドにちょうどいい感じだったりする。組み合わせとしてはAPPEngineCloudFunctionsの2つで使えるみたい。少し勉強してみようといろいろ調べがてらローカル開発環境はどうやって作るんだと思い、まずはgcloudコマンド入れてみることにした。AWSのSAM-CLIを入れるときに作ったHyper-Vのイメージが残ってるのでそいつを使いまわして環境構築です。

■参考サイト
情報が少なかったです。ただ単に自分の探し方が悪いだけかも
https://cloud.google.com/sdk/downloads?hl=JA#linux
https://qiita.com/kentarosasaki/items/2232113b44b016a56adc
https://cloud.google.com/sdk/docs/quickstart-linux?hl=ja
https://cloud.google.com/sdk/docs/managing-components?hl=ja

■手順(あらかじめ3までは既存イメージで作ってある状態)
#1.初期設定
#日本語化
$ sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
$ sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" 
$ source /etc/default/locale
$ echo $LANG
ja_JP.UTF-8
#タイムロケール変更
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl 
#ソフトウェアアップデート
$ sudo apt-get -y update
$ sudo apt-get -y upgrade
#ディストリビューションアップデート
$ sudo apt-get -y update
$ sudo apt-get dist-upgrade
#treeコマンドインストール
$ sudo apt-get -y install tree
#TeraTermでKey作成後にWinSCPでpubファイルアップロード後に以下のコマンド実行
$ mkdir .ssh
$ chmod 700 .ssh
$ mv id_rsa.pub .ssh/authorized_keys
$ reboot
#sshd_config編集
$ sudo sed -i -e "s/#PubkeyAuthentication/PubkeyAuthentication/g" /etc/ssh/sshd_config
$ sudo sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config
$ sudo service sshd restart

#2.Docker周り
#パッケージ更新
$ sudo apt-get -y update
#https経由のaptリポジトリ許可
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
#PGP-KEY取得
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#DockerCEインストール
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get -y install docker-ce
#sudoなしDockerコマンド実行可能設定
$ docker -v
Docker version 18.09.1, build 4c52b90
$ sudo usermod -aG docker $(whoami)
$ sudo service docker restart
$ docker info

#Docker-composeインストール
$ export compose='1.24.0'
$ sudo curl -L https://github.com/docker/compose/releases/download/${compose}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod 0755 /usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

#3.pythonインストール
#pyenvインストール
$ sudo apt install python-dev python-pip
$ sudo apt install python3-dev python3-pip
$ sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

#python複数バージョンインストール
$ pyenv install 3.7.3
$ pyenv install 2.7.16
$ sudo apt -y install jq

#4.GCP開発環境構築
#python切替
$ pyenv local 2.7.16
$ python --version
Python 2.7.16
#CloudSDK導入
curl https://sdk.cloud.google.com | bash
~中略~
#以下の質問はEnter
Installation directory (this will create a google-cloud-sdk subdirectory) (/home/matarain):
~中略~
#以下の質問はYで
Do you want to help improve the Google Cloud SDK (Y/n)?Y
#以下の質問はYで
~中略~
Modify profile to update your $PATH and enable shell command
completion?

Do you want to continue (Y/n)?Y
~中略~
#以下が表示されたらEnter
Enter a path to an rc file to update, or leave blank to use
[/home/matarain/.bashrc]:

~中略~
For more information on how to get started, please visit:
  https://cloud.google.com/sdk/docs/quickstarts
  
#パスの確認
$ exec -l $SHELL
$ which gcloud

#設定
$ gcloud init
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]
~中略~
Network diagnostic passed (1/1 checks passed).

#Yを入力
You must log in to continue. Would you like to log in (Y/n)?Y

#URLが表示されるのでブラウザで確認
Go to the following link in your browser:

#ブラウザに表示されたキーを貼り付け
Enter verification code: ブラウザに表示されたキー

#プロジェクト選択
Pick cloud project to use:
 [1] smp-project-123456
 [2] key-pj-232222
Please enter numeric choice or text value (must exactly match list
item):  1

Your current project has been set to: [smp-project-123456].

#Yを入力
Do you want to configure a default Compute Region and Zone? (Y/n)?  Y

#リージョン選択
Which Google Compute Engine zone would you like to use as project
default?
If you do not specify a zone via a command line flag while working
with Compute Engine resources, the default is assumed.
 [1] us-east1-b
 [2] us-east1-c
~中略~
 [49] asia-northeast2-c
 [50] europe-north1-a
Did not print [12] options.
Too many options [62]. Enter "list" at prompt to print choices fully.
Please enter numeric choice or text value (must exactly match list
item):34

Your project default Compute Engine zone has been set to [asia-northeast1-a].
You can change it by running [gcloud config set compute/zone NAME].

Your project default Compute Engine region has been set to [asia-northeast2].
You can change it by running [gcloud config set compute/region NAME].

~中略~

* Run `gcloud --help` to see the Cloud Platform services you can interact with. And run `gcloud help COMMAND` to get help on any gcloud command.
* Run `gcloud topic --help` to learn about advanced features of the SDK like arg files and output formatting

#バージョン確認コマンド
$ gcloud version
#config設定確認コマンド
$ gcloud config list
#情報表示コマンド
$ gcloud info
#インストールコンポーネント一覧コマンド
matarain@gcp-dev:~$gcloud components list

GCPのローカル開発ってどうするんだ?情報が少ないだけにどうやって行くかは今後の課題ですなぁ、、、、。AWSはむちゃむちゃ情報ヒットするけどGCPはあまりないなぁ。
とりあえずGCPのチュートリアルやりつつググってやってくしかないですねぇ。
というか25,000円/月出してくれれば仕様変更が柔軟なデータベース基盤できるんだから安いと思うけど経営者という人種は見えない利益にお金は出しやがらないからなぁ。とりあえずGCP調べて行ってみます。

コメント

このブログの人気の投稿

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

証券外務員1種勉強(計算式暗記用メモ)

マクロ経済学(IS-LM分析)