调用 lambda 函数的正确方法?

Proper way to call a lambda function?

我正在构建一个带有 vue.js、无服务器和 aws lambda 函数的应用程序。 我不知道调用 lambda 函数的正确方法是什么,到目前为止我的初步解决方案是:

  1. 在 api 网关中为生成 link.
  2. 的函数设置一个 api
  3. 在我的 vue 前端中 link 硬编码并使用 axios 作为我的 http 客户端来发出请求。

但我的问题是:

  1. 在前端对 url 进行硬编码是否正确?
  2. 如果我有多个 lambda 函数,那么我将有一堆 url,这似乎不是实现它的好方法。

在我的 main.js vue 前端中,我设置了这个:

Amplify.configure({
  Auth: {
    mandatorySignIn: true,
    region: config.cognito.REGION,
    userPoolId: config.cognito.USER_POOL_ID,
    identityPoolId: config.cognito.IDENTITY_POOL_ID,
    userPoolWebClientId: config.cognito.APP_CLIENT_ID
  },
  Storage: {
    region: config.s3.REGION,
    bucket: config.s3.BUCKET,
    identityPoolId: config.cognito.IDENTITY_POOL_ID
  },
  API: {
    endpoints: [
      {
        name: "Test",
        endpoint: config.apiGateway.URL,
        region: config.apiGateway.REGION
      },
    ]
  }
});

如果我的方法是正确的,我是否会在 API 配置下添加多个端点,因为我有不止一个 lambda 函数?如果不是,那么正确的实施方式是什么?

提前致谢。

快速浏览 docs here 表明推荐的设置是将 endpoint 设置为 Api 网关的基础 URL。例如,如果您导航到 Api 网关,在“仪表板”下,您应该会看到类似于以下内容的 link:

https://1234567.execute-api.us-east-2.amazonaws.com/Stage

这是您应该设置 endpoint 的 link。

然后,你会像这样使用它:

API
  .get("Test", "/path/to/lambda")
  .then(response => {
    // Add your code here
  })

用法参考here

但是,如果您使用区域端点,如 here 所述,那么您的设置是正确的,然后您需要为您拥有的每个 lambda 创建一个新条目。不过,Amplify 团队不建议这样做。

我建议将这些 URL 设置为环境变量,而不是硬编码,这样可以为您提供更大的部署灵活性。