Skip to end of banner
Go to start of banner

Client-side S3 access

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Relevant Issue: https://sagebionetworks.jira.com/browse/PLFM-4253

make ClientDelegatedS3FIleHandle extend an new ExternalFileHandleInterface and move preview and externalFileHandle 

ExternalObjectStoreFileHandle,ExternalObjectStorageLocationSetting, ExternalObjectStoreUploadDestination


StorageLocationSettings are immutable and thus can be cached client side. The information in these will therefore not be repeated in the new implementations of UploadDestination and FileHandle.
The keyPath in ClientDelegatedS3UploadDestination is client generated:/<<UUID>>.
The key in ClientDelegatedS3FIleHandle, once uploaded will be <<UUID>>/fileName.

The Interfaces exist for future comparability in case we need to add other client reliant storage solutions

New API

Because the upload must occur client-side, the client must be responsible for creating the FIleHandle once uploading has completed

ActionURIMethodRequest BodyResponse Body
Creates a ClientDelegatedS3FileHandle. Its storageLocationId must match that of a ClientDelegatedS3StorageLocationSetting/externalFileHandlePOSTClientDelegatedS3FileHandleClientDelegatedS3FIleHandle

The backend only stores this information. I cannot perform many validity checks because the Synapse backend does not have access to the bucket. The only check it could do is ensure that the storagelocationid in the FileHandle is that of a ClientDelegatedS3StorageLocation

Unanswered questions/other thoughts

There's probably a better name for these classes.
Should we also make ExternalFileHandle and ExternalUploadDestination subclasses of ClientDelegatedFileHandleInterface and ClientDelegatedUploadDestinationInterface, respectively?

Make baseKey default to userId if not specified?

  • No labels