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)
依赖
"jkeys089/lua-resty-hmac "= 0.01|https://github.com/jkeys089/lua-resty-hmac>
测试
安装测试依赖
"iresty/lua-resty-test "= 0.01|https://github.com/iresty/lua-resty-test>
opm get jie123108/lua-resty-test
运行签名 v4 测试套件
cd path/to/lua-resty-s3
resty -I lib test/aws-sig-v4-test-suite.lua
在 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
版本
-
用于 ngx_lua 的 aws s3 客户端 2020-05-30 14:50:16
-
用于 ngx_lua 的 aws s3 客户端 2020-05-24 15:53:53
-
用于 ngx_lua 的 aws s3 客户端 2019-05-09 10:46:56