我很难使用 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信息,也许还有端点。文档说要从Service Credentials和View Credentials下的Object Storage页面获取它们。我确实看到带有以下字段的 JSON 输出:
{
"apikey": "...",
"endpoints": "...",
"iam_apikey_description": "...",
"iam_apikey_name": "...",
"iam_role_crn": "...",
"iam_serviceid_crn": "...",
"resource_instance_id": "..."
}
这些似乎都与域或项目信息无关,至少在名称上是这样。我什至使用对象存储连接器创建了一个单独的 Web 应用程序,并尝试从环境变量页面获取信息,正如一些文档所建议的那样,但没有运气。
我最终想要实现的是能够将文件摄取到我创建的容器中,并使用顶部的数据和分析服务(数据科学体验)。