如何获得在serverless.yml中引用“堆栈输出”参数的堆栈?

时间:2019-06-24 19:30:23

标签: aws-lambda serverless-framework aws-serverless

如何获取在serverless.yml中引用“堆栈输出”的堆栈?

例如:

  • 堆栈A 输出资源A
  • 堆栈B 引用资源A

我知道,如果我尝试从堆栈A 中排除资源A ,我将收到一条消息错误,指出堆栈B 使用了资源A

因此应该存在一种列出它们(引荐来源网址)的方法。

执行时:

$ serverless info --stage prod --verbose

返回堆栈输出。.但是我想知道是否也可以获取引荐来源网址。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据documentation,您可以将输出部分作为列表项放在资源下:

DiscoveryDocumentRequest discoveryDocument = null;
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == EnvironmentName.Development)
    {
        discoveryDocument = new DiscoveryDocumentRequest()
        {
            Address = "http://myurl:5000",
            Policy = {
                 RequireHttps = false,
                 Authority = "http://myurl:5000",
                 ValidateEndpoints = false
            },
         };
    }
    else
    {
         discoveryDocument = new DiscoveryDocumentRequest()
         {
             Address = "http://myurl:5000",
             Policy = {
                  RequireHttps = false,
                  Authority = "https://myurl",
                  ValidateEndpoints = false
             },
         };
}
var disco = await httpClient.GetDiscoveryDocumentAsync(discoveryDocument);

注意:文档中有一个小错误,请不要忘记在CognitoUserPoolId下缩进“ Value”。

更新:

这可能是另一个选择,每个部分都在单独的文件中。确保以 Resources 开始资源文件,以 Outputs 开始输出文件。

serverless.yml

resources:
  - Resources:
      ApiGatewayRestApi:
        Type: AWS::ApiGateway::RestApi

  - ${file(resources/first-cf-resources.yml)}
  - ${file(resources/second-cf-resources.yml)}

  - Outputs:
      CognitoUserPoolId:
        Value:
          Ref: CognitoUserPool

resources.yml

...

resources:
  - ${file(resources.yml)}
  - ${file(outputs.yml)}

outputs.yml

Resources:
  CognitoUserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      UserPoolName: my-user-pool
      AutoVerifiedAttributes:
        - phone_number