lua-resty-s3
ngx_lua 的 AWS S3 客户端
$ opm get oooohhoo/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)
-- copy files. https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
local ok, response = s3:copy(key, source, headers)
-- -- 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,刘晓杰 <jie123108@163.com>
保留所有权利。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
本软件由版权持有人和贡献者“按原样”提供,并且任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证,均被排除在外。在任何情况下,版权持有人或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论这些损害是如何造成的以及基于何种责任理论,无论是合同、严格责任还是侵权行为(包括疏忽或其他原因),即使已被告知此类损害的可能性。
POD 错误
您好!以上文档存在一些编码错误,解释如下:
- 大约在第 76 行
-
L<> 以空格开头或结尾
- 大约在第 95 行
-
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 客户端 2022-04-25 11:54:01
-
ngx_lua 的 AWS S3 客户端 2022-03-11 09:02:34
-
ngx_lua 的 AWS S3 客户端 2022-03-10 11:18:28
-
ngx_lua 的 AWS S3 客户端 2022-03-04 09:57:54
-
ngx_lua 的 AWS S3 客户端 2022-03-02 11:12:45
-
ngx_lua 的 AWS S3 客户端 2022-02-24 06:43:55
-
ngx_lua 的 AWS S3 客户端 2022-02-17 12:38:58