它表示对 account/ 的 POST 请求应该更新该帐户的元数据。如果有对不存在的帐户/的 POST 请求,看起来这意味着不会创建帐户。对吗?
但是,观察 SAIO 中的网络流量(swift all in one),我发现 SAIO 功能测试所做的第一件事就是发出此请求:
POST /v1/6fa5758df0d5463283c1fae5d1b32b27
我很确定该帐户不存在。 Swift 是否希望通过该 POST 请求创建该帐户?
swift@swift-1:/etc/swift$ swift stat -v 存储URL:http://XXXX:8080/v1/AUTH_db8e1e2e00874ca88c9118a28bba0602 身份验证令牌:f7d527d0551c4f02a050ea7e4073ac64 帐户:AUTH_db8e1e2e00874ca88c9118a28bba0602 容器:2 对象:17 字节:17179869441 策略“policy-0”中的对象:17 策略“policy-0”中的字节:17179869441 X-时间戳:1417682993.39561 X-Trans-Id:txf84a1c09c7c7459a909b2-00551672fa 内容类型:文本/纯文本;字符集=utf-8 接受范围:字节 swift@swift-1:/etc/swift$ keystone 租户列表 +--------------------------------+---------+---- -----+ |编号 |名称 |已启用 | +--------------------------------+---------+---- -----+ | b1003d1e8e514e07be811316eb6f34bd |管理员 |真实| | db8e1e2e00874ca88c9118a28bba0602 |演示 |真实| | 75497dda7a4743c3a464e3e12acc4951 | XXX|真实| | 3008e419d6c147618a10d5e55eb03298 |服务 |真实| +--------------------------------+---------+---- -----+ 如您所见,该帐户是 demo 的租户 ID。
令人惊讶的是,您可以在 swift 中创建新的存储帐户,而无需先在 keystone 中创建项目。 示例:
curl --location --request PUT 'https://<IP>/v1/AUTH_Hello' \
--header 'X-Auth-Token: <reseller_admin_token>'
帐户 AUTH_Hello 已创建,这样。
即使使用 GET 方法,它也会创建 AUTH_Hello。 关键是您应该使用“reseller_admin”令牌。即具有 proxy-server.conf、keystoneauth(yoga 及更高版本)块中类似角色的用户令牌:
reseller_admin_role= <role>
请注意,keystone 数据库中没有与帐户 AUTH_Hello 相关的项目,因此您无法获取项目范围的令牌来访问此帐户。