Class S3MediaStorageStrategy

java.lang.Object
de.hybris.platform.amazon.media.storage.S3MediaStorageStrategy
All Implemented Interfaces:
MediaStorageStrategy

public class S3MediaStorageStrategy extends 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 Details

    • tenantPrefix

      protected String tenantPrefix
  • Constructor Details

    • S3MediaStorageStrategy

      public S3MediaStorageStrategy()
  • Method Details

    • setTenantPrefix

      public void setTenantPrefix()
    • store

      public StoredMediaData store(MediaStorageConfigService.MediaFolderConfig config, String mediaId, Map<String,Object> metaData, 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
    • delete

      public void delete(MediaStorageConfigService.MediaFolderConfig config, String location)
      Description copied from interface: MediaStorageStrategy
      Delete media represented by location from the storage.
      Specified by:
      delete in interface MediaStorageStrategy
      Parameters:
      config - media folder configuration
      location - the string representation of location of media data in storage
    • getAsStream

      public InputStream getAsStream(MediaStorageConfigService.MediaFolderConfig config, String location)
      Description copied from interface: MediaStorageStrategy
      Gets the media data from the storage as stream.
      Specified by:
      getAsStream in interface MediaStorageStrategy
      Parameters:
      config - media folder configuration
      location - the string representation of location of media data in storage
      Returns:
      the data
    • getAsFile

      public File getAsFile(MediaStorageConfigService.MediaFolderConfig config, 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
    • getSize

      public long getSize(MediaStorageConfigService.MediaFolderConfig config, String location)
      Description copied from interface: MediaStorageStrategy
      Gets size of media data in bytes.
      Specified by:
      getSize in interface MediaStorageStrategy
      Parameters:
      config - media folder configuration
      location - the string representation of location of media data in storage
      Returns:
      the size of an media data in bytes
    • setLocationHashService

      public void setLocationHashService(MediaLocationHashService locationHashService)
    • setS3StorageServiceFactory

      public void setS3StorageServiceFactory(S3StorageServiceFactory s3StorageServiceFactory)
    • setMediaHeadersRegistry

      public void setMediaHeadersRegistry(MediaHeadersRegistry mediaHeadersRegistry)