はじめに
・・・(技術検証中)・・・
よし、これで検証中のSWが処理したファイルが全てICOSのBucketに保存されたはず。
どんな感じでファイルが保存されてるか見にいこう。
おぉ、ファイルがいっぱい過ぎてわからん。。。
ファイル一覧取得のAPIがあるからそれでできるか?
バケット内のオブジェクトをリストします。 一度にリストできるのは 1,000 オブジェクトに制限されています。
1000個かぁ、超えてそうな気がする、、、どうしよう。
簡単なプログラム書きましょう
index.js
require('dotenv').config();
const IBM = require('ibm-cos-sdk');
const config = {
endpoint: process.env.COS_ENDPOINT,
apiKeyId: process.env.COS_APIKEY,
serviceInstanceId: process.env.COS_INSTANCEID,
signatureVersion: 'iam',
};
const bucketName = process.env.COS_BUCKET;
const cos = new IBM.S3(config);
const getBucketContents = (bucketName, marker) => {
const config = {
Bucket: bucketName,
}
if (marker) config["Marker"] = marker
return cos.listObjects(config).promise()
.then((data) => {
if(data.Contents){
data.Contents.forEach(object => {
console.log(`"${object.Key}","${object.LastModified.toLocaleString('sv')}","${object.Size}"`);
})
}
if(data.NextMarker) getBucketContents(bucketName, data.NextMarker)
})
}
(() => {
getBucketContents(bucketName)
})();
.env
COS_ENDPOINT=s3.jp-tok.cloud-object-storage.appdomain.cloud
COS_APIKEY=<APIキー>
COS_INSTANCEID=<ICOSのインスタンスのCRN>
COS_BUCKET=<bucket名>
npmで下記をインストールするのを忘れないでください。
- dotenv
- ibm-cos-sdk
動いた
C:\node-apps\node-apps\icos-test>node index.js
"IBMCLOUDVPC-743-apphost-20220329114452.qcow2","2022-08-19 15:39:16","12409897472"
"IBMCLOUDVPC-743-console-20220329114452.qcow2","2022-08-19 14:28:12","11901534208"
ICOS内のObject名、更新日付、ファイルサイズ(Byte)でCSV出力されます。
1000件以上あってもループ処理で問題なく動きます。
さいごに
ICOSのBucket内のオブジェクト全量の情報が欲しいと思ったのですが、あまり情報が見当たらず、自分で簡単なプログラムを書いた次第でした。