是否可以通过 s3cmd 与 OpenStack 的单节点部署进行交互 Swift

Is it possible to interact via s3cmd with a single node deployment of OpenStack Swift

我部署了存储服务OpenStack Swift ontop of a Raspberry Pi 3 with Raspbian = Debian Jessie 8.0. (Thanks to Swift on Pi,安装不是什么大问题。

$ curl -i -H "X-Auth-User: test:tester" -H "X-Auth-Key: testing" http://10.0.0.253:8080/auth/v1.0/
HTTP/1.1 200 OK
X-Storage-Url: http://10.0.0.253:8080/v1/AUTH_test
X-Auth-Token-Expires: 77438
X-Auth-Token: AUTH_tka8fff6782f86486a84e3905daa60f308
Content-Type: text/html; charset=UTF-8
X-Storage-Token: AUTH_tka8fff6782f86486a84e3905daa60f308
Content-Length: 0
X-Trans-Id: txa21566e67e8143b1b32db-005908cf2f
X-Openstack-Request-Id: txa21566e67e8143b1b32db-005908cf2f
Date: Tue, 02 May 2017 18:25:51 GMT

我没有更多的 OpenStack 服务(如 Keystone)运行。只有 Swift.

我的目标是使用 s3cmd 与 Swift 服务交互。

我在 ~/.s3cfg 文件中修改了这些值:

access_key = tester
host_base = 10.0.0.253:8080
host_bucket = 10.0.0.253:8080
secret_key = testing
signature_v2 = True 

但这没有帮助:

$ s3cmd ls
ERROR: Error parsing xml: Malformed error XML returned from remote server..  ErrorXML: <html><h1>Unauthorized</h1><p>This server could not verify that you are authorized to access the document you requested.</p></html>
ERROR: S3 error: 401 (Unauthorized)

是否可以使用 s3cmd 与 Swift 服务交互,我错过了哪些步骤?

Openstack-Swift,虽然像 s3 这样的对象存储,但有不同的 API。如果只需要一个命令行,可以试试Python-Swiftclient. However if you need a S3 like API, you need to configure the swift3这个中间件,没有默认自带Swift,只有2.18.0版本以后才默认自带。对于早期版本,您应该安装中间件。