はじめに
Node-REDでファイルをクラウドに保存したい時があります。
世の中には様々なクラウド型のストレージサービスがありますが、今回はAWSのS3ノードの使い方をご紹介します。
AWSの設定
まずはAWSの設定をしましょう。
バケットを作成する
S3のメニューを選択します
バケットを作成します
バケット名やリージョンを選択します。この設定をあとでNode-REDの設定画面で使用します。
IAMでユーザーを作る
IAMのメニューを選択します
ユーザーを追加します
ポリシーを追加します
ここではAmazonS3FullAccessを付与します。
ユーザーの作成ボタンを押してユーザーを作成します。
認証情報を入手
認証情報画面が表示されます。こちらのアクセスキーIDとシークレットアクセスキーがこのあと必要になりますので、この画面は開いたままにしましょう。このあとのNode-REDの設定画面で使用します。
Node-REDの準備
enebular.comなどのNode-REDを使用できる環境を用意します。
Node-REDのインストール
パレットの管理から、node-red-contrib-s3を検索して追加します。(下の画像は追加した後です。)
ノードの設定
S3ノードの設定をします。
認証
先ほどAWSのIAMの画面で取得したアクセスキーIDとシークレットアクセスキーを入力しましょう。シークレットアクセスキーは表示リンクをクリックして表示させてから入力します。
putノード
S3 putノードはファイルを送信したり、作ったりするノードです。
例えば、
- Bucketが
test-20221125
- リージョンが
us-east-1
- ファイル名が
test.txt
- Content Encodingが
UTF-8
のファイルにする場合、以下の画像の様に設定します。
getノード
S3 getノードはファイルを読み取ったりするノードです。
例えば、
- Bucketが
test-20221125
- リージョンが
us-east-1
- ファイル名が
test.txt
- payloadで読み取った結果をUTF-8の文字列
にする場合、以下の画像の様に設定します。
完成したフロー
以下の画像の様なフローを作成して、injectボタンを押してみましょう。
putした場合
putしたときのAWS S3のバケットは以下の通りです
テキストファイルが生成されており、ダウンロードしてみるとinjectノードが生成したタイムスタンプが書き込まれています。
getした場合
S3上のテキストファイルから読み取ることができています。
msgオブジェクトは以下のようになっており、ファイルに書き込まれている文字列をpayloadに読み取ることができました。
{"_msgid":"8e01205d11c1df33","payload":"1669344017416","topic":"","bucket":"test-20221125","filename":"test.txt"}
まとめ
今回は以下のノードを使用しました。
ご参考になれば幸いです。