1

我很难使用 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

问题似乎是我无法弄清楚从哪里获取上面提到的DOMAINPROJECT信息,也许还有端点。文档说要从Service CredentialsView Credentials下的Object Storage页面获取它们。我确实看到带有以下字段的 JSON 输出:

{
  "apikey": "...",
  "endpoints": "...",
  "iam_apikey_description": "...",
  "iam_apikey_name": "...",
  "iam_role_crn": "...",
  "iam_serviceid_crn": "...",
  "resource_instance_id": "..."
}

这些似乎都与域或项目信息无关,至少在名称上是这样。我什至使用对象存储连接器创建了一个单独的 Web 应用程序,并尝试从环境变量页面获取信息,正如一些文档所建议的那样,但没有运气。

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

4

1 回答 1

1

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

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

启动器示例

这具有凭据的域字段。(这里是入门工具包的链接,我添加了注入凭据的对象存储服务:https ://console.bluemix.net/developer/appservice/starter-kits 。或者您可以只使用该服务创建一个项目,然后没有代码:https ://console.bluemix.net/developer/appservice/create-project?services=Object-Storage )

如果您想改用该服务,以下是适用于Cloud 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

于 2017-11-24T03:50:10.403 回答