1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

enebular_uhuruAdvent Calendar 2022

Day 8

Node-REDでストレージサービスを使う(GCP Cloud Storage編)

Last updated at Posted at 2022-12-07

はじめに

Node-REDでファイルをクラウドに保存したい時があります。
今回はGCPのCloud Storageノードの使い方をご紹介します。

GCPの準備

新しいプロジェクトを作成

プロジェクトがない場合は、プロジェクトを新規で作成します。

image.png

新しいバケットを作成

バケットを作成するウィザードに従って、作成します。今回は以下の様な設定でやってみました。

  • 名前: test-20221125
  • ロケーション: us-east1 (サウスカロライナ)
  • ロケーション タイプ: Region
  • デフォルトのストレージ クラス: Standard
  • 公開アクセスの防止:オン
  • アクセス制御: 均一
  • 保護ツール: なし

image.png

公開アクセスの防止でチェックボックスが入力された状態で確認ボタンをクリックします。
image.png

バケットが作成されました。
image.png

IAMによるサービスアカウントの作成

次にIAMによるサービスアカウントを作成します。

image.png

バケットを作成した同じプロジェクトであることを確認して、+サービスアカウントを作成のリンクをクリックします。

image.png

 サービスアカウント名を入力します。
image.png

サービスアカウントにロールを追加して権限を付与します。今回はロールにStorageオブジェクト管理者を追加します。
image.png

完了をクリックして作成完了です。
image.png

秘密鍵を作成

作成されたサービスアカウントのリンクをクリックします。
image.png

鍵を追加のプルダウンをクリックして、新しい鍵を作成をクリックします。
image.png

キーのタイプはJSONを選択し、作成をクリックします。

image.png

秘密鍵がパソコンに保存するようなダイアログが開きますので、保存しておいてください。

Node-REDのフロー

gcs-writeノード

gcs-writeノードは、Google Cloud Storage上にファイルを保存するノードです。
今回は、ファイルの中身に「こんにちは」と書き込み、それを先ほど作成したバケット上にファイルとして格納してみます。

image.png

このようなフローを作ったら、injectノードのpayloadにこんにちはという文字列を予め入力しておきます。

image.png

Credentials

gcs-wirteノードの認証情報に先ほどダウンロードした秘密鍵のファイル(●●●.json)の中身をコピーしてkeyに貼り付けます。

image.png

その他のプロパティの設定

  • Key File は空欄
  • File Name には、gs://test-20221125/test.txt
  • Content Typeには、text/plain

と入力します。
Google Cloud Storage上のオブジェクトへのアクセスは、gs://test-20221125/test.txtのような書き方で、バケット名とオブジェクト名を指定します。

image.png

実行

injectノードを実行すると、GCPのバケットにファイルができました。

image.png

image.png

gcs-readノード

gcs-readノードは、Google Cloud Storage上のファイルを読み込むノードです。
先ほど作成したファイルを指定して、その中身をNode-REDで取りだしてみます。

image.png

プロパティの設定は、こちらを参考にしてください。

image.png

実行すると以下の様になると思います。英数値の羅列がでてきますが、これはBuffer型のデータです。

image.png

そのため、人間が読めるテキストデータに変換する必要があります。
まずは、Functionノードをreadノードとdebugノードの間に入れます。

image.png

Functionノードのコードに以下のようなコードを入れて、Buffer型から文字列に変換しましょう。

image.png

msg.payload = msg.payload.toString();
return msg;

再度injectノードを実行してみます。
こんどはうまく行きました。

image.png

まとめ

今回はこちらのノードを使用しました。

参考になれば幸いです。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?