Squid のストレージ
ストレージバケットにファイルを安全にアップロードおよびダウンロードする
Squid のストレージ機能を使用すると、Squid Client SDK でファイルを管理できるため、任意のクライアントからファイルを操作できます。Squid Backend SDK を使用してファイルを保護することで、シームレスな開発体験とユーザー体験を実現できます。アプリケーション作成時に Squid が提供するビルトインのストレージインスタンスを使用するか、独自の AWS ストレージバケットを接続できます。
以下のコネクターを通じて Squid storage にアクセスできます。
接続後、Squid Client SDK を介してストレージコネクターを使用できます。
ストレージインスタンスにアクセスする
Squid storage インスタンスにアクセスするには、Squid インスタンスで .storage() を呼び出します。ビルトインストレージバケットの場合は、パラメータなしでメソッドを呼び出します。それ以外のストレージコネクターの場合は、コネクター ID を渡します。
squid.storage(); // ビルトインストレージバケットにアクセス
squid.storage('YOUR_CONNECTOR_ID'); // ストレージコネクターにアクセス
ファイルをアップロードする
ストレージにファイルをアップロードするには uploadFile() メソッドを呼び出し、ファイルを保存したいストレージバケット内のディレクトリパスと、File または BlobAndFileName 型のファイルを渡します。ブラウザでは 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']);
ストレージバケットを保護する
デフォルトでは、ストレージバケットに対するすべてのアクションは拒否されます。ストレージバケットリソースへのアクセスを許可されたユーザーのみに制限するには、ストレージのセキュリティ関数を使用してください。詳細は、ストレージバケットを保護するドキュメント を参照してください。