Skip to content
This repository has been archived by the owner on Oct 17, 2024. It is now read-only.
This repository has been archived by the owner on Oct 17, 2024. It is now read-only.

Parse fails when using a number as a Lambda environment value #639

Open
@jpeach

Description

I used goformation.ParseYAML() to parse a working CloudFormation template that has some Lambda resources. The parse files with the following error:

json: cannot unmarshal number into Go struct field Template.Resources of type string

In general, the parser seems to be more sensitive to the YAML types that the real CloudFormation service is, which I guess is reasonable. However, I tracked this down to a parsing issue in AWSLambdaFunction_Environment. AWSLambdaFunction_Environment defines Variables as map[string]string, but the CloudFormation docs imply that any type is allowed as a value, https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html

In my case, I have something like this:

Parameters:
  DataVolSize:
    Type: Number
    Description: >-
      Minimum: 100 GB
    Default: 100
    MinValue: 100
Resources:
  Initializer:
    Type: 'AWS::Lambda::Function'
    Properties:
      Environment:
        Variables:
          data_volume_size: !Ref DataVolSize
      Code:
        ZipFile: |-

So the JSON parsing that is done via goformation.ParseYAML() requires me to convert the value of data_volume_size to a string, but there doesn't seem to be a way to do that.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions