Saltar a contenido

aws-auth: Módulo Lua resty para calcular el encabezado de autorización de la firma v4 de AWS

Instalación

Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.

CentOS/RHEL 7 o Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-aws-auth

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-aws-auth

Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.

Este documento describe lua-resty-aws-auth v0.12 lanzado el 13 de enero de 2017.


Utilidades simples de lua resty para generar encabezados de autorización y firma de amazon v4.

Uso

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" } -- tabla de todos los parámetros de la solicitud
}

local aws = aws_auth:new(config)

-- obtener el encabezado de autorización generado
-- ej: 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()

-- obtener el encabezado x-amz-date
local amz_date = aws:get_amz_date_header()

Agregar el encabezado Authorization y x-amz-date a ngx.req.headers

aws:set_ngx_auth_headers()

Referencia
Firmando AWS con la firma V4
Lista de espacios de nombres de servicios de AWS
Regiones y puntos finales de AWS

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-aws-auth.