lua-resty-s3

一个用于 ngx_lua 的 aws s3 客户端

$ opm get jie123108/lua-resty-s3

名称

用于 ngx_lua 的 amazon s3 客户端。

Amazon 签名 V4 的实现:http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/sig-v4-authenticating-requests.html。

使用方法

要加载此库

您需要在 ngx_lua 的 lua_package_path 指令中指定此库的路径。例如

    http {
       lua_package_path '/path/to/lua-resty-s3/lib/?.lua;;';
    }

您使用 require 将库加载到一个本地 Lua 变量中

    local awss3 = require("resty.s3")

方法

    -- require package
    local awss3 = require "resty.s3"
    
    -- init instance.
    local s3 = awss3:new(AWSAccessKeyId, AWSSecretAccessKey, aws_bucket, {timeout=1000*10})
    
    -- get a object. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html
    local ok, response = s3:get(key)
    
    -- get a object. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html
    local ok, response = s3:head(key)
    
    -- put a object. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
    local ok, response = s3:put(key, value, headers)
    
    -- delete a object. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html
    local ok, response = s3:delete(key)
    
    -- delete multi objects. http://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html
    local ok, response = s3:deletes(keys, quiet)
    
    -- list files. http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html
    local ok, files = s3:list(prefix, delimiter, page_size, marker)
    
    -- -- signature-v4. http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
    local authorization, signature, extinfo = s3:authorization_v4(method, url, headers)
    

依赖

测试

安装测试依赖

    opm get jie123108/lua-resty-test

运行签名 v4 测试套件

    cd path/to/lua-resty-s3
    resty -I lib test/aws-sig-v4-test-suite.lua

在 AWS 网站上运行签名示例。

AWS 网站上的签名示例

    resty -I lib test/test-s3-sign-examples.lua

运行 s3 测试

使用 Minio 进行测试

使用 docker 运行 minio

  • 1. 启动 minio 容器

    docker run -d -it --name s3 -p 9000:9000 \
    -e MINIO_ACCESS_KEY=THE_ACCESS_KEY_ID \
    -e MINIO_SECRET_KEY=THE_SECRET_ACCESS_KEY \
    minio/minio server /data/minio_data
  • 2. 访问 minio 控制台:http://127.0.0.1:9000/minio/

    • 访问密钥:THE_ACCESS_KEY_ID

    • 密钥:THE_SECRET_ACCESS_KEY

  • 3. 在控制台中添加一个名为“def”的存储桶

    • 登录后,点击右下角的“+”按钮,然后在弹出菜单中点击“创建存储桶”。

运行测试

    resty -I lib test/test-s3.lua

使用 aws s3 进行测试

    S3_CONFIG="S3_ACCESS_ID:S3_ACCESS_SECERT_KEY:s3_bucket_name:s3_region" resty -I lib test/test-s3.lua

许可证

此模块在 2 条款 BSD 许可证下授权。

版权所有 (c) 2017,Xiaojie Liu <jie123108@163.com>

保留所有权利。

允许以源代码和二进制形式重新分发和使用,无论是否修改,只要满足以下条件:

  • 源代码的再分发必须保留以上版权声明、此条件列表和以下免责声明。

  • 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制以上版权声明、此条件列表和以下免责声明。

此软件由版权持有人和贡献者“按原样”提供,任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证均被排除在外。在任何情况下,版权持有人或贡献者均不对任何直接的、间接的、附带的、特殊的、惩戒性的或后果性的损害(包括但不限于采购替代商品或服务的费用;使用、数据或利润损失;或业务中断)负责,无论是由本软件的使用引起的,还是由本软件的使用造成的,即使已被告知可能发生此类损害。

POD 错误

嘿!以上文档存在一些编码错误,解释如下:

在第 73 行附近

L<> 以空格开头或结尾

在第 92 行附近

L<> 以空格开头或结尾

作者

jie123108@163.com

许可证

2bsd

依赖项

billythedummy/SLAXML >= 0.8, jkeys089/lua-resty-hmac >= 0.01, ledgetech/lua-resty-http >= 0.01, openresty >= 1.9.3.1

版本