Bluemix にいくつかのストレージ データを挿入しようとしています。多くの wiki ページを検索しましたが、続行する方法を結論付けることができませんでした。では、任意の言語コード (Java、Node.js) を使用して画像やファイルを Bluemix のストレージに保存する方法を誰か教えてもらえますか?
6 に答える
アプリにファイルを保存するためのオプションがいくつかあります。ファイルスペースは一時的なものであり、アプリの新しいインスタンスが作成されるたびにドロップレットから再作成されるため、アプリコンテナーファイルシステムで行うことは含まれていません。
MongoLab、Cloudant、Object Storage、Redis などのサービスを使用して、あらゆる種類の BLOB データを保存できます。
Bluemix を使用して Cloud Foundry アプリケーションを作成していると仮定すると、もう 1 つのオプションはsshfs
. アプリの起動時に、sshfs を使用して、ローカル ディレクトリとしてマウントされているリモート サーバーへの接続を作成できます。たとえば./data
、リモート SSH サーバーを指すディレクトリを作成し、アプリの永続的な保存場所を提供できます。
この戦略がどのように機能するかを説明するブログ投稿と、Cloud Foundry アプリで Wordpress ブログをホストするために使用されたソース リポジトリを示します。
他の人が示唆しているように、オブジェクトデータを保存するためのサービスがいくつかあることに注意してください。Bluemix カタログ [1] に移動し、左側の余白にある [データ管理] を選択します。これらの各サービスには、多くのサンプル アプリケーションやチュートリアルなど、開始するのに十分なドキュメントが含まれている必要があります。サービス タイルをクリックし、[ドキュメントを表示] ボタンをクリックして、関連するドキュメントを検索します。
[1] https://console.ng.bluemix.net/?ace_base=true/#/store/cloudOEPaneId=store
https://www.ng.bluemix.net/docs/#services/ObjectStorageV2/index.html#gettingstartedを確認してください。Bluemix のストレージ サービスは、Softlayer で実行される OpenStack Swift です。Swift に関するドキュメントについては、このページ ( http://docs.openstack.org/developer/swift/ ) を確認してください。
これは、Swift のいくつかのクライアントをリストしたページです。 https://wiki.openstack.org/wiki/SDKs
bluemix の pobject ストアが S3 互換になったことに注意してください。たとえば、Boto または boto3 を使用できます (python の場合)。100% API 互換で動作します。ここでいくつかの例を参照してください: https://ibm-public-cos.github.io/crs-docs/crs-python.html
このスクリプトは、すべてのバケット内のすべてのオブジェクトを再帰的に一覧表示するのに役立ちます。
import boto3
endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'
s3 = boto3.resource('s3', endpoint_url=endpoint)
for bucket in s3.buckets.all():
print(bucket.name)
for obj in bucket.objects.all():
print(" - %s") % obj.key
資格情報を指定する場合、これは次のようになります。
import boto3
endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'
s3 = boto3.resource('s3', endpoint_url=endpoint, aws_access_key_id=YouRACCessKeyGeneratedOnYouBlueMixDAShBoard, aws_secret_access_key=TheSecretKeyThatCOmesWithYourAccessKey, use_ssl=True)
for bucket in s3.buckets.all():
print(bucket.name)
for obj in bucket.objects.all():
print(" - %s") % obj.key
新しいバケットに「hello.txt」ファイルを作成する場合。:
import boto3
endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'
s3 = boto3.resource('s3', endpoint_url=endpoint, aws_access_key_id=YouRACCessKeyGeneratedOnYouBlueMixDAShBoard, aws_secret_access_key=TheSecretKeyThatCOmesWithYourAccessKey, use_ssl=True)
my_bucket=s3.create_bucket('my-new-bucket')
s3.Object(my_bucket, 'hello.txt').put(Body=b"I'm a test file")
新しいバケットにファイルをアップロードする場合:
import boto3
endpoint = 'https://s3-api.us-geo.objectstorage.softlayer.net'
s3 = boto3.resource('s3', endpoint_url=endpoint, aws_access_key_id=YouRACCessKeyGeneratedOnYouBlueMixDAShBoard, aws_secret_access_key=TheSecretKeyThatCOmesWithYourAccessKey, use_ssl=True)
my_bucket=s3.create_bucket('my-new-bucket')
timestampstr = str (timestamp)
s3.Bucket(my_bucket).upload_file(<location of yourfile>,<your file name>, ExtraArgs={ "ACL": "public-read", "Metadata": {"METADATA1": "resultat" ,"METADATA2": "1000","gid": "blabala000", "timestamp": timestampstr },},)
調べてみると、IBM が作成したオブジェクトストレージサービスという名前のサービスがありました。しかし、現時点では、Bluemix カタログには表示されませんでした。たぶん、彼らはそれを返し、将来的に新しいサービスを公開するでしょう.