使用OpenStack4j对IBM Object Storage进行身份验证

时间:2017-11-23 19:13:11

标签: java ibm-cloud object-storage openstack4j

我很难使用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应用程序,并试图从环境变量页面获取信息,正如一些文档建议的那样,但没有运气。

我最终想要实现的是能够将文件提取到我创建的容器中,并使用数据和放大器。顶级分析服务(数据科学经验)。

1 个答案:

答案 0 :(得分:1)

混淆的原因是Bluemix上有(或曾经是)两种不同的对象存储服务(对象存储云对象存储)。 bluemix-mobile-services SDK是为对象存储编写的,而不是您已配置的服务。

App Service页面有一个入门套件,可以很容易地获得入门代码并使用Liberty项目的工具链进行设置:

example of starter

这包含凭据的域字段。 (以下是入门套件的链接&我添加了注入凭据的对象存储服务: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