###### tags: `GCP` `Cloud Function` # Cloud Function - 関数単位のデプロイ - サーバーレス - サーバーが無いわけではない - 管理がいらないということ - コード実行時間分の課金 - 自動スケール # 1. 流れ 1. Cloud Functionを作成 2. Cloud SQLからデータ取得 3. Cloud SQLにデータ挿入 Cloud Function -> Cloud SQLへはプロキシを使うので CloudSQLのパブリックIPを有効にする # 2. Cloud Functionを作成 1. CloudFunction > 作成 名前:任意 トリガー: HTTP -> URLが自動で発行 ソースコード: インラインエディタ ランタイム: Nodejs エディタ: 関数を入力する 実行する関数: デフォルト 残りはデフォルト 2. 詳細 > トリガー > url 関数が実行される 3. 詳細 > コード > 編集 実行される関数の中身を "Hello, GCP" に変更 package.jsonの中身に依存ライブラリを書くと、自動でインストールされる 4. 詳細 > トリガ から関数へのurlにアクセスする # 3. Cloud FunctionからCloudSQLのデータを取得 1. CloudSQLのパブリックIPを有効にする 2. インスタンス接続名をメモ 3. CloudFunction > 詳細 > 編集 4. package.json の dependenciesに、 mysql:latestを追加 package.jsonのversionも上げておく 5. 講義の配布ファイルで、user, pass, dbnameを適切なものに変える 6. ConnectionNameにはDBのインスタンス接続名をコピペ 7. 公開する関数名を **udemyStudy** に変える ![](https://i.imgur.com/VyI4WEj.png) 主な流れは、 1. package.json や go.modなどに依存パッケージを記入 2. ソースコードで関数をexport、関数名を公開する 3. cloudfunction1つにつき、1つの関数だけ公開できる cloudfunctionとソースコードは1対1で、namespaceも分断される cloudfunctionの詳細の、テストタブで関数をテストすることもできる 実際の出力を確認できる # 4. CloudSQLへのデータの挿入 前回作ったのはレコードを全部取得する関数 今回は add という名前で、クエリパラメータからuser名を取得し User tableにinsertする関数を作る 1. 新しい Cloud Function を作成 2. package.jsonにmysql:latestを追加 3. ソースコードをコピペ 4. トリガー > urlをクリックしてアクセス urlに ?name=名前 を入力すると、ユーザーが追加できる