例如,我的模板中有这个:
ApiGatewayRestApi:
Type: AWS::ApiGateway::RestApi
Properties:
Name: MyApi
Description: My AWS API Gateway config
Body:
# INSERT swagger.yml content here
是否可以使用一些cloudformation函数读取swagger.yml或将其附加在“ Body:”下?因此,我可以将其保存在另一个文件中,并且我的模板不会变得很大。
答案 0 :(得分:1)
您可以尝试BodyS3Location
。
指向以下位置的Amazon Simple Storage Service(Amazon S3)位置 一个OpenAPI文件,该文件以JSON或YAML定义了一组RESTful API 格式。
例如
"BodyS3Location": {
"Bucket": "you_bucket_name",
"Key": "filename.yaml"
}
有关更多信息,请参见BodyS3Location
答案 1 :(得分:1)
有一个Fn::Transform函数,可让您调用不同的Cloudformation宏来处理您的模板。这些宏之一是AWS::Include
这里有个例子:
Resources:
APIGateway:
Fn::Transform:
Name: AWS::Include
Parameters:
Location:
Fn::Sub: s3://partials-bucket/${PartialsEnv}/resources/api-gateway.yaml
这里api-gateway.yaml
将具有您的资源的完整定义。
您可以与其他内部函数相同的方式使用此函数。唯一需要注意的是AWS::Include
仅适用于S3中托管的文件,因此您需要单独上传部分文件。