【问题标题】:How to get stack output from AWS SAM?如何从 AWS SAM 获取堆栈输出?
【发布时间】:2019-01-12 04:06:06
【问题描述】:

我想对我的无服务器项目执行自动集成测试。为此,我需要以某种方式获取 api 端点。已经有the plugin serverless-stack-output 用于服务于该目的的无服务器框架。但我想知道在部署应用程序后如何通过 AWS SAM 实现类似的目标?

同时,如果我能以某种方式获取我的 api 的基本 url 以及各个端点,那么我就能够连接它们并对它们执行测试。

【问题讨论】:

    标签: serverless aws-sam-cli aws-sam


    【解决方案1】:

    由于 AWS SAM 基于 AWS CloudFormation,您可以使用 CloudFormation's Outputs-feature。

    如何定义此类输出非常简单。你可以例如请参阅 SAM 存储库中的 api_backend example。相关部分是输出的定义:

    Outputs:
        ApiURL:
          Description: "API endpoint URL for Prod environment"
    Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/resource/"
    

    在部署 CloudFormation 堆栈后,您仍然需要一种方法来获取输出。为此,您可以例如使用 AWS CLI:

    aws cloudformation describe-stacks --stack-name mystack \
        --query 'Stacks[0].Outputs[?OutputKey==`ApiURL`].OutputValue' \
        --output text
    

    【讨论】:

    • 谢谢。是的,这可行,但我应该为每个函数定义单独的“输出”。当应用程序中有许多功能时,这很容易导致混乱。有什么方法可以使它的语法更短吗?同样按照这个例子,应该手动编写和更新每个 api 端点(例如在这种情况下它的“/resource”)。哪个罐子很烦人。有什么方法或任何 !REF 可以获取 URL 端点?
    猜你喜欢
    • 2020-04-14
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2023-02-06
    相关资源
    最近更新 更多