Help us understand the problem. What is going on with this article?

GCPでServerless Architectureを実現する第一歩としてFirebase Hosting (HTTPS)を使ってみよう

More than 3 years have passed since last update.

目的

2016年はサーバレスアーキテクチャが盛り上がったし、自分自身でも何度も口にした一年だったような気がしますので、Firebase (Hosting)を使ってServerless Architectureを実現してみましょう。また、同等のことはGoogle App Engine (GAE)を使っても実現できるでしょう。

サーバレスと言えば、AWS Lambda + API Gateway、Azure Functionsという空気になっていて、Cloud Functionsが現状のまま(アルファ版)だと盛り上がらないよな、ということで、GCPでもサーバレスでやっていこうと思う人に刺さればいいかなと思います。

基本的にhttps://firebase.google.com/docs/cli/ に書いてある手順通り実行すれば大丈夫です。

はじめに

Googleアカウント(@gmail.comかG Suiteのアカウント)が必要です。

次にNode.js環境(npm)を確保しましょう。Homebrew信者の方はbrewでいいと思いますが、2017年を迎えようとする今ですから通常はDockerでいいでしょう。

docker run --rm -it -p 9005:9005 node:7.2.1-alpine sh

後ほどGoogleアカウントを用いたOAuth 2認証のため、localhostにポート9005でアクセスする必要がありますので、-p 9005:9005しましょう。

firebase-toolsを用意

npm install -g firebase-tools

とするだけで、firebaseコマンドが利用できるようになります。結構時間がかかります(分単位)。

認証情報を取得

firebase login

とすると、URLが提示されると思いますので、ブラウザで開き、許可しましょう。許可が完了すると、localhost:9005のどこかにコールバックされます。

プロジェクト初期化

firebase init

として、Realtime DatabaseとHostingを選択できますが、今日はHostingのみ選びましょう。プロジェクトIDを訊かれますので、答えましょう。

firebase.jsonが作成されます。

firebase.json
{
  "hosting": {
    "public": "public"
  }
}

ファイル作成・編集

publicディレクトリに index.html404.html が作成されるので、自分がアップロードしたいものにアップロードしましょう。

アップロード

ファイルの作成などが完了したら、

firebase deploy

とすればアップロードされます。

=== Deploying to 'my-project'...

i  deploying hosting
✔  database: rules ready to deploy.
i  hosting: preparing public directory for upload...
⚠  Warning: Public directory does not contain index.html
✔  hosting: public folder uploaded successfully
✔  hosting: 2 files uploaded successfully
i  starting release process (may take several minutes)...

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/my-project/overview
Hosting URL: https://my-project.firebaseapp.com

このままでは、 https://my-project.firebaseapp.com という形式でしかアクセスできませんので、カスタムドメインを利用しましょう。

カスタムドメイン設定

ドメイン名の所有の確認

新規ドメインの場合は myproject.com の所有権の確認が必要です。APEXドメインを利用する場合でもサブドメインを利用する場合でもAPEXに TXT レコードを2個追加する必要があるようです。
ドメイン名管理者にメールが飛んでくるようですが、気にしなくてもいいようです。

サブドメインのCNAME設定

推奨されているのはCNAMEですが、Aレコードもサポートされていますので、固定IPにもできるようです!すごい!

CI化

今どきCIを使っているのが当たり前でしょう、という時代になって久しいので、各自のCI環境に組み込みましょう。

セキュリティ

Qualysに問い合わせてみましょう。

こんな感じ。極めて普通ですね。

firebase-hosting-qualys.png

GAEと組み合わせ

tnir
Android Developer with Firebase. Cloud Native. Also Cloud Business Development, Software Architect, Site Reliability Engineering, (Proprietary) Software Engineer w/ Golang, Python/Django, Ruby/Rails
https://tnir.gitlab.io/
gitlab-jp
Git/DevOpsツールチェーンプラットフォーム「GitLab」についての日本コミュニティ。
https://gitlab-jp.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away