如何从AWS SAM获取堆栈输出?

时间:2018-08-04 14:32:36

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

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

同时,如果我能以某种方式获取api的基本URL以及各个端点,那么我就可以将它们连接起来并对其进行测试。

1 个答案:

答案 0 :(得分:3)

随着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