LoginSignup
2

More than 1 year has passed since last update.

Node-REDからIBM Cloud Object Storageへ接続する際に気をつけるメモ

Last updated at Posted at 2021-05-07

はじめに

IBM CloudのLiteアカウントで作成したNode-REDアプリからCloud Object Storageへ接続する際に気をつけることをメモに残しておきます。

Cloud Object Storageのバケットを作成する際に、事前定義されたバケットから「すぐに始める」を選択・作成して、あまり考えずに進めてしまったのが良くなかったのかもしれません。
(バケット名、回復力、ロケーションなどの情報が自動的に割り当てられます)

バケット2.jpg

すぐに始める.jpg

カスタム・バケットを選択していれば、仕組みを理解してからバケット名を指定し、回復力・ロケーションを選択していたかもしれません。

バケット1.jpg

カスタムバケット.jpg

知っておいた方が良い前知識

Cloud Object Storageへの接続方法はプライベート、ダイレクト、パブリックの3種類あります。

スクリーンショット 2021-05-07 20.23.43.png

Cloud Foundryで作成したNode-REDアプリからプライベート接続は不可ということで、ダイレクト接続を選択します。
外部のNode-REDからはパブリック接続を選択します。

エンドポイントの設定に注意

どの接続方法でもサービス資格情報(クレデンシャル)は共通で使用できますが、エンドポイントの設定は回復力・ロケーションの設定によってバケット毎に異なる可能性があります。
例えば、回復力がCross Regionalの場合、エンドポイントは4つの中から選択しますが、Regionalの場合、1つしか選択肢がありません。
また、バケットを作成したロケーションによってエンドポイントが異なる点にも注意が必要です。

回復力 ロケーション パブリック プライベート ダイレクト
Cross Regional ap-geo s3.ap.cloud-object-storage.appdomain.cloud

s3.tok.ap.cloud-object-storage.appdomain.cloud

s3.seo.ap.cloud-object-storage.appdomain.cloud

s3.hkg.ap.cloud-object-storage.appdomain.cloud
s3.private.ap.cloud-object-storage.appdomain.cloud

s3.private.tok.ap.cloud-object-storage.appdomain.cloud

s3.private.seo.ap.cloud-object-storage.appdomain.cloud

s3.private.hkg.ap.cloud-object-storage.appdomain.cloud
s3.direct.ap.cloud-object-storage.appdomain.cloud

s3.direct.tok.ap.cloud-object-storage.appdomain.cloud

s3.direct.seo.ap.cloud-object-storage.appdomain.cloud

s3.direct.hkg.ap.cloud-object-storage.appdomain.cloud
Regional jp-tok s3.jp-tok.cloud-object-storage.appdomain.cloud s3.private.jp-tok.cloud-object-storage.appdomain.cloud s3.direct.jp-tok.cloud-object-storage.appdomain.cloud

手順

1. Node-REDのインストール

Daichi Kakimotoさんの記事を参考にさせていただきました。

2. Cloud Object Storageでバケットの作成

事前定義されたバケットから「すぐに始める」を選択、または、カスタム・バケットを選択してバケットを作成します。
外部から(パブリック接続で)バケットへアクセスする場合、作成したバケットを選択し、「アクセス・ポリシー」→「パブリック・アクセス」→「アクセス・ポリシーの作成」の順に選択し、有効化のボタンを押します。

バケット1.jpg

パブリックアクセス1.jpg

パブリックアクセス2.jpg

バケットへ接続する際に必要になるサービス資格情報を作成します。
「サービス資格情報」を選択し、既に作成されている鍵名を選択、または、「新規資格情報」を選択して新たに資格情報を作成(追加)します。

サービス資格情報1.jpg

資格情報3.jpg

鍵名を選択すると、バケットへの接続に必要な情報が表示されますので、"apikey"と"resource_instance_id"の情報をメモしておきます。
少し紛らわしいですが、"endpoints"の情報は使用しません。
("endpoints"の情報はバケットへの接続には使用しません。私は"endpoints"の情報をそのままバケット接続に設定してハマりました。)

サービス資格情報2-1.jpg

Cloud Foundryからダイレクト接続する場合、念のため「接続情報」が設定されているか確認します。
設定されていなければ「接続の作成」を選択して設定します。

接続2.jpg

3. node-red-contrib-cosモジュールの追加

Node-REDのメニューから「パレットの管理」を選択します。

メニュー1.jpg

「ノードを追加」タブの検索欄でnode-red-contrib-cosを入力し、表示されたリストから「ノードを追加」のボタンを押します。

ノードを追加.jpg

正常にインストールが完了すると、Node-REDの左側のパレットにノードが追加されます。

スクリーンショット 2021-05-07 22.23.39.png

サンプルノード

ブラウザからNode-REDヘアクセスして、バケットに保存されているtest.txtファイルを取得するフローで設定方法を説明します。
Node-REDの左側のパレットから「http in」ノード、「http response」ノード、「cos - get」ノードをフローへ移動して接続します。

スクリーンショット 2021-05-07 22.48.25.png

設定

http inノード

URLに「/test.txt」と入力します。

スクリーンショット 2021-05-07 22.53.58.png

http responseノード

設定することはありません。

cos - getノード

「Cloud Object Storage Configuration」「Bucket」「Object Name」「Mode」を設定します。
「Cloud Object Storage Configuration」は鉛筆マークを押してプロパティを作成します。

スクリーンショット 2021-05-07 22.55.40.png

Cloud Object Storage Configuration

「API Key」「Service Instance ID」「Location」「Endpoint」を設定します。
「API Key」はサービス資格情報の"apikey"、「Service Instance ID」はサービス資格情報の"resource_instance_id"、「Location」はプルダウンメニューから「Manual」、「Endpoint」はバケットに応じて適切なエンドポイントを設定します。
入力が完了したら「更新」ボタンを押します。

プロパティ1.jpg

「Bucket」はバケット名、「Objetct Name」はオブジェクト名(ここではtest.txt)、「Mode」はプルダウンメニューから「File」を選択します。

cos-get.png

Node-REDの画面で「デプロイ」ボタンを押してフローの変更を反映します。ブラウザから/test.txtへアクセスしてtest.txtの内容が表示、または、ダウンロードされれば正常です。
(例えば、Node-REDのフローエディタのURLが https://tfjs-node.mybluemix.net/red/ であれば、https://tfjs-node.mybluemix.net/test.txt へアクセスする)

フロー.jpg

まとめ

みなさま、IBM CloudのLiteアカウントで良きNode-REDライフを!

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
2