我很难使用OpenStack4j库(版本3.1.0)从外部Java应用程序对IBM Cloud中的对象存储服务进行身份验证。这是我正在尝试的方式:
Identifier domainIdentifier = Identifier.byName("DOMAIN");
Identifier projectIdentifier= Identifier.byName("PROJECT");
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("https://identity.open.softlayer.com/v3")
.credentials("USER", "PASS")
.scopeToProject(projectIdentifier, domainIdentifier)
.authenticate();
参考文献:
https://github.com/acloudfan/IBM-Object-Storage-Sample/
https://github.com/ibm-bluemix-mobile-services/bluemix-objectstorage-sample-liberty
问题似乎是我无法弄清楚从哪里获得上面提到的 DOMAIN 和 PROJECT 信息,也许还有端点。文档说明要从服务凭据和查看凭据下的对象存储页面获取它们。我确实看到了带有以下字段的JSON输出:
{
"apikey": "...",
"endpoints": "...",
"iam_apikey_description": "...",
"iam_apikey_name": "...",
"iam_role_crn": "...",
"iam_serviceid_crn": "...",
"resource_instance_id": "..."
}
其中任何一项似乎都与域或项目信息无关,至少是名称。我甚至创建了一个带有Object Storage Connector的独立Web应用程序,并试图从环境变量页面获取信息,正如一些文档建议的那样,但没有运气。
我最终想要实现的是能够将文件提取到我创建的容器中,并使用数据和放大器。顶级分析服务(数据科学经验)。
答案 0 :(得分:1)
混淆的原因是Bluemix上有(或曾经是)两种不同的对象存储服务(对象存储和云对象存储)。 bluemix-mobile-services SDK是为对象存储编写的,而不是您已配置的服务。
App Service页面有一个入门套件,可以很容易地获得入门代码并使用Liberty项目的工具链进行设置:
这包含凭据的域字段。 (以下是入门套件的链接&我添加了注入凭据的对象存储服务:https://console.bluemix.net/developer/appservice/starter-kits。或者您可以创建仅包含服务且没有代码的项目:https://console.bluemix.net/developer/appservice/create-project?services=Object-Storage)
如果您想使用该服务,请参阅云对象存储的Java SDK文档:
https://console.bluemix.net/docs/services/cloud-object-storage/libraries/java.html#java
以下是对象存储服务的比较:
https://console.bluemix.net/catalog/infrastructure/object-storage-group