これは InterSystems FAQ サイトの記事です。
ビジネスサービスやビジネスオペレーションで EnsLib.CloudStorage.InboundAdapter アダプタを使用したり、%Net.Cloud.Storage.Client を使用することで、Amazon s3(クラウドストレージAPI)のファイルにアクセスすることが可能です。
いずれの場合も、事前に Javaランタイムをシステムにインストールし、インストールしたJavaランタイムの JAVA_HOME 情報を、管理ポータルにて設定する必要があります(手順は後述します)。
今回は、%Net.Cloud.Storage.Client クラスを使用したサンプルをご紹介します。
手順は以下のようになります。
【手順】
以下のS3パケットにアクセスする手順になります。
(1) 事前に、コマンドプロンプトにて aws コマンドを使用して動作確認をしておきます(S3に存在しているファイル一覧がプロンプトに返ればOKです)。
> aws s3 ls s3://kake-s3
2025-04-30 16:20:52 32 abc.txt
2025-04-30 16:14:00 21529 messages.log
もしくは
>aws s3 --endpoint-url https://s3.ap-northeast-1.amazonaws.com ls s3://kake-s3
2025-04-30 16:20:52 32 abc.txt
2025-04-30 16:14:00 21529 messages.log
(2) Javaをインストールします
Java Runtime Environment (JRE)s 1.8
(3) 管理ポータルで %Java_Gateway の設定を行います
管理ポータル:
システム管理 > 構成 > 接続性 > 外部言語サーバ > %Java_Server 編集
クラスパス .;C:\InterSystems\iris\dev\java\lib\1.8\intersystems-cloudclient-1.x.x.jar; バージョンにより異なります。
Javaホーム C:\Program Files\Java\jre1.8.0_451\ Javaインストールフォルダ
保存後、%Java_Server を Start ※以下のようなログで起動します
(4) 以下のコマンドをターミナルで実行します。
set region="ap-northeast-1"
set credentialsFile=""
set endPoint=""
set client = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,credentialsFile,region,.tSC,endPoint)
読む
set bucketName = "isj-s3"
set data = client.DownloadBlobToString(bucketName,"abc.txt")
zwrite data
set stream = client.DownloadBlobToStream(bucketName, "messages.log")
set i=stream.Read(200)
zwrite i
書く
set x="あいうえお"_$C(13,10)_"かきくけこ"
do client.UploadBlobFromString(bucketName, "abc.txt", x)
閉じる
do client.Close()