Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swagger AWS Cloudformation-无法从嵌套堆栈中引用资源_Swagger_Amazon Cloudformation - Fatal编程技术网

Swagger AWS Cloudformation-无法从嵌套堆栈中引用资源

Swagger AWS Cloudformation-无法从嵌套堆栈中引用资源,swagger,amazon-cloudformation,Swagger,Amazon Cloudformation,我面临着一些关于aws云形成的问题。我正在尝试合并嵌套堆栈,因为我已经耗尽了200个资源限制。这就是我举的一个例子 堆栈A-具有API资源的父堆栈 RestAPI: Type: AWS::Serverless::Api Properties: StageName: !Sub ${Stage} DefinitionBody: Fn::Transform: Name: AWS::Include Param

我面临着一些关于aws云形成的问题。我正在尝试合并嵌套堆栈,因为我已经耗尽了200个资源限制。这就是我举的一个例子

堆栈A-具有API资源的父堆栈

RestAPI:
    Type: AWS::Serverless::Api
    Properties:
      StageName: !Sub ${Stage}
      DefinitionBody:
        Fn::Transform:
          Name: AWS::Include
          Parameters:
            Location:
              - Fn::Join:
                - ''
                - - 's3://'
                  - Ref: S3BucketName
                  - '/swagger.yaml'

GetLogs:
    Type: AWS::Serverless::Function
    Properties:
      Handler: Logs_Lambda/index.getHandler
      Role: !GetAtt RDSLambdaExecutionRole.Arn
      Events:
        GetUsers:
          Type: Api
          Properties:
            Path: management/logs
            Method: get
            RestApiId: !Ref RestAPI 
堆栈B-堆栈A的子堆栈

LambdaSaveLogsInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref SaveLogs
    Action: 'lambda:InvokeFunction'
    Principal: apigateway.amazonaws.com

SaveLogs:
  Type: AWS::Serverless::Function
  Properties:
    FunctionName: SaveLogs
    CodeUri:
      Bucket: !Ref BuildBucketName
      Key: !Ref BuildObjectKey
    Handler: logs_Lambda/index.saveHandler
    Role: !Ref RDSLambdaExecutionRoleArn
    Events:
      SaveLogs:
        Type: Api
        Properties:
          Path: management/logs/save
          Method: post
          RestApiId: !Ref RestAPI
我的招摇过市文件有这些参考资料

x-amazon-apigateway-integration:
        uri: 
            Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${SaveLogs.Arn}/invocations"

x-amazon-apigateway-integration:
        uri: 
            Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetLogs.Arn}/invocations"
请注意,堆栈B引用的是作为参数从堆栈a传递的RestAPI资源

我的问题和我的尝试

  • 当代码管道执行表示无法创建更改集时,创建更改集失败 查找对SaveLogs.Arn的任何引用。我认为这是一堆 将代码嵌入RestAPI,因此无法找到引用 用于子堆栈的资源
  • 因此,我从堆栈B为SaveLogs Arn做了一个输出,并更新了swagger文件以引用该输出。然后,它在变更集上给出了一个错误,称为“资源之间的循环依赖”(听起来也不错)
  • 然后,我执行并导出了SaveLogs Arn资源 成功创建变更集,但在部署变更集失败
问题

  • 我的问题是我们如何克服这一点

  • 有没有一种方法可以为每个堆栈使用不同的swagger文件 不知怎么的

  • 是否有其他方法为API编写嵌套堆栈
    考虑可伸缩性

有人能对此发表评论或提供帮助吗

先谢谢你