メインコンテンツまでスキップ

Squid ストレージ

ストレージバケット内のファイルを安全にアップロード・ダウンロード

Squid のストレージ機能では、Squid Client SDK を使用してファイルを管理でき、どのクライアントからでもファイルを操作できます。シームレスな開発体験とユーザー体験のために、Squid Backend SDK を使用してファイルを保護してください。アプリケーション作成時に Squid が提供する内蔵(built-in)のストレージインスタンスを使用するか、独自の AWS ストレージバケットを接続できます。

以下のコネクタを通じて Squid ストレージにアクセスできます。

接続が完了したら、Squid Client SDK からストレージコネクタを使用できます。

ストレージインスタンスにアクセスする

Squid ストレージインスタンスにアクセスするには、Squid インスタンスで .storage() を呼び出します。内蔵ストレージバケットの場合はパラメータなしで呼び出します。それ以外のストレージコネクタの場合は、コネクタ ID を渡します。

Client code
squid.storage(); // accesses the built-in storage bucket

squid.storage('YOUR_CONNECTOR_ID'); // accesses a storage connector

ファイルをアップロードする

ストレージにファイルをアップロードするには、uploadFile() メソッドを呼び出し、ファイルを保存したいストレージバケット内のディレクトリパスと、File または BlobAndFileName 型のファイルを渡します。ブラウザでは File 型を、Node.js アプリケーションでは BlobAndFileName 型を使用します。

Client code
await squid.storage().uploadFile('dir/path/in/bucket', yourFile);

BlobAndFileName は次の形式です。

{
blob: Blob;
name: string;
}

ファイルのダウンロード URL を取得する

ファイルをダウンロードするには、getDownloadUrl() メソッドを使用してダウンロード URL を生成します。ファイルへのパスと、任意で有効期限(秒)を渡します。デフォルトの有効期限は 3600 秒です。この関数は、URL を含むオブジェクトに解決される promise を返します。

Client code
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() メソッドを使用し、ファイルへのパスを渡します。

Client code
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 メソッドを使用し、バケットディレクトリのパスを渡します。

Client code
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() メソッドを呼び出し、削除するファイルのパスを渡します。

Client code
await squid.storage().deleteFile('path/in/bucket/image.jpg');

複数のファイルを削除する

複数のファイルを削除するには、deleteFiles() メソッドを使用し、ファイルパスの配列を渡します。

Client code
await squid.storage().deleteFiles(['path/in/bucket/image.jpg', 'path/in/bucket/test.txt']);

ストレージバケットを保護する

デフォルトでは、ストレージバケットに対するすべてのアクションは拒否されます。ストレージバケットのリソースへのアクセスを許可されたユーザーのみに限定するには、ストレージセキュリティ関数を使用してください。詳細は、ストレージバケットを保護するドキュメント を参照してください。