aws-auth: Lua resty модуль для вычисления заголовка авторизации AWS signature v4
Установка
Если вы еще не подписались на RPM репозиторий, зарегистрируйтесь. Затем вы можете продолжить с следующими шагами.
CentOS/RHEL 7 или 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
Чтобы использовать эту Lua библиотеку с NGINX, убедитесь, что nginx-module-lua установлен.
Этот документ описывает lua-resty-aws-auth v0.12, выпущенный 13 января 2017 года.
Простые утилиты lua resty для генерации заголовков авторизации и подписи amazon v4.
Использование
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" } -- таблица всех параметров запроса
}
local aws = aws_auth:new(config)
-- получить сгенерированный заголовок авторизации
-- например: 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()
-- получить заголовок x-amz-date
local amz_date = aws:get_amz_date_header()
Добавьте заголовки Authorization и x-amz-date в ngx.req.headers
aws:set_ngx_auth_headers()
Справка Signing AWS With Signature V4 AWS service namespaces list AWS region and endpoints
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-aws-auth.