
Python调用Google Bard API 完整指南
MinIO是一种基于Apache License v2.0开源协议的对象存储服务,兼容亚马逊S3云存储服务接口,适用于存储大容量非结构化数据。本文详细介绍了在向MinIO发出的REST请求中如何验证身份,包括MinIO的基本运行方式、签名方法、通过不同编程语言进行操作以及匿名访问策略的设置。通过这些步骤,用户能够在MinIO环境中有效地进行身份验证和数据管理。
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务,兼容亚马逊 S3 云存储服务接口,非常适合存储大容量非结构化数据,如图片、视频、日志文件等。为了快速启动 MinIO,可以直接下载二进制文件运行,无需额外配置。
Linux:
wget https://dl.min.io/server/minio/release/linux-ppc64le/minio
chmod +x minio
./minio server /data
Windows:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
minio.exe server D:Photos
安装后,使用浏览器访问 http://127.0.0.1:9000 以验证安装成功。MinIO 提供一个嵌入的 Web 对象浏览器,可以通过该页面或 MinIO 客户端进行操作。
MinIO 与 Amazon S3 兼容,因此可以使用相同的 SDK 和 REST API 方法。为了进行身份验证,采用 AWS Signature Version 4 签名方法。此方法涉及对请求进行签名以确保安全性。以下是计算签名的函数:
public static String UriEncode(CharSequence input, boolean encodeSlash) {
StringBuilder result = new StringBuilder();
for (int i = 0; i = 'A' && ch = 'a' && ch = '0' && ch <= '9')
|| ch == '_' || ch == '-' || ch == '~' || ch == '.') {
result.append(ch);
} else if (ch == '/') {
result.append(encodeSlash ? "%2F" : ch);
} else {
result.append(toHexUTF8(ch));
}
}
return result.toString();
}
在单块传输中,可以选择将 payload 的哈希包含在签名计算中。对于未签名的 payload,使用字符串 “UNSIGNED-PAYLOAD”。
为了实现 MinIO 的 GET 和 PUT 操作,可以使用 shell 脚本进行简单的自动化操作。以下是示例代码:
#!/bin/bash
usage() {
echo $0 [method] [uri] [file]
echo $0 GET /bucket/object output_file
echo $0 PUT /bucket/object input_file
}
method=$1
uri=$2
file=$3
secret_id="minioadmin"
secret_key="minioadmin"
host="154.8.199.216:9000"
region=""
x_amz_date=date --date="8 hour ago" "+%Y%m%dT%H%M%SZ"
date_day=date --date="8 hour ago" "+%Y%m%d"
signed_headers="host;x-amz-date"
send_request() {
# 创建和发送请求的代码略
}
send_request
默认情况下,MinIO 的 region 为空,因此在请求时需要处理时区问题。
为了在 C++ 中操作 MinIO,可以使用 aws-sigv4-c 和 cpp-httplib 库。以下是示例代码:
#include "aws_sigv4.h"
#include "httplib.h"
#include
int main(void) {
// 初始化代码及请求代码略
return 0;
}
编译时需要注意链接正确的库文件。
MinIO 允许为 buckets 和 objects 设置匿名访问策略,可以设置为 none, download, upload, public。
# mc alias set minio http://154.8.199.216:9000 minioadmin minioadmin
# mc mb minio/images
# mc policy set public minio/images/
通过存储桶事件通知,MinIO 支持将事件发布到 Webhook。以下是配置示例:
# mc admin config set minio notify_webhook:1 endpoint="http://127.0.0.1:8090"
# mc admin service restart minio
# mc event add minio/images arn:minio:sqs::1:webhook --event put,delete
可以通过简单的 Python Web 服务接收并处理这些事件。
from wsgiref.simple_server import make_server
def app(environ, start_response):
# 获取请求数据并打印
pass
httpd = make_server('', 8090, app)
httpd.serve_forever()
wget
下载 MinIO 的二进制文件,然后通过 chmod +x
命令赋予执行权限,并运行 ./minio server /data
来启动服务。在 Windows 上,下载可执行文件后,运行 minio.exe server D:Photos
。安装后,使用浏览器访问 http://127.0.0.1:9000
以验证安装成功。secret_id
和 secret_key
进行身份验证,设置请求的日期和签名头,最后调用 send_request
函数发送请求。aws-sigv4-c
和 cpp-httplib
库。示例代码中需要包含必要的库文件,并在编译时确保链接正确的库文件。mc
客户端设置访问策略,例如创建一个存储桶并设置为公共访问:mc alias set minio http://154.8.199.216:9000 minioadmin minioadmin
,mc mb minio/images
,mc policy set public minio/images/
。