Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

クラウド・ストレージ API

ObjectScript コードは、一連の低レベル APIを呼び出すことで、クラウド・ストレージ・プロバイダにデータをアップロードしたり、ここからデータをダウンロード、あるいは削除することができ、ユーザは相互運用プロダクションを使用することなく、クラウド・ストレージにアクセスできます。コードは、クライアントを作成し、クライアントのメソッドを呼び出して、BLOB のアップロードや削除などのアクションを実行することで、クラウド・ストレージ・プロバイダとやり取りします。このクラウド・ストレージ・クライアントのクラスは、%Net.Cloud.Storage.ClientOpens in a new tab です。これは、各クラウド・ストレージ・プロバイダで同じクラスです。

クラウド・ストレージ API は簡単に使用できます。例えば、Amazon Web Services S3 バケットにファイルをアップロードするために必要なのは、次のコードのみです。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
// Create Cloud Storage Client for S3
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)

// Upload file to S3    
If myClient.BucketExists(bucketName){
  Do myClient.UploadBlobFromFile(bucketName, blobName, "/usr/file.jpg")
}
// Close client
Do myClient.Close()

クライアントの作成

クラウド・ストレージ・プロバイダのバケットと BLOB を処理する前に、コードで次の構文を使用してクラウド・ストレージ・クライアントを作成する必要があります。

Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(javaServer,
    provider,credentialsFile,region,.tSC)

説明 :

  • javaServer は、インターシステムズの Java 用外部サーバ (Java ゲートウェイとも呼ばれます) の名前です。カスタムのサーバを作成するのではなく、既定の Java 外部サーバを使用するには、この引数を空のままにします。

  • provider は、このクライアントでアクセスするクラウド・ストレージ・プロバイダを示す整数です。S3 バケットの場合、0 を使用します。

  • credentialsFile は、クラウド・ストレージ・プロバイダにアクセスするために使用される認証情報を含むファイルです。このファイルは、プロバイダの仕様に従った形式にする必要があります。S3 バケットにアクセスする場合は、この引数を空のままにして、既定の認証情報プロバイダ・チェーンOpens in a new tabを使用できます。

  • Region は、連携させるバケットを含むリージョンです。AWS リージョンのリストは、"Amazon Regions, Availability Zones, and Local ZonesOpens in a new tab" を参照してください。

  • .tSC はメソッドの呼び出しで返された状態コードを受信します。

クライアントの終了

プロバイダのバケットと BLOB の処理が終了したら、必ず Close() メソッドを使用して作成したクライアントを閉じます。次に、例を示します。

Do myClient.Close()

バケットとの連携

クラウド・ストレージ・クライアントには、プロバイダのバケット (BLOB 用のストレージ・コンテナ) と連携するように設計されている一連のメソッドが含まれています。これらのメソッドのシグニチャは以下のとおりです。

Method BucketExists(bucketName As %String) As %Boolean
Method GetBucketInfo(bucketName As %String) As BucketInfo
Method ListBuckets() As %ListOfObjects
Method CreateBucket(bucketName As %String)
Method DeleteBucket(bucketName As %String)

例えば、バケットに関する詳細を取得するため、ストレージ・クライアントを作成するには、以下を入力します。

Set bucketName = "s3-bucket"
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)
Set bucketDetails = myClient.GetBucketInfo(bucketName)
Do myClient.Close()

バケットの詳細

クラウド・ストレージ・クライアントは、%Net.Cloud.Storage.BucketInfo オブジェクトを使用して、バケットに関する詳細を表します。GetBucketInfo() を呼び出すと、指定したバケットの詳細が BucketInfo オブジェクトに返されます。同様に、ListBuckets() を呼び出すと、BucketInfo オブジェクトのコレクション内の使用可能なすべてのバケットが返され、ユーザは各バケットの詳細にアクセスできます。使用可能なバケットの詳細については、%Net.Cloud.Storage.BucketInfoOpens in a new tab のプロパティを参照してください。

便宜上、BucketInfo クラスには、バケット詳細を JSON 形式にできるメソッドが含まれています。バケットに BucketInfo オブジェクトがあれば、その toJSON() メソッドを呼び出してください。

BLOB 情報の取得

クラウド・ストレージ・クライアントは、次のメソッドを使用して、特定のバケット内の BLOB に関する情報を取得します。

Method BlobExists(bucketName As %String, blobName As %String) As %Boolean
Method GetBlobInfo(bucketName As %String, blobName As %String) As BlobInfo
Method ListBlobs(bucketName As %String) As %ListOfObjects

クライアントは、BLOB のコンテンツをダウンロードするには、別のメソッドを指定します。

例えば、サイズなどの特定の BLOB に関する詳細を取得する場合、以下を入力します。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)
Set blobDetails = myClient.GetBlobInfo(bucketName, blobName)
Do myClient.Close()

BLOB の詳細

クラウド・ストレージ・クライアントは、%Net.Cloud.Storage.BlobInfo オブジェクトを使用して、BLOB に関する詳細を表します。GetBlobInfo() を呼び出すと、指定した BLOB の詳細が BlobInfo オブジェクトに返されます。同様に、ListBlobs() を呼び出すと、BlobInfo オブジェクトのコレクション内の使用可能なすべての BLOB が返され、ユーザは各 BLOB の詳細にアクセスできます。使用可能な BLOB の詳細については、%Net.Cloud.Storage.BlobInfoOpens in a new tab のプロパティを参照してください。

便宜上、BlobInfo クラスには、BLOB の詳細を JSON 形式にできるメソッドが含まれています。BLOB に BlobInfo オブジェクトがあれば、その toJSON() メソッドを呼び出してください。

BLOB のアップロード

クラウド・ストレージ API により、InterSystems IRIS からクラウド・ストレージにデータやファイルをアップロードできます。BLOB データのソースに応じて、以下の任意のメソッドを使用し、BLOB をクラウド・ストレージ・プロバイダにアップロードできます。

Method UploadBlobFromString(bucketName As %String, blobName As %String, content As %String)
Method UploadBlobFromFile(bucketName As %String, blobName As %String, filePath As %String)
Method UploadBlobFromStream(bucketName As %String, blobName As %String, stream As %GlobalBinaryStream)

例えば、ファイルを S3 バケットにアップロードするには、以下を含めます。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)
Do myClient.UploadBlobFromFile(bucketName, blobName, "/usr/file.jpg")
Do myClient.Close()

BLOB のダウンロード

InterSystems IRIS で使用するため、クラウド・ストレージ API を使用して、クラウド・ストレージ・プロバイダからデータをダウンロードできます。さまざまなメソッドが利用可能で、データのターゲット・フォーマットを選択できます。

Method DownloadBlobToString(bucketName As %String, blobName As %String) As %String
Method DownloadBlobToFile(bucketName As %String, blobName As %String, filePath As %String)
Method DownloadBlobToStream(bucketName As %String, blobName As %String) As %GlobalBinaryStream

例えば、S3 バケットから BLOB をダウンロードし、ストリームに格納するには、以下を入力します。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)
Set IRISStream = myClient.DownloadBlobToStream(bucketName, blobName)
Do myClient.Close()

BLOB をアップロードするための単一のメソッド

クラウド・ストレージ API により、相互運用プロダクションを使用せずに、クラウド・ストレージにデータやファイルをアップロードできます。これらのクラス・メソッドにより、クライアントを作成し、BLOB をアップロードして、クライアントを閉じる単一の呼び出しを行うことができます。

例えば、ファイルを Amazon S3 にアップロードするには、以下を含めます。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set credentials - "/home/AWSCredentials"
Set region = "us-east-1"
Set filePath = "/usr/file.jpg"
Set status = ##class(%Net.Cloud.Storage.Client).SingleUploadBlobFromFile(, 0, credentials, region, bucketName, blobName, filePath)

BLOB をダウンロードするための単一のメソッド

InterSystems IRIS で使用するため、クラウド・ストレージ API を使用して、クラウド・ストレージ・プロバイダからデータをダウンロードできます。これらのクラス・メソッドにより、クライアントを作成し、BLOB をダウンロードして、クライアントを閉じる単一の呼び出しを行うことができます。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set credentials - "/home/AWSCredentials"
Set region = "us-east-1"
Set status = ##class(%Net.Cloud.Storage.Client).SingleDownloadBlobToStream(, 0, credentials, region, bucketName, blobName)

BLOB の削除

他のクラウド・ストレージ API と同様、クラウド・ストレージから BLOB を削除する方法は単純です。必要なのは、削除する BLOB の名前のみ (格納されているバケットを含む) です。

Method DeleteBlob(bucketName As %String, blobName As %String)

例えば、S3 バケットから BLOB を削除するには、以下を入力します。

Set bucketName = "s3-bucket"
Set blobName = "s3-object-blob"
Set myClient = ##class(%Net.Cloud.Storage.Client).CreateClient(,0,"/home/AWSCredentials", "us-east-1", .tSC)
Do myClient.DeleteBlob(bucketName, blobName)
Do myClient.Close()
FeedbackOpens in a new tab