/lua-resty-aws-auth

Lua resty module to calculate AWS signature v4 authorization header

Primary LanguageLuaMIT LicenseMIT

lua-resty-aws-auth

Simple lua resty utilities to generate amazon v4 authorization and signature headers.

Installation

Openresty installation should be compiled with --with-luajit directive otherwise you will get an error,

module 'ffi' not found

Install the package using luarocks

#luarocks install lua-resty-aws-auth

Usage

local aws_auth = require "resty.aws-auth"
local config = {
  aws_host       = "email.us-east-1.amazonaws.com",
  aws_key        = "AKIDEXAMPLE",
  aws_secret     = "xxxsecret",
  aws_region     = "us-east-1",
  aws_service    = "ses",
  content_type   = "application/x-www-form-urlencoded",
  request_method = "POST",
  request_path   = "/",
  request_body   = { hello="world" } -- table of all request params
}

local aws = aws_auth:new(config)

-- get the generated authorization header
-- eg: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request,
---    SignedHeaders=content-type;host;x-amz-date, Signature=xxx
local auth = aws:get_authorization_header()

-- get the x-amz-date header
local amz_date = aws:get_amz_date_header()

Add Authorization and x-amz-date header to ngx.req.headers

aws:set_ngx_auth_headers()

Reference Signing AWS With Signature V4 AWS service namespaces list AWS region and endpoints