使用 SSH 隧道在本地测试具有本地目标的应用程序

Use SSH tunnel to test apps with on-premise destination locally

我想 运行 在本地使用我的应用程序并使用通过 Cloud Connector(连通性)和目标服务连接的本地系统。我已经指向 documentation 但它没有按预期工作。是否有更详细的设置分步教程?

我遵循了 documentation 并希望能够 运行 我的应用使用

cds watch

但应用程序似乎仍在尝试从我的本地客户端调用目的地,而不是使用 ssh 隧道。

抱歉,我们没有更详细的分步指南,但我认为扩展文档是有意义的。

形成 cds watch 我猜你正在使用 CAP 应用程序。原则上这应该是可能的,但为了尽量减少错误来源,我会执行以下操作:

  • 打开ssh隧道
  • 只执行一个节点my-test.js
  • 将您的 VCAP_SERVICE 变量的副本添加到进程 (dotenv lib)
  • 记得调整 VCAP_SERVICE 中的 port/host 代理指向隧道的本地端
  • 在“my-test.js”中从 SDK 调用 getDestination() 并查看(如果您不在此处提供用户 JWT,则必须使用基本身份验证目的地)
  • 目的地应该有一个包含本地端和所有必要身份验证的代理配置headers
  • 使用此目的地执行呼叫。该请求应通过 ssh 隧道使用位于 CF 中的代理

我在另一个项目的上下文中进行了 E2E 测试,这段代码对我有用:

//cf enable-ssh My-App
//cf ssh MyApp -L 4711:connectivityproxy.cf.sap.hana.ondemand.com:20003
const destination = await getDestination('MyDestination',{})


    destination.proxyConfiguration = {
        host:'localhost',
        port:4711,
        headers:destination.proxyConfiguration.headers,
        protocol:destination.proxyConfiguration.protocol
    }

    const bps = await BusinessPartner.requestBuilder().getAll().top(3).execute(destination)

最佳 弗兰克