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など