Squid ストレージ
ストレージバケット内のファイルを安全にアップロードおよびダウンロードする
Squidのストレージ機能を使用すると、Squid Client SDKを利用してどのクライアントからでもファイルにアクセスできるよう、ファイルを管理できます。シームレスな開発およびユーザー体験のために、Squid Backend SDKを使ってファイルを安全に保護してください。アプリケーション作成時には、Squidが提供するビルトインストレージインスタンスを利用するか、独自のAWSストレージバケットを接続してください。
以下のコネクタを介してSquidストレージにアクセスできます:
接続後、Squid Client SDKを通じてストレージコネクタをご利用いただけます。
ストレージインスタンスへのアクセス
Squidストレージインスタンスにアクセスするには、Squidインスタンス上で .storage() を呼び出します。ビルトインストレージバケットの場合はパラメータなしでこのメソッドを呼び出し、その他のストレージコネクタの場合はコネクタIDを渡してください。
squid.storage(); // accesses the built-in storage bucket
squid.storage('YOUR_CONNECTOR_ID'); // accesses a storage connector
ファイルのアップロード
ストレージにファイルをアップロードするには、アップロード先となるストレージバケット内のディレクトリパスと、File または BlobAndFileName 型のファイルを渡して uploadFile() メソッドを呼び出します。ブラウザの場合は File 型、Node.jsアプリケーションの場合は BlobAndFileName 型を使用してください。
await squid.storage().uploadFile('dir/path/in/bucket', yourFile);
BlobAndFileName は以下のフォーマットを持ちます:
{
blob: Blob;
name: string;
}
ファイルのダウンロードURLを取得する
ファイルをダウンロードするには、getDownloadUrl() メソッドを使用して、ファイルへのパスとオプションで有効期限(秒単位)を渡し、ダウンロードURLを生成します。デフォルトの有効期限は3600秒です。この関数は、URLを含むオブジェクトに解決されるPromiseを返します。
const urlResponse = await squid
.storage()
.getDownloadUrl('path/in/bucket/image.jpg', 7200);
console.log(urlResponse.url); // "https://prod-us-east-1-squid-storage.s3.amazonaws.com/abcd123..."
ファイルのメタデータの取得
ファイルに関するメタデータを読み取るには、ファイルへのパスを渡して getFileMetadata() メソッドを利用してください。
const metadata = await squid
.storage()
.getFileMetadata('path/in/bucket/image.jpg');
console.log(metadata);
/*
{
filename: 'image.jpg',
size: 120672,
lastModified: Mon Mar 11 2024 17:32:00 GMT-0500 (Central Daylight Time)
}
*/
ディレクトリの内容一覧表示
指定されたバケットディレクトリのすべての内容を一覧表示するには、バケットディレクトリのパスを渡して listDirectoryContents メソッドを利用してください。
const contents = await squid.storage().listDirectoryContents('path/in/bucket');
console.log(contents.directories);
/*
['documents/', 'contacts/']
*/
console.log(contents.files);
/*
[
{
filename: 'test.txt',
absoluteFilePathInBucket: 'path/in/bucket/test.txt',
lastModified: Mon Mar 11 2024 17:32:00 GMT-0500 (Central Daylight Time),
size: 9210
}, {
filename: 'image.jpg',
absoluteFilePathInBucket: 'path/in/bucket/image.jpg',
lastModified: Mon Mar 11 2024 17:34:16 GMT-0500 (Central Daylight Time),
size: 120672
},
]
*/
ファイルの削除
ファイルを削除するには、削除するファイルへのパスを渡して deleteFile() メソッドを呼び出してください。
await squid.storage().deleteFile('path/in/bucket/image.jpg');
複数ファイルの削除
複数のファイルを削除するには、ファイルパスの配列を渡して deleteFiles() メソッドを利用してください。
await squid
.storage()
.deleteFiles(['path/in/bucket/image.jpg', 'path/in/bucket/test.txt']);
ストレージバケットのセキュリティ保護
デフォルトでは、ストレージバケット上のすべての操作が拒否されます。ストレージバケットリソースへのアクセスを権限のあるユーザーに限定するために、ストレージセキュリティ機能を利用してください。詳細については、secure a storage bucket documentationをご覧ください。