{
  "Description": "(SO0158-Demo) - The AWS CloudFormation template for deployment of the application-monitoring-with-amazon-cloudwatch Puma workload demo resource. Version v1.2.6",
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "PumaDemoInfraDemoVPCD4F883F2": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock": "10.0.1.0/26",
        "EnableDnsHostnames": true,
        "EnableDnsSupport": true,
        "InstanceTenancy": "default",
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/Resource"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet1SubnetE65726A7": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "AvailabilityZone": {
          "Fn::Select": [
            0,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.1.0/28",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PublicSubnet"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet1"
          }
        ],
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W33",
              "reason": "Need public IP for demo web server "
            }
          ]
        }
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet1RouteTable184204C1": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet1"
          }
        ],
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet1/RouteTable"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet1RouteTableAssociation73B18129": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet1RouteTable184204C1"
        },
        "SubnetId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet1SubnetE65726A7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet1/RouteTableAssociation"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet1DefaultRoute981574A7": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "PumaDemoInfraDemoVPCIGWB516AAA9"
        },
        "RouteTableId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet1RouteTable184204C1"
        }
      },
      "DependsOn": [
        "PumaDemoInfraDemoVPCVPCGW92213FAE"
      ],
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet1/DefaultRoute"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet2Subnet1A95E832": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "AvailabilityZone": {
          "Fn::Select": [
            1,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.1.16/28",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PublicSubnet"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet2"
          }
        ],
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W33",
              "reason": "Need public IP for demo web server "
            }
          ]
        }
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet2RouteTable8E9AE78B": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet2"
          }
        ],
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet2/RouteTable"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet2RouteTableAssociation0E01D01E": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet2RouteTable8E9AE78B"
        },
        "SubnetId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet2Subnet1A95E832"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet2/RouteTableAssociation"
      }
    },
    "PumaDemoInfraDemoVPCPublicSubnetSubnet2DefaultRouteE9A6FC3B": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "PumaDemoInfraDemoVPCIGWB516AAA9"
        },
        "RouteTableId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet2RouteTable8E9AE78B"
        }
      },
      "DependsOn": [
        "PumaDemoInfraDemoVPCVPCGW92213FAE"
      ],
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/PublicSubnetSubnet2/DefaultRoute"
      }
    },
    "PumaDemoInfraDemoVPCIGWB516AAA9": {
      "Type": "AWS::EC2::InternetGateway",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/IGW"
      }
    },
    "PumaDemoInfraDemoVPCVPCGW92213FAE": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "InternetGatewayId": {
          "Ref": "PumaDemoInfraDemoVPCIGWB516AAA9"
        },
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoVPC/VPCGW"
      }
    },
    "PumaDemoInfraVPCFlowLogGroup40DECF6E": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "RetentionInDays": 7
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W84",
              "reason": " log group is encrypted with the default master key"
            }
          ]
        }
      }
    },
    "PumaDemoInfraflowRole79DD33F5": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "vpc-flow-logs.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/flowRole/Resource"
      }
    },
    "PumaDemoInfraflowRoleDefaultPolicyD102CADE": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "PumaDemoInfraVPCFlowLogGroup40DECF6E",
                  "Arn"
                ]
              }
            },
            {
              "Action": "iam:PassRole",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "PumaDemoInfraflowRole79DD33F5",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "PumaDemoInfraflowRoleDefaultPolicyD102CADE",
        "Roles": [
          {
            "Ref": "PumaDemoInfraflowRole79DD33F5"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/flowRole/DefaultPolicy/Resource"
      }
    },
    "PumaDemoInfraDemoFlowLog34B4236D": {
      "Type": "AWS::EC2::FlowLog",
      "Properties": {
        "DeliverLogsPermissionArn": {
          "Fn::GetAtt": [
            "PumaDemoInfraflowRole79DD33F5",
            "Arn"
          ]
        },
        "LogDestinationType": "cloud-watch-logs",
        "LogGroupName": {
          "Ref": "PumaDemoInfraVPCFlowLogGroup40DECF6E"
        },
        "ResourceId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        },
        "ResourceType": "VPC",
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoFlowLog"
          }
        ],
        "TrafficType": "ALL"
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoFlowLog/FlowLog"
      }
    },
    "PumaDemoInfraDemoSG3CF12BD8": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoInfra/DemoSG",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "allow outbound http",
            "FromPort": 80,
            "IpProtocol": "tcp",
            "ToPort": 80
          },
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "allow outbound https",
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "allow HTTP traffic",
            "FromPort": 80,
            "IpProtocol": "tcp",
            "ToPort": 80
          }
        ],
        "VpcId": {
          "Ref": "PumaDemoInfraDemoVPCD4F883F2"
        }
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W40",
              "reason": "Demo resource"
            },
            {
              "id": "W5",
              "reason": "Demo resource"
            },
            {
              "id": "W9",
              "reason": "Demo resource"
            },
            {
              "id": "W2",
              "reason": "Demo resource"
            }
          ]
        }
      }
    },
    "PumaDemoInfraDemoInstancePolicy43A0DC25": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "cloudwatch:PutMetricData",
                "ec2:DescribeVolumes",
                "ec2:DescribeTags",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams",
                "logs:DescribeLogGroups",
                "logs:CreateLogStream",
                "logs:CreateLogGroup"
              ],
              "Effect": "Allow",
              "Resource": "*",
              "Sid": "CWWrite"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "PumaDemoInfraDemoInstancePolicy43A0DC25",
        "Roles": [
          {
            "Ref": "PumaDemoEC2InstanceRole682C3467"
          }
        ]
      },
      "Metadata": {
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W12",
              "reason": "* is required for creating log groups and put metrics"
            }
          ]
        }
      }
    },
    "PumaDemoEC2InstanceRole682C3467": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "ec2.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2/InstanceRole/Resource"
      }
    },
    "PumaDemoEC2InstanceProfile3FD1667E": {
      "Type": "AWS::IAM::InstanceProfile",
      "Properties": {
        "Roles": [
          {
            "Ref": "PumaDemoEC2InstanceRole682C3467"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2/InstanceProfile"
      }
    },
    "PumaDemoEC2002F8DF8": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "AvailabilityZone": {
          "Fn::Select": [
            0,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "IamInstanceProfile": {
          "Ref": "PumaDemoEC2InstanceProfile3FD1667E"
        },
        "ImageId": {
          "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamzn2amikernel510hvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"
        },
        "InstanceType": "t3.micro",
        "LaunchTemplate": {
          "LaunchTemplateName": "PumaDemoEC2LaunchTemplate",
          "Version": {
            "Fn::GetAtt": [
              "PumaDemoEC2LaunchTemplate48B38708",
              "LatestVersionNumber"
            ]
          }
        },
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "PumaDemoInfraDemoSG3CF12BD8",
              "GroupId"
            ]
          }
        ],
        "SubnetId": {
          "Ref": "PumaDemoInfraDemoVPCPublicSubnetSubnet1SubnetE65726A7"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2"
          }
        ],
        "UserData": {
          "Fn::Base64": {
            "Fn::Join": [
              "",
              [
                "#!/bin/bash\nset -x\necho \"======setting up cloudwatch agent and puma server======\"\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/amazon-cloudwatch-agent.rpm\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/linux_cw_infra.json -P /opt/aws/amazon-cloudwatch-agent/bin/\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma_config.json -P /opt/aws/amazon-cloudwatch-agent/bin/\nyum install -y amazon-cloudwatch-agent.rpm\nsystemctl restart amazon-cloudwatch-agent\nwget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-devel-3.8.11-1.fc21.x86_64.rpm\nwget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-3.8.11-1.fc21.x86_64.rpm\nyum install -y sqlite-3.8.11-1.fc21.x86_64.rpm sqlite-devel-3.8.11-1.fc21.x86_64.rpm git\namazon-linux-extras install epel -y\nyum install -y supervisor \nyum install -y gcc-c++ libyaml-devel zlib-devel libfff-devel openssl-devel readline-devel\namazon-linux-extras install -y ruby3.0 epel\nyum install -y ruby-devel\ngem install bundler rails\nexport PATH=/usr/local/bin/:$PATH\nrails new ~/sample-app\ncd ~/sample-app\nrake db:create assets:precompile\nrm -f /etc/supervisord.conf\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/supervisord.conf -P /etc/\nsystemctl restart supervisord\nsystemctl enable supervisord\nrm -f /root/sample-app/config/puma.rb\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/puma.rb -P /root/sample-app/config\nbundle add puma-plugin-statsd statsd-instrument\nbundle install\nrm -f /root/sample-app/app/controllers/application_controller.rb\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/application_controller.rb -P /root/sample-app/app/controllers\nrm -f /root/sample-app/config/routes.rb\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/routes.rb -P /root/sample-app/config\nrm -f /root/sample-app/config/environments/production.rb\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/production.rb -P /root/sample-app/config/environments\nmkdir /root/sample-app/app/views/page\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/index.html.erb -P /root/sample-app/app/views/page\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/statsd_instrument.rb -P /root/sample-app/config/initializers\nwget https://solutions-reference.s3.amazonaws.com/application-monitoring-with-amazon-cloudwatch/v1.2.6/puma.config/page_controller.rb -P /root/sample-app/app/controllers\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/infra_config.json\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/puma_config.json\nexport DAEMONIZE_PUMA=true\nRAILS_ENV='production' RAILS_PORT='80' bundle exec puma -C config/puma.rb &\n/opt/aws/bin/cfn-signal -e $? --stack ",
                {
                  "Ref": "AWS::StackId"
                },
                " --resource PumaDemoEC2002F8DF8 --region ",
                {
                  "Ref": "AWS::Region"
                }
              ]
            ]
          }
        }
      },
      "DependsOn": [
        "PumaDemoEC2InstanceRole682C3467"
      ],
      "CreationPolicy": {
        "ResourceSignal": {
          "Count": 1,
          "Timeout": "PT20M"
        }
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2/Resource"
      }
    },
    "PumaDemoEC2LaunchTemplate48B38708": {
      "Type": "AWS::EC2::LaunchTemplate",
      "Properties": {
        "LaunchTemplateData": {
          "MetadataOptions": {
            "HttpTokens": "required"
          }
        },
        "LaunchTemplateName": "PumaDemoEC2LaunchTemplate"
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/PumaDemoEC2/LaunchTemplate"
      }
    },
    "CDKMetadata": {
      "Type": "AWS::CDK::Metadata",
      "Properties": {
        "Analytics": "v2:deflate64:H4sIAAAAAAAA/1WQTWvDMAyGf0vvrtdlh23HUlgphC0kpdehOGrq1rGCLS+UkP8+8tVsJz16JfRKiuT7q9ysoPFrVdzWRuey/UTPWGQM6iag8d8tqki2p1qJ3dmekp1IQm60ykJukXttoZQC4xFyg4u+aFvvSWlgTfbR3MPBMjqLvAfGBu6TzZRtmUFdKrQsPgw1MZV9fcYMVXCa73tHoR48/wkH6xmsmlwWjiFYdTliVRtg7ISh0ss2pvIxZ+ZOaKhkm9J40hATMloNay40T08cnbXBrhMpegpu9EvAQYWMrk++AtdhfNeflh3ZQvev6YSlAuXVP/08v8loI19WV6/12gXLukKZjvEXDUTt2LoBAAA="
      },
      "Metadata": {
        "aws:cdk:path": "CW-Monitoring-Framework-Stack/Puma-Demo-Stack/CDKMetadata/Default"
      },
      "Condition": "CDKMetadataAvailable"
    }
  },
  "Parameters": {
    "SsmParameterValueawsserviceamiamazonlinuxlatestamzn2amikernel510hvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter": {
      "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
      "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2"
    }
  },
  "Outputs": {
    "WebURL": {
      "Description": "URL for puma demo server",
      "Value": {
        "Fn::Join": [
          "",
          [
            "http://",
            {
              "Fn::GetAtt": [
                "PumaDemoEC2002F8DF8",
                "PublicIp"
              ]
            }
          ]
        ]
      }
    }
  },
  "Conditions": {
    "CDKMetadataAvailable": {
      "Fn::Or": [
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "af-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-northwest-1"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "sa-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-2"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-2"
              ]
            }
          ]
        }
      ]
    }
  }
}