trunk v0.0.7 Trunk.Storage.S3 View Source

A Trunk.Storage implementation for Amazon’s S3 service.

Link to this section Summary

Link to this section Functions

Link to this function build_uri(directory, filename, opts \\ []) View Source

Generates a URL to the S3 object

  • directory - The directory (will be combined with the filename to form the S3 key.
  • filename - The name of the file (will be combined with the directory to form the S3 key.
  • opts - The options for the storage system

    • bucket: (required) The S3 bucket in which to store the object.
    • virtual_host: (optional) boolean indicator whether to generate a virtual host style URL or not.
    • signed: (optional) boolean whether to sign the URL or not.
    • ex_aws: (optional) override options for ex_aws

Example:

Trunk.Storage.S3.build_url("path/to", "file.ext", bucket: "my-bucket")
#=> "https://s3.amazonaws.com/my-bucket/path/to/file.ext"
Trunk.Storage.S3.build_url("path/to", "file.ext", bucket: "my-bucket", virtual_host: true)
#=> "https://my-bucket.s3.amazonaws.com/path/to/file.ext"
Trunk.Storage.S3.build_url("path/to", "file.ext", bucket: "my-bucket", signed: true)
#=> "https://s3.amazonaws.com/my-bucket/path/to/file.ext?X-Amz-Algorithm=AWS4-HMAC-SHA256&…"
Link to this function delete(directory, filename, opts \\ []) View Source
delete(String.t, String.t, keyword) ::
  :ok |
  {:error, :file.posix}

Deletes the file from Amazon S3.

  • directory - The directory (will be combined with the filename to form the S3 key.
  • filename - The name of the file (will be combined with the directory to form the S3 key.
  • opts - The options for the storage system

    • bucket: (required) The S3 bucket in which to store the object
    • ex_aws: (optional) override options for ex_aws

Example:

The file will be removed from s3.amazonaws.com/my-bucket/path/to/file.ext

Trunk.Storage.S3.delete("path/to/", "file.ext", bucket: "my-bucket")
Link to this function retrieve(directory, filename, destination_path, opts \\ []) View Source

Callback implementation for Trunk.Storage.retrieve/4.

Link to this function save(directory, filename, source_path, opts \\ []) View Source
save(String.t, String.t, String.t, keyword) ::
  :ok |
  {:error, :file.posix}

Saves the file to Amazon S3.

  • directory - The directory (will be combined with the filename to form the S3 key.
  • filename - The name of the file (will be combined with the directory to form the S3 key.
  • source_path - The full path to the file to be stored. This is a path to the uploaded file or a temporary file that has undergone transformation
  • opts - The options for the storage system

    • bucket: (required) The S3 bucket in which to store the object
    • ex_aws: (optional) override options for ex_aws
    • All other options are passed through to S3 put object which means you can pass in anything accepted by ExAws.S3.put_object_opts/0 including but not limited to :acl, :meta, :content_type, and :content_disposition

Example:

The file will be saved to s3.amazonaws.com/my-bucket/path/to/file.ext

Trunk.Storage.S3.save("path/to/", "file.ext", "/tmp/uploaded_file.ext", bucket: "my-bucket")