tag:crieit.net,2005:https://crieit.net/tags/gcloud/feed
「gcloud」の記事 - Crieit
Crieitでタグ「gcloud」に投稿された最近の記事
2019-09-24T19:17:59+09:00
https://crieit.net/tags/gcloud/feed
tag:crieit.net,2005:PublicArticle/15421
2019-09-24T19:17:59+09:00
2019-09-24T19:17:59+09:00
https://crieit.net/posts/Firestore-gcloud
Firestoreのデータをgcloudを使ってバックアップ&別のプロジェクトへインポートしてみる
<p>Firestoreのデータをガリガリ見ていきたいなと思っていたら、<br />
別のプロジェクトに移行できそうだったので、いろいろ調べたときの備忘録。</p>
<p>分析目的だけど、BigQueryは1000カラム制約で使えなかったので代替案...<br />
別プロジェクトなら無料枠でいろいろできそう。</p>
<h3 id="注意"><a href="#%E6%B3%A8%E6%84%8F">注意</a></h3>
<p>Firestoreのエクスポート/インポートについて、いくつか注意。</p>
<ol>
<li>Firestoreのエクスポート/インポートは<strong>Blazeプラン</strong>が必要(無料枠では不可)</li>
<li>ドキュメントの読み取りと書き込み時にCloud Firestoreの料金が課金される</li>
</ol>
<p>さらに、</p>
<blockquote>
<p>エクスポート / インポート オペレーションのコストは、<strong>費用制限の対象にはなりません</strong>。<br />
オペレーションが完了するまで、エクスポート/インポートでGCPの<strong>予算アラートはトリガーされません</strong>。</p>
</blockquote>
<p>とのことなので、ご利用は計画的に..</p>
<hr />
<h3 id="1. gcloudのインストール"><a href="#1.+gcloud%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">1. gcloudのインストール</a></h3>
<h4 id="インストール"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">インストール</a></h4>
<pre><code class="console">$ brew cask install google-cloud-sdk
</code></pre>
<h4 id=".bashrcなどに以下を追記"><a href="#.bashrc%E3%81%AA%E3%81%A9%E3%81%AB%E4%BB%A5%E4%B8%8B%E3%82%92%E8%BF%BD%E8%A8%98">.bashrcなどに以下を追記</a></h4>
<pre><code class="bash">source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc'
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc'
</code></pre>
<h4 id="gcloudの初期化"><a href="#gcloud%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96">gcloudの初期化</a></h4>
<pre><code class="console"># 初期設定の実行
$ gcloud init
# このあと、ログイン画面が出てきて認証する
# コンポーネントのアップデート
$ gcloud components update
# 現在のプロジェクトの確認
$ gcloud info | grep project
</code></pre>
<h3 id="2. FirestoreのデータをExportする"><a href="#2.+Firestore%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92Export%E3%81%99%E3%82%8B">2. FirestoreのデータをExportする</a></h3>
<p><code>firestore export</code>を使うと、データのバックアップが作成できるらしい。<br />
バックアップデータはGCPのStorage上に作成されるので、<br />
あらかじめ、Storageを作成しておく必要がある。</p>
<pre><code class="console"># 現在のプロジェクトの確認
$ gcloud info | grep project
# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]
# コレクションを指定して、一部だけをエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]
# 実行状況の確認
$ gcloud beta firestore operations list
</code></pre>
<p>データ量が多いと、コマンドが途中で終了するので、<br />
完了したかどうかは<code>operations list</code>を実行して確認する必要がある。</p>
<p>参考: <a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/firestore/manage-data/export-import?hl=ja">データのエクスポートとインポート | Firebase</a></p>
<h3 id="3. プロジェクトを変更する"><a href="#3.+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B">3. プロジェクトを変更する</a></h3>
<pre><code class="bash"># プロジェクトの設定
$ gcloud config set project [PROJECT]
# 現在の設定情報の確認
$ gcloud info
</code></pre>
<p>参考: <a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/sdk/docs/configurations">SDK 構成の管理 | Cloud SDK のドキュメント | Google Cloud</a></p>
<h3 id="4. アカウントを変更する"><a href="#4.+%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B">4. アカウントを変更する</a></h3>
<pre><code class="console"># アカウントの設定
$ gcloud config set account [ACCOUNT]
# 設定したアカウントの認証
$ gcloud auth login
# 登録しているアカウントの一覧を確認
$ gcloud auth list
# プロジェクトの設定
$ gcloud config set project [PROJECT]
# 現在の設定情報の確認
$ gcloud info
</code></pre>
<p>参考: <a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/sdk/docs/authorizing">Cloud SDK ツールの承認 | Cloud SDK のドキュメント | Google Cloud</a></p>
<h3 id="5. バックアップを別のプロジェクトにインポートする"><a href="#5.+%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%82%92%E5%88%A5%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B">5. バックアップを別のプロジェクトにインポートする</a></h3>
<p>全体の流れはこんな感じ。</p>
<pre><code class="console"># バックアップしたいプロジェクトに設定
$ gcloud config set project [PROJECT]
# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]
# 別のプロジェクトにプロジェクトに変更
$ gcloud config set project [PROJECT]
# バックアップファイルのインポート
$ gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/
</code></pre>
<p><strong>注意点</strong></p>
<ol>
<li>インポートしたいプロジェクトのFirestoreは初期設定までする必要がある</li>
<li>実行はプロジェクトのサービスアカウントで実行されるので、<br />
バックアップファイルのバケットに権限を付与する必要がある</li>
</ol>
<p>参考: <a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/firestore/manage-data/export-import?hl=ja">データのエクスポートとインポート | Firebase</a></p>
<h1 id="おわりに"><a href="#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB">おわりに</a></h1>
<p>有料のみではあるけど、</p>
<ol>
<li>本番データの分析したり</li>
<li>本番データを開発用に利用したり</li>
<li>プロジェクトの移行</li>
</ol>
<p>なんかにも使えそう。<br />
分析はBigQueryを使えるならそのほうがいいかも?</p>
<h2 id="こんなのつくってます!!"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99%21%21">こんなのつくってます!!</a></h2>
<p>積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!<br />
<a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p>
<p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="200"/></p>
<p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p>
<p>要望・感想・アドバイスなどあれば、<br />
公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで</p>
<h1 id="参考にしたサイト"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88">参考にしたサイト</a></h1>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/firestore/manage-data/export-import?hl=ja">データのエクスポートとインポート | Firebase</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://medium.com/google-cloud-jp/firestore-backup-67327a74cd54">Cloud Firestoreのバックアップ・リストア - google-cloud-jp - Medium</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://note.mu/yo16/n/ne25615bab8f5">gcloudのアカウント変更とプロジェクト変更|yo16|note</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/ShuA/items/1ff83b8d804168b087ba">自分用GCPコマンドリファレンス - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/Takakuwa-Shun/items/ac455c96a81a189eacce">gcloudの自分用メモ - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://blog.engineer.adways.net/entry/2018/06/08/150000">gcloudコマンド(GCP)で複数のプロジェクトとアカウントの使い分けを便利に - Adwaysエンジニアブログ</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/sakamossan/items/8ff74ed377dc77325b80">macosにgcloudとkubectlのインストール - Qiita</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/sdk/docs/quickstart-macos?hl=ja">macOS 用のクイックスタート | Cloud SDK のドキュメント | Google Cloud</a></li>
</ul>
きらぷか@積読ハウマッチ/SSSAPIなど