コンテンツに移動
デベロッパー

gcloud 転送を使用したログ アップロードの自動化

2022年3月23日
https://storage.googleapis.com/gweb-cloudblog-publish/images/GCP_Twitter_Card-20001000_jGrfo57.max-2000x2000.png
Google Cloud Japan Team

※この投稿は米国時間 2022 年 3 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。

この度、私のチームは gcloud 転送コマンドライン ツールをリリースしました。そこでこのチュートリアルでは、一般的なタスクであるログをクラウドへアップロードする方法をご紹介します。

セットアップ

このタスクを行うには、8 GB 以上の RAM を備えた Linux オペレーティング システム搭載のデバイスが必要です。条件を満たすデバイスをお持ちでない場合は、Compute Engine 仮想マシンのスピンアップを簡単に行えます

アップロードするログを作成してみましょう。現状では、大量のデータ(テラバイト以上)を扱う場合、Google Cloud の Transfer Service は最適なツールです。しかし、チュートリアルでは、複数のハードディスクに相当する架空データを作成してもらうことは通常ありません。ここでは次のようにしてみてください。

読み込んでいます...

これで問題ありません。

gcloud CLI に移動します。gcloud CLI をまだお持ちでない場合は、インストールしてください。インストール プロセス中に Google にログインするよう表示されるはずです。

このチュートリアルを Google Cloud プロジェクトで完了するのに、どれくらいの費用がかかるのか気になるところだと思います。このチュートリアルの作成時点では、転送ジョブの費用は「転送先に正常に転送された 1 GB あたり $0.0125」です。現在の料金表はこちらです。

次に、アップロード先となる Google Cloud Storage バケットが必要です。オブジェクト ストレージもそれほど高価ではありませんが、チュートリアルの最後にクリーンアップしますのでリソース名を保存しておいてください。料金表はこちらです。下記のコマンドを実行することで、バケットを作成できます。

読み込んでいます...

gcloud 転送の使用

まず、gcloud 転送の全機能を利用するために必要な権限を自分に付与しましょう。

読み込んでいます...

gcloud 転送を使用して、あるクラウド バケットから別のクラウド バケットへの転送を簡単に作成できます。転送ジョブを処理するために、ローカル ファイル システムを設定するには、もう少し作業が必要になります。具体的には、「エージェント」をインストールする必要があります。エージェントは基本的に、ファイルのコピーに特化したプログラムを実行する Docker コンテナです。

エージェントをインストールする前に、エージェント プールが必要です。転送ジョブでエージェント プールに作業を割り当てる場合、そのプール内のいずれかのエージェントによってファイルがコピーされる可能性があります。エージェント プールを使用して、必要なファイルにアクセスできるエージェントのみが転送ジョブを実行するようにします。

読み込んでいます...

次に、システムにエージェントをインストールするために、下記のコマンドを実行します。

読み込んでいます...

これで架空のログをアップロードできます。Storage Transfer Service は絶対パスで最適に動作するので、「pwd」コマンドを使用して現在のフォルダへのパスを取得してください(先ほどの「my-logs」フォルダの中にあるはずです)。

POSIX ファイル システム(Linux と Mac)からアップロードするために、「posix://」スキームを使用します。少し変則的ですが、他のファイル システム タイプ専用の転送ジョブ(「ntfs://」など)を今後サポートする場合に、スペースを空けておくためです。

読み込んでいます...

上記を実行することで、新しい転送ジョブのメタデータが返されるはずです。転送をモニタリングするには、上記で返された「name」キーの値で下記のコマンドを実行します。

読み込んでいます...

自動化

2022 年から 2023 年まで、毎日深夜にログをアップロードするとします。大量のデータの定期的な転送をスケジュール設定できる機能が、gcloud storage や gsutil などのツールと異なる点です。設定するには、ジョブのスケジュール プロパティを更新するだけです。

読み込んでいます...

もう 1 台マシンを所有していて、ログがどちらでアップロードしても良いのであれば、そのマシンにも先ほどと同じプールでエージェントをインストールできます。

実際の例としては、フリート内の各マシンで異なるクラウドの宛先にログをアップロードしたい場合、各デバイスで 1 回ずつ実行するスクリプトを作成します。エージェント プールと宛先引数がデバイスごとに異なることを確認してください。そうしないと、複数のマシンが同じロケーションにアップロードする可能性があります。

チュートリアルを完了するために、このスクリプトを複数のコンピュータで実行する必要はありませんが、ここでは説明のために行っています。

読み込んでいます...

より複雑なスクリプトに関心があるようでしたら、「jobs create」と「jobs run」コマンドにある「--no-async」フラグを使用して、転送の完了を遅らせることができます。

破棄

このパートでは、月額費用を節約するためにすべてを削除します。

まず、転送ジョブを削除しましょう。

読み込んでいます...

次に、コマンドの指示に従って、インストールしたエージェントを削除します。

読み込んでいます...

では、空のエージェント プールを削除しましょう。

読み込んでいます...

最後に、デバイスにある Google Cloud Storage バケットと架空のログを削除しましょう。

読み込んでいます...

まとめ

ログ アップロードの自動化について学びました。

gcloud 転送と gsutil のような他のツールを比較する際に役立つ記事を、「関連」セクションにいくつかリンクしました。要約: gcloud transfer は大量のデータ(ペタバイト規模でも)をコピーし、定期的なコピーを自動化するのに適しています。gsutil は1 テラバイト以下のデータに適していて、定期的なコピーは手動でスクリプト化する必要があります(cron ジョブの gsutil 呼び出しなど)。

クラウド間でファイルをコピーする場合、Amazon S3 や Azure ストレージのソースもサポートしています。

お疲れさまでした。これでご自身の Google ツールキットに新たなツールが加わったことと思います。

- ソフトウェア エンジニア Nicholas Hartunian

投稿先