如何从AWS :: Serverless :: Function(SAM)输出api资源arns?

时间:2016-12-08 04:22:47

标签: amazon-web-services amazon-cloudformation

我需要访问已使用Cloudformation SAM模板创建和订阅的网关的arn。

当我尝试以下操作时,我在输出块中收到错误'未解决的资源依赖关系[GetResource]。'

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 
Resources:
  TestFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: dist
      Handler: index.handler
      Events:
        GetResource:
          Type: Api
          Properties:
            Path: /path
            Method: get

Outputs:   
  ReadApi:
    Value: !Ref GetResource
    Export:
      Name: ReadApi
  

命令失败:/ bin / sh -c aws cloudformation deploy --region" ap-southeast-2" --template文件   ./serverless-output.yml --capabilities CAPABILITY_IAM --stack-name   " SamTest"

     

创建变更集失败:Waiter ChangeSetCreateComplete失败:   服务员遇到终端故障状态:FAILED。原因:   Outputs块中未解决的资源依赖[GetResource]   模板

是否可以通过这种方式访问​​网关ref?

2 个答案:

答案 0 :(得分:1)

尝试以下方法获取资源的API ID。

Outputs:   
   ReadApiId:
      Value: !GetAtt TestFunction.RootResourceId
      Export:
         Name: ReadApiId

答案 1 :(得分:1)

您可以使用!Ref ServerlessRestApi访问隐式Rest API资源的ID。

由SAM中的事件生成的API资源可在以下位置找到:https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api