{
  "Description": "(SO0241-CMS.10) connected-mobility-solution-on-aws - cms-alerts. Version v2.1.5",
  "Mappings": {
    "Solution": {
      "AssetsConfig": {
        "S3AssetBucketBaseName": "solutions",
        "S3AssetKeyPrefix": "connected-mobility-solution-on-aws/v2.1.5/cms-alerts"
      }
    }
  },
  "Resources": {
    "appregistryconstructappregistryapplicationAC1A319B": {
      "Type": "AWS::ServiceCatalogAppRegistry::Application",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-",
              {
                "Ref": "AWS::Region"
              },
              "-",
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-alerts",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/app-registry-construct/app-registry-application"
      }
    },
    "appregistryconstructdefaultapplicationattributes8FF6B3DB": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroup",
      "Properties": {
        "Attributes": {
          "ApplicationType": "AWS-Solutions",
          "Version": "v2.1.5",
          "SolutionID": "SO0241",
          "SolutionName": "connected-mobility-solution-on-aws"
        },
        "Description": "Attribute group for solution information",
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-",
              {
                "Ref": "AWS::Region"
              },
              "-",
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-alerts",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/app-registry-construct/default-application-attributes"
      }
    },
    "appregistryconstructappregistryapplicationattributeassociation802A10B5": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation",
      "Properties": {
        "Application": {
          "Fn::GetAtt": [
            "appregistryconstructappregistryapplicationAC1A319B",
            "Id"
          ]
        },
        "AttributeGroup": {
          "Fn::GetAtt": [
            "appregistryconstructdefaultapplicationattributes8FF6B3DB",
            "Id"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/app-registry-construct/app-registry-application-attribute-association"
      }
    },
    "moduleinputsconstructvpcnamecustomresource12726E51": {
      "Type": "Custom::SsmParameters",
      "Properties": {
        "ServiceToken": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/config/aws-resource-lookup-lambda/arn}}"
            ]
          ]
        },
        "Resource": "SsmParameters",
        "ParameterName": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/config/vpc/name"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/module-inputs-construct/vpc-name-custom-resource/Default"
      }
    },
    "ssmappuniqueidregistermodule9C5C2C5D": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "SSM parameter to register a module with an app unique ID.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/alerts"
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-alerts",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "}}"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/ssm-app-unique-id-register-module/Resource"
      }
    },
    "cmsalertscdklambdasvpcconfigconstructsecuritygroup2DF9367E": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/cdk-lambdas-vpc-config-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/cdk-lambdas-vpc-config-construct/security-group/Resource"
      }
    },
    "cmsalertsdependencylayerlambdadependencylayerversion029D33EC": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleArchitectures": [
          "x86_64",
          "arm64"
        ],
        "CompatibleRuntimes": [
          "python3.12"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetf3ee8236b23a00f767d7fe13db7200b35260cedaa5cf59617c2deb27b448b249.zip"
              ]
            ]
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/dependency-layer/lambda-dependency-layer-version/Resource",
        "aws:asset:path": "asset.f3ee8236b23a00f767d7fe13db7200b35260cedaa5cf59617c2deb27b448b249",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Content"
      }
    },
    "cmsalertsauthconstructauthorizationlambdarole9B32A517": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-authorization"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-authorization:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "{{resolve:ssm:/solution/",
                        {
                          "Ref": "AppUniqueId"
                        },
                        "/auth/token-validation-lambda/arn}}"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/authorization-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-alerts-authorization:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            },
            {
              "id": "AwsSolutions-IAM5",
              "reason": "ec2 Network Interfaces permissions need to be wildcard",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmsalertsauthconstructsecuritygroup6C1A4ACC": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/auth-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/security-group/Resource"
      }
    },
    "cmsalertsauthconstructauthorizationlambdaDAFC5893": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset78601df14f5e5d19cdc2940cddb62bbd367bdfd1c0da04ad75e71adf14ba8bdb.zip"
              ]
            ]
          }
        },
        "Description": "CMS Alerts Authorization Function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.10/v2.1.5",
            "TOKEN_VALIDATION_LAMBDA_ARN": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/auth/token-validation-lambda/arn}}"
                ]
              ]
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-authorization"
            ]
          ]
        },
        "Handler": "main.handler",
        "Layers": [
          {
            "Ref": "cmsalertsdependencylayerlambdadependencylayerversion029D33EC"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsalertsauthconstructauthorizationlambdarole9B32A517",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertsauthconstructsecuritygroup6C1A4ACC",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsalertsauthconstructauthorizationlambdarole9B32A517",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/authorization-lambda/Resource",
        "aws:asset:path": "asset.78601df14f5e5d19cdc2940cddb62bbd367bdfd1c0da04ad75e71adf14ba8bdb.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsalertsauthconstructauthorizationlambdaLogRetention82B12BEE": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsalertsauthconstructauthorizationlambdaDAFC5893"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/authorization-lambda/LogRetention/Resource"
      }
    },
    "cmsalertsauthconstructauthorizationlambdaappsyncapiappsync50B5C8FD": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmsalertsauthconstructauthorizationlambdaDAFC5893",
            "Arn"
          ]
        },
        "Principal": "appsync.amazonaws.com"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/authorization-lambda/appsync-api-appsync"
      }
    },
    "cmsalertsauthconstructauthorizationlambdagraphqlpublishapiappsyncD2CD2A71": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmsalertsauthconstructauthorizationlambdaDAFC5893",
            "Arn"
          ]
        },
        "Principal": "appsync.amazonaws.com"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/auth-construct/authorization-lambda/graphql-publish-api-appsync"
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptiontopicgeneralkeyD95E7C20": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user_subscription_topic_general_key/Resource"
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptionstablekey2A0C6A38": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-subscriptions-table-key/Resource"
      }
    },
    "cmsalertsusersubscriptionsconstructuseremailsubscriptionstableA74BB966": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "email",
            "AttributeType": "S"
          },
          {
            "AttributeName": "topic_key",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "email",
            "KeyType": "HASH"
          },
          {
            "AttributeName": "topic_key",
            "KeyType": "RANGE"
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "cmsalertsusersubscriptionsconstructusersubscriptionstablekey2A0C6A38",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-email-subscriptions-table/Resource"
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptionslambdaroleF826DC9D": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "sns:CreateTopic",
                    "sns:Subscribe",
                    "sns:TagResource",
                    "sns:Unsubscribe"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":sns:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":",
                        {
                          "Ref": "SnsTopicPrefix"
                        },
                        "-*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sns-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-user-subscriptions"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-user-subscriptions:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "dynamodb:BatchWriteItem",
                    "dynamodb:DeleteItem",
                    "dynamodb:GetItem",
                    "dynamodb:PutItem",
                    "dynamodb:Query"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsalertsusersubscriptionsconstructuseremailsubscriptionstableA74BB966",
                      "Arn"
                    ]
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey",
                    "kms:Encrypt",
                    "kms:GenerateDataKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertsusersubscriptionsconstructusersubscriptionstablekey2A0C6A38"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "dynamodb-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-subscriptions-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:sns:<AWS::Region>:<AWS::AccountId>:<SnsTopicPrefix>-*"
              ],
              "reason": "Cannot tighten the policy any more than this in order for the feature to work"
            },
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-alerts-user-subscriptions:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            },
            {
              "id": "AwsSolutions-IAM5",
              "reason": "ec2 Network Interfaces permissions need to be wildcard",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmsalertsusersubscriptionsconstructsecuritygroup838456AB": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/user-subscriptions-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/security-group/Resource"
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptionslambdaECD91DCE": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset7d005c1f093b878cbd544519c182e3b4700ce0179d816b4d5392ec10b589900a.zip"
              ]
            ]
          }
        },
        "Description": "CMS Alerts User Subscriptions Function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.10/v2.1.5",
            "USER_EMAIL_SUBSCRIPTIONS_TABLE": {
              "Ref": "cmsalertsusersubscriptionsconstructuseremailsubscriptionstableA74BB966"
            },
            "ALARM_TYPES": "[\"VEHICLE_ALARM\", \"EV_BATTERY_HEALTH_ALARM\"]",
            "SNS_TOPIC_PREFIX": {
              "Ref": "SnsTopicPrefix"
            },
            "SNS_TOPIC_GENERAL_KEY_ID": {
              "Ref": "cmsalertsusersubscriptionsconstructusersubscriptiontopicgeneralkeyD95E7C20"
            },
            "DEPLOYMENT_UUID": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-user-subscriptions"
            ]
          ]
        },
        "Handler": "app.main.handler",
        "Layers": [
          {
            "Ref": "cmsalertsdependencylayerlambdadependencylayerversion029D33EC"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsalertsusersubscriptionsconstructusersubscriptionslambdaroleF826DC9D",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertsusersubscriptionsconstructsecuritygroup838456AB",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsalertsusersubscriptionsconstructusersubscriptionslambdaroleF826DC9D",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-subscriptions-lambda/Resource",
        "aws:asset:path": "asset.7d005c1f093b878cbd544519c182e3b4700ce0179d816b4d5392ec10b589900a.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptionslambdaLogRetention8CFCEB29": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsalertsusersubscriptionsconstructusersubscriptionslambdaECD91DCE"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-subscriptions-lambda/LogRetention/Resource"
      }
    },
    "cmsalertsusersubscriptionsconstructusersubscriptionslambdaInvoke442oDR1cXBYTBDDcFxfhJMvaRE7IoYDH4R6r7tti1fYD8888EFF": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmsalertsusersubscriptionsconstructusersubscriptionslambdaECD91DCE",
            "Arn"
          ]
        },
        "Principal": "appsync.amazonaws.com"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/user-subscriptions-construct/user-subscriptions-lambda/Invoke442oDR1cXBYTBDDcFxfhJMvaRE7IoYDH4R6r7tti1fY="
      }
    },
    "cmsalertsnotificationconstructnotificationstablekeyF40EF8D4": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/notifications-table-key/Resource"
      }
    },
    "cmsalertsnotificationconstructdlqqueuekey09268231": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/dlq-queue-key/Resource"
      }
    },
    "cmsalertsnotificationconstructdeadletterqueue0DEE187C": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": {
          "Fn::GetAtt": [
            "cmsalertsnotificationconstructdlqqueuekey09268231",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/dead-letter-queue/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-SQS3",
              "reason": "This SQS queue is used as a dead letter queue for ddb stream."
            }
          ]
        }
      }
    },
    "cmsalertsnotificationconstructdeadletterqueuePolicyC571A44D": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "cmsalertsnotificationconstructdeadletterqueue0DEE187C",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Queues": [
          {
            "Ref": "cmsalertsnotificationconstructdeadletterqueue0DEE187C"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/dead-letter-queue/Policy/Resource"
      }
    },
    "cmsalertsnotificationconstructnotificationstable6C23B163": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "topic",
            "AttributeType": "S"
          },
          {
            "AttributeName": "timestamp",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "topic",
            "KeyType": "HASH"
          },
          {
            "AttributeName": "timestamp",
            "KeyType": "RANGE"
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "cmsalertsnotificationconstructnotificationstablekeyF40EF8D4",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_IMAGE"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/notifications-table/Resource"
      }
    },
    "cmsalertsnotificationconstructnotificationslambdarole4CFD52E4": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "sns:CreateTopic",
                    "sns:Publish",
                    "sns:TagResource"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":sns:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":",
                        {
                          "Ref": "SnsTopicPrefix"
                        },
                        "-*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey",
                    "kms:Encrypt",
                    "kms:GenerateDataKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertsusersubscriptionsconstructusersubscriptiontopicgeneralkeyD95E7C20"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sns-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-send-notifications"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-send-notifications:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "dynamodb:DescribeStream",
                    "dynamodb:GetRecords",
                    "dynamodb:GetShardIterator"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsalertsnotificationconstructnotificationstable6C23B163",
                      "StreamArn"
                    ]
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertsnotificationconstructnotificationstablekeyF40EF8D4"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "dynamodb-stream-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "sqs:GetQueueAttributes",
                    "sqs:GetQueueUrl",
                    "sqs:SendMessage"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsalertsnotificationconstructdeadletterqueue0DEE187C",
                      "Arn"
                    ]
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertsnotificationconstructdlqqueuekey09268231"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sqs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/notifications-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:sns:<AWS::Region>:<AWS::AccountId>:<SnsTopicPrefix>-*"
              ],
              "reason": "Cannot tighten the policy any more than this in order for the feature to work"
            },
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-alerts-send-notifications:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            },
            {
              "id": "AwsSolutions-IAM5",
              "reason": "ec2 Network Interfaces permissions need to be wildcard",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmsalertsnotificationconstructsecuritygroupA44155BD": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/notification-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/security-group/Resource"
      }
    },
    "cmsalertsnotificationconstructsendnotificationslambda6BB69DF0": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset85941871c5e05491198003ff1f117ff5248a0bf99117a5a1e3b80ddf45771535.zip"
              ]
            ]
          }
        },
        "Description": "CMS Alerts Notifications Lambda Function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.10/v2.1.5",
            "DEPLOYMENT_UUID": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-send-notifications"
            ]
          ]
        },
        "Handler": "app.main.handler",
        "Layers": [
          {
            "Ref": "cmsalertsdependencylayerlambdadependencylayerversion029D33EC"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsalertsnotificationconstructnotificationslambdarole4CFD52E4",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertsnotificationconstructsecuritygroupA44155BD",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsalertsnotificationconstructnotificationslambdarole4CFD52E4",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/send-notifications-lambda/Resource",
        "aws:asset:path": "asset.85941871c5e05491198003ff1f117ff5248a0bf99117a5a1e3b80ddf45771535.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsalertsnotificationconstructsendnotificationslambdaLogRetentionF079401F": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsalertsnotificationconstructsendnotificationslambda6BB69DF0"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/send-notifications-lambda/LogRetention/Resource"
      }
    },
    "cmsalertsnotificationconstructnotificationstableeventsourcemapping2B8E37A6": {
      "Type": "AWS::Lambda::EventSourceMapping",
      "Properties": {
        "BatchSize": 1,
        "DestinationConfig": {
          "OnFailure": {
            "Destination": {
              "Fn::GetAtt": [
                "cmsalertsnotificationconstructdeadletterqueue0DEE187C",
                "Arn"
              ]
            }
          }
        },
        "EventSourceArn": {
          "Fn::GetAtt": [
            "cmsalertsnotificationconstructnotificationstable6C23B163",
            "StreamArn"
          ]
        },
        "FunctionName": {
          "Ref": "cmsalertsnotificationconstructsendnotificationslambda6BB69DF0"
        },
        "MaximumRetryAttempts": 3,
        "StartingPosition": "TRIM_HORIZON",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/notification-construct/notifications-table-event-source-mapping/Resource"
      }
    },
    "cmsalertsincomingalertsconstructalertslambdarole234A1506": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-create-alerts"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-create-alerts:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "dynamodb:PutItem",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":dynamodb:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":table/",
                        {
                          "Ref": "cmsalertsnotificationconstructnotificationstable6C23B163"
                        }
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertsnotificationconstructnotificationstablekeyF40EF8D4"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "dynamodb-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/alerts-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-alerts-create-alerts:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            },
            {
              "id": "AwsSolutions-IAM5",
              "reason": "ec2 Network Interfaces permissions need to be wildcard",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmsalertsincomingalertsconstructalertslambdaroleDefaultPolicy61363FDF": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "sqs:ChangeMessageVisibility",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ReceiveMessage"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "cmsalertssnstosqsconstructsqsqueue8175A889",
                  "Arn"
                ]
              }
            },
            {
              "Action": "kms:Decrypt",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsalertssnstosqsconstructsqsqueuekey1D451DC2",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":kms:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":key/",
                      {
                        "Ref": "cmsalertssnstosqsconstructsqsqueuekey1D451DC2"
                      }
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsalertsincomingalertsconstructalertslambdaroleDefaultPolicy61363FDF",
        "Roles": [
          {
            "Ref": "cmsalertsincomingalertsconstructalertslambdarole234A1506"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/alerts-lambda-role/DefaultPolicy/Resource"
      }
    },
    "cmsalertsincomingalertsconstructsecuritygroup68A9B8A5": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/incoming-alerts-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/security-group/Resource"
      }
    },
    "cmsalertsincomingalertsconstructcreatealertslambda7BFED8C1": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetae2ba3e801fcbffef783131d2d4cb26961bdbd038f8234b019723a659b05f5f6.zip"
              ]
            ]
          }
        },
        "Description": "CMS Alerts Lambda Function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.10/v2.1.5",
            "NOTIFICATIONS_TABLE_NAME": {
              "Ref": "cmsalertsnotificationconstructnotificationstable6C23B163"
            },
            "SNS_TOPIC_PREFIX": {
              "Ref": "SnsTopicPrefix"
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-create-alerts"
            ]
          ]
        },
        "Handler": "app.main.handler",
        "Layers": [
          {
            "Ref": "cmsalertsdependencylayerlambdadependencylayerversion029D33EC"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsalertsincomingalertsconstructalertslambdarole234A1506",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 30,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertsincomingalertsconstructsecuritygroup68A9B8A5",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsalertsincomingalertsconstructalertslambdaroleDefaultPolicy61363FDF",
        "cmsalertsincomingalertsconstructalertslambdarole234A1506",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/create-alerts-lambda/Resource",
        "aws:asset:path": "asset.ae2ba3e801fcbffef783131d2d4cb26961bdbd038f8234b019723a659b05f5f6.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsalertsincomingalertsconstructcreatealertslambdaLogRetentionAAE324F3": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsalertsincomingalertsconstructcreatealertslambda7BFED8C1"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/create-alerts-lambda/LogRetention/Resource"
      }
    },
    "cmsalertsincomingalertsconstructcreatealertslambdaSqsEventSourcecmsalertssnstosqsconstructsqsqueueEEE97E40E907010D": {
      "Type": "AWS::Lambda::EventSourceMapping",
      "Properties": {
        "BatchSize": 1,
        "EventSourceArn": {
          "Fn::GetAtt": [
            "cmsalertssnstosqsconstructsqsqueue8175A889",
            "Arn"
          ]
        },
        "FunctionName": {
          "Ref": "cmsalertsincomingalertsconstructcreatealertslambda7BFED8C1"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/incoming-alerts-construct/create-alerts-lambda/SqsEventSource:cmsalertssnstosqsconstructsqsqueueEEE97E40/Resource"
      }
    },
    "cmsalertssnstosqsconstructsnstopickey84847481": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sns-topic-key/Resource"
      }
    },
    "cmsalertssnstosqsconstructsnstopic5DB29F7E": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "DisplayName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-topic"
            ]
          ]
        },
        "FifoTopic": false,
        "KmsMasterKeyId": {
          "Fn::GetAtt": [
            "cmsalertssnstosqsconstructsnstopickey84847481",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sns-topic/Resource"
      }
    },
    "cmsalertssnstosqsconstructsqsqueuekey1D451DC2": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "EnableKeyRotation": true,
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
              ],
              "Condition": {
                "ArnEquals": {
                  "aws:SourceArn": {
                    "Ref": "cmsalertssnstosqsconstructsnstopic5DB29F7E"
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "sns.amazonaws.com"
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sqs-queue-key/Resource"
      }
    },
    "cmsalertssnstosqsconstructdeadletterqueue79855B5A": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": {
          "Fn::GetAtt": [
            "cmsalertssnstosqsconstructsqsqueuekey1D451DC2",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/dead-letter-queue/Resource"
      }
    },
    "cmsalertssnstosqsconstructdeadletterqueuePolicy0B6F6898": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "cmsalertssnstosqsconstructdeadletterqueue79855B5A",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Queues": [
          {
            "Ref": "cmsalertssnstosqsconstructdeadletterqueue79855B5A"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/dead-letter-queue/Policy/Resource"
      }
    },
    "cmsalertssnstosqsconstructsqsqueue8175A889": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": {
          "Fn::GetAtt": [
            "cmsalertssnstosqsconstructsqsqueuekey1D451DC2",
            "Arn"
          ]
        },
        "RedrivePolicy": {
          "deadLetterTargetArn": {
            "Fn::GetAtt": [
              "cmsalertssnstosqsconstructdeadletterqueue79855B5A",
              "Arn"
            ]
          },
          "maxReceiveCount": 1
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VisibilityTimeout": 31
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sqs-queue/Resource"
      }
    },
    "cmsalertssnstosqsconstructsqsqueuePolicy0FAD020B": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "cmsalertssnstosqsconstructsqsqueue8175A889",
                  "Arn"
                ]
              }
            },
            {
              "Action": "sqs:SendMessage",
              "Condition": {
                "ArnEquals": {
                  "aws:SourceArn": {
                    "Ref": "cmsalertssnstosqsconstructsnstopic5DB29F7E"
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "sns.amazonaws.com"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "cmsalertssnstosqsconstructsqsqueue8175A889",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Queues": [
          {
            "Ref": "cmsalertssnstosqsconstructsqsqueue8175A889"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sqs-queue/Policy/Resource"
      }
    },
    "cmsalertssnstosqsconstructsqsqueuecmsalertssnstosqsconstructsnstopic06AEE3500F6F83BF": {
      "Type": "AWS::SNS::Subscription",
      "Properties": {
        "Endpoint": {
          "Fn::GetAtt": [
            "cmsalertssnstosqsconstructsqsqueue8175A889",
            "Arn"
          ]
        },
        "Protocol": "sqs",
        "TopicArn": {
          "Ref": "cmsalertssnstosqsconstructsnstopic5DB29F7E"
        }
      },
      "DependsOn": [
        "cmsalertssnstosqsconstructsqsqueuePolicy0FAD020B",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/sns-to-sqs-construct/sqs-queue/cmsalertssnstosqsconstructsnstopic06AEE350/Resource"
      }
    },
    "cmsalertsfrontendapiconstructgraphqlapiaccesslogrole035EAB20": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/graphql-api-access-log-role/Resource"
      }
    },
    "cmsalertsfrontendapiconstructgraphqlapiaccesslogroleDefaultPolicy60D5DAAB": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":logs:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":log-group:/aws/appsync/apis/",
                      {
                        "Fn::GetAtt": [
                          "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
                          "ApiId"
                        ]
                      },
                      ":log-stream:*"
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":logs:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":log-group:/aws/appsync/apis/",
                      {
                        "Fn::GetAtt": [
                          "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
                          "ApiId"
                        ]
                      }
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsalertsfrontendapiconstructgraphqlapiaccesslogroleDefaultPolicy60D5DAAB",
        "Roles": [
          {
            "Ref": "cmsalertsfrontendapiconstructgraphqlapiaccesslogrole035EAB20"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/graphql-api-access-log-role/DefaultPolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/appsync/apis/<cmsalertsfrontendapiconstructappsyncapiAB97D3AC.ApiId>:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            }
          ]
        }
      }
    },
    "cmsalertsfrontendapiconstructappsyncapiAB97D3AC": {
      "Type": "AWS::AppSync::GraphQLApi",
      "Properties": {
        "AuthenticationType": "AWS_LAMBDA",
        "LambdaAuthorizerConfig": {
          "AuthorizerResultTtlInSeconds": 300,
          "AuthorizerUri": {
            "Fn::GetAtt": [
              "cmsalertsauthconstructauthorizationlambdaDAFC5893",
              "Arn"
            ]
          },
          "IdentityValidationExpression": "^Bearer [\\w-]+\\.[\\w-]+\\.[\\w-]+$"
        },
        "LogConfig": {
          "CloudWatchLogsRoleArn": {
            "Fn::GetAtt": [
              "cmsalertsfrontendapiconstructgraphqlapiaccesslogrole035EAB20",
              "Arn"
            ]
          },
          "FieldLogLevel": "NONE"
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-frontend-api"
            ]
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "XrayEnabled": true
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/appsync-api/Resource"
      }
    },
    "cmsalertsfrontendapiconstructappsyncapiSchema2EA11510": {
      "Type": "AWS::AppSync::GraphQLSchema",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
            "ApiId"
          ]
        },
        "Definition": "type Alarm {\n  alarmType: String!\n  vin: String!\n}\n\ninput AlarmInput {\n    alarmType: String!\n    emailEnabled: Boolean!\n    vin: String!\n}\n\ntype UserPreference {\n  email: String!\n  alarms: [Alarm!]!\n}\n\ntype Query {\n  getUserSubscriptions(email: String!): UserPreference\n}\n\ntype Mutation {\n  updateUserSubscriptions(email: String!, alarms: [AlarmInput!]!): Boolean\n}\n"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/appsync-api/Schema"
      }
    },
    "cmsalertsfrontendapiconstructappsyncapiLogRetention665BAE4A": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/appsync/apis/",
              {
                "Fn::GetAtt": [
                  "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
                  "ApiId"
                ]
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/appsync-api/LogRetention/Resource"
      }
    },
    "cmsalertsfrontendapiconstructappsyncapigetusersubscriptionsresolver82CFA0F7": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
            "ApiId"
          ]
        },
        "DataSourceName": "alertsapiusersubscriptionslambdadatasource",
        "FieldName": "getUserSubscriptions",
        "Kind": "UNIT",
        "TypeName": "Query"
      },
      "DependsOn": [
        "cmsalertsfrontendapiconstructalertsapiusersubscriptionslambdadatasourceAE258C03",
        "cmsalertsfrontendapiconstructappsyncapiSchema2EA11510",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/appsync-api/get-user-subscriptions-resolver/Resource"
      }
    },
    "cmsalertsfrontendapiconstructappsyncapiupdateusersubscriptionsresolver6A965A4B": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
            "ApiId"
          ]
        },
        "DataSourceName": "alertsapiusersubscriptionslambdadatasource",
        "FieldName": "updateUserSubscriptions",
        "Kind": "UNIT",
        "TypeName": "Mutation"
      },
      "DependsOn": [
        "cmsalertsfrontendapiconstructalertsapiusersubscriptionslambdadatasourceAE258C03",
        "cmsalertsfrontendapiconstructappsyncapiSchema2EA11510",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/appsync-api/update-user-subscriptions-resolver/Resource"
      }
    },
    "cmsalertsfrontendapiconstructgraphqlapiservicerole338AA56B": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsalertsusersubscriptionsconstructusersubscriptionslambdaECD91DCE",
                      "Arn"
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/graphql-api-service-role/Resource"
      }
    },
    "cmsalertsfrontendapiconstructalertsapiusersubscriptionslambdadatasourceAE258C03": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
            "ApiId"
          ]
        },
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::GetAtt": [
              "cmsalertsusersubscriptionsconstructusersubscriptionslambdaECD91DCE",
              "Arn"
            ]
          }
        },
        "Name": "alertsapiusersubscriptionslambdadatasource",
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructgraphqlapiservicerole338AA56B",
            "Arn"
          ]
        },
        "Type": "AWS_LAMBDA"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/frontend-api-construct/alerts-api-user-subscriptions-lambda-data-source/Resource"
      }
    },
    "cmsalertspublishapiconstructgraphqlapiaccesslogroleB946708E": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-api-access-log-role/Resource"
      }
    },
    "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6": {
      "Type": "AWS::AppSync::GraphQLApi",
      "Properties": {
        "AuthenticationType": "AWS_LAMBDA",
        "LambdaAuthorizerConfig": {
          "AuthorizerResultTtlInSeconds": 300,
          "AuthorizerUri": {
            "Fn::GetAtt": [
              "cmsalertsauthconstructauthorizationlambdaDAFC5893",
              "Arn"
            ]
          },
          "IdentityValidationExpression": "^Bearer [\\w-]+\\.[\\w-]+\\.[\\w-]+$"
        },
        "LogConfig": {
          "CloudWatchLogsRoleArn": {
            "Fn::GetAtt": [
              "cmsalertspublishapiconstructgraphqlapiaccesslogroleB946708E",
              "Arn"
            ]
          },
          "FieldLogLevel": "NONE"
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-publish-api"
            ]
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "XrayEnabled": true
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-publish-api/Resource"
      }
    },
    "cmsalertspublishapiconstructgraphqlpublishapiSchema978B9321": {
      "Type": "AWS::AppSync::GraphQLSchema",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6",
            "ApiId"
          ]
        },
        "Definition": "schema {\n  query: Query\n  mutation: Mutation\n}\n\nenum STATUS {\n  FAILURE\n  SUCCESS\n}\n\nenum AlarmType {\n  VEHICLE_ALARM\n  EV_BATTERY_HEALTH_ALARM\n}\n\ntype Response {\n  status: STATUS!\n  message: String\n}\n\ntype Mutation {\n  publish(vin: String!, alarmType: AlarmType!, message: String!): Response!\n}\n\ntype Query {\n  ping: String @deprecated(reason: \"https://github.com/graphql/graphql-spec/issues/490\")\n}\n"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-publish-api/Schema"
      }
    },
    "cmsalertspublishapiconstructgraphqlpublishapiLogRetentionD38E372C": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/appsync/apis/",
              {
                "Fn::GetAtt": [
                  "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6",
                  "ApiId"
                ]
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-publish-api/LogRetention/Resource"
      }
    },
    "cmsalertspublishapiconstructgraphqlpublishapipublishuserpreferencesresolver20772413": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6",
            "ApiId"
          ]
        },
        "DataSourceName": "alertsapipublishlambdadatasource",
        "FieldName": "publish",
        "Kind": "UNIT",
        "TypeName": "Mutation"
      },
      "DependsOn": [
        "cmsalertspublishapiconstructalertsapipublishlambdadatasourceCECC12FB",
        "cmsalertspublishapiconstructgraphqlpublishapiSchema978B9321",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-publish-api/publish-user-preferences-resolver/Resource"
      }
    },
    "cmsalertspublishapiconstructpublishlambdaroleABDF717E": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "sns:Publish",
                  "Effect": "Allow",
                  "Resource": {
                    "Ref": "cmsalertssnstosqsconstructsnstopic5DB29F7E"
                  }
                },
                {
                  "Action": [
                    "kms:Decrypt",
                    "kms:DescribeKey",
                    "kms:Encrypt",
                    "kms:GenerateDataKey"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":kms:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":key/",
                        {
                          "Ref": "cmsalertssnstosqsconstructsnstopickey84847481"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sns-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-publish"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-alerts-publish:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/publish-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-alerts-publish:log-stream:*"
              ],
              "reason": "Log stream has to be a wildcard"
            },
            {
              "id": "AwsSolutions-IAM5",
              "reason": "ec2 Network Interfaces permissions need to be wildcard",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmsalertspublishapiconstructsecuritygroupA7A1EC74": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-alerts/cms-alerts/publish-api-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/security-group/Resource"
      }
    },
    "cmsalertspublishapiconstructpublishlambdaFC5F95FF": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset9a7d34a16f9643768b3b07d27fe8a5761121c746ab6ee23b8b344fa5e272fc13.zip"
              ]
            ]
          }
        },
        "Description": "CMS Alerts Publish Function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.10/v2.1.5",
            "ALERTS_SNS_TOPIC_ARN": {
              "Ref": "cmsalertssnstosqsconstructsnstopic5DB29F7E"
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-alerts-publish"
            ]
          ]
        },
        "Handler": "main.handler",
        "Layers": [
          {
            "Ref": "cmsalertsdependencylayerlambdadependencylayerversion029D33EC"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructpublishlambdaroleABDF717E",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertspublishapiconstructsecuritygroupA7A1EC74",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsalertspublishapiconstructpublishlambdaroleABDF717E",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/publish-lambda/Resource",
        "aws:asset:path": "asset.9a7d34a16f9643768b3b07d27fe8a5761121c746ab6ee23b8b344fa5e272fc13.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsalertspublishapiconstructpublishlambdaLogRetention994F29B8": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsalertspublishapiconstructpublishlambdaFC5F95FF"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/publish-lambda/LogRetention/Resource"
      }
    },
    "cmsalertspublishapiconstructgraphqlapiservicerole9E790837": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsalertspublishapiconstructpublishlambdaFC5F95FF",
                      "Arn"
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/graphql-api-service-role/Resource"
      }
    },
    "cmsalertspublishapiconstructalertsapipublishlambdadatasourceCECC12FB": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6",
            "ApiId"
          ]
        },
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::GetAtt": [
              "cmsalertspublishapiconstructpublishlambdaFC5F95FF",
              "Arn"
            ]
          }
        },
        "Name": "alertsapipublishlambdadatasource",
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructgraphqlapiservicerole9E790837",
            "Arn"
          ]
        },
        "Type": "AWS_LAMBDA"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/publish-api-construct/alerts-api-publish-lambda-data-source/Resource"
      }
    },
    "cmsalertsmoduleoutputsalertspublishapiendpointA821542F": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/alerts/publish-api/endpoint"
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-alerts",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmsalertspublishapiconstructgraphqlpublishapi6BB822A6",
            "GraphQLUrl"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/module-outputs/alerts-publish-api-endpoint/Resource"
      }
    },
    "cmsalertsmoduleoutputsalertsfrontendapiendpointBD018934": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/alerts/frontend-api/endpoint"
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-alerts",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmsalertsfrontendapiconstructappsyncapiAB97D3AC",
            "GraphQLUrl"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/cms-alerts/module-outputs/alerts-frontend-api-endpoint/Resource"
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:CreateNetworkInterfacePermission"
                  ],
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/1}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/2}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:DescribeNetworkInterfaces",
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM4",
              "appliesTo": [
                "Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ],
              "reason": "Log retention lambda uses managed policies"
            }
          ]
        }
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:DeleteRetentionPolicy",
                "logs:PutRetentionPolicy"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
        "Roles": [
          {
            "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::*"
              ],
              "reason": "Log retention lambda uses managed policies"
            }
          ]
        }
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Handler": "index.handler",
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d.zip"
              ]
            ]
          }
        },
        "Role": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-alerts"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsalertscdklambdasvpcconfigconstructsecuritygroup2DF9367E",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-alerts/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Resource",
        "aws:asset:path": "asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "CDKMetadata": {
      "Type": "AWS::CDK::Metadata",
      "Properties": {
        "Analytics": "v2:deflate64:H4sIAAAAAAAA/2VSTW8bIRD9Lb6zJF6rVY91nDaHuJLjtXqNZvF4Tc0CZsDRCvHfK9j4S7kw78233lDzWD/W/HECH1SJ7aFSsuWx8SAObLHTf8BaqTsGH/QeCd1JChTgQZkOrHXYSfJu4HGx03NrlRTgpdG5cu69k23w+OJMsF89cyIjZElPjKjPQ53U3Qoc9OjR5ZILSQxFzWODIjjph0vPO0diCvp2CzwuYUD3Fx19LnPHfwctzlve4hW6XlJJ+XVC7RsTnMCzAoud/upNjGbvQISe+DwbRjP+FMQB/RMQMgk9j2ujMJcXuzJKiqGMKygxZTriS9Ot0aMuuxx64vEVS9YrDoltBw292bY8bqAdmxWQGB2Jx7eAoThHUN7rnBuaGGnicWOsFKVJAU1oSThpzzrc8sTAWhq04PHFgd0f1dzKnFTY2/KeNWKPPbA1klGn8YIXvCyneQYPo4I5eGUpsUUgb/qcfw7f4uu3uHiL4I2Hrhzixzf+ffIz/2IyKuTdqRJGk3dBeHrIgUiaqqxYo2ljmiNl+arPP9McaWPGJVNiq8HvjX6Y8WnNp9PJP5KyckF72SNfj/Y/78yLzToDAAA="
      },
      "Metadata": {
        "aws:cdk:path": "cms-alerts/CDKMetadata/Default"
      },
      "Condition": "CDKMetadataAvailable"
    }
  },
  "Parameters": {
    "AppUniqueId": {
      "Type": "String",
      "AllowedPattern": "^(?!-)[a-z0-9-]+(?<!-)$",
      "ConstraintDescription": "AppUniqueId must contain min 3 and max 10 characters, and contain only lowercase alphanumeric characters and dashes.",
      "Description": "Application unique identifier used to uniquely name resources within the stack.",
      "MaxLength": 10,
      "MinLength": 3
    },
    "SnsTopicPrefix": {
      "Type": "String",
      "Default": "CMS",
      "ConstraintDescription": "Topic name prefix should contain a minimum of 3 characters.",
      "Description": "SNS topic name prefix for topics created by alerts module.",
      "MinLength": 3
    }
  },
  "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-northeast-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-3"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-4"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-northwest-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-2"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "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"
                },
                "il-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-central-1"
              ]
            },
            {
              "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::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-1"
              ]
            }
          ]
        },
        {
          "Fn::Equals": [
            {
              "Ref": "AWS::Region"
            },
            "us-west-2"
          ]
        }
      ]
    }
  }
}