OpenStack Swift 中对 /v1/<account-name> 的 POST 请求是否会创建该帐户?

问题描述 投票:0回答:3

我在解释此页面时遇到困难: http://docs.openstack.org/api/openstack-object-storage/1.0/content/POST_updateAccountMeta__v1__account__storage_account_services.html

它表示对 account/ 的 POST 请求应该更新该帐户的元数据。如果有对不存在的帐户/的 POST 请求,看起来这意味着不会创建帐户。对吗?

但是,观察 SAIO 中的网络流量(swift all in one),我发现 SAIO 功能测试所做的第一件事就是发出此请求:

POST /v1/6fa5758df0d5463283c1fae5d1b32b27

我很确定该帐户不存在。 Swift 是否希望通过该 POST 请求创建该帐户?

openstack openstack-swift
3个回答
1
投票
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。

0
投票

OpenStack 对象存储 API v1 的文档没有描述通过该服务创建帐户的方法。帐户是通过以下 API 方法之一创建的,具体取决于所使用的身份验证服务:


0
投票

令人惊讶的是,您可以在 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 相关的项目,因此您无法获取项目范围的令牌来访问此帐户。

© www.soinside.com 2019 - 2024. All rights reserved.