Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Common Lisp library for Amazon Web Services signing version 4.

Project home: https://github.com/rotatef/aws-sign4

This library implements the Signature Version 4 Signing Process, as described here: http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

Highlights:

  • Passes all tests in the test suite from Amazon.
  • Tested on ABCL, ACL, CCL, CLISP and SBCL.
  • Signing only, not tied to a specific http client library.

Example

See example.lisp for an example of using Drakma to make a request to SWF.

S3 supports presigned URL. This make is possible to give a web browser temporary access to download an object directly from S3. Example:

(let ((aws-sign4:*aws-credentials*
        (lambda ()
          (values "AKIAIOSFODNN7EXAMPLE" "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"))))
  (aws-sign4:aws-sign4 :region :eu-west-1
                       :service :s3
                       :host "s3-eu-west-1.amazonaws.com"
                       :path "/some-bucket/some-file"
                       :expires 300)) 
=> "https://s3-eu-west-1.amazonaws.com/some-bucket/some-file?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20170908%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20170908T121925Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=42c841837976e9c206f80554b50aa879fdb3aa4f3e6f61934ce8eba436205abf                      

API

Variable

AWS-SIGN4:*AWS-CREDENTIALS*

Bind this variable to a function returning two values, the access key and the secret key.

AWS-SIGN4:AWS-SIGN4 &key ...

Calculates the signature for a http request.

Parameters:

  • region - String designator for the AWS region. Default "us-east-1".
  • service - String designator for the AWS service name.
  • method - String designator for the http method.
  • host - The hostname/endpoint to for the request. Default is the value of the host header.
  • path - The path part of the request URI.
  • params - The query parameters of the URI as an assoc list.
  • headers - The headers as an assoc list as an assoc list.
  • payload - The payload, as a string or vector of octets. Strings are encoded to octets using UTF-8.
  • date-header - The name of the date-header, :X-AMZ-DATE or :DATE. Default :X-AMZ-DATE.
  • request-date - The request date as a local-time timestamp. Default (LOCAL-TIME:NOW).
  • expires - Provides the time period, in seconds, for which the generated presigned URL is valid.
  • scheme - Scheme used in presigned URL, defaults to https.

Returns seven values. Only the two first are needed, the others are useful for debugging.

  • If expire is nil or not supplied, the value of "Authorization" header. If expire is supplied, the presigned URL.
  • Value of "X-Amz-Date" or "Date" header.
  • Canonical request
  • String to sign
  • Credential scope
  • Signed headers
  • Signature

About

Common Lisp library for Amazon Web Services signing version 4

Topics

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.