クラウド・ストレージ 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)
説明 :
クライアントの終了
プロバイダのバケットと 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()