This dependency is no longer required with ExAws.S3 2.4 or higher. There are some differences:
- The return of
presigned_post/4
is%{url: binary(), fields: %{required(binary()) => binary()}
instead of%{url: binary(), credentials: %{required(binary()) => binary()}
. - The conditions do not include
["starts-with", "$keys", path]
or Content Type matching by default.
Calls would more or less change as below:
- S3.DirectUpload.presigned(
- %S3.DirectUpload{
- file_name: file,
- mimetype: mime_type,
- bucket: bucket,
- path: path
- },
- config
- )
+ key = "#{path}/#{file}"
+
+ opts = [
+ key: key,
+ custom_conditions: [
+ ["starts_with", "$Content-Type", mime_type],
+ ["starts-with", "$key", path]
+ ]
+ ]
+
+ S3.presigned_post(config, bucket, key, opts)
Pre-signed S3 upload helper for client-side multipart POSTs in Elixir.
Browser-Based Upload using HTTP POST (Using AWS Signature Version 4)
Task 3: Calculate the Signature for AWS Signature Version 4
This is a fork and re-work of the original by @akappen, with a change to how the AWS Access ID and AWS Secret Key are identified. The original required them provided in config, which precluded the use of Instance Role, which contain temporary credentials. This fork attempts to use Ex AWS way of config and authentication, which would permit the use of instance Roles.
S3DirectUpload can be installed by adding s3_direct_upload
to your
list of dependencies in mix.exs
and then running mix deps.get
:
def deps do
[{:ex_aws_s3_direct_upload, "~> 1.0.1"}]
end
See https://github.com/ex-aws/ex_aws#aws-key-configuration for details of custom configurations. The default configuration should suffice.