lua-resty-aws-signature

AWS 签名 V4 头部生成器

$ opm get rtokarev/lua-resty-aws-signature

lua-resty-aws-signature

该库基于 Alan Grosskurth 在 https://github.com/grosskur/lua-resty-aws 上的工作。它基本上是从他的仓库中 fork 出来的,我们更改了使用的 HMAC 库。

概述

该库使用 [AWS 签名版本 4][aws4] 规范实现请求签名。该签名方案几乎被所有 AWS 服务使用。

AWS 文档

[aws4]: http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

用法

该库使用标准的 AWS 环境变量作为凭据来生成 [AWS 签名版本 4][aws4]。

    export AWS_ACCESS_KEY_ID=AKIDEXAMPLE
    export AWS_SECRET_ACCESS_KEY=AKIDEXAMPLE

为了在你的 nginx 配置中访问这些变量,这些变量应该在 nginx.conf 文件中声明。

    #user  nobody;
    worker_processes  1;
    
    error_log  /dev/fd/1 debug;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    env AWS_ACCESS_KEY_ID;
    env AWS_SECRET_ACCESS_KEY;
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /dev/stdout;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }

然后,你可以使用该库将 AWS 签名头添加到给定的 S3 存储桶,并使用 proxy_pass

    set $bucket 'example';
    set $s3_host $bucket.s3-eu-west-1.amazonaws.com;
    
    location / {
      access_by_lua_block {
        require("resty.aws-signature").s3_set_headers(ngx.var.s3_host, ngx.var.uri)
      }
    
      proxy_pass https://$s3_host;
    }

注意:你必须根据你的需要设置 s3-<region>s3 作为 amazonaws.com 的子域。s3 将使用 us-east-1 区域。

贡献

查看 CONTRIBUTING.md 获取更多信息。

许可证

版权所有 2018 JobTeaser

根据 Apache 许可证 2.0 版(“许可证”)授权;除非符合许可证,否则你不得使用此文件。你可以在以下地址获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或以书面形式达成协议,否则根据许可证分发的软件按“原样”分发,不提供任何形式的明示或暗示担保。请参阅许可证以了解管理许可证下的权限和限制的具体语言。

作者

Ludovic Vielle (lukkor), Roman Tokarev (rtokarev)

许可证

apache2

依赖项

版本