我正在尝试使用Devstack为开发人员设置S3测试平台(在devstack配置文件中使用 stable / newton 分支 - local.conf)。虽然我能够使用CLI(openstack容器/对象,swift)浏览容器和对象,但我无法使用s3curl访问容器。在日志中(完整日志在下面的链接中可用)我在请求处理的最后阶段看到两个不同的URL:
-------------“openstack container list”命令,在本地发布
watch : {
inputSpell : function() {
var spellCount = this.spellCount;
var inputSpell = this.inputSpell.toUpperCase();
var presentSpell = this.presentSpell;
console.log("Spell Count " + spellCount);
console.log("Input Spell " + inputSpell);
console.log("Present Spell" + presentSpell);
if (inputSpell.length === 3 && inputSpell === presentSpell) {
this.$set(this, 'inputSpell', '');
if (spellCount === 3) {
return this.completeCombo();
}
return this.fetchSpell(spellCount);
}
if (inputSpell.length >=3) {
this.$set(this, 'inputSpell', '');
}
}
}
您在上面的请求中看到了正确的网址。
-------------使用re.mo.te.host中的s3curl进行S3会话
proxy-server: Using identity: {'service_roles': [], 'roles': [u'admin'],
'project_domain': (u'default', u'Default'), 'auth_version': 3,
'user': (u'eac0298a83e44b12b2c08aa98e9b1c9a', u'admin'),
'user_domain': (u'default', u'Default'),
'tenant': (u'2d7365b17c8147e9aead99f870125d31', u'admin')}
(txn: txda7984e9e1f04b7792920-005811ca49)
[ ... ]
proxy-server: de.vs.ta.ck de.vs.ta.ck 27/Oct/2016/09/35/05 GET
/v1/AUTH_2d7365b17c8147e9aead99f870125d31%3Fformat%3Djson HTTP/1.0
200 - osc-lib keystoneauth1/2.14.0 python-requests/2.11.1 CPython/2.7.12
a5ef5769d7ef... - 42 - txda7984e9e1f04b7792920-005811ca49 - 0.0881
- - 1477560905.352745056 1477560905.440839052 -
上面的网址格式不正确,当然也不会返回任何内容。似乎代理服务器可能出现问题 - 具有相同的信息,它为不同类型的访问产生不同的请求URL(快速客户端访问与远程S3访问)。
对于S3访问,我创建了EC2凭证:
proxy-server: Using identity: {'service_roles': [], 'roles': [u'admin'],
'project_domain': (u'default', u'Default'), 'auth_version': 3,
'user': (u'eac0298a83e44b12b2c08aa98e9b1c9a', u'admin'),
'user_domain': (u'default', u'Default'),
'tenant': (u'2d7365b17c8147e9aead99f870125d31', u'admin')}
(txn: tx61f057911f3e475eb1962-005811c95a)
[ ... ]
proxy-server: re.mo.te.host re.mo.te.host 27/Oct/2016/09/31/07 GET / HTTP/1.0
200 - curl/7.43.0 - - 219 - tx61f057911f3e475eb1962-005811c95a - 0.2074
- - 1477560666.966339111 1477560667.173743010 -
当然,还为admin / admin创建了容器和对象:
/opt# openstack credential create --type ec2 --project admin admin '{"access" : "admin", "secret" : "adm1n0"}'
blob :: {"access" : "admin", "secret" : "adm1n0"}
id :: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
project_id :: 2d7365b17c8147e9aead99f870125d31
type :: ec2
user_id :: eac0298a83e44b12b2c08aa98e9b1c9a
所以,实际上,keystone / swift / swift3集成是可以的,问题在于访问对象存储。关于什么是错的以及如何继续的任何想法?代理服务器的完整日志以及proxy-server.conf可从以下链接获得:
https://drive.google.com/drive/folders/0Bw0rWy6Euivqdi1lT3pnUElHUmc?usp=sharing
谢谢!
答案 0 :(得分:1)
要设置完整URLS的日志记录,请使用" force_swift_request_proxy_log = true"在proxy-server.conf(https://github.com/openstack/swift3/blob/1.11/etc/proxy-server.conf-sample#L110-L118)
中在任何情况下,问题在于容器的命名错误 - 我使用了太短的名称(例如c0)。默认情况下,Swift使用非美国东部地区的命名要求,因此名称" c0"似乎无效;看起来桶名称太短了。来自S3&#39的文档(http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules) -
符合DNS的存储桶名称的规则是:
- 存储桶名称长度必须至少为3且不超过63个字符。
- ...
尝试将dns_compliant_bucket_names选项设置为False或使用更长(> 3个字符)作为容器名称。
感谢SWIFT团队在此问题上提供帮助。