{
  "Description": "(SO0241-CMS.15) connected-mobility-solution-on-aws - cms-predictive-maintenance. Version v2.1.5",
  "Mappings": {
    "Solution": {
      "AssetsConfig": {
        "S3AssetBucketBaseName": "solutions",
        "S3AssetKeyPrefix": "connected-mobility-solution-on-aws/v2.1.5/cms-predictive-maintenance"
      }
    }
  },
  "Resources": {
    "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-predictive-maintenance/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"
              },
              "/predictive-maintenance"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "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-predictive-maintenance/ssm-app-unique-id-register-module/Resource"
      }
    },
    "cmspredictivemaintenancecdklambdasvpcconstructsecuritygroup74503C58": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/cdk-lambdas-vpc-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/cdk-lambdas-vpc-construct/security-group/Resource"
      }
    },
    "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0": {
      "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"
                  ]
                },
                "asset71ef344810db61fce9cb9384b0b93acb2ba4562427cfa47913071bbf6e741ea4.zip"
              ]
            ]
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/dependency-layer-construct/lambda-dependency-layer-version/Resource",
        "aws:asset:path": "asset.71ef344810db61fce9cb9384b0b93acb2ba4562427cfa47913071bbf6e741ea4",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Content"
      }
    },
    "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F": {
      "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"
                          },
                          "-predictive-maintenance-custom-resource"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-predictive-maintenance-custom-resource:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-logs-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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/custom-resource-lambda-construct/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>-predictive-maintenance-custom-resource:log-stream:*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AcdpUniqueId>-predictive-maintenance-custom-resource:log-stream:*"
              ],
              "reason": "Log retention lambda uses policies that require wildcard permissions"
            },
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ],
              "reason": "ec2 Network Interfaces permissions need to be wildcard"
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancecustomresourcelambdaconstructsecuritygroup6062633E": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/custom-resource-lambda-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/custom-resource-lambda-construct/security-group/Resource"
      }
    },
    "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E": {
      "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"
                  ]
                },
                "assetabbe3819ecd21e4bcf81cc7a2af59f1b5a47b2753320e2cecf7b9340510d5d43.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.15/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-custom-resource"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0"
          }
        ],
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 300,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmspredictivemaintenancecustomresourcelambdaconstructsecuritygroup6062633E",
                "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": [
        "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/custom-resource-lambda-construct/lambda-function/Resource",
        "aws:asset:path": "asset.abbe3819ecd21e4bcf81cc7a2af59f1b5a47b2753320e2cecf7b9340510d5d43.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."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionLogRetention215007C0": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/custom-resource-lambda-construct/lambda-function/LogRetention/Resource"
      }
    },
    "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "LifecycleConfiguration": {
          "Rules": [
            {
              "Id": "expire-current-version-and-delete-old-objects",
              "Status": "Enabled",
              "ExpirationInDays": {
                "Ref": "S3LogExpirationDays"
              },
              "NoncurrentVersionExpirationInDays": {
                "Ref": "S3LogNoncurrentVersionExpirationDays"
              },
              "AbortIncompleteMultipartUpload": {
                "DaysAfterInitiation": 1
              }
            }
          ]
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/sagemaker-assets-bucket-construct/log-bucket/Resource"
      }
    },
    "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketPolicy6C822ADC": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "s3:PutObject",
              "Condition": {
                "ArnLike": {
                  "aws:SourceArn": {
                    "Fn::GetAtt": [
                      "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D",
                      "Arn"
                    ]
                  }
                },
                "StringEquals": {
                  "aws:SourceAccount": {
                    "Ref": "AWS::AccountId"
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "logging.s3.amazonaws.com"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/sagemaker-assets-bucket-construct/log-bucket/Policy/Resource"
      }
    },
    "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "LoggingConfiguration": {
          "DestinationBucketName": {
            "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructlogbucketB2F96BDD"
          }
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/sagemaker-assets-bucket-construct/encrypted-bucket/Resource"
      }
    },
    "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucketPolicy6C1C1A2F": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/sagemaker-assets-bucket-construct/encrypted-bucket/Policy/Resource"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudioroleD3EA4249": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "sagemaker.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Description": "SageMaker Domain Role",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "sagemaker:*",
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sagemaker"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:DescribeLogStreams",
                    "logs:GetLogEvents",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/sagemaker/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/sagemaker/*:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to write to CloudWatch log groups.",
              "appliesTo": [
                "Action::sagemaker:*",
                "Resource::*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/sagemaker/*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/sagemaker/*:log-stream:*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudiocmkkeyCE2F1079": {
      "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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/cmk-key/Resource"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudiosagemakerdomain969A118A": {
      "Type": "AWS::SageMaker::Domain",
      "Properties": {
        "AuthMode": "IAM",
        "DefaultUserSettings": {
          "ExecutionRole": {
            "Fn::GetAtt": [
              "cmspredictivemaintenancepredictorconstructsagemakerstudioroleD3EA4249",
              "Arn"
            ]
          }
        },
        "DomainName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-studio"
            ]
          ]
        },
        "KmsKeyId": {
          "Ref": "cmspredictivemaintenancepredictorconstructsagemakerstudiocmkkeyCE2F1079"
        },
        "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}}"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/sagemaker-domain"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudiocustomresourcepolicyA0987818": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "elasticfilesystem:DeleteFileSystem",
                "elasticfilesystem:DeleteMountTarget",
                "elasticfilesystem:DescribeMountTargetSecurityGroups",
                "elasticfilesystem:DescribeMountTargets"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":elasticfilesystem:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":file-system/",
                    {
                      "Fn::GetAtt": [
                        "cmspredictivemaintenancepredictorconstructsagemakerstudiosagemakerdomain969A118A",
                        "HomeEfsFileSystemId"
                      ]
                    }
                  ]
                ]
              }
            },
            {
              "Action": [
                "ec2:DeleteSecurityGroup",
                "ec2:DescribeSecurityGroups",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancepredictorconstructsagemakerstudiocustomresourcepolicyA0987818",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to delete EFS Security Groups.",
              "appliesTo": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudiodeletesagemakerdomainefscustomresourceA15FB129": {
      "Type": "Custom::DeleteSageMakerDomainEfs",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E",
            "Arn"
          ]
        },
        "Resource": "DeleteSageMakerDomainEfs",
        "HomeEfsFileSystemId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerstudiosagemakerdomain969A118A",
            "HomeEfsFileSystemId"
          ]
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancepredictorconstructsagemakerstudiocustomresourcepolicyA0987818",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/delete-sagemaker-domain-efs-custom-resource/Default"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerstudiosagemakeradminuserprofile8E00099C": {
      "Type": "AWS::SageMaker::UserProfile",
      "Properties": {
        "DomainId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerstudiosagemakerdomain969A118A",
            "DomainId"
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "UserProfileName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-admin"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-studio/sagemaker-admin-user-profile"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdaroleAE3709D8": {
      "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"
                          },
                          "-predictive-maintenance-deploy-pipeline-model"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-predictive-maintenance-deploy-pipeline-model:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-logs-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"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "sagemaker:CreateEndpoint",
                    "sagemaker:CreateEndpointConfig",
                    "sagemaker:CreateModel",
                    "sagemaker:ListModelPackages",
                    "sagemaker:UpdateEndpoint"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sagemaker"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iam:PassRole",
                  "Condition": {
                    "StringEquals": {
                      "iam:PassedToService": "sagemaker.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iam::",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":role/",
                        {
                          "Ref": "AppUniqueId"
                        },
                        "-predictive-maintenance-pipeline-role-",
                        {
                          "Ref": "AWS::Region"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iam"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/deploy-pipeline-model-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required by deploy pipeline model lambda function to create Sagemaker resources",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-predictive-maintenance-deploy-pipeline-model:log-stream:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinesecuritygroup84C19A85": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/security-group/Resource"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10": {
      "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"
                  ]
                },
                "assetdfc0dfd0f7158c485182f76a4b1629483c5903b24a1749c760bcbbd24083a22e.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.15/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-deploy-pipeline-model"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0"
          }
        ],
        "MemorySize": 512,
        "Role": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdaroleAE3709D8",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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": [
                "cmspredictivemaintenancepredictorconstructsagemakerpipelinesecuritygroup84C19A85",
                "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": [
        "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdaroleAE3709D8",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/deploy-pipeline-model-lambda-function/Resource",
        "aws:asset:path": "asset.dfc0dfd0f7158c485182f76a4b1629483c5903b24a1749c760bcbbd24083a22e.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."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionLogRetentionED6E7BD8": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/deploy-pipeline-model-lambda-function/LogRetention/Resource"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionInvokeew5F4PlPzT1RwKCZKzcvLyf8BxHcpAitjLXBNdvt22kE1D12BEC": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10",
            "Arn"
          ]
        },
        "Principal": "sagemaker.amazonaws.com"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/deploy-pipeline-model-lambda-function/Invokeew5F4PlPzT1RwKCZKzcvLyf8BxHcpAitjLXBNdvt22k="
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelineroleDC833CE2": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "sagemaker.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "sagemaker:*",
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sagemaker"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:PutObject"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":s3:::",
                          {
                            "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                          },
                          "/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":s3:::",
                          {
                            "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                          }
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "s3"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iam:PassRole",
                  "Condition": {
                    "StringEquals": {
                      "iam:PassedToService": "sagemaker.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iam::",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":role/",
                        {
                          "Ref": "AppUniqueId"
                        },
                        "-predictive-maintenance-pipeline-role-",
                        {
                          "Ref": "AWS::Region"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iam"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogDelivery",
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:DeleteLogDelivery",
                    "logs:Describe*",
                    "logs:GetLogDelivery",
                    "logs:GetLogEvents",
                    "logs:ListLogDeliveries",
                    "logs:PutLogEvents",
                    "logs:PutResourcePolicy",
                    "logs:UpdateLogDelivery"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10",
                      "Arn"
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:BatchGetImage",
                    "ecr:DescribeImages",
                    "ecr:GetAuthorizationToken",
                    "ecr:GetDownloadUrlForLayer"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ecr"
          }
        ],
        "RoleName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-pipeline-role-",
              {
                "Ref": "AWS::Region"
              }
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required by SageMaker pipelines to run the steps, read/write assets to the Sagemaker bucket and to write to CloudWatch log groups.",
              "appliesTo": [
                "Action::sagemaker:*",
                "Resource::*",
                "Resource::arn:<AWS::Partition>:s3:::<cmspredictivemaintenancesagemakerassetsbucketconstructcmkencryptedbucket3E9D71D9>/*",
                "Action::logs:Describe*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinecustomresourcepolicy02ADF98C": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:PutObject",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":s3:::",
                    {
                      "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                    },
                    "/pipelines/predictive-maintenance-pipeline.json"
                  ]
                ]
              }
            },
            {
              "Action": [
                "s3:ListBucket",
                "s3:PutObject"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                      },
                      "/*"
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                      }
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancepredictorconstructsagemakerpipelinecustomresourcepolicy02ADF98C",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required by custom resource to create pipeline definition and to read/write assets to the Sagemaker bucket.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:s3:::<cmspredictivemaintenancesagemakerassetsbucketconstructcmkencryptedbucket3E9D71D9>/*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipelinecreateanduploadsagemakerpipelinedefinitioncustomresourceD60049D9": {
      "Type": "Custom::CreateAndUploadSageMakerPipelineDefinition",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E",
            "Arn"
          ]
        },
        "Resource": "CreateAndUploadSageMakerPipelineDefinition",
        "PipelineName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-pipeline"
            ]
          ]
        },
        "PipelineAssetsBucketName": {
          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
        },
        "PipelineDefinitionS3Key": "pipelines/predictive-maintenance-pipeline.json",
        "PipelineRoleArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelineroleDC833CE2",
            "Arn"
          ]
        },
        "PipelineDeployModelLambdaArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10",
            "Arn"
          ]
        },
        "SageMakerModelEndpointName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-endpoint"
            ]
          ]
        },
        "ResourceNameSuffix": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/create-and-upload-sagemaker-pipeline-definition-custom-resource/Default"
      }
    },
    "cmspredictivemaintenancepredictorconstructsagemakerpipeline67D87A68": {
      "Type": "AWS::SageMaker::Pipeline",
      "Properties": {
        "PipelineDefinition": {
          "PipelineDefinitionS3Location": {
            "Bucket": {
              "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
            },
            "Key": "pipelines/predictive-maintenance-pipeline.json"
          }
        },
        "PipelineName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-pipeline"
            ]
          ]
        },
        "RoleArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelineroleDC833CE2",
            "Arn"
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "cmspredictivemaintenancepredictorconstructsagemakerpipelinecreateanduploadsagemakerpipelinedefinitioncustomresourceD60049D9",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predictor-construct/sagemaker-pipeline/pipeline"
      }
    },
    "cmspredictivemaintenanceagentactiongroupconstructlambdaroleD00E4A89": {
      "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"
                          },
                          "-predictive-maintenance-action-group"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-predictive-maintenance-action-group:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-logs-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"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "s3:ListBucket",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":s3:::",
                        {
                          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                        }
                      ]
                    ]
                  }
                },
                {
                  "Action": "s3:GetObject",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":s3:::",
                        {
                          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                        },
                        "/inference/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "prediction-results-s3-policy"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to write to log streams and to attach VPC to Lambda. Wildcard permissions required to get object with a given prefix from S3 bucket.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-predictive-maintenance-action-group:log-stream:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*",
                "Resource::arn:<AWS::Partition>:s3:::<cmspredictivemaintenancesagemakerassetsbucketconstructcmkencryptedbucket3E9D71D9>/inference/*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenanceagentactiongroupconstructsecuritygroupF3AC066B": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/security-group/Resource"
      }
    },
    "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionA0EFD591": {
      "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"
                  ]
                },
                "asset19e696d1bb238c9f9c8aac868114f2c9d9cf882fcf048b6a32191ef85053514f.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.15/v2.1.5",
            "INFERENCE_DATA_S3_BUCKET_NAME": {
              "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
            },
            "INFERENCE_INPUT_DATA_S3_KEY": "inference/latest.csv",
            "INFERENCE_OUTPUT_DATA_S3_KEY": "inference/latest.csv.out"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-action-group"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0"
          }
        ],
        "MemorySize": 512,
        "Role": {
          "Fn::GetAtt": [
            "cmspredictivemaintenanceagentactiongroupconstructlambdaroleD00E4A89",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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": [
                "cmspredictivemaintenanceagentactiongroupconstructsecuritygroupF3AC066B",
                "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": [
        "cmspredictivemaintenanceagentactiongroupconstructlambdaroleD00E4A89",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/lambda-function/Resource",
        "aws:asset:path": "asset.19e696d1bb238c9f9c8aac868114f2c9d9cf882fcf048b6a32191ef85053514f.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."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionLogRetention0D1FADB1": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionA0EFD591"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/lambda-function/LogRetention/Resource"
      }
    },
    "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionInvokeu1TDdDMoLpes23omAp0kUXOcNSkFsO0n9KPkoXL686A69B110": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionA0EFD591",
            "Arn"
          ]
        },
        "Principal": "bedrock.amazonaws.com"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/agent-action-group-construct/lambda-function/Invokeu1TDdDMoLpes23omAp0kUXOcNSk--FsO0n9K--PkoXL68="
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructcustomresourcepolicy4069B218": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "aoss:ListVpcEndpoints",
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructcustomresourcepolicy4069B218",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-security-construct/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required for aoss:ListVpcEndpoints action.",
              "appliesTo": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructmanageaossvpcendpointcustomresourceBA109271": {
      "Type": "Custom::GetAOSSVPCEndpointId",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E",
            "Arn"
          ]
        },
        "Resource": "GetAOSSVPCEndpointId",
        "VpcEndpointName": {
          "Fn::Join": [
            "",
            [
              "aoss-{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructcustomresourcepolicy4069B218",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-security-construct/manage-aoss-vpc-endpoint-custom-resource/Default"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructaosscollectionnetworkpolicy733A9CE0": {
      "Type": "AWS::OpenSearchServerless::SecurityPolicy",
      "Properties": {
        "Description": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance- - network security policy"
            ]
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-"
            ]
          ]
        },
        "Policy": {
          "Fn::Join": [
            "",
            [
              "[{\"Rules\": [{\"Resource\": [\"collection/",
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-\"], \"ResourceType\": \"dashboard\"}, {\"Resource\": [\"collection/",
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-\"], \"ResourceType\": \"collection\"}], \"AllowFromPublic\": false, \"SourceVPCEs\": [\"",
              {
                "Fn::GetAtt": [
                  "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructmanageaossvpcendpointcustomresourceBA109271",
                  "vpce_id"
                ]
              },
              "\"], \"SourceServices\": [\"bedrock.amazonaws.com\"]}]"
            ]
          ]
        },
        "Type": "network"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-security-construct/aoss-collection-network-policy"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructaosscollectionencryptionpolicy24BA947A": {
      "Type": "AWS::OpenSearchServerless::SecurityPolicy",
      "Properties": {
        "Description": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance- - encryption security policy"
            ]
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-"
            ]
          ]
        },
        "Policy": {
          "Fn::Join": [
            "",
            [
              "{\"Rules\": [{\"Resource\": [\"collection/",
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-\"], \"ResourceType\": \"collection\"}], \"AWSOwnedKey\": true}"
            ]
          ]
        },
        "Type": "encryption"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-security-construct/aoss-collection-encryption-policy"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbcollectionconstructaosscollectionAA5E634A": {
      "Type": "AWS::OpenSearchServerless::Collection",
      "Properties": {
        "Description": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance- - collection"
            ]
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-"
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Type": "VECTORSEARCH"
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructaosscollectionencryptionpolicy24BA947A",
        "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructaosscollectionnetworkpolicy733A9CE0",
        "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructcustomresourcepolicy4069B218",
        "cmspredictivemaintenancechatbotconstructvectordbsecurityconstructmanageaossvpcendpointcustomresourceBA109271",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-collection-construct/aoss-collection"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockroleconstructiamroleB444FFCB": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "bedrock.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "RoleName": {
          "Fn::Join": [
            "",
            [
              "AmazonBedrockExecutionRoleForKnowledgeBase-",
              {
                "Ref": "AppUniqueId"
              },
              "-",
              {
                "Ref": "AWS::Region"
              }
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-role-construct/iam-role/Resource"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectordbdataaccessconstructaosscollectiondataaccesspolicyA42CDAB3": {
      "Type": "AWS::OpenSearchServerless::AccessPolicy",
      "Properties": {
        "Description": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance- - data access policy"
            ]
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-"
            ]
          ]
        },
        "Policy": {
          "Fn::Join": [
            "",
            [
              "[{\"Rules\": [{\"Resource\": [\"collection/",
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-\"], \"Permission\": [\"aoss:DescribeCollectionItems\", \"aoss:CreateCollectionItems\", \"aoss:UpdateCollectionItems\"], \"ResourceType\": \"collection\"}, {\"Resource\": [\"index/",
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-/*\"], \"Permission\": [\"aoss:UpdateIndex\", \"aoss:DescribeIndex\", \"aoss:ReadDocument\", \"aoss:WriteDocument\", \"aoss:CreateIndex\", \"aoss:DeleteIndex\"], \"ResourceType\": \"index\"}], \"Principal\": [\"",
              {
                "Fn::GetAtt": [
                  "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F",
                  "Arn"
                ]
              },
              "\", \"",
              {
                "Fn::GetAtt": [
                  "cmspredictivemaintenancechatbotconstructbedrockroleconstructiamroleB444FFCB",
                  "Arn"
                ]
              },
              "\"], \"Description\": \"data access policy for opensearch collection\"}]"
            ]
          ]
        },
        "Type": "data"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-db-data-access-construct/aoss-collection-data-access-policy"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectorindexconstructcustomresourcepolicy59A9E5BC": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "aoss:APIAccessAll",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":aoss:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":collection/",
                    {
                      "Fn::GetAtt": [
                        "cmspredictivemaintenancechatbotconstructvectordbcollectionconstructaosscollectionAA5E634A",
                        "Id"
                      ]
                    }
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancechatbotconstructvectorindexconstructcustomresourcepolicy59A9E5BC",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-index-construct/custom-resource-policy/Resource"
      }
    },
    "cmspredictivemaintenancechatbotconstructvectorindexconstructmanageaossvectorindexcustomresource47577859": {
      "Type": "Custom::ManageAOSSVectorIndex",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E",
            "Arn"
          ]
        },
        "Resource": "ManageAOSSVectorIndex",
        "VectorIndexConfigJsonStr": "{\"settings\": {\"index.knn\": \"true\"}, \"mappings\": {\"properties\": {\"default-vector\": {\"type\": \"knn_vector\", \"dimension\": 1024, \"method\": {\"name\": \"hnsw\", \"space_type\": \"l2\", \"engine\": \"faiss\", \"parameters\": {\"ef_construction\": 512, \"m\": 16}}}, \"AMAZON_BEDROCK_METADATA\": {\"type\": \"text\"}, \"AMAZON_BEDROCK_TEXT_CHUNK\": {\"type\": \"text\"}}}}",
        "VectorIndexName": "default-index",
        "AOSSCollectionId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructvectordbcollectionconstructaosscollectionAA5E634A",
            "Id"
          ]
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructvectordbdataaccessconstructaosscollectiondataaccesspolicyA42CDAB3",
        "cmspredictivemaintenancechatbotconstructvectorindexconstructcustomresourcepolicy59A9E5BC",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/vector-index-construct/manage-aoss-vector-index-custom-resource/Default"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructbedrockpolicyE0A24CE2": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "aoss:APIAccessAll",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":aoss:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":collection/",
                    {
                      "Fn::GetAtt": [
                        "cmspredictivemaintenancechatbotconstructvectordbcollectionconstructaosscollectionAA5E634A",
                        "Id"
                      ]
                    }
                  ]
                ]
              }
            },
            {
              "Action": "sts:AssumeRole",
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": {
                    "Ref": "AWS::AccountId"
                  }
                },
                "ArnLike": {
                  "aws:SourceArn": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:aws:bedrock:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":knowledge-base/*"
                      ]
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": "bedrock:InvokeModel",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":bedrock:",
                    {
                      "Ref": "AWS::Region"
                    },
                    "::foundation-model/cohere.embed-english-v3"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructbedrockpolicyE0A24CE2",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancechatbotconstructbedrockroleconstructiamroleB444FFCB"
          }
        ]
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructvectorindexconstructcustomresourcepolicy59A9E5BC",
        "cmspredictivemaintenancechatbotconstructvectorindexconstructmanageaossvectorindexcustomresource47577859",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-knowledge-base-construct/bedrock-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required for giving Bedrock service access to knowledge base resources.",
              "appliesTo": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C": {
      "Type": "AWS::Bedrock::KnowledgeBase",
      "Properties": {
        "KnowledgeBaseConfiguration": {
          "Type": "VECTOR",
          "VectorKnowledgeBaseConfiguration": {
            "EmbeddingModelArn": {
              "Fn::Join": [
                "",
                [
                  "arn:",
                  {
                    "Ref": "AWS::Partition"
                  },
                  ":bedrock:",
                  {
                    "Ref": "AWS::Region"
                  },
                  "::foundation-model/cohere.embed-english-v3"
                ]
              ]
            }
          }
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-knowledge-base"
            ]
          ]
        },
        "RoleArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockroleconstructiamroleB444FFCB",
            "Arn"
          ]
        },
        "StorageConfiguration": {
          "OpensearchServerlessConfiguration": {
            "CollectionArn": {
              "Fn::Join": [
                "",
                [
                  "arn:",
                  {
                    "Ref": "AWS::Partition"
                  },
                  ":aoss:",
                  {
                    "Ref": "AWS::Region"
                  },
                  ":",
                  {
                    "Ref": "AWS::AccountId"
                  },
                  ":collection/",
                  {
                    "Fn::GetAtt": [
                      "cmspredictivemaintenancechatbotconstructvectordbcollectionconstructaosscollectionAA5E634A",
                      "Id"
                    ]
                  }
                ]
              ]
            },
            "FieldMapping": {
              "MetadataField": "AMAZON_BEDROCK_METADATA",
              "TextField": "AMAZON_BEDROCK_TEXT_CHUNK",
              "VectorField": "default-vector"
            },
            "VectorIndexName": "default-index"
          },
          "Type": "OPENSEARCH_SERVERLESS"
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructbedrockpolicyE0A24CE2",
        "cmspredictivemaintenancechatbotconstructvectorindexconstructcustomresourcepolicy59A9E5BC",
        "cmspredictivemaintenancechatbotconstructvectorindexconstructmanageaossvectorindexcustomresource47577859",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-knowledge-base-construct/knowledge-base"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructcustomresourcepolicy18C3D19F": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "bedrock:StartIngestionJob",
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructcustomresourcepolicy18C3D19F",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancecustomresourcelambdaconstructlambdarole5C24959F"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-data-source-construct/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required for Bedrock StartIngestion action.",
              "appliesTo": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructbedrockpolicy440C25AD": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:ListBucket",
              "Condition": {
                "StringEquals": {
                  "aws:ResourceAccount": {
                    "Ref": "AWS::AccountId"
                  }
                }
              },
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":s3:::",
                    {
                      "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                    }
                  ]
                ]
              }
            },
            {
              "Action": "s3:GetObject",
              "Condition": {
                "StringEquals": {
                  "aws:ResourceAccount": {
                    "Ref": "AWS::AccountId"
                  }
                }
              },
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":s3:::",
                    {
                      "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                    },
                    "/predictive-maintenance/docs/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructbedrockpolicy440C25AD",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancechatbotconstructbedrockroleconstructiamroleB444FFCB"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-data-source-construct/bedrock-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to read all objects with a prefix from an S3 bucket.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:s3:::<cmspredictivemaintenancesagemakerassetsbucketconstructcmkencryptedbucket3E9D71D9>/predictive-maintenance/docs/*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructdatasource0B402DAF": {
      "Type": "AWS::Bedrock::DataSource",
      "Properties": {
        "DataSourceConfiguration": {
          "S3Configuration": {
            "BucketArn": {
              "Fn::Join": [
                "",
                [
                  "arn:",
                  {
                    "Ref": "AWS::Partition"
                  },
                  ":s3:::",
                  {
                    "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
                  }
                ]
              ]
            },
            "BucketOwnerAccountId": {
              "Ref": "AWS::AccountId"
            },
            "InclusionPrefixes": [
              "predictive-maintenance/docs"
            ]
          },
          "Type": "S3"
        },
        "KnowledgeBaseId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C",
            "KnowledgeBaseId"
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-data-source"
            ]
          ]
        },
        "VectorIngestionConfiguration": {
          "ChunkingConfiguration": {
            "ChunkingStrategy": "FIXED_SIZE",
            "FixedSizeChunkingConfiguration": {
              "MaxTokens": 512,
              "OverlapPercentage": 20
            }
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-data-source-construct/data-source"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructingestbedrockdatasourcecustomresource38CB450A": {
      "Type": "Custom::IngestBedrockDataSource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancecustomresourcelambdaconstructlambdafunctionE0665B5E",
            "Arn"
          ]
        },
        "Resource": "IngestBedrockDataSource",
        "DataSourceId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructdatasource0B402DAF",
            "DataSourceId"
          ]
        },
        "KnowledgeBaseId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C",
            "KnowledgeBaseId"
          ]
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancechatbotconstructbedrockdatasourceconstructcustomresourcepolicy18C3D19F",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-data-source-construct/ingest-bedrock-data-source-custom-resource/Default"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructrole39F024E6": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "bedrock.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "bedrock:InvokeModel",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":bedrock:",
                        {
                          "Ref": "AWS::Region"
                        },
                        "::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "foundational-model"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "bedrock:Retrieve",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":bedrock:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":knowledge-base/",
                        {
                          "Fn::GetAtt": [
                            "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C",
                            "KnowledgeBaseId"
                          ]
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "knowledge-base"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionA0EFD591",
                      "Arn"
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "action-group"
          }
        ],
        "RoleName": {
          "Fn::Join": [
            "",
            [
              "AmazonBedrockExecutionRoleForAgents-",
              {
                "Ref": "AppUniqueId"
              },
              "-",
              {
                "Ref": "AWS::Region"
              }
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/role/Resource"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructguardrailcmkkeyAD04C0AC": {
      "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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/guardrail-cmk-key/Resource"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructguardrail8359B238": {
      "Type": "AWS::Bedrock::Guardrail",
      "Properties": {
        "BlockedInputMessaging": "Sorry, the model cannot answer this question.",
        "BlockedOutputsMessaging": "Sorry, the model cannot answer this question.",
        "ContentPolicyConfig": {
          "FiltersConfig": [
            {
              "InputStrength": "HIGH",
              "OutputStrength": "HIGH",
              "Type": "HATE"
            },
            {
              "InputStrength": "HIGH",
              "OutputStrength": "HIGH",
              "Type": "INSULTS"
            },
            {
              "InputStrength": "HIGH",
              "OutputStrength": "HIGH",
              "Type": "SEXUAL"
            },
            {
              "InputStrength": "HIGH",
              "OutputStrength": "HIGH",
              "Type": "VIOLENCE"
            },
            {
              "InputStrength": "HIGH",
              "OutputStrength": "HIGH",
              "Type": "MISCONDUCT"
            },
            {
              "InputStrength": "HIGH",
              "OutputStrength": "NONE",
              "Type": "PROMPT_ATTACK"
            }
          ]
        },
        "KmsKeyArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructguardrailcmkkeyAD04C0AC",
            "Arn"
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-guardrail"
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/guardrail"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentcmkkeyA6376A88": {
      "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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/agent-cmk-key/Resource"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentE962E37C": {
      "Type": "AWS::Bedrock::Agent",
      "Properties": {
        "ActionGroups": [
          {
            "ActionGroupExecutor": {
              "Lambda": {
                "Fn::GetAtt": [
                  "cmspredictivemaintenanceagentactiongroupconstructlambdafunctionA0EFD591",
                  "Arn"
                ]
              }
            },
            "ActionGroupName": "vehicle-maintenance-status",
            "ActionGroupState": "ENABLED",
            "ApiSchema": {
              "Payload": "{\"openapi\": \"3.0.3\", \"info\": {\"title\": \"Powertools API\", \"version\": \"1.0.0\"}, \"servers\": [{\"url\": \"/\"}], \"paths\": {\"/vehicle_maintenance_status\": {\"get\": {\"summary\": \"GET /vehicle_maintenance_status\", \"description\": \"Gets the maintenance status of a vehicle with a given VIN.\", \"operationId\": \"get_vehicle_maintenance_status_vehicle_maintenance_status_get\", \"parameters\": [{\"description\": \"Vehicle VIN number.\", \"required\": true, \"schema\": {\"type\": \"string\"}, \"name\": \"vin\", \"in\": \"query\"}], \"responses\": {\"200\": {\"description\": \"Successful Response\", \"content\": {\"application/json\": {\"schema\": {\"type\": \"boolean\", \"title\": \"Return\"}}}}}}}}}"
            }
          }
        ],
        "AgentName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-agent"
            ]
          ]
        },
        "AgentResourceRoleArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructrole39F024E6",
            "Arn"
          ]
        },
        "AutoPrepare": true,
        "CustomerEncryptionKeyArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentcmkkeyA6376A88",
            "Arn"
          ]
        },
        "FoundationModel": "anthropic.claude-3-sonnet-20240229-v1:0",
        "GuardrailConfiguration": {
          "GuardrailIdentifier": {
            "Fn::GetAtt": [
              "cmspredictivemaintenancechatbotconstructbedrockagentconstructguardrail8359B238",
              "GuardrailId"
            ]
          },
          "GuardrailVersion": "DRAFT"
        },
        "IdleSessionTTLInSeconds": 300,
        "Instruction": "You are a friendly and useful agent that answers questions about vehicles, vehicle maintenance, vehicle repair, and related topics. Use the knowledge bases and functions to answer the queries when needed but do not reveal any internal details about the knowledge bases and functions.",
        "KnowledgeBases": [
          {
            "Description": "Knowledge Base used to perform RAG.",
            "KnowledgeBaseId": {
              "Fn::GetAtt": [
                "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C",
                "KnowledgeBaseId"
              ]
            },
            "KnowledgeBaseState": "ENABLED"
          }
        ],
        "SkipResourceInUseCheckOnDelete": true,
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/agent"
      }
    },
    "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentaliasE7C26A43": {
      "Type": "AWS::Bedrock::AgentAlias",
      "Properties": {
        "AgentAliasName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-default-alias"
            ]
          ]
        },
        "AgentId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentE962E37C",
            "AgentId"
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/chatbot-construct/bedrock-agent-construct/agent-alias"
      }
    },
    "cmspredictivemaintenanceauthorizationlambdaconstructlambdaroleD96E9E75": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "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"
                          },
                          "-predictive-maintenance-authorization"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-predictive-maintenance-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-vpc-policy"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to write to CloudWatch log groups and for enabling VPC.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-predictive-maintenance-authorization:log-stream:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenanceauthorizationlambdaconstructsecuritygroup18D4826A": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/security-group/Resource"
      }
    },
    "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC": {
      "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"
                  ]
                },
                "asset368e143803aed3cf95fc1e281a2a4575e0115f5db6ef671c152852f86c6825cb.zip"
              ]
            ]
          }
        },
        "Description": "CMS Predictive Maintenance APIs authorization lambda function",
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.15/v2.1.5",
            "TOKEN_VALIDATION_LAMBDA_ARN": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/auth/token-validation-lambda/arn}}"
                ]
              ]
            }
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-authorization"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmspredictivemaintenanceauthorizationlambdaconstructlambdaroleD96E9E75",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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": [
                "cmspredictivemaintenanceauthorizationlambdaconstructsecuritygroup18D4826A",
                "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": [
        "cmspredictivemaintenanceauthorizationlambdaconstructlambdaroleD96E9E75",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/lambda-function/Resource",
        "aws:asset:path": "asset.368e143803aed3cf95fc1e281a2a4575e0115f5db6ef671c152852f86c6825cb.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."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunctionLogRetentionFD379A00": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/lambda-function/LogRetention/Resource"
      }
    },
    "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunctioncmspredictivemaintenancepredictapiconstructrestapiauthorizerC7A00D05Permissions90C07A1F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              "/authorizers/",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructrestapiauthorizer20AC4B2B"
              }
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/authorization-lambda-construct/lambda-function/cmspredictivemaintenancepredictapiconstructrestapiauthorizerC7A00D05:Permissions"
      }
    },
    "cmspredictivemaintenancepredictapiconstructlambdarole2097E32B": {
      "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"
                          },
                          "-predictive-maintenance-predict-api"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-predictive-maintenance-predict-api:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-logs-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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to write to CloudWatch log groups and for enabling VPC.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-predictive-maintenance-predict-api:log-stream:*",
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructlambdaroleDefaultPolicyEBBC491E": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sagemaker:InvokeEndpoint",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":sagemaker:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":endpoint/",
                    {
                      "Ref": "AppUniqueId"
                    },
                    "-predictive-maintenance-endpoint"
                  ]
                ]
              }
            },
            {
              "Action": "sagemaker:CreateTransformJob",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":sagemaker:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":transform-job/*"
                  ]
                ]
              }
            },
            {
              "Action": "sagemaker:ListModels",
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmspredictivemaintenancepredictapiconstructlambdaroleDefaultPolicyEBBC491E",
        "Roles": [
          {
            "Ref": "cmspredictivemaintenancepredictapiconstructlambdarole2097E32B"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/lambda-role/DefaultPolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to list SageMaker models and create transform jobs",
              "appliesTo": [
                "Resource::*",
                "Resource::arn:<AWS::Partition>:sagemaker:<AWS::Region>:<AWS::AccountId>:transform-job/*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructsecuritygroup4BCEC9CE": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/security-group/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32": {
      "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"
                  ]
                },
                "assete86e71e035e5e5d7a3fca74c7346970e4b860ae0171d8b7734b9bdc13be72ff7.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.15/v2.1.5",
            "SAGEMAKER_MODEL_ENDPOINT_NAME": {
              "Fn::Join": [
                "",
                [
                  {
                    "Ref": "AppUniqueId"
                  },
                  "-predictive-maintenance-endpoint"
                ]
              ]
            },
            "RESOURCE_NAME_SUFFIX": {
              "Fn::Join": [
                "",
                [
                  {
                    "Ref": "AppUniqueId"
                  },
                  "-predictive-maintenance"
                ]
              ]
            },
            "BATCH_INFERENCE_DATA_OUTPUT_S3_KEY_PREFIX": "inference",
            "BATCH_INFERENCE_DATA_S3_BUCKET_NAME": {
              "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
            },
            "BATCH_INFERENCE_INSTANCE_TYPE": "ml.m5.xlarge",
            "BATCH_INFERENCE_INSTANCE_COUNT": "1"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-predict-api"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmspredictivemaintenancedependencylayerconstructlambdadependencylayerversion4CEC1EF0"
          }
        ],
        "MemorySize": 512,
        "Role": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructlambdarole2097E32B",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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": [
                "cmspredictivemaintenancepredictapiconstructsecuritygroup4BCEC9CE",
                "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": [
        "cmspredictivemaintenancepredictapiconstructlambdaroleDefaultPolicyEBBC491E",
        "cmspredictivemaintenancepredictapiconstructlambdarole2097E32B",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/lambda-function/Resource",
        "aws:asset:path": "asset.e86e71e035e5e5d7a3fca74c7346970e4b860ae0171d8b7734b9bdc13be72ff7.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."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructlambdafunctionLogRetentionAE616AF1": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/lambda-function/LogRetention/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaApiAccessLogGroup405C3907": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/ApiAccessLogGroup/Resource",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W86",
              "reason": "Retention period for CloudWatchLogs LogGroups are set to 'Never Expire' to preserve customer data indefinitely"
            },
            {
              "id": "W84",
              "reason": "By default CloudWatchLogs LogGroups data is encrypted using the CloudWatch server-side encryption keys (AWS Managed Keys)"
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3": {
      "Type": "AWS::ApiGateway::RestApi",
      "Properties": {
        "Description": "API to invoke the SageMaker prediction model.",
        "EndpointConfiguration": {
          "Types": [
            "EDGE"
          ]
        },
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-rest-api"
            ]
          ]
        },
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeployment32FB8B4B2a8d98a909ee55014858e7408c603ccb": {
      "Type": "AWS::ApiGateway::Deployment",
      "Properties": {
        "Description": "API to invoke the SageMaker prediction model.",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictOPTIONSF5C2BB60",
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictPOST260C13B7",
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictB7E3036E",
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictOPTIONS96115B2E",
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictPOSTEE0899F2",
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredict8C94FC89",
        "cmspredictivemaintenancepredictapiconstructbadrequestbodyresponse45601189",
        "cmspredictivemaintenancepredictapiconstructbadrequestdefaultresponseFD648DA9",
        "cmspredictivemaintenancepredictapiconstructbadrequestparameterresponseDFD65C6A",
        "cmspredictivemaintenancepredictapiconstructgetpredictionbodymodel1F0BFB23",
        "cmspredictivemaintenancepredictapiconstructgetpredictionresponsemodel770CAEC1",
        "cmspredictivemaintenancepredictapiconstructinternalservererrordefaultresponse9D491934",
        "cmspredictivemaintenancepredictapiconstructrequestvalidatorF24DD2B8",
        "cmspredictivemaintenancepredictapiconstructstartbatchpredictionbodymodel517ED113",
        "cmspredictivemaintenancepredictapiconstructstartbatchpredictionresponsemodelC562F719",
        "cmspredictivemaintenancepredictapiconstructthrottlingrequestsresponseCB5A8D4F",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Deployment/Resource",
        "aws:cdk:do-not-refactor": true,
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W45",
              "reason": "ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag checks for it in AWS::ApiGateway::Deployment resource"
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A": {
      "Type": "AWS::ApiGateway::Stage",
      "Properties": {
        "AccessLogSetting": {
          "DestinationArn": {
            "Fn::GetAtt": [
              "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaApiAccessLogGroup405C3907",
              "Arn"
            ]
          },
          "Format": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"user\":\"$context.identity.user\",\"caller\":\"$context.identity.caller\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\"}"
        },
        "DeploymentId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeployment32FB8B4B2a8d98a909ee55014858e7408c603ccb"
        },
        "MethodSettings": [
          {
            "DataTraceEnabled": false,
            "HttpMethod": "*",
            "LoggingLevel": "INFO",
            "MetricsEnabled": true,
            "ResourcePath": "/*"
          }
        ],
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "StageName": "prod",
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "TracingEnabled": true
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/DeploymentStage.prod/Resource",
        "guard": {
          "SuppressedRules": [
            "API_GW_CACHE_ENABLED_AND_ENCRYPTED"
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredict8C94FC89": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3",
            "RootResourceId"
          ]
        },
        "PathPart": "predict",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/predict/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictOPTIONS96115B2E": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'*'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredict8C94FC89"
        },
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/predict/OPTIONS/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-APIG4",
              "reason": "The OPTIONS operation does not require authorization."
            },
            {
              "id": "AwsSolutions-COG4",
              "reason": "The API GW method does not use a Cognito user pool authorizer."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictPOSTApiPermissioncmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BDPOSTpredict964668FF": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              "/",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A"
              },
              "/POST/predict"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/predict/POST/ApiPermission.cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BD.POST..predict"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictPOSTApiPermissionTestcmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BDPOSTpredict15563456": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              "/test-invoke-stage/POST/predict"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/predict/POST/ApiPermission.Test.cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BD.POST..predict"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredictPOSTEE0899F2": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructrestapiauthorizer20AC4B2B"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "cmspredictivemaintenancepredictapiconstructgetpredictionresponsemodel770CAEC1"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "get-prediction",
        "RequestModels": {
          "application/json": {
            "Ref": "cmspredictivemaintenancepredictapiconstructgetpredictionbodymodel1F0BFB23"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructrequestvalidatorF24DD2B8"
        },
        "ResourceId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApipredict8C94FC89"
        },
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/predict/POST/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-COG4",
              "reason": "The API GW method does not use a Cognito user pool authorizer, it uses a custom lambda authorizer."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictB7E3036E": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3",
            "RootResourceId"
          ]
        },
        "PathPart": "batch-predict",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/batch-predict/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictOPTIONSF5C2BB60": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'*'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'POST,GET'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictB7E3036E"
        },
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/batch-predict/OPTIONS/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-APIG4",
              "reason": "The OPTIONS operation does not require authorization."
            },
            {
              "id": "AwsSolutions-COG4",
              "reason": "The API GW method does not use a Cognito user pool authorizer."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictPOSTApiPermissioncmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BDPOSTbatchpredict541306D5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              "/",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A"
              },
              "/POST/batch-predict"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/batch-predict/POST/ApiPermission.cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BD.POST..batch-predict"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictPOSTApiPermissionTestcmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BDPOSTbatchpredict9CA6001A": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              "/test-invoke-stage/POST/batch-predict"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/batch-predict/POST/ApiPermission.Test.cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiBBCCD6BD.POST..batch-predict"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictPOST260C13B7": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "CUSTOM",
        "AuthorizerId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructrestapiauthorizer20AC4B2B"
        },
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "PassthroughBehavior": "NEVER",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "cmspredictivemaintenancepredictapiconstructlambdafunction6EC85F32",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "MethodResponses": [
          {
            "ResponseModels": {
              "application/json": {
                "Ref": "cmspredictivemaintenancepredictapiconstructstartbatchpredictionresponsemodelC562F719"
              }
            },
            "StatusCode": "200"
          }
        ],
        "OperationName": "start-batch-inference",
        "RequestModels": {
          "application/json": {
            "Ref": "cmspredictivemaintenancepredictapiconstructstartbatchpredictionbodymodel517ED113"
          }
        },
        "RequestParameters": {
          "method.request.header.authorization": true
        },
        "RequestValidatorId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructrequestvalidatorF24DD2B8"
        },
        "ResourceId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApibatchpredictB7E3036E"
        },
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/Default/batch-predict/POST/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-COG4",
              "reason": "The API GW method does not use a Cognito user pool authorizer, it uses a custom lambda authorizer."
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiUsagePlan574C6D11": {
      "Type": "AWS::ApiGateway::UsagePlan",
      "Properties": {
        "ApiStages": [
          {
            "ApiId": {
              "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
            },
            "Stage": {
              "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A"
            },
            "Throttle": {}
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApi/UsagePlan/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiCloudWatchRoleDEF8D902": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "apigateway.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:DescribeLogGroups",
                    "logs:DescribeLogStreams",
                    "logs:FilterLogEvents",
                    "logs:GetLogEvents",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "LambdaRestApiCloudWatchRolePolicy"
          }
        ],
        "Tags": [
          {
            "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-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApiCloudWatchRole/Resource",
        "guard": {
          "SuppressedRules": [
            "IAM_NO_INLINE_POLICY_CHECK"
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Wildcard permissions required to write to CloudWatch log groups.",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:*"
              ]
            }
          ]
        }
      }
    },
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiAccountA48D8B6F": {
      "Type": "AWS::ApiGateway::Account",
      "Properties": {
        "CloudWatchRoleArn": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiCloudWatchRoleDEF8D902",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/api-gateway-to-lambda/LambdaRestApiAccount"
      }
    },
    "cmspredictivemaintenancepredictapiconstructrequestvalidatorF24DD2B8": {
      "Type": "AWS::ApiGateway::RequestValidator",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-rest-api-request-validator"
            ]
          ]
        },
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "ValidateRequestBody": true,
        "ValidateRequestParameters": true
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/request-validator/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructrestapiauthorizer20AC4B2B": {
      "Type": "AWS::ApiGateway::Authorizer",
      "Properties": {
        "AuthorizerResultTtlInSeconds": 0,
        "AuthorizerUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":apigateway:",
              {
                "Fn::Select": [
                  3,
                  {
                    "Fn::Split": [
                      ":",
                      {
                        "Fn::GetAtt": [
                          "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC",
                          "Arn"
                        ]
                      }
                    ]
                  }
                ]
              },
              ":lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "cmspredictivemaintenanceauthorizationlambdaconstructlambdafunction4C6F29BC",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        },
        "IdentitySource": "method.request.header.Authorization",
        "Name": "cmspredictivemaintenancepredictapiconstructrestapiauthorizerC7A00D05",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "Type": "REQUEST"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/rest-api-authorizer/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructgetpredictionbodymodel1F0BFB23": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Invoke the predictive maintenance SageMaker model.",
        "Name": "GetPredictionBodyModel",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "Schema": {
          "additionalProperties": false,
          "properties": {
            "input": {
              "type": "string"
            }
          },
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/get-prediction-body-model/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructgetpredictionresponsemodel770CAEC1": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response to invoking the predictive maintenance SageMaker model.",
        "Name": "GetPredictionResponseModel",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "Schema": {
          "additionalProperties": false,
          "properties": {
            "prediction": {
              "type": "string"
            }
          },
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/get-prediction-response-model/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructstartbatchpredictionbodymodel517ED113": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Invoke batch inference with the predictive maintenance SageMaker model.",
        "Name": "StartBatchPredictionBodyModel",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "Schema": {
          "additionalProperties": false,
          "properties": {
            "input_data_s3_key": {
              "type": "string"
            }
          },
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/start-batch-prediction-body-model/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructstartbatchpredictionresponsemodelC562F719": {
      "Type": "AWS::ApiGateway::Model",
      "Properties": {
        "ContentType": "application/json",
        "Description": "Response to invoking batch inference on the predictive maintenance SageMaker model.",
        "Name": "StartBatchPredictionResponseModel",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "Schema": {
          "additionalProperties": false,
          "properties": {
            "transform-job-name": {
              "type": "string"
            }
          },
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/start-batch-prediction-response-model/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructbadrequestdefaultresponseFD648DA9": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_4XX",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/bad-request-default-response/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructinternalservererrordefaultresponse9D491934": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseType": "DEFAULT_5XX",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "StatusCode": "500"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/internal-server-error-default-response/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructbadrequestbodyresponse45601189": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_BODY",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/bad-request-body-response/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructbadrequestparameterresponseDFD65C6A": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "BAD_REQUEST_PARAMETERS",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "StatusCode": "400"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/bad-request-parameter-response/Resource"
      }
    },
    "cmspredictivemaintenancepredictapiconstructthrottlingrequestsresponseCB5A8D4F": {
      "Type": "AWS::ApiGateway::GatewayResponse",
      "Properties": {
        "ResponseParameters": {
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
          "gatewayresponse.header.gatewayresponse.header.Access-Control-Allow-Headers": "'*'"
        },
        "ResponseTemplates": {
          "application/json": "{\"error\":{\"message\":\"$context.error.messageString\",\"errors\":\"$context.error.validationErrorString\"}}"
        },
        "ResponseType": "THROTTLED",
        "RestApiId": {
          "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
        },
        "StatusCode": "429"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/predict-api-construct/throttling-requests-response/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmchatbotknowledgebaseid38903DFC": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "The Bedrock knowledge base ID used for RAG.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/chatbot/knowledge-base-id"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockknowledgebaseconstructknowledgebase268FC97C",
            "KnowledgeBaseId"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-chatbot-knowledge-base-id/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmchatbotagentid96B58390": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "The Bedrock agent ID.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/chatbot/agent-id"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentE962E37C",
            "AgentId"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-chatbot-agent-id/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmchatbotagentaliasidD0FDB4F3": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "The Bedrock agent alias ID.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/chatbot/agent-alias-id"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancechatbotconstructbedrockagentconstructagentaliasE7C26A43",
            "AgentAliasId"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-chatbot-agent-alias-id/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmpredictorpipelinerolearnC343F8FC": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "The ARN of the role for the SageMaker pipeline.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/predictor/pipeline/role-arn"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelineroleDC833CE2",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-predictor-pipeline-role-arn/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmpredictorpipelineassetsbucketname2360DE79": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "The name of the S3 bucket created for the SageMaker pipeline.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/predictor/pipeline/assets-bucket/name"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Ref": "cmspredictivemaintenancesagemakerassetsbucketconstructencryptedbucket8260F56D"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-predictor-pipeline-assets-bucket-name/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmpredictorpipelinedeploymodellambdafunctionarn7D5E4670": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "ARN of the lambda function used to deploy SageMaker model to a SageMaker endpoint.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/predictor/pipeline/deploy-model-lambda/arn"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::GetAtt": [
            "cmspredictivemaintenancepredictorconstructsagemakerpipelinedeploypipelinemodellambdafunctionDB90CD10",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-predictor-pipeline-deploy-model-lambda-function-arn/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmpredictorpipelinedeploymodelendpointname4ABC0B17": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "Name of the SageMaker endpoint to which the SageMaker prediction model is deployed.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/predictor/pipeline/deploy-model-endpoint/name"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-predictive-maintenance-endpoint"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-predictor-pipeline-deploy-model-endpoint-name/Resource"
      }
    },
    "cmspredictivemaintenancemoduleoutputsconstructssmpredictapiendpointurlF64DC879": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "URL of the endpoint for the Predict APIs exposed by the module.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/predictive-maintenance/api/predict/endpoint/url"
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-predictive-maintenance",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::Join": [
            "",
            [
              "https://",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
              },
              ".execute-api.",
              {
                "Ref": "AWS::Region"
              },
              ".",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              {
                "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A"
              },
              "/"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/cms-predictive-maintenance/module-outputs-construct/ssm-predict-api-endpoint-url/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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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-predictive-maintenance/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM4",
              "reason": "Log retention lambda is created by AWS CDK L2 constructs and it uses managed roles.",
              "appliesTo": [
                "Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            }
          ]
        }
      }
    },
    "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-predictive-maintenance/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "reason": "Log retention lambda is created by AWS CDK L2 constructs and it uses wildcard permissions.",
              "appliesTo": [
                "Resource::*"
              ]
            }
          ]
        }
      }
    },
    "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": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-predictive-maintenance"
          },
          {
            "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": [
                "cmspredictivemaintenancecdklambdasvpcconstructsecuritygroup74503C58",
                "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-predictive-maintenance/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/21TS2/bMAz+LbkrapNgw45zU6yHtpjhrL0WjMw4WmTRE6UFnuH/PkhyHi164senyI/UUg7L26W8ncGR56o+zI3eymHjQR3Eemefoeu0bcQ6sKe2QqbgFEbPNS7BQYsenYAjvw3MbSzhtG0unuuwUaBaymGDKjjt+wdHoYsB7wyjMNBua5DDE/ToXtGxJhvD3uk/glV+clzjEl2rOYaMgldvwIyeZRGF4JUc7oI6oL8DRpFhTJpQFiUZrfqLOeuj0NDKoSKTaYjyEnmKMdSwHJ6oqdCjTT09UXMe9IRHcWhZDo+Ykh+xHwVDgy0c0MlhvbP31IJO87wwutLRTud3S92h0RZHQR1aRnBqz+j+ojPInHJPbF66W5MxeGaoUAqZTx1vsXakDinz0dLRYN1goie2AR4253U/BHC1A21SlQatP4PCaOBRQKcb8HiEPm4vbrFC9kWnp8tJ8B47Q307pV9pGw9NeiiD06WlZj49wWf0e6rTvWb0ElksDUzMXSmFUhSsFxX+Ccj+FYyuwZPL9T7YJkMR/J6c/pev+Ep7phoTCRk85JEr5I5sJu6DaRwvA6RTjBOm/7WzP4Pvgh/Fty/y6+x7/I5MJsRl8VyRZe+C8nwTHRd659MfKTo9PfWLMuGjKHu/J3uzkoulXCxmv1nruQvW6xZlleV/5Y/f/P4DAAA="
      },
      "Metadata": {
        "aws:cdk:path": "cms-predictive-maintenance/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
    },
    "S3LogExpirationDays": {
      "Type": "Number",
      "Default": 90,
      "Description": "The number of days before log bucket objects expire."
    },
    "S3LogNoncurrentVersionExpirationDays": {
      "Type": "Number",
      "Default": 1,
      "Description": "The number of days before log bucket non-current versions are deleted after they've expired."
    }
  },
  "Outputs": {
    "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiEndpoint375D781A": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApi086E4DB3"
            },
            ".execute-api.",
            {
              "Ref": "AWS::Region"
            },
            ".",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "cmspredictivemaintenancepredictapiconstructapigatewaytolambdaLambdaRestApiDeploymentStageprodFBE2AA0A"
            },
            "/"
          ]
        ]
      }
    }
  },
  "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"
          ]
        }
      ]
    }
  }
}