我的目标(背景信息)

我想在累积性上开发一个Java微服务。它应该能够执行以下操作:
我将向微服务发送“ 112233”,如下所示:
https://myTenant.cumulocity.com/service/my-application-name/decode?data=112233
然后,微服务应将数据拆分为用于第一次测量的“ 11”和用于第二次测量的“ 22”,等等。这些测量将被过帐到累积。

我的问题

我现在坚持让Hello, microservice tutorial工作。我无法将微服务(zip文件)部署为累赘。
"error":"security/Forbidden","info":"https://www.cumulocity.com/guides/reference-guide/#error_reporting","message":"Access is denied"}(我是管理员用户。)

我还尝试通过网站上传zip文件,这创建了一个HOSTED应用程序而不是MICROSERVICE。通过POST请求将zip上传到HOSTED应用程序实际上是可行的(我显然不需要)。

我怀疑我收到“访问被拒绝”错误,原因是累积性认为我将HOSTED应用程序上传到MICROSERVICE

到目前为止我做了什么

代码端

我从累积性位桶开发分支下载了hello-world-microservice example。 (此代码在默认分支上不可用)。
我将累积版本更改为9.3.0,似乎只有该版本存在。

HelloWorldMain.java未编辑

这是我的cumulocity.json清单文件:(角色没有区别)

{
 "apiVersion":"1",
 "type":"MICROSERVICE",
 "version":"@project.version@",
 "availability":"PRIVATE",
 "provider":{
     "name":"Cumulocity GmbH"
 },
 "isolation":"MULTI_TENANT",
 "requiredRoles":[
     "ROLE_APPLICATION_MANAGEMENT_ADMIN",
     "ROLE_MEASUREMENT_ADMIN",
     "ROLE_INVENTORY_ADMIN"
 ],
 "roles":[
     "ROLE_APPLICATION_MANAGEMENT_ADMIN",
     "ROLE_MEASUREMENT_ADMIN",
     "ROLE_INVENTORY_ADMIN"
 ],
 "livenessProbe":{
     "httpGet":{
         "path":"/health",
         "port":80
     },
     "initialDelaySeconds":15,
     "periodSeconds":10
 },
 "readinessProbe":{
     "httpGet":{
         "path":"/health",
         "port":80
     }
 }
}


这是我的application.properties文件

application.name=my-application-name
server.port=80
C8Y.baseURL=https://myTenant.cumulocity.com
C8Y.bootstrap.tenant=myTenant
C8Y.bootstrap.user=servicebootstrap_my-application-name
C8Y.bootstrap.password={SECRET_BOOTSTRAP_PASSW}
C8Y.user={MY_USERNAME}
C8Y.password={SECRET_PASSW}
C8Y.bootstrap.register=true
C8Y.microservice.isolation=MULTI_TENANT
C8Y.bootstrap.initialDelay=10000


累积量

我成功创建了一个微服务应用程序,
GET https://myTenant.cumulocity.com/application/applications/5886返回:

{
 "availability":"PRIVATE",
 "id":"5886",
 "key":"my-application-key",
 "manifest":{
     "imports":[
     ],
     "noAppSwitcher":true
 },
 "name":"my-application-name",
 "owner":{
     "self":"https://myTenant.cumulocity.com/tenant/tenants/myTenant",
     "tenant":{
         "id":"myTenant"
     }
 },
 "requiredRoles":[
     "ROLE_APPLICATION_MANAGEMENT_ADMIN",
     "ROLE_MEASUREMENT_ADMIN",
     "ROLE_INVENTORY_ADMIN"
 ],
 "roles":[
     "ROLE_APPLICATION_MANAGEMENT_ADMIN",
     "ROLE_MEASUREMENT_ADMIN",
     "ROLE_INVENTORY_ADMIN"
 ],
 "self":"https://myTenant.cumulocity.com/application/applications/5886",
 "type":"MICROSERVICE"
}


我也成功订阅了此应用程序。

当我尝试将zip文件上传到累积文件时,出现此错误:
"error":"security/Forbidden","info":"https://www.cumulocity.com/guides/reference-guide/#error_reporting","message":"Access is denied"}
(上传到HOSTED类型的应用程序效果很好,但我不希望这样。)


  注意:我也尝试使用microservice deploy script,与手动完成所有操作的结果相同。


尝试在本地运行

由于我无法使其在累积平台上工作,因此我尝试通过docker在本地运行它。我用以下命令运行它:
docker run -e "C8Y_MICROSERVICE_ISOLATION=MULTI_TENANT" 10aa0b73ddb3


  注意:我必须添加“ C8Y_MICROSERVICE_ISOLATION = MULTI_TENANT” environment variable。如果我不添加此内容,则会遇到证书/权限问题。这对我来说似乎很奇怪,因为除此信息外,所有其他信息都是从application.properties文件中读取的。


在本地docker上运行此映像时,我没有任何错误。

根据Hello, microservice tutorial,我应该可以请求curl -H "Authorization: {AUTHORIZATION}" https://myTenant.cumulocity.com/service/my-application-name/hello?who=me
返回:
{"error":"microservice/Not Found","info":"https://www.cumulocity.com/guides/reference-guide/#error_reporting","message":"Microservice my-application-name not found."}

回到问题

是否有其他人在建立累积微服务方面遇到困难?
有什么我要完全监督的吗?

最佳答案

需要将微服务托管分配给您的租户,否则它将无法正常工作,并且在这种情况下,API将被禁止返回。因此,这可能与您的用户没有关系,但是您的租户未激活该功能。

08-25 06:40