views4GCPのストレージサービスについてまとめてみた。Exp:30442018年07月より入社しました。これまでの技術分野は...生物系HPC->Web求人->IoT->現職Twitterで研究職の方とエンジニアの方をフォローしまくっているのは私です。このアイコン使っているので、このアイコンを見かけたらほぼ私と思ってもらって大丈夫かと。TweetShareHatena注意この記事は2018年11月7日に更新されたもので、内容が古い可能性がありますのでご注意ください。Platform(GCP)のサービスの1つで、Node.jsベース(Python3.7も対応)で動くサーバーレスのサービスです。AWSで言う所のLambdaのようなものです。実行時間などの制約があるため、短時間で終了しかつイベントが起こった時だけ実行されるような処理に向いています。(GCS)と連携し、ファイルがGCSに新規作成された時だけ作成されたファイルを圧縮する機能を実装してみます。(GCS)とはGCPのサービスの1つで、オブジェクトストレージです。AWSで言う所のS3のようなものです。ファイルをクラウド上のバケットと呼ばれるストレージに保存出来ます。容量制限はありませんが、仕様上の制限があるため、ご使用前に制限事項を熟読することをお勧めします。GCSはオブジェクトが更新されたりバケットに追加されたりした際に、アプリケーションに通知することができます。今回はその機能を使い、GCSにファイルが置かれたらGCFが実行されるように設定します。設定はGCFにソースコードをデプロイする際に指定します。GCFでGCSのファイルを自動で圧縮してみるここからは「GCFでGCSのファイルを自動で圧縮する」ためのコードの説明や設定をしていきたいと思います。今回の構成図まず、はじめに今回構築するシステムの構成は下記のようになります。今回この記事で作業をする環境は下記になります。SDKは事前に作業環境にインストールしておいて下さい。今回作成方法などは割愛しますが、GCPプロジェクトやGCSのBucketの作成も行っておいて下さい。使用するソースコードindex.jsとpackage.jsonという下記2つのファイルを使用します。index.jsはNode.jsで書かれたプログラム本体(ソースコード)です。package.jsonはindex.jsで使用するライブラリの一覧です。今回はGCSを操作するライブラリである@google-cloud/storageをindex.js中で使用するため、package.jsonに記載しています。それら2ファイル(index.jsとpackage.json)を作成し、そのファイルがあるディレクトリでgcloudコマンドでアップロードするか、GCPのWebコンソール側からソースコードをアップロードします。Libraryを使用しています。ソースコード中に出てくるパラメータや、GCFやNode.jsの書式などはGCFのマニュアルをご覧ください。圧縮対象ファイルをstreamで読み出しpipeで次に渡すgzip圧縮しpipeで次に渡す圧縮したものをstreamで書き込み書き込み成功したら元ファイルを削除となります。}}...gcloudコマンドでGCFへデプロイgcloudコマンドというGCP用のSDKを使ってGCFへデプロイします。SDKコンポーネント、gcloudコマンドの使い方を解説!!をご覧ください。SDKコンポーネント、gcloudコマンドの使い方を解説!!GCFを使用するには、まずGCPのプロジェクトの作成やAPIの有効化などの作業が必要になります。手順はマニュアルのクイックスタートに沿っていただくのが良いので、一読してみて下さい。途中からNode.jsなどの開発環境構築の話になり初心者には辛いですが、簡単にまとめると、NVMでNode.js自身のバージョンを管理し、npmでNode.jsのプログラム中で使用するライブラリなどのパッケージを管理します。Node.jsをインストールするとnpmが同時にインストールされます。NVMをインストールすればNode.js本体はNVMを使ってインストールすることが出来るので、まずはNVMをインストールすることをお勧めします。NVMのインストールが出来たら、インストール可能なNode.jsのバージョンを確認し、使用するNode.jsを適宜インストールします。6の最新版をインストールします。bash...インストール出来たら、~/.bash_profileにNVMのパスが追加されているので、新しいターミナルを開くか、bashやsourceコマンドを実行してパスを通します。ls-remote...インストール可能なNode.jsが一覧で表示されるので、そこから適宜環境にあったものを指定しインストールします。--y...必要パッケージのインストール(他に必要なパッケージがあれば適宜インストール)今回はサンプルとして提供してあるpackage.jsonを使用すればサンプルプログラムが動くので、特に実行しなくても大丈夫です。(gcloudコマンド)でNode.jsのソースコードをGCFにアップロードするという流れになります。環境構築周りの準備が整ったら、上記index.jsとpackage.jsonの2つのファイルを下記gcloudコマンドでGCFにアップロードします。ソースコードのあるディレクトリで下記を実行します。--region=us-central1...今回使用したgcloudコマンドの各引数の意味は。StorageのBucketを指定してください。SDKのマニュアルを参照し、必要があれば適宜設定してください。Functionsを選択します。「関数を作成」ボタンをクリックし適宜名前などを設定します。今回のサンプルを動かす場合は下記画像と同じに設定してください。対象バケットは事前に準備したものをご指定ください。設定できたら「作成」ボタンを押して終了です。動作確認GCPのWebコンソールでGCSを開き、対象のバケットを選択し、ファイルをドラッグ&ドロップします。コマンドでアップロードしても良いです。コマンドの使い方はgsutilコマンド全部試したので解説する(part1)をご覧ください。対象バケット...小さいファイルだと数秒程度でgzip圧縮されるはずです。まとめ以上、いかがでしたでしょうか。Pub/Subなど随時追加されており、使用可能な言語もNode.js以外にもPythonが使えるようになったり、できることがどんどん広がっています。トリガーにHTTPを使えば簡易APIとして使えますし、今回のGCSトリガーもファイルを出力するバッチ処理のようなものと組み合わせれば、より複雑な処理を簡単にフルマネージドで完全自動化できます。この機会に1度お試ししてはいかがでしょうか。