【问题标题】:How can I get appsync API endpoint in serverless configure file?如何在无服务器配置文件中获取 appsync API 端点?
【发布时间】:2020-11-01 01:57:08
【问题描述】:

我正在使用 serverless 部署 Appsync API 和一些 lambda 函数。这个插件https://github.com/sid88in/serverless-appsync-plugin 用于部署Appsync。 lambda 和 Appsync 定义在同一个 serverless.yml 文件中,它们被一起部署。

我的 lambda 需要知道在 sls deploy 期间创建的 Appsync API 端点。如何将 Appsync 端点作为环境变量引用到我的 lambda?

我的serverless.yml:

function:
   myHandler:
      handler: src/lambdas.myHandler
      name: myHandler
      environment:
        ENDPOINT: # HERE, how can I get appsync endpoint url?

custom:
  appSync:
    name: ${self:provider.stackName}
    ...

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework aws-appsync


    【解决方案1】:

    AppSync 插件公开了一个变量 GraphQlApi,您可以将其用于您的环境变量,这些变量可以在您的 lambdas 中自动访问。

    在您的配置中:

    environment:
      API_URL: { Fn::GetAtt: [ GraphQlApi, GraphQLUrl ] }
    

    在你的 lambda 中:

    process.env.API_URL
    

    或者直接 lambda 配置:

      name: myHandler
      environment:
        ENDPOINT: { Fn::GetAtt: [ GraphQlApi, GraphQLUrl ] }
    

    【讨论】:

    • Ref::GraphQlApi 的语法是否正确?我试过了,API_URL 的值是Ref::GraphQlApi,而不是真正的值。
    • 试试Fn::GetAtt: [ GraphQlApi, GraphQLUrl ] }。忘了Ref::GraphQlApi 只能直接在 CloudFormation 部分中使用
    • 是的,它有效。我目前只有一个 appsync API。它如何支持多个 API?
    • 你在它前面加上名字:MyReallyCoolGraphQlApi
    猜你喜欢
    • 2013-06-30
    • 2020-10-31
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2015-08-26
    相关资源
    最近更新 更多