python - Python 上传到 s3:卡在 put_object() 调用上
问题描述
我想在 s3 存储 (MinIO) 中发送图像。
这是一个示例代码:
import cv2
import argparse
import boto3
from botocore.client import Config
import logging
logging.basicConfig(level=logging.INFO)
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--s3_endpoint', type=str, default='http://127.0.0.1:9000')
parser.add_argument('--s3_access_key', type=str,default='minioadmin')
parser.add_argument('--s3_secret_key', type=str,default='minioadmin')
parser.add_argument('--image_bucket', type=str,default='my_bucket')
args = parser.parse_args()
s3 = boto3.client(
"s3",
use_ssl=False,
endpoint_url=args.s3_endpoint,
aws_access_key_id=args.s3_access_key,
aws_secret_access_key=args.s3_secret_key,
region_name='us-east-1',
config=Config(s3={'addressing_style': 'path'})
)
def upload_image_s3(bucket, image_name, image):
logging.info("Uploading image "+image_name+" to s3 bucket "+bucket)
body = cv2.imencode('.jpg', image)[1].tostring()
s3.put_object(Bucket=bucket, Key = image_name, Body = body)
logging.info("Image uploaded !")
upload_image_s3(args.processed_images_bucket,'test/image.jpg',cv2.imread("resources/images/my_image.jpg"))
但是当我运行它时,我永远卡在 put_object() 调用上(嗯,直到准确地说是超时)。
为了进行测试,我使用默认配置(在 Windows 上)在本地运行 minIO 服务器。
你知道我的问题是什么吗?
解决方案
我遇到了同样的错误,当我想连接 minIO 时,我的错误是不正确的凭据。当我看到您只是将主机更改为 localhost 时,我查看了所有代码并意识到这只是我的凭据中的一个错字
推荐阅读
- spring - Spring Boot 中的 API 身份验证
- flutter - 未来提供者陷入加载状态
- c++ - boost::enable_if enabler() 与使用 boost::iterator_facade 创建迭代器的教程相关
- excel - 通过 GetOpenFilename 选择新工作簿后如何选择特定工作表
- python - 如何在不打开 CMD 窗口的情况下通过 subprocess.call() 运行 CMD 命令?
- javascript - 在strophejs中如何维护多个连接
- unit-testing - flask (werkzeug) 2.0 测试 GET (client.get(url, data=data)) 方法不使用数据/有效负载
- python - 尝试对已聚合的数据进行聚合查询 - 不确定使用的最佳方法
- c# - 为什么需要我在 DbContext 类中将视图模型定义为 DbSet?
- winapi - 我需要一些额外的步骤来注册对 DeviceContext 的更改吗?