Aller au contenu

aws-auth: Module Lua resty pour calculer l'en-tête d'autorisation de signature AWS v4

Installation

Si vous n'avez pas encore configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.

CentOS/RHEL 7 ou 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

Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que le nginx-module-lua est installé.

Ce document décrit lua-resty-aws-auth v0.12 publié le 13 janvier 2017.


Utilitaires simples lua resty pour générer des en-têtes d'autorisation et de signature amazon v4.

Utilisation

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 de tous les paramètres de la requête
}

local aws = aws_auth:new(config)

-- obtenir l'en-tête d'autorisation généré
-- ex: 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()

-- obtenir l'en-tête x-amz-date
local amz_date = aws:get_amz_date_header()

Ajoutez les en-têtes Authorization et x-amz-date à ngx.req.headers

aws:set_ngx_auth_headers()

Références
Signing AWS With Signature V4
AWS service namespaces list
AWS region and endpoints

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-aws-auth.