我可以将其他文件中的文本插入到cloudformation模板中吗?

时间:2018-09-11 13:54:31

标签: amazon-web-services amazon-cloudformation

例如,我的模板中有这个:

 ApiGatewayRestApi:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: MyApi
        Description: My AWS API Gateway config
        Body:
          # INSERT swagger.yml content here

是否可以使用一些cloudformation函数读取swagger.yml或将其附加在“ Body:”下?因此,我可以将其保存在另一个文件中,并且我的模板不会变得很大。

2 个答案:

答案 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中托管的文件,因此您需要单独上传部分文件。