LoginSignup
5
4

More than 5 years have passed since last update.

IBM Cloud Object StorageにNode.jsから画像を保存するメモ

Posted at

はじめに

IBM Cloud Object Storage、略してICOS。使ってますか?
調べてもNode.jsから画像を保存するコードがなかったのでメモ。

前提条件

ICOSのサービスをIBM Cloud上に作成いていること
ICOSのUIで「バケット」を作成していること

ソースコード

$ npm i ibm-cos-sdk --save
$ node app.js

app.js
    var AWS = require('ibm-cos-sdk');

    var config = {
      endpoint: //endpoint,
      apiKeyId: //apiKeyId,
      ibmAuthEndpoint: //ibmAuthEndpoint,
      serviceInstanceId: //serviceInstanceId,
    };
    var cos = new AWS.S3(config);


    var params = {
      Bucket: //バケット名,
      Key: //ファイル名,
      ContentEncoding: 'base64',
      ContentType: 'image/png',
      ACL: 'public-read',
      Body: //画像のbase64文字列
    };

    cos.putObject(params, function(err, data) {
        //Object Storageに格納したあとの処理  
        //エラーハンドリングとか。
    });

備考

  • configの中身はIBM Cloudで作成したICOSのサービス資格情報から取得してください。
  • 保存したファイルのURLは以下です

    • http://{エンドポイント}/{バケット名}/{オブジェクト名}
    • ↑のエンドポイントはバケットを作成したときの「ロケーション」で変わります。(サービス資格情報のエンドポイントではありません) スクリーンショット 2018-09-01 14.35.04.png
    • 例えばap-geoで作成したバケットに保存した場合のエンドポイントは s3.ap-geo.objectstorage.softlayer.netです スクリーンショット 2018-09-01 14.36.54.png
  • paramsのACLの値を変えるとアクセス制御できます。

既定 ACL Applies to ACL に追加されるアクセス許可
private バケットとオブジェクト 所有者は FULL_CONTROL を取得します。他のユーザーにはアクセス許可は付与されません (デフォルト)。
public-read バケットとオブジェクト 所有者は FULL_CONTROL を取得します。AllUsers グループ (被付与者とは を参照) は READ アクセス許可を取得します。
public-read-write バケットとオブジェクト 所有者は FULL_CONTROL を取得します。AllUsers グループは READ および WRITE アクセス許可を取得します。通常、これをバケットで付与することはお勧めしません。
aws-exec-read バケットとオブジェクト 所有者は FULL_CONTROL を取得します。Amazon EC2 は、Amazon S3 から Amazon Machine Image (AMI) バンドルを GET するための READ アクセスを取得します。
authenticated-read バケットとオブジェクト 所有者は FULL_CONTROL を取得します。AuthenticatedUsers グループは READ アクセス許可を取得します。
bucket-owner-read オブジェクト オブジェクト所有者は FULL_CONTROL を取得します。バケット所有者は READ を取得します。バケットの作成時にこの既定 ACL を指定しても、Amazon S3 には無視されます。
bucket-owner-full-control オブジェクト オブジェクト所有者とバケット所有者はオブジェクトに対する FULL_CONTROL を取得します。バケットの作成時にこの既定 ACL を指定しても、Amazon S3 には無視されます。
log-delivery-write バケット LogDelivery グループはバケットに対する WRITE および READ_ACP アクセス許可を取得します。ログの詳細については、「Amazon S3 サーバーアクセスのログ記録」を参照してください。

最後に

ICOSはAWS S3のドキュメントも参考になります。
ICOSでいろいろと便利なアプリが作れそうなのでこれからも使ってみようかと思います。

5
4
0

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
5
4