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.