Swagger AWS Cloudformation-无法从嵌套堆栈中引用资源
我面临着一些关于aws云形成的问题。我正在尝试合并嵌套堆栈,因为我已经耗尽了200个资源限制。这就是我举的一个例子 堆栈A-具有API资源的父堆栈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
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编写嵌套堆栈
考虑可伸缩性