代码之家  ›  专栏  ›  技术社区  ›  Timothy Van Wichelen

Cumulocity微服务部署:访问被拒绝

  •  0
  • Timothy Van Wichelen  · 技术社区  · 6 年前

    我的目标(背景信息)

    我想开发一个关于积雨性的java微服务。它应该能够执行以下操作:
    我将向microservice发送“112233”,如下所示: https://myTenant.cumulocity.com/service/my-application-name/decode?data=112233
    然后,微服务应将第一次测量的数据分为“11”,第二次测量的数据分为“22”,等等。这些测量结果将发布到积云度。

    我的问题

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

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

    我怀疑我收到了“拒绝访问”错误,因为积雨性认为我上载了 托管 应用于 微服务

    到目前为止我所做的

    代码端

    我下载了 hello-world-microservice example 来自积雨学bitbucket开发分支。(此代码在默认分支上不可用)。
    我将积云度版本更改为 9.3.0 ,似乎只有此版本存在。

    HelloWorldMain。java未经编辑

    这是我的 积雨性。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.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
    

    积雨性侧

    我成功了 已创建 微服务应用程序,
    收到 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文件上载到cumulocity时,出现以下错误: “错误”:“安全/禁止”,“信息”:https://www.cumulocity.com/guides/reference-guide/#error_reporting“,”message“:“拒绝访问”}
    (正在上载到 托管 类型应用程序工作正常,但我不希望这样。)

    笔记 :我还尝试使用 microservice deploy script ,这与手动执行所有操作的结果相同。

    正在尝试在本地运行

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

    笔记 :我必须添加“C8Y\u MICROSERVICE\u ISOLATION=多租户” environment variable 。如果我不添加此项,我会遇到凭据/权限问题。这对我来说似乎很奇怪,因为所有其他信息都是从 应用属性 除此之外的文件。

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

    根据 您好,microservice教程 ,我应该可以请求 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."}

    回到问题上来

    还有谁在积雨学上建立微服务有困难吗?
    有什么是我完全监督的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   TyrManuZ    6 年前

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