我很难使用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": "..."
}


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

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

最佳答案

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

“应用程序服务”页面上有一个入门工具包,可轻松获取入门代码并为Liberty项目设置工具链:

java - 使用OpenStack4j对IBM对象存储进行身份验证-LMLPHP

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

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

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



这是对象存储服务的比较:

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

09-26 08:10