LoginSignup
9

More than 5 years have passed since last update.

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

Posted at

目的

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と組み合わせ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9