Class S3MediaStorageStrategy

  • All Implemented Interfaces:
    MediaStorageStrategy

    public class S3MediaStorageStrategy
    extends java.lang.Object
    implements MediaStorageStrategy

    Strategy which allows to store binaries for Media objects in Amazon S3 data storage.

    Corresponding MediaFolder have to be configured with following properties:

     media.folder.{mediaFolderQualifier}.storage.strategy=S3MediaStorageStrategy
     media.folder.{mediaFolderQualifier}.bucketId=bucketId
     media.folder.{mediaFolderQualifier}.accessKeyID=yourAccessKeyID
     media.folder.{mediaFolderQualifier}.secretAccessKey=yourSecretAccessKey
     media.folder.{mediaFolderQualifier}.endpoint=possibleEndpoint
     

    where:

    • mediaFolderQualifier is qualifier of MediaFolder
    • bucketId is name of the S3 bucket
    • accessKeyID is configured access key ID
    • secretAccessKey is configured secret access key ID
    • endpoint is optional endpoint (for instance: s3-eu-west-1.amazonaws.com)

    Below is full example for MediaFolder with qualifier s3 and bucketId myBucket:

     media.folder.s3.storage.strategy=S3MediaStorageStrategy
     media.folder.s3.bucketId=myBucket
     media.folder.s3.accessKeyID=XGDKJAKDJ12345
     media.folder.s3.secretAccessKey=JSJD8JSJJ3KNSkskk88374ksjhahwl4w+
     

    If you have more than one media folders, you can share common settings as follows:

     media.globalSettings.s3MediaStorageStrategy.accessKeyId=yourAccessKeyID
     media.globalSettings.s3MediaStorageStrategy.secretAccessKey=yourSecretAccessKey
     media.globalSettings.s3MediaStorageStrategy.bucketId=myBucket
     media.globalSettings.s3MediaStorageStrategy.endpoint=possibleEndpoint
     

    To control clean on init behavior use following property:

     media.globalSettings.s3MediaStorageStrategy.cleanOnInit = true / false
     
    Spring Bean ID:
    s3MediaStorageStrategy
    • Field Detail

      • tenantPrefix

        protected java.lang.String tenantPrefix
    • Constructor Detail

      • S3MediaStorageStrategy

        public S3MediaStorageStrategy()
    • Method Detail

      • setTenantPrefix

        public void setTenantPrefix()
      • store

        public StoredMediaData store​(MediaStorageConfigService.MediaFolderConfig config,
                                     java.lang.String mediaId,
                                     java.util.Map<java.lang.String,​java.lang.Object> metaData,
                                     java.io.InputStream dataStream)
        Description copied from interface: MediaStorageStrategy
        Stores media data into the storage using unique location identifier. Location identifier is computed by each implementation in different way which depends on API of underlying media storage but in most cases contains a mediaId as unique part. mediaId is generated by platform for each upload attempt so it guarantees uniqueness.
        Specified by:
        store in interface MediaStorageStrategy
        Parameters:
        config - media folder configuration
        mediaId - the media identifier
        metaData - the meta data containing additional possible informations like: original filename, MIME, folder path
        dataStream - the data stream to store
        Returns:
        object containing information about stored data like unique location in the storage, size and hash for location
      • getAsFile

        public java.io.File getAsFile​(MediaStorageConfigService.MediaFolderConfig config,
                                      java.lang.String location)
        Description copied from interface: MediaStorageStrategy
        Gets the media data from the storage as file. Note that implementation of this method may be optional when underlying media storage does not support downloading data as File.
        Specified by:
        getAsFile in interface MediaStorageStrategy
        Parameters:
        config - media folder configuration
        location - the string representation of location of media data in storage
        Returns:
        the media as file
      • setS3StorageServiceFactory

        public void setS3StorageServiceFactory​(S3StorageServiceFactory s3StorageServiceFactory)
      • setMediaHeadersRegistry

        public void setMediaHeadersRegistry​(MediaHeadersRegistry mediaHeadersRegistry)