StoragePathの使用
StoragePath を使用して、S3バケット内の任意のパスにアクセス、アップロード、またはダウンロードできます。Amplify Gen 1 CLIは自動的に以下のディレクトリを作成します:
public/: アプリケーションのすべてのユーザーがアクセス可能protected/<identityId>/: すべてのユーザーが読み取り可能(ファイルをアップロードしたユーザーのidentityIDを指定する必要があります)。書き込みはユーザーのみが可能private/<identityId>/: 作成したユーザーのみが読み取りと書き込みが可能
Amplify Gen2またはAmplifyで作成されていないS3バケットを使用している場合は、StoragePathを使用してバケット内の任意のディレクトリにアクセス、アップロード、またはダウンロードできます。
StoragePath を文字列から直接作成するか、ユーザーのCognito IdentityIdでパスを構築することで、S3リソースへのパスを指定できます。
StoragePath は以下の条件を満たす必要があります:
- '/'(先頭スラッシュ)で始まらない
- 空でない
文字列からStoragePathを作成する
文字列からStoragePathを構築するとき、指定された文字列がパスになります。
// "public/exampleFile.txt" に解決されますStoragePath.fromString("public/exampleFile.txt")// "public/exampleFile.txt" に解決されますStoragePath.fromString("public/exampleFile.txt")ユーザーのIdentityIdを含むStoragePathを作成する
Amplify AuthユーザーのIdentityIdを含むStoragePathを構築したい場合があります。Storage APIが呼び出されるときに、ユーザーのIdentityIdを注入するヘルパー関数を作成しました。これは、AuthプラグインからのIdentityId取得が非同期ではないためです。
// ユーザーのidentityIdが "123" の場合、// StoragePathは "private/123/exampleFile.txt" に解決されますStoragePath.fromIdentityId(identityId -> "private/" + identityId + "/exampleFile.txt");// ユーザーのidentityIdが "123" の場合、// StoragePathは "private/123/exampleFile.txt" に解決されますStoragePath.fromIdentityId { identityId -> "private/${identityId}/exampleFile.txt" }