使用 OpenStack4j 向 IBM 对象存储进行身份验证

Authenticating to IBM Object Storage with 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

问题好像是我不知道从哪里得到上面提到的DOMAINPROJECT信息,也许端点。文档说从 Object Storage 页面的 Service CredentialsView Credentials 下获取它们。我确实看到了包含以下字段的 JSON 输出:

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

None 其中似乎与域或项目信息相关,至少在名称上是这样。我什至创建了一个带有对象存储连接器的单独 Web 应用程序,并尝试按照某些文档的建议从环境变量页面获取信息,但没有成功。

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

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

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

这具有凭据的域字段。 (这里是初学者工具包的 link,我添加了注入凭据的对象存储服务:https://console.bluemix.net/developer/appservice/starter-kits. Or you can create a project with just the service and no code: https://console.bluemix.net/developer/appservice/create-project?services=Object-Storage

这里是Java Cloud Object Storage SDK 的文档,如果您想改用该服务:

https://console.bluemix.net/docs/services/cloud-object-storage/libraries/java.html#java


以下是对象存储服务的比较:

https://console.bluemix.net/catalog/infrastructure/object-storage-group