{ "author": { "email": "poke@softchef.com", "name": "SoftChef", "organization": true, "roles": [ "author" ], "url": "https://www.softchef.com" }, "bundled": { "@aws-sdk/client-iam": "^3.76.0", "@aws-sdk/client-iot": "^3.76.0", "@aws-sdk/client-lambda": "^3.76.0", "@aws-sdk/client-s3": "^3.76.0", "@softchef/lambda-events": "^0.0.8", "@types/node-forge": "^0.10.10", "@types/uuid": "^8.3.4", "joi": "^17.6.0", "mqtt": "^4.3.7", "node-forge": "^0.10.0", "uuid": "^8.3.2" }, "dependencies": { "aws-cdk-lib": "^2.1.0", "constructs": "^10.0.5" }, "dependencyClosure": { "aws-cdk-lib": { "submodules": { "aws-cdk-lib.alexa_ask": { "targets": { "dotnet": { "namespace": "Amazon.CDK.Alexa.Ask" }, "java": { "package": "software.amazon.awscdk.alexa.ask" }, "python": { "module": "aws_cdk.alexa_ask" } } }, "aws-cdk-lib.assertions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.Assertions" }, "java": { "package": "software.amazon.awscdk.assertions" }, "python": { "module": "aws_cdk.assertions" } } }, "aws-cdk-lib.assets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.Assets" }, "java": { "package": "software.amazon.awscdk.assets" }, "python": { "module": "aws_cdk.assets" } } }, "aws-cdk-lib.aws_accessanalyzer": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AccessAnalyzer" }, "java": { "package": "software.amazon.awscdk.services.accessanalyzer" }, "python": { "module": "aws_cdk.aws_accessanalyzer" } } }, "aws-cdk-lib.aws_acmpca": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ACMPCA" }, "java": { "package": "software.amazon.awscdk.services.acmpca" }, "python": { "module": "aws_cdk.aws_acmpca" } } }, "aws-cdk-lib.aws_amazonmq": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AmazonMQ" }, "java": { "package": "software.amazon.awscdk.services.amazonmq" }, "python": { "module": "aws_cdk.aws_amazonmq" } } }, "aws-cdk-lib.aws_amplify": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Amplify" }, "java": { "package": "software.amazon.awscdk.services.amplify" }, "python": { "module": "aws_cdk.aws_amplify" } } }, "aws-cdk-lib.aws_apigateway": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.APIGateway" }, "java": { "package": "software.amazon.awscdk.services.apigateway" }, "python": { "module": "aws_cdk.aws_apigateway" } } }, "aws-cdk-lib.aws_apigatewayv2": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Apigatewayv2" }, "java": { "package": "software.amazon.awscdk.services.apigatewayv2" }, "python": { "module": "aws_cdk.aws_apigatewayv2" } } }, "aws-cdk-lib.aws_appconfig": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppConfig" }, "java": { "package": "software.amazon.awscdk.services.appconfig" }, "python": { "module": "aws_cdk.aws_appconfig" } } }, "aws-cdk-lib.aws_appflow": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppFlow" }, "java": { "package": "software.amazon.awscdk.services.appflow" }, "python": { "module": "aws_cdk.aws_appflow" } } }, "aws-cdk-lib.aws_appintegrations": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppIntegrations" }, "java": { "package": "software.amazon.awscdk.services.appintegrations" }, "python": { "module": "aws_cdk.aws_appintegrations" } } }, "aws-cdk-lib.aws_applicationautoscaling": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ApplicationAutoScaling" }, "java": { "package": "software.amazon.awscdk.services.applicationautoscaling" }, "python": { "module": "aws_cdk.aws_applicationautoscaling" } } }, "aws-cdk-lib.aws_applicationinsights": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ApplicationInsights" }, "java": { "package": "software.amazon.awscdk.services.applicationinsights" }, "python": { "module": "aws_cdk.aws_applicationinsights" } } }, "aws-cdk-lib.aws_appmesh": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppMesh" }, "java": { "package": "software.amazon.awscdk.services.appmesh" }, "python": { "module": "aws_cdk.aws_appmesh" } } }, "aws-cdk-lib.aws_apprunner": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppRunner" }, "java": { "package": "software.amazon.awscdk.services.apprunner" }, "python": { "module": "aws_cdk.aws_apprunner" } } }, "aws-cdk-lib.aws_appstream": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppStream" }, "java": { "package": "software.amazon.awscdk.services.appstream" }, "python": { "module": "aws_cdk.aws_appstream" } } }, "aws-cdk-lib.aws_appsync": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AppSync" }, "java": { "package": "software.amazon.awscdk.services.appsync" }, "python": { "module": "aws_cdk.aws_appsync" } } }, "aws-cdk-lib.aws_aps": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.APS" }, "java": { "package": "software.amazon.awscdk.services.aps" }, "python": { "module": "aws_cdk.aws_aps" } } }, "aws-cdk-lib.aws_athena": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Athena" }, "java": { "package": "software.amazon.awscdk.services.athena" }, "python": { "module": "aws_cdk.aws_athena" } } }, "aws-cdk-lib.aws_auditmanager": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AuditManager" }, "java": { "package": "software.amazon.awscdk.services.auditmanager" }, "python": { "module": "aws_cdk.aws_auditmanager" } } }, "aws-cdk-lib.aws_autoscaling": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AutoScaling" }, "java": { "package": "software.amazon.awscdk.services.autoscaling" }, "python": { "module": "aws_cdk.aws_autoscaling" } } }, "aws-cdk-lib.aws_autoscaling_common": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AutoScaling.Common" }, "java": { "package": "software.amazon.awscdk.services.autoscaling.common" }, "python": { "module": "aws_cdk.aws_autoscaling_common" } } }, "aws-cdk-lib.aws_autoscaling_hooktargets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AutoScaling.HookTargets" }, "java": { "package": "software.amazon.awscdk.services.autoscaling.hooktargets" }, "python": { "module": "aws_cdk.aws_autoscaling_hooktargets" } } }, "aws-cdk-lib.aws_autoscalingplans": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.AutoScalingPlans" }, "java": { "package": "software.amazon.awscdk.services.autoscalingplans" }, "python": { "module": "aws_cdk.aws_autoscalingplans" } } }, "aws-cdk-lib.aws_backup": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Backup" }, "java": { "package": "software.amazon.awscdk.services.backup" }, "python": { "module": "aws_cdk.aws_backup" } } }, "aws-cdk-lib.aws_batch": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Batch" }, "java": { "package": "software.amazon.awscdk.services.batch" }, "python": { "module": "aws_cdk.aws_batch" } } }, "aws-cdk-lib.aws_budgets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Budgets" }, "java": { "package": "software.amazon.awscdk.services.budgets" }, "python": { "module": "aws_cdk.aws_budgets" } } }, "aws-cdk-lib.aws_cassandra": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Cassandra" }, "java": { "package": "software.amazon.awscdk.services.cassandra" }, "python": { "module": "aws_cdk.aws_cassandra" } } }, "aws-cdk-lib.aws_ce": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CE" }, "java": { "package": "software.amazon.awscdk.services.ce" }, "python": { "module": "aws_cdk.aws_ce" } } }, "aws-cdk-lib.aws_certificatemanager": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CertificateManager" }, "java": { "package": "software.amazon.awscdk.services.certificatemanager" }, "python": { "module": "aws_cdk.aws_certificatemanager" } } }, "aws-cdk-lib.aws_chatbot": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Chatbot" }, "java": { "package": "software.amazon.awscdk.services.chatbot" }, "python": { "module": "aws_cdk.aws_chatbot" } } }, "aws-cdk-lib.aws_cloud9": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Cloud9" }, "java": { "package": "software.amazon.awscdk.services.cloud9" }, "python": { "module": "aws_cdk.aws_cloud9" } } }, "aws-cdk-lib.aws_cloudformation": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudFormation" }, "java": { "package": "software.amazon.awscdk.services.cloudformation" }, "python": { "module": "aws_cdk.aws_cloudformation" } } }, "aws-cdk-lib.aws_cloudfront": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudFront" }, "java": { "package": "software.amazon.awscdk.services.cloudfront" }, "python": { "module": "aws_cdk.aws_cloudfront" } } }, "aws-cdk-lib.aws_cloudfront.experimental": {}, "aws-cdk-lib.aws_cloudfront_origins": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudFront.Origins" }, "java": { "package": "software.amazon.awscdk.services.cloudfront.origins" }, "python": { "module": "aws_cdk.aws_cloudfront_origins" } } }, "aws-cdk-lib.aws_cloudtrail": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudTrail" }, "java": { "package": "software.amazon.awscdk.services.cloudtrail" }, "python": { "module": "aws_cdk.aws_cloudtrail" } } }, "aws-cdk-lib.aws_cloudwatch": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudWatch" }, "java": { "package": "software.amazon.awscdk.services.cloudwatch" }, "python": { "module": "aws_cdk.aws_cloudwatch" } } }, "aws-cdk-lib.aws_cloudwatch_actions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CloudWatch.Actions" }, "java": { "package": "software.amazon.awscdk.services.cloudwatch.actions" }, "python": { "module": "aws_cdk.aws_cloudwatch_actions" } } }, "aws-cdk-lib.aws_codeartifact": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeArtifact" }, "java": { "package": "software.amazon.awscdk.services.codeartifact" }, "python": { "module": "aws_cdk.aws_codeartifact" } } }, "aws-cdk-lib.aws_codebuild": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeBuild" }, "java": { "package": "software.amazon.awscdk.services.codebuild" }, "python": { "module": "aws_cdk.aws_codebuild" } } }, "aws-cdk-lib.aws_codecommit": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeCommit" }, "java": { "package": "software.amazon.awscdk.services.codecommit" }, "python": { "module": "aws_cdk.aws_codecommit" } } }, "aws-cdk-lib.aws_codedeploy": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeDeploy" }, "java": { "package": "software.amazon.awscdk.services.codedeploy" }, "python": { "module": "aws_cdk.aws_codedeploy" } } }, "aws-cdk-lib.aws_codeguruprofiler": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeGuruProfiler" }, "java": { "package": "software.amazon.awscdk.services.codeguruprofiler" }, "python": { "module": "aws_cdk.aws_codeguruprofiler" } } }, "aws-cdk-lib.aws_codegurureviewer": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeGuruReviewer" }, "java": { "package": "software.amazon.awscdk.services.codegurureviewer" }, "python": { "module": "aws_cdk.aws_codegurureviewer" } } }, "aws-cdk-lib.aws_codepipeline": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodePipeline" }, "java": { "package": "software.amazon.awscdk.services.codepipeline" }, "python": { "module": "aws_cdk.aws_codepipeline" } } }, "aws-cdk-lib.aws_codepipeline_actions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodePipeline.Actions" }, "java": { "package": "software.amazon.awscdk.services.codepipeline.actions" }, "python": { "module": "aws_cdk.aws_codepipeline_actions" } } }, "aws-cdk-lib.aws_codestar": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Codestar" }, "java": { "package": "software.amazon.awscdk.services.codestar" }, "python": { "module": "aws_cdk.aws_codestar" } } }, "aws-cdk-lib.aws_codestarconnections": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeStarConnections" }, "java": { "package": "software.amazon.awscdk.services.codestarconnections" }, "python": { "module": "aws_cdk.aws_codestarconnections" } } }, "aws-cdk-lib.aws_codestarnotifications": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CodeStarNotifications" }, "java": { "package": "software.amazon.awscdk.services.codestarnotifications" }, "python": { "module": "aws_cdk.aws_codestarnotifications" } } }, "aws-cdk-lib.aws_cognito": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Cognito" }, "java": { "package": "software.amazon.awscdk.services.cognito" }, "python": { "module": "aws_cdk.aws_cognito" } } }, "aws-cdk-lib.aws_config": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Config" }, "java": { "package": "software.amazon.awscdk.services.config" }, "python": { "module": "aws_cdk.aws_config" } } }, "aws-cdk-lib.aws_connect": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Connect" }, "java": { "package": "software.amazon.awscdk.services.connect" }, "python": { "module": "aws_cdk.aws_connect" } } }, "aws-cdk-lib.aws_cur": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CUR" }, "java": { "package": "software.amazon.awscdk.services.cur" }, "python": { "module": "aws_cdk.aws_cur" } } }, "aws-cdk-lib.aws_customerprofiles": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.CustomerProfiles" }, "java": { "package": "software.amazon.awscdk.services.customerprofiles" }, "python": { "module": "aws_cdk.aws_customerprofiles" } } }, "aws-cdk-lib.aws_databrew": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DataBrew" }, "java": { "package": "software.amazon.awscdk.services.databrew" }, "python": { "module": "aws_cdk.aws_databrew" } } }, "aws-cdk-lib.aws_datapipeline": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DataPipeline" }, "java": { "package": "software.amazon.awscdk.services.datapipeline" }, "python": { "module": "aws_cdk.aws_datapipeline" } } }, "aws-cdk-lib.aws_datasync": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DataSync" }, "java": { "package": "software.amazon.awscdk.services.datasync" }, "python": { "module": "aws_cdk.aws_datasync" } } }, "aws-cdk-lib.aws_dax": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DAX" }, "java": { "package": "software.amazon.awscdk.services.dax" }, "python": { "module": "aws_cdk.aws_dax" } } }, "aws-cdk-lib.aws_detective": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Detective" }, "java": { "package": "software.amazon.awscdk.services.detective" }, "python": { "module": "aws_cdk.aws_detective" } } }, "aws-cdk-lib.aws_devopsguru": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DevOpsGuru" }, "java": { "package": "software.amazon.awscdk.services.devopsguru" }, "python": { "module": "aws_cdk.aws_devopsguru" } } }, "aws-cdk-lib.aws_directoryservice": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DirectoryService" }, "java": { "package": "software.amazon.awscdk.services.directoryservice" }, "python": { "module": "aws_cdk.aws_directoryservice" } } }, "aws-cdk-lib.aws_dlm": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DLM" }, "java": { "package": "software.amazon.awscdk.services.dlm" }, "python": { "module": "aws_cdk.aws_dlm" } } }, "aws-cdk-lib.aws_dms": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DMS" }, "java": { "package": "software.amazon.awscdk.services.dms" }, "python": { "module": "aws_cdk.aws_dms" } } }, "aws-cdk-lib.aws_docdb": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DocDB" }, "java": { "package": "software.amazon.awscdk.services.docdb" }, "python": { "module": "aws_cdk.aws_docdb" } } }, "aws-cdk-lib.aws_dynamodb": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.DynamoDB" }, "java": { "package": "software.amazon.awscdk.services.dynamodb" }, "python": { "module": "aws_cdk.aws_dynamodb" } } }, "aws-cdk-lib.aws_ec2": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EC2" }, "java": { "package": "software.amazon.awscdk.services.ec2" }, "python": { "module": "aws_cdk.aws_ec2" } } }, "aws-cdk-lib.aws_ecr": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ECR" }, "java": { "package": "software.amazon.awscdk.services.ecr" }, "python": { "module": "aws_cdk.aws_ecr" } } }, "aws-cdk-lib.aws_ecr_assets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Ecr.Assets" }, "java": { "package": "software.amazon.awscdk.services.ecr.assets" }, "python": { "module": "aws_cdk.aws_ecr_assets" } } }, "aws-cdk-lib.aws_ecs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ECS" }, "java": { "package": "software.amazon.awscdk.services.ecs" }, "python": { "module": "aws_cdk.aws_ecs" } } }, "aws-cdk-lib.aws_ecs_patterns": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ECS.Patterns" }, "java": { "package": "software.amazon.awscdk.services.ecs.patterns" }, "python": { "module": "aws_cdk.aws_ecs_patterns" } } }, "aws-cdk-lib.aws_efs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EFS" }, "java": { "package": "software.amazon.awscdk.services.efs" }, "python": { "module": "aws_cdk.aws_efs" } } }, "aws-cdk-lib.aws_eks": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EKS" }, "java": { "package": "software.amazon.awscdk.services.eks" }, "python": { "module": "aws_cdk.aws_eks" } } }, "aws-cdk-lib.aws_elasticache": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElastiCache" }, "java": { "package": "software.amazon.awscdk.services.elasticache" }, "python": { "module": "aws_cdk.aws_elasticache" } } }, "aws-cdk-lib.aws_elasticbeanstalk": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElasticBeanstalk" }, "java": { "package": "software.amazon.awscdk.services.elasticbeanstalk" }, "python": { "module": "aws_cdk.aws_elasticbeanstalk" } } }, "aws-cdk-lib.aws_elasticloadbalancing": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElasticLoadBalancing" }, "java": { "package": "software.amazon.awscdk.services.elasticloadbalancing" }, "python": { "module": "aws_cdk.aws_elasticloadbalancing" } } }, "aws-cdk-lib.aws_elasticloadbalancingv2": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2" }, "java": { "package": "software.amazon.awscdk.services.elasticloadbalancingv2" }, "python": { "module": "aws_cdk.aws_elasticloadbalancingv2" } } }, "aws-cdk-lib.aws_elasticloadbalancingv2_actions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Actions" }, "java": { "package": "software.amazon.awscdk.services.elasticloadbalancingv2.actions" }, "python": { "module": "aws_cdk.aws_elasticloadbalancingv2_actions" } } }, "aws-cdk-lib.aws_elasticloadbalancingv2_targets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Targets" }, "java": { "package": "software.amazon.awscdk.services.elasticloadbalancingv2.targets" }, "python": { "module": "aws_cdk.aws_elasticloadbalancingv2_targets" } } }, "aws-cdk-lib.aws_elasticsearch": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Elasticsearch" }, "java": { "package": "software.amazon.awscdk.services.elasticsearch" }, "python": { "module": "aws_cdk.aws_elasticsearch" } } }, "aws-cdk-lib.aws_emr": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EMR" }, "java": { "package": "software.amazon.awscdk.services.emr" }, "python": { "module": "aws_cdk.aws_emr" } } }, "aws-cdk-lib.aws_emrcontainers": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EMRContainers" }, "java": { "package": "software.amazon.awscdk.services.emrcontainers" }, "python": { "module": "aws_cdk.aws_emrcontainers" } } }, "aws-cdk-lib.aws_events": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Events" }, "java": { "package": "software.amazon.awscdk.services.events" }, "python": { "module": "aws_cdk.aws_events" } } }, "aws-cdk-lib.aws_events_targets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Events.Targets" }, "java": { "package": "software.amazon.awscdk.services.events.targets" }, "python": { "module": "aws_cdk.aws_events_targets" } } }, "aws-cdk-lib.aws_eventschemas": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.EventSchemas" }, "java": { "package": "software.amazon.awscdk.services.eventschemas" }, "python": { "module": "aws_cdk.aws_eventschemas" } } }, "aws-cdk-lib.aws_finspace": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.FinSpace" }, "java": { "package": "software.amazon.awscdk.services.finspace" }, "python": { "module": "aws_cdk.aws_finspace" } } }, "aws-cdk-lib.aws_fis": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.FIS" }, "java": { "package": "software.amazon.awscdk.services.fis" }, "python": { "module": "aws_cdk.aws_fis" } } }, "aws-cdk-lib.aws_fms": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.FMS" }, "java": { "package": "software.amazon.awscdk.services.fms" }, "python": { "module": "aws_cdk.aws_fms" } } }, "aws-cdk-lib.aws_frauddetector": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.FraudDetector" }, "java": { "package": "software.amazon.awscdk.services.frauddetector" }, "python": { "module": "aws_cdk.aws_frauddetector" } } }, "aws-cdk-lib.aws_fsx": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.FSx" }, "java": { "package": "software.amazon.awscdk.services.fsx" }, "python": { "module": "aws_cdk.aws_fsx" } } }, "aws-cdk-lib.aws_gamelift": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GameLift" }, "java": { "package": "software.amazon.awscdk.services.gamelift" }, "python": { "module": "aws_cdk.aws_gamelift" } } }, "aws-cdk-lib.aws_globalaccelerator": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GlobalAccelerator" }, "java": { "package": "software.amazon.awscdk.services.globalaccelerator" }, "python": { "module": "aws_cdk.aws_globalaccelerator" } } }, "aws-cdk-lib.aws_globalaccelerator_endpoints": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GlobalAccelerator.Endpoints" }, "java": { "package": "software.amazon.awscdk.services.globalaccelerator.endpoints" }, "python": { "module": "aws_cdk.aws_globalaccelerator_endpoints" } } }, "aws-cdk-lib.aws_glue": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Glue" }, "java": { "package": "software.amazon.awscdk.services.glue" }, "python": { "module": "aws_cdk.aws_glue" } } }, "aws-cdk-lib.aws_greengrass": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Greengrass" }, "java": { "package": "software.amazon.awscdk.services.greengrass" }, "python": { "module": "aws_cdk.aws_greengrass" } } }, "aws-cdk-lib.aws_greengrassv2": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GreengrassV2" }, "java": { "package": "software.amazon.awscdk.services.greengrassv2" }, "python": { "module": "aws_cdk.aws_greengrassv2" } } }, "aws-cdk-lib.aws_groundstation": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GroundStation" }, "java": { "package": "software.amazon.awscdk.services.groundstation" }, "python": { "module": "aws_cdk.aws_groundstation" } } }, "aws-cdk-lib.aws_guardduty": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.GuardDuty" }, "java": { "package": "software.amazon.awscdk.services.guardduty" }, "python": { "module": "aws_cdk.aws_guardduty" } } }, "aws-cdk-lib.aws_healthlake": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.HealthLake" }, "java": { "package": "software.amazon.awscdk.services.healthlake" }, "python": { "module": "aws_cdk.aws_healthlake" } } }, "aws-cdk-lib.aws_iam": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IAM" }, "java": { "package": "software.amazon.awscdk.services.iam" }, "python": { "module": "aws_cdk.aws_iam" } } }, "aws-cdk-lib.aws_imagebuilder": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ImageBuilder" }, "java": { "package": "software.amazon.awscdk.services.imagebuilder" }, "python": { "module": "aws_cdk.aws_imagebuilder" } } }, "aws-cdk-lib.aws_inspector": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Inspector" }, "java": { "package": "software.amazon.awscdk.services.inspector" }, "python": { "module": "aws_cdk.aws_inspector" } } }, "aws-cdk-lib.aws_iot": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoT" }, "java": { "package": "software.amazon.awscdk.services.iot" }, "python": { "module": "aws_cdk.aws_iot" } } }, "aws-cdk-lib.aws_iot1click": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoT1Click" }, "java": { "package": "software.amazon.awscdk.services.iot1click" }, "python": { "module": "aws_cdk.aws_iot1click" } } }, "aws-cdk-lib.aws_iotanalytics": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTAnalytics" }, "java": { "package": "software.amazon.awscdk.services.iotanalytics" }, "python": { "module": "aws_cdk.aws_iotanalytics" } } }, "aws-cdk-lib.aws_iotcoredeviceadvisor": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTCoreDeviceAdvisor" }, "java": { "package": "software.amazon.awscdk.services.iotcoredeviceadvisor" }, "python": { "module": "aws_cdk.aws_iotcoredeviceadvisor" } } }, "aws-cdk-lib.aws_iotevents": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTEvents" }, "java": { "package": "software.amazon.awscdk.services.iotevents" }, "python": { "module": "aws_cdk.aws_iotevents" } } }, "aws-cdk-lib.aws_iotfleethub": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTFleetHub" }, "java": { "package": "software.amazon.awscdk.services.iotfleethub" }, "python": { "module": "aws_cdk.aws_iotfleethub" } } }, "aws-cdk-lib.aws_iotsitewise": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTSiteWise" }, "java": { "package": "software.amazon.awscdk.services.iotsitewise" }, "python": { "module": "aws_cdk.aws_iotsitewise" } } }, "aws-cdk-lib.aws_iotthingsgraph": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTThingsGraph" }, "java": { "package": "software.amazon.awscdk.services.iotthingsgraph" }, "python": { "module": "aws_cdk.aws_iotthingsgraph" } } }, "aws-cdk-lib.aws_iotwireless": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.IoTWireless" }, "java": { "package": "software.amazon.awscdk.services.iotwireless" }, "python": { "module": "aws_cdk.aws_iotwireless" } } }, "aws-cdk-lib.aws_ivs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Ivs" }, "java": { "package": "software.amazon.awscdk.services.ivs" }, "python": { "module": "aws_cdk.aws_ivs" } } }, "aws-cdk-lib.aws_kendra": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Kendra" }, "java": { "package": "software.amazon.awscdk.services.kendra" }, "python": { "module": "aws_cdk.aws_kendra" } } }, "aws-cdk-lib.aws_kinesis": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Kinesis" }, "java": { "package": "software.amazon.awscdk.services.kinesis" }, "python": { "module": "aws_cdk.aws_kinesis" } } }, "aws-cdk-lib.aws_kinesisanalytics": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.KinesisAnalytics" }, "java": { "package": "software.amazon.awscdk.services.kinesisanalytics" }, "python": { "module": "aws_cdk.aws_kinesisanalytics" } } }, "aws-cdk-lib.aws_kinesisfirehose": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.KinesisFirehose" }, "java": { "package": "software.amazon.awscdk.services.kinesisfirehose" }, "python": { "module": "aws_cdk.aws_kinesisfirehose" } } }, "aws-cdk-lib.aws_kms": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.KMS" }, "java": { "package": "software.amazon.awscdk.services.kms" }, "python": { "module": "aws_cdk.aws_kms" } } }, "aws-cdk-lib.aws_lakeformation": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.LakeFormation" }, "java": { "package": "software.amazon.awscdk.services.lakeformation" }, "python": { "module": "aws_cdk.aws_lakeformation" } } }, "aws-cdk-lib.aws_lambda": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Lambda" }, "java": { "package": "software.amazon.awscdk.services.lambda" }, "python": { "module": "aws_cdk.aws_lambda" } } }, "aws-cdk-lib.aws_lambda_destinations": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Lambda.Destinations" }, "java": { "package": "software.amazon.awscdk.services.lambda.destinations" }, "python": { "module": "aws_cdk.aws_lambda_destinations" } } }, "aws-cdk-lib.aws_lambda_event_sources": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Lambda.EventSources" }, "java": { "package": "software.amazon.awscdk.services.lambda.eventsources" }, "python": { "module": "aws_cdk.aws_lambda_event_sources" } } }, "aws-cdk-lib.aws_lambda_nodejs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Lambda.Nodejs" }, "java": { "package": "software.amazon.awscdk.services.lambda.nodejs" }, "python": { "module": "aws_cdk.aws_lambda_nodejs" } } }, "aws-cdk-lib.aws_licensemanager": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.LicenseManager" }, "java": { "package": "software.amazon.awscdk.services.licensemanager" }, "python": { "module": "aws_cdk.aws_licensemanager" } } }, "aws-cdk-lib.aws_lightsail": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Lightsail" }, "java": { "package": "software.amazon.awscdk.services.lightsail" }, "python": { "module": "aws_cdk.aws_lightsail" } } }, "aws-cdk-lib.aws_location": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Location" }, "java": { "package": "software.amazon.awscdk.services.location" }, "python": { "module": "aws_cdk.aws_location" } } }, "aws-cdk-lib.aws_logs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Logs" }, "java": { "package": "software.amazon.awscdk.services.logs" }, "python": { "module": "aws_cdk.aws_logs" } } }, "aws-cdk-lib.aws_logs_destinations": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Logs.Destinations" }, "java": { "package": "software.amazon.awscdk.services.logs.destinations" }, "python": { "module": "aws_cdk.aws_logs_destinations" } } }, "aws-cdk-lib.aws_lookoutequipment": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.LookoutEquipment" }, "java": { "package": "software.amazon.awscdk.services.lookoutequipment" }, "python": { "module": "aws_cdk.aws_lookoutequipment" } } }, "aws-cdk-lib.aws_lookoutmetrics": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.LookoutMetrics" }, "java": { "package": "software.amazon.awscdk.services.lookoutmetrics" }, "python": { "module": "aws_cdk.aws_lookoutmetrics" } } }, "aws-cdk-lib.aws_lookoutvision": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.LookoutVision" }, "java": { "package": "software.amazon.awscdk.services.lookoutvision" }, "python": { "module": "aws_cdk.aws_lookoutvision" } } }, "aws-cdk-lib.aws_macie": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Macie" }, "java": { "package": "software.amazon.awscdk.services.macie" }, "python": { "module": "aws_cdk.aws_macie" } } }, "aws-cdk-lib.aws_managedblockchain": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ManagedBlockchain" }, "java": { "package": "software.amazon.awscdk.services.managedblockchain" }, "python": { "module": "aws_cdk.aws_managedblockchain" } } }, "aws-cdk-lib.aws_mediaconnect": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MediaConnect" }, "java": { "package": "software.amazon.awscdk.services.mediaconnect" }, "python": { "module": "aws_cdk.aws_mediaconnect" } } }, "aws-cdk-lib.aws_mediaconvert": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MediaConvert" }, "java": { "package": "software.amazon.awscdk.services.mediaconvert" }, "python": { "module": "aws_cdk.aws_mediaconvert" } } }, "aws-cdk-lib.aws_medialive": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MediaLive" }, "java": { "package": "software.amazon.awscdk.services.medialive" }, "python": { "module": "aws_cdk.aws_medialive" } } }, "aws-cdk-lib.aws_mediapackage": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MediaPackage" }, "java": { "package": "software.amazon.awscdk.services.mediapackage" }, "python": { "module": "aws_cdk.aws_mediapackage" } } }, "aws-cdk-lib.aws_mediastore": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MediaStore" }, "java": { "package": "software.amazon.awscdk.services.mediastore" }, "python": { "module": "aws_cdk.aws_mediastore" } } }, "aws-cdk-lib.aws_memorydb": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MemoryDB" }, "java": { "package": "software.amazon.awscdk.services.memorydb" }, "python": { "module": "aws_cdk.aws_memorydb" } } }, "aws-cdk-lib.aws_msk": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MSK" }, "java": { "package": "software.amazon.awscdk.services.msk" }, "python": { "module": "aws_cdk.aws_msk" } } }, "aws-cdk-lib.aws_mwaa": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.MWAA" }, "java": { "package": "software.amazon.awscdk.services.mwaa" }, "python": { "module": "aws_cdk.aws_mwaa" } } }, "aws-cdk-lib.aws_neptune": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Neptune" }, "java": { "package": "software.amazon.awscdk.services.neptune" }, "python": { "module": "aws_cdk.aws_neptune" } } }, "aws-cdk-lib.aws_networkfirewall": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.NetworkFirewall" }, "java": { "package": "software.amazon.awscdk.services.networkfirewall" }, "python": { "module": "aws_cdk.aws_networkfirewall" } } }, "aws-cdk-lib.aws_networkmanager": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.NetworkManager" }, "java": { "package": "software.amazon.awscdk.services.networkmanager" }, "python": { "module": "aws_cdk.aws_networkmanager" } } }, "aws-cdk-lib.aws_nimblestudio": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.NimbleStudio" }, "java": { "package": "software.amazon.awscdk.services.nimblestudio" }, "python": { "module": "aws_cdk.aws_nimblestudio" } } }, "aws-cdk-lib.aws_opensearchservice": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.OpenSearchService" }, "java": { "package": "software.amazon.awscdk.services.opensearchservice" }, "python": { "module": "aws_cdk.aws_opensearchservice" } } }, "aws-cdk-lib.aws_opsworks": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.OpsWorks" }, "java": { "package": "software.amazon.awscdk.services.opsworks" }, "python": { "module": "aws_cdk.aws_opsworks" } } }, "aws-cdk-lib.aws_opsworkscm": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.OpsWorksCM" }, "java": { "package": "software.amazon.awscdk.services.opsworkscm" }, "python": { "module": "aws_cdk.aws_opsworkscm" } } }, "aws-cdk-lib.aws_panorama": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Panorama" }, "java": { "package": "software.amazon.awscdk.services.panorama" }, "python": { "module": "aws_cdk.aws_panorama" } } }, "aws-cdk-lib.aws_pinpoint": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Pinpoint" }, "java": { "package": "software.amazon.awscdk.services.pinpoint" }, "python": { "module": "aws_cdk.aws_pinpoint" } } }, "aws-cdk-lib.aws_pinpointemail": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.PinpointEmail" }, "java": { "package": "software.amazon.awscdk.services.pinpointemail" }, "python": { "module": "aws_cdk.aws_pinpointemail" } } }, "aws-cdk-lib.aws_qldb": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.QLDB" }, "java": { "package": "software.amazon.awscdk.services.qldb" }, "python": { "module": "aws_cdk.aws_qldb" } } }, "aws-cdk-lib.aws_quicksight": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.QuickSight" }, "java": { "package": "software.amazon.awscdk.services.quicksight" }, "python": { "module": "aws_cdk.aws_quicksight" } } }, "aws-cdk-lib.aws_ram": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.RAM" }, "java": { "package": "software.amazon.awscdk.services.ram" }, "python": { "module": "aws_cdk.aws_ram" } } }, "aws-cdk-lib.aws_rds": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.RDS" }, "java": { "package": "software.amazon.awscdk.services.rds" }, "python": { "module": "aws_cdk.aws_rds" } } }, "aws-cdk-lib.aws_redshift": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Redshift" }, "java": { "package": "software.amazon.awscdk.services.redshift" }, "python": { "module": "aws_cdk.aws_redshift" } } }, "aws-cdk-lib.aws_rekognition": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Rekognition" }, "java": { "package": "software.amazon.awscdk.services.rekognition" }, "python": { "module": "aws_cdk.aws_rekognition" } } }, "aws-cdk-lib.aws_resourcegroups": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ResourceGroups" }, "java": { "package": "software.amazon.awscdk.services.resourcegroups" }, "python": { "module": "aws_cdk.aws_resourcegroups" } } }, "aws-cdk-lib.aws_robomaker": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.RoboMaker" }, "java": { "package": "software.amazon.awscdk.services.robomaker" }, "python": { "module": "aws_cdk.aws_robomaker" } } }, "aws-cdk-lib.aws_route53": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53" }, "java": { "package": "software.amazon.awscdk.services.route53" }, "python": { "module": "aws_cdk.aws_route53" } } }, "aws-cdk-lib.aws_route53_patterns": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53.Patterns" }, "java": { "package": "software.amazon.awscdk.services.route53.patterns" }, "python": { "module": "aws_cdk.aws_route53_patterns" } } }, "aws-cdk-lib.aws_route53_targets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53.Targets" }, "java": { "package": "software.amazon.awscdk.services.route53.targets" }, "python": { "module": "aws_cdk.aws_route53_targets" } } }, "aws-cdk-lib.aws_route53recoverycontrol": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53RecoveryControl" }, "java": { "package": "software.amazon.awscdk.services.route53recoverycontrol" }, "python": { "module": "aws_cdk.aws_route53recoverycontrol" } } }, "aws-cdk-lib.aws_route53recoveryreadiness": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53RecoveryReadiness" }, "java": { "package": "software.amazon.awscdk.services.route53recoveryreadiness" }, "python": { "module": "aws_cdk.aws_route53recoveryreadiness" } } }, "aws-cdk-lib.aws_route53resolver": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Route53Resolver" }, "java": { "package": "software.amazon.awscdk.services.route53resolver" }, "python": { "module": "aws_cdk.aws_route53resolver" } } }, "aws-cdk-lib.aws_s3": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3" }, "java": { "package": "software.amazon.awscdk.services.s3" }, "python": { "module": "aws_cdk.aws_s3" } } }, "aws-cdk-lib.aws_s3_assets": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3.Assets" }, "java": { "package": "software.amazon.awscdk.services.s3.assets" }, "python": { "module": "aws_cdk.aws_s3_assets" } } }, "aws-cdk-lib.aws_s3_deployment": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3.Deployment" }, "java": { "package": "software.amazon.awscdk.services.s3.deployment" }, "python": { "module": "aws_cdk.aws_s3_deployment" } } }, "aws-cdk-lib.aws_s3_notifications": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3.Notifications" }, "java": { "package": "software.amazon.awscdk.services.s3.notifications" }, "python": { "module": "aws_cdk.aws_s3_notifications" } } }, "aws-cdk-lib.aws_s3objectlambda": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3ObjectLambda" }, "java": { "package": "software.amazon.awscdk.services.s3objectlambda" }, "python": { "module": "aws_cdk.aws_s3objectlambda" } } }, "aws-cdk-lib.aws_s3outposts": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.S3Outposts" }, "java": { "package": "software.amazon.awscdk.services.s3outposts" }, "python": { "module": "aws_cdk.aws_s3outposts" } } }, "aws-cdk-lib.aws_sagemaker": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Sagemaker" }, "java": { "package": "software.amazon.awscdk.services.sagemaker" }, "python": { "module": "aws_cdk.aws_sagemaker" } } }, "aws-cdk-lib.aws_sam": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SAM" }, "java": { "package": "software.amazon.awscdk.services.sam" }, "python": { "module": "aws_cdk.aws_sam" } } }, "aws-cdk-lib.aws_sdb": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SDB" }, "java": { "package": "software.amazon.awscdk.services.sdb" }, "python": { "module": "aws_cdk.aws_sdb" } } }, "aws-cdk-lib.aws_secretsmanager": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SecretsManager" }, "java": { "package": "software.amazon.awscdk.services.secretsmanager" }, "python": { "module": "aws_cdk.aws_secretsmanager" } } }, "aws-cdk-lib.aws_securityhub": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SecurityHub" }, "java": { "package": "software.amazon.awscdk.services.securityhub" }, "python": { "module": "aws_cdk.aws_securityhub" } } }, "aws-cdk-lib.aws_servicecatalog": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Servicecatalog" }, "java": { "package": "software.amazon.awscdk.services.servicecatalog" }, "python": { "module": "aws_cdk.aws_servicecatalog" } } }, "aws-cdk-lib.aws_servicecatalogappregistry": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Servicecatalogappregistry" }, "java": { "package": "software.amazon.awscdk.services.servicecatalogappregistry" }, "python": { "module": "aws_cdk.aws_servicecatalogappregistry" } } }, "aws-cdk-lib.aws_servicediscovery": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.ServiceDiscovery" }, "java": { "package": "software.amazon.awscdk.services.servicediscovery" }, "python": { "module": "aws_cdk.aws_servicediscovery" } } }, "aws-cdk-lib.aws_ses": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SES" }, "java": { "package": "software.amazon.awscdk.services.ses" }, "python": { "module": "aws_cdk.aws_ses" } } }, "aws-cdk-lib.aws_ses_actions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SES.Actions" }, "java": { "package": "software.amazon.awscdk.services.ses.actions" }, "python": { "module": "aws_cdk.aws_ses_actions" } } }, "aws-cdk-lib.aws_signer": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Signer" }, "java": { "package": "software.amazon.awscdk.services.signer" }, "python": { "module": "aws_cdk.aws_signer" } } }, "aws-cdk-lib.aws_sns": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SNS" }, "java": { "package": "software.amazon.awscdk.services.sns" }, "python": { "module": "aws_cdk.aws_sns" } } }, "aws-cdk-lib.aws_sns_subscriptions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SNS.Subscriptions" }, "java": { "package": "software.amazon.awscdk.services.sns.subscriptions" }, "python": { "module": "aws_cdk.aws_sns_subscriptions" } } }, "aws-cdk-lib.aws_sqs": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SQS" }, "java": { "package": "software.amazon.awscdk.services.sqs" }, "python": { "module": "aws_cdk.aws_sqs" } } }, "aws-cdk-lib.aws_ssm": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SSM" }, "java": { "package": "software.amazon.awscdk.services.ssm" }, "python": { "module": "aws_cdk.aws_ssm" } } }, "aws-cdk-lib.aws_ssmcontacts": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SSMContacts" }, "java": { "package": "software.amazon.awscdk.services.ssmcontacts" }, "python": { "module": "aws_cdk.aws_ssmcontacts" } } }, "aws-cdk-lib.aws_ssmincidents": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SSMIncidents" }, "java": { "package": "software.amazon.awscdk.services.ssmincidents" }, "python": { "module": "aws_cdk.aws_ssmincidents" } } }, "aws-cdk-lib.aws_sso": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.SSO" }, "java": { "package": "software.amazon.awscdk.services.sso" }, "python": { "module": "aws_cdk.aws_sso" } } }, "aws-cdk-lib.aws_stepfunctions": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.StepFunctions" }, "java": { "package": "software.amazon.awscdk.services.stepfunctions" }, "python": { "module": "aws_cdk.aws_stepfunctions" } } }, "aws-cdk-lib.aws_stepfunctions_tasks": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.StepFunctions.Tasks" }, "java": { "package": "software.amazon.awscdk.services.stepfunctions.tasks" }, "python": { "module": "aws_cdk.aws_stepfunctions_tasks" } } }, "aws-cdk-lib.aws_synthetics": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Synthetics" }, "java": { "package": "software.amazon.awscdk.services.synthetics" }, "python": { "module": "aws_cdk.aws_synthetics" } } }, "aws-cdk-lib.aws_timestream": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Timestream" }, "java": { "package": "software.amazon.awscdk.services.timestream" }, "python": { "module": "aws_cdk.aws_timestream" } } }, "aws-cdk-lib.aws_transfer": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Transfer" }, "java": { "package": "software.amazon.awscdk.services.transfer" }, "python": { "module": "aws_cdk.aws_transfer" } } }, "aws-cdk-lib.aws_waf": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.WAF" }, "java": { "package": "software.amazon.awscdk.services.waf" }, "python": { "module": "aws_cdk.aws_waf" } } }, "aws-cdk-lib.aws_wafregional": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.WAFRegional" }, "java": { "package": "software.amazon.awscdk.services.waf.regional" }, "python": { "module": "aws_cdk.aws_wafregional" } } }, "aws-cdk-lib.aws_wafv2": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.WAFv2" }, "java": { "package": "software.amazon.awscdk.services.wafv2" }, "python": { "module": "aws_cdk.aws_wafv2" } } }, "aws-cdk-lib.aws_wisdom": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.Wisdom" }, "java": { "package": "software.amazon.awscdk.services.wisdom" }, "python": { "module": "aws_cdk.aws_wisdom" } } }, "aws-cdk-lib.aws_workspaces": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.WorkSpaces" }, "java": { "package": "software.amazon.awscdk.services.workspaces" }, "python": { "module": "aws_cdk.aws_workspaces" } } }, "aws-cdk-lib.aws_xray": { "targets": { "dotnet": { "namespace": "Amazon.CDK.AWS.XRay" }, "java": { "package": "software.amazon.awscdk.services.xray" }, "python": { "module": "aws_cdk.aws_xray" } } }, "aws-cdk-lib.cloud_assembly_schema": { "targets": { "dotnet": { "namespace": "Amazon.CDK.CloudAssembly.Schema" }, "java": { "package": "software.amazon.awscdk.cloudassembly.schema" }, "python": { "module": "aws_cdk.cloud_assembly_schema" } } }, "aws-cdk-lib.cloudformation_include": { "targets": { "dotnet": { "namespace": "Amazon.CDK.CloudFormation.Include" }, "java": { "package": "software.amazon.awscdk.cloudformation.include" }, "python": { "module": "aws_cdk.cloudformation_include" } } }, "aws-cdk-lib.custom_resources": { "targets": { "dotnet": { "namespace": "Amazon.CDK.CustomResources" }, "java": { "package": "software.amazon.awscdk.customresources" }, "python": { "module": "aws_cdk.custom_resources" } } }, "aws-cdk-lib.cx_api": { "targets": { "dotnet": { "namespace": "Amazon.CDK.CXAPI" }, "java": { "package": "software.amazon.awscdk.cxapi" }, "python": { "module": "aws_cdk.cx_api" } } }, "aws-cdk-lib.lambda_layer_awscli": { "targets": { "dotnet": { "namespace": "Amazon.CDK.LambdaLayer.AwsCli" }, "java": { "package": "software.amazon.awscdk.lambdalayer.awscli" }, "python": { "module": "aws_cdk.lambda_layer_awscli" } } }, "aws-cdk-lib.lambda_layer_kubectl": { "targets": { "dotnet": { "namespace": "Amazon.CDK.LambdaLayer.Kubectl" }, "java": { "package": "software.amazon.awscdk.lambdalayer.kubectl" }, "python": { "module": "aws_cdk.lambda_layer_kubectl" } } }, "aws-cdk-lib.lambda_layer_node_proxy_agent": { "targets": { "dotnet": { "namespace": "Amazon.CDK.LambdaLayer.NodeProxyAgent" }, "java": { "package": "software.amazon.awscdk.lambda.layer.node.proxy.agent" }, "python": { "module": "aws_cdk.lambda_layer_node_proxy_agent" } } }, "aws-cdk-lib.pipelines": { "targets": { "dotnet": { "namespace": "Amazon.CDK.Pipelines" }, "java": { "package": "software.amazon.awscdk.pipelines" }, "python": { "module": "aws_cdk.pipelines" } } }, "aws-cdk-lib.region_info": { "targets": { "dotnet": { "namespace": "Amazon.CDK.RegionInfo" }, "java": { "package": "software.amazon.awscdk.regioninfo" }, "python": { "module": "aws_cdk.region_info" } } } }, "targets": { "dotnet": { "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png", "namespace": "Amazon.CDK", "packageId": "Amazon.CDK.Lib" }, "go": { "moduleName": "github.com/aws/aws-cdk-go", "packageName": "awscdk" }, "java": { "maven": { "artifactId": "aws-cdk-lib", "groupId": "software.amazon.awscdk" }, "package": "software.amazon.awscdk" }, "js": { "npm": "aws-cdk-lib" }, "python": { "distName": "aws-cdk-lib", "module": "aws_cdk" } } }, "constructs": { "targets": { "dotnet": { "namespace": "Constructs", "packageId": "Constructs" }, "go": { "moduleName": "github.com/aws/constructs-go" }, "java": { "maven": { "artifactId": "constructs", "groupId": "software.constructs" }, "package": "software.constructs" }, "js": { "npm": "constructs" }, "python": { "distName": "constructs", "module": "constructs" } } } }, "description": "This is a AWS CDK construct package surrounding the topic of the AWS IoT Device registration, mainly implementing the functionalities of JITP, JITR, and Fleet-Provisioning.", "docs": { "stability": "stable" }, "homepage": "https://github.com/SoftChef/cdk-iot-security.git", "jsiiVersion": "1.57.0 (build f614666)", "keywords": [ "Fleet-Provisioning", "JITP", "JITR", "aws", "cdk", "construct" ], "license": "Apache-2.0", "metadata": { "jsii": { "pacmak": { "hasDefaultInterfaces": true } }, "tscRootDir": "src" }, "name": "@softchef/cdk-iot-security", "readme": { "markdown": "# CDK Construct - IoT Security\n\n[![npm version](https://badge.fury.io/js/%40softchef%2Fcdk-iot-security.svg)](https://badge.fury.io/js/%40softchef%2Fcdk-restapi)\n![Release](https://github.com/SoftChef/cdk-iot-security/workflows/Release/badge.svg)\n![npm](https://img.shields.io/npm/dt/@softchef/cdk-iot-security?label=NPM%20Downloads&color=orange)\n\n```cdk-iot-security``` is a project surrounding the topic of the AWS IoT Device registration. In order to utilize the AWS IoT services securely, we might need to maintain our device certificates and the relative resources. AWS IoT holds an organized architecture allowing us to register multiple certificates to it, and provides APIs for fetching information supporting our management. This project focuses on the autherization work flows of AWS IoT, provides CDK constructs which satisfy the requirements of [Just-in-time registration](https://aws.amazon.com/tw/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/), [Just-in-time provisioning](https://aws.amazon.com/tw/blogs/iot/setting-up-just-in-time-provisioning-with-aws-iot-core/), and [Fleet-provisioning](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html). Utilizing ```cdk-iot-security```, you do not need to implement the resource provisioning flow by yourself, and can focus on other functionalities of your IoT products.\n\n## Installation\n\n### NPM\n\n npm install @softchef/cdk-iot-security\n\n### Yarn\n\n yarn add @softchef/cdk-iot-security\n\n## Examples\n\n* [JITR](./src/demo/jitr/README.md)\n\n* [JITP](./src/demo/jitp/README.md)\n\n* [Fleet-Provisioning](./src/demo/fleet-provision/README.md)\n\n## Just-in-Time Registration\n\nJITR work flow is usually applied in a situation that the devices are able to generate their own certificates. The scenario would probably like the following: the service provider deploy the JITR construct; the service provider create registered CA; the service provider make a copy of the CA certificate on a device and provide the device for the user client; an user client turn on the device and the device generate its certificate; the device connect to the AWS IoT through MQTT connection. The AWS IoT JITR service will be triggered and the JITR MQTT message will be passed through the topic rule, the SQS queue, eventually reach the Device Activator. Finally, the Device Activator verifies and activates the device certificate, and provision the AWS IoT resources for the device certificate.\n\n### Structure\n\n![](./doc/JITR-AWS.png)\n\n#### Endogenous Components\n\n##### Device Activator\n\nThe NodeJS Lambda Function with the functionality of activating a device certificate requesting for JITR.\n\n##### CA Registrator\n\nThe NodeJS Lambda Function with the functionality of registering a CA certificate on AWS IoT.\n\n##### Verifiers Fetcher\n\nThe NodeJS Lambda Function with the functionality of returning the names of the verfifiers.\n\n##### JITR Topic Rule\n\nThe AWS IoT Topic Rule with the functionality of collecting the MQTT message originating from the JITR request.\n\n##### Review Receptor\n\nThe SQS queue with the functionality of recepting the MQTT message collected by the JITP Topic Rule and pass to the Device Activation for further review.\n\n#### Exogenous Components\n\n##### Vault\n\nThe S3 Bucket provided by the user for storing the created CA certificate secerts, including certificate, private key, and public key, also the CA certificate ID and ARN.\n\n##### Verifiers\n\nThe Lambda Function provided by the user for device verification. If must return a payload with the following format:\n\n {\n ...\n \"verified\": \"true\", // or false\n }\n\nIf it returns ```{\"verified\": \"true\"}```, the Device Activator would complete the provision. Otherwise, the process is interrupted.\n\n##### API\n\nYou can integrate your own API to the CA registrator and Verifiers Fetcher for utilization.\n\n### Flow\n\n![](./doc/JITR.png)\n\n### Usage\n\n#### Overview\n\nThe process of applying JITR is mainly consist of the following steps:\n\n1. Initialize the JITR construct.\n\n2. Create CA through calling the CA Registrator.\n\n3. Create the device certificate with the device.\n\n4. Connect the device to the AWS IoT.\n\nSome details informations of those three steps are discussed in the following sections. For step-by-step guide, please read the [JITR demonstration files](./src/demo/jitr/README.md).\n\n#### Initialize the JITR Construct\n\n import { JustInTimeRegistration } from '@softchef/cdk-iot-security';\n import * as cdk from '@aws-cdk/core';\n import * as s3 from '@aws-cdk/aws-s3';\n import * as lambda from '@aws-cdk/aws-lambda';\n\n const app = new cdk.App();\n const id = 'JitrDemo';\n const stack = new cdk.Stack(app, id);\n const anotherStack = new cdk.Stack(app, 'anotherStack');\n new JustInTimeRegistration(stack, id, {\n vault: {\n bucket: new s3.Bucket(anotherStack, 'myVault2'),\n prefix: 'my/ca/path',\n },\n verifiers: [\n new lambda.Function(anotherStack, 'verifier1', {\n code: lambda.Code.fromInline('exports.handler = async (_event) => { return JSON.stringify({ verified: true }); }'),\n handler: 'handler',\n runtime: lambda.Runtime.NODEJS_12_X,\n }),\n new lambda.Function(anotherStack, 'verifier2', {\n code: lambda.Code.fromInline('exports.handler = async (event) => { return JSON.stringify({ verified: event? true : false }); }'),\n handler: 'handler',\n runtime: lambda.Runtime.NODEJS_12_X,\n })\n ]\n });\n\n#### Call the CA Registrator\n\nYou call the CA Registrator to registrate a new CA on the AWS IoT before generating a device certificate.\n\nCA Registrator assumes receiving an event object with the following format:\n\n event = {\n ...\n \"body\": {\n \"csrSubjects\": {\n \"commonName\": \"myName\",\n \"countryName\": \"TW\",\n \"stateName\": \"TP\",\n \"localityName\": \"TW\",\n \"organizationName\": \"Soft Chef\",\n \"organizationUnitName\": \"web\"\n },\n \"verifierName\": \"verifier_name\",\n }\n }\n\nSince the event is mainly a HTTP POST request, it has a body section containing attached information. The body consist of three parts, CSR subjects, verifier name, and template body.\n\n* CSR subjects define the information to fill up the subject fields of the CA certificate. CSR subjects are optional. If some of the fields are leaved blank, those fields will be fill up with empty string. Mandated by the AWS, the common name field would be replaced by the registration code, thus is unnecessary.\n\n* Verifier name specifies the verifier applied in the device verification. Verifier name is Optional.\n\n#### Call the Verifiers Fetcher\n\nYou can checkout the names of the verifiers through the Verifiers Fetcher when you forget the names.\n\nVerifiers Fetcher assumes receiving an event object with the following format:\n\n event = {\n ...\n body: {}\n }\n\nSince the event is mainly a HTTP GET request, no body content is expected. However, no matter what the request content is, the Verifiers Fetcher always return all the verifiers' name.\n\n#### Connect the Device to the AWS IoT\n\nTo trigger the JITR and the provisioning of resources, the deivce has to send a MQTT message to the AWS IoT. You need to have the basic knowledge about the MQTT. You can complete this step with either a pure MQTT connection, or ```aws-iot-deivce-sdk```. For the former, please read [mqtt-connect.js](./src/demo/jitr/mqtt-connect.js), for the later, please read [device.js](./src/demo/jitr/device.js)\n\n## Just-in-Time Provision\n\nJITP work flow is usually applied in a situation that the devices are not able to generate their own certificates. The scenario would probably like the following: the service provider deploies the JITP construct and provides the API for the user client; the service provider creates registered CA; an user client get the generated device certificate through the API; the user client pass the device certificate to the device; the device connect to the AWS IoT through MQTT connection. Finally, the AWS IoT JITP service will be triggered and provision the expected resources.\n\n### Structure\n\n![](./doc/jitp/JITP-AWS.png)\n\n#### Endogenous Components\n\n##### CA Registrator\n\nThe NodeJS Lambda Function with the functionality of registering a CA certificate on AWS IoT.\n\n##### Verifiers Fetcher\n\nThe NodeJS Lambda Function with the functionality of returning the names of the verfifiers.\n\n##### Device Certificate Generator\n\nThe NodeJS Lambda Function with the functionality of generating the device certificate.\n\n#### Exogenous Components\n\n##### Vault\n\nThe S3 Bucket provided by the user for storing the created CA certificate secerts, including certificate, private key, and public key, also the CA certificate ID and ARN.\n\n##### Verifiers\n\nThe Lambda Function provided by the user for device verification. If must return a payload with the following format:\n\n {\n ...\n \"verified\": \"true\", // or false\n }\n\nIf it returns ```{\"verified\": \"true\"}```, the Device Certificate Generator would complete the device certificate generation. Otherwise, the process is interrupted.\n\n##### API\n\nYou can integrate your own API to the CA registrator, Device Certificate Generator, and Verifiers Fetcher for further utilization.\n\n### Flow\n\n![](./doc/jitp/JITP.png)\n\n### Usage\n\n#### Overview\n\nThe process of applying JITP is mainly consist of the following steps:\n\n1. Initialize the JITP construct.\n\n2. Create CA through calling the CA Registrator.\n\n3. Create Device Certificate through calling the Device Certificate Generator.\n\n4. Connect the device to the AWS IoT.\n\nSome details informations of those four steps are discussed in the following sections. For step-by-step guide, please read the [JITP demonstration files](./src/demo/jitp/README.md).\n\n#### Initialize the JITP Construct\n\n import { JustInTimeProvision } from '@softchef/cdk-iot-security';\n import { Bucket } from '@aws-cdk/aws-s3';\n import * as cdk from '@aws-cdk/core';\n\n const app = new cdk.App();\n const id = 'JitpDemo';\n const stack = new cdk.Stack(app, id);\n const justInTimeProvision = new JustInTimeProvision(stack, id, {\n vault: {\n bucket: new Bucket(stack, 'myVault'),\n },\n verifiers: [\n new lambda.Function(anotherStack, 'verifier1', {\n code: lambda.Code.fromInline('exports.handler = async (_event) => { return JSON.stringify({ verified: true }); }'),\n handler: 'handler',\n runtime: lambda.Runtime.NODEJS_12_X,\n }),\n new lambda.Function(anotherStack, 'verifier2', {\n code: lambda.Code.fromInline('exports.handler = async (event) => { return JSON.stringify({ verified: event? true : false }); }'),\n handler: 'handler',\n runtime: lambda.Runtime.NODEJS_12_X,\n })\n ],\n });\n\n#### Call the CA Registrator\n\nYou call the CA Registrator to registrate a new CA on the AWS IoT before generating a device certificate.\n\nCA Registrator assumes receiving an event object with the following format:\n\n event = {\n ...\n \"body\": {\n \"csrSubjects\": {\n \"commonName\": \"myName\",\n \"countryName\": \"TW\",\n \"stateName\": \"TP\",\n \"localityName\": \"TW\",\n \"organizationName\": \"Soft Chef\",\n \"organizationUnitName\": \"web\"\n },\n \"verifierName\": \"verifier_name\",\n \"templateBody\": \"{ \\\"Parameters\\\" : { \\\"AWS::IoT::Certificate::Country\\\" : { \\\"Type\\\" : \\\"String\\\" }, \\\"AWS::IoT::Certificate::Id\\\" : { \\\"Type\\\" : \\\"String\\\" } }, \\\"Resources\\\" : { \\\"thing\\\" : { \\\"Type\\\" : \\\"AWS::IoT::Thing\\\", \\\"Properties\\\" : { \\\"ThingName\\\" : {\\\"Ref\\\" : \\\"AWS::IoT::Certificate::Id\\\"}, \\\"AttributePayload\\\" : { \\\"version\\\" : \\\"v1\\\", \\\"country\\\" : {\\\"Ref\\\" : \\\"AWS::IoT::Certificate::Country\\\"}} } }, \\\"certificate\\\" : { \\\"Type\\\" : \\\"AWS::IoT::Certificate\\\", \\\"Properties\\\" : { \\\"CertificateId\\\": {\\\"Ref\\\" : \\\"AWS::IoT::Certificate::Id\\\"}, \\\"Status\\\" : \\\"ACTIVE\\\" } }, \\\"policy\\\" : {\\\"Type\\\" : \\\"AWS::IoT::Policy\\\", \\\"Properties\\\" : { \\\"PolicyDocument\\\" : \\\"{\\\\\\\"Version\\\\\\\": \\\\\\\"2012-10-17\\\\\\\",\\\\\\\"Statement\\\\\\\": [{\\\\\\\"Effect\\\\\\\":\\\\\\\"Allow\\\\\\\",\\\\\\\"Action\\\\\\\": [\\\\\\\"iot:Connect\\\\\\\",\\\\\\\"iot:Publish\\\\\\\"],\\\\\\\"Resource\\\\\\\" : [\\\\\\\"*\\\\\\\"]}]}\\\" } } } }\"\n }\n }\n }\n\nSince the event is mainly a HTTP POST request, it has a body section containing attached information. The body consist of three parts, CSR subjects, verifier name, and template body.\n\n* CSR subjects define the information to fill up the subject fields of the CA certificate. CSR subjects are optional. If some of the fields are leaved blank, those fields will be fill up with empty string. Mandated by the AWS, the common name field would be replaced by the registration code, thus is unnecessary.\n\n* Verifier name specifies the verifier applied in the device verification. Verifier name is Optional.\n\n* Template body is a string defining the resources provisioned for the device. Template body is Optional. If no template body being specified, a default template body will be applied. See more information about defining a template body from [here](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html).\n\n#### Call the Device Certificate Generator\n\nYou call the Device Certificate Generator to generate a device certificate after register a CA on AWS IoT.\n\nDevice Certificate Generator assumes receiving an event object with the following format:\n\n event = {\n ...\n body: {\n \"caCertificateId\": \"myCaCertificateId\",\n \"csrSubjects\": {\n \"commonName\": \"myThingName\", // data in this field would be the thing name\n \"countryName\": \"TW\",\n \"stateName\": \"TP\",\n \"localityName\": \"TW\",\n \"organizationName\": \"Soft Chef\",\n \"organizationUnitName\": \"web\"\n },\n \"deviceInfo\": {\n ...\n },\n }\n }\n\nSince the event is mainly a HTTP POST request, it has a body section containing attached information. The body consist of three parts, CA certificate ID, CSR subjects, and device information.\n\n* CA certificate ID is the ID of the CA created by the CA Registrator. CA certificate ID is required by the Device Certificate Generator. The CA will authenticate the device certificate.\n\n* CSR subjects define the information to fill up the subject fields of the device certificate. CSR subjects are optional. If some of the fields are leaved blank, those fields will be fill up with empty string. The string data in the common name field will be set as the name of the AWS IoT Thing. Thing name is the desirable name you give to the AWS IoT thing provisioned for the device certificate. If no thing name is specified, the thing name would be an UUID.\n\n* Device information is the information provided by the device for verification. Whether it is required or not and its form depends on your configuration of the verifiers.\n\n#### Call the Verifiers Fetcher\n\nYou can checkout the names of the verifiers through the Verifiers Fetcher when you forget the names.\n\nVerifiers Fetcher assumes receiving an event object with the following format:\n\n event = {\n ...\n body: {}\n }\n\nSince the event is mainly a HTTP GET request, no body content is expected. However, no matter what the request content is, the Verifiers Fetcher always return all the verifiers' name.\n\n#### Connect the Device to the AWS IoT\n\nTo trigger the JITP and the provisioning of resources, the deivce has to send a MQTT message to the AWS IoT. You need to have the basic knowledge about the MQTT. You can complete this step with either a pure MQTT connection, or ```aws-iot-deivce-sdk```. For the former, please read [this file](./src/demo/jitp/mqtt-connect.js), for the later, please read [this file](./src/demo/jitp/device.js).\n\n## Fleet Provision\n\n### Structure\n\n![](./doc/fleet-provision/Fleet-Provision-AWS.png)\n\n#### Endogenous Components\n\n##### Fleet Generator\n\nThe NodeJS Lambda Function with the functionality of registering a Fleet-Provisioning Template and a Provisioning Claim Certificate on AWS IoT.\n\n#### Exogenous Components\n\n##### Vault\n\nThe S3 Bucket provided by the user for storing the created Provisioning Claim Certificate secerts, including certificate, private key, and public key, also the Provisioning Claim Certificate ID and ARN.\n\n##### API\n\nYou can integrate your own API to the Fleet Generator for further utilization.\n\n### Flow\n\n![](./doc/fleet-provision/Fleet-Provision.png)\n\n### Usage\n\n#### Overview\n\nThe process of applying Fleet-Provision is mainly consist of the following steps:\n\n1. Initialize the Fleet-Provision construct.\n\n2. Create the Fleet-Provisioning Template and Provisioning Claim Certificate through calling the Fleet Generator.\n\n3. Connect the device to the AWS IoT with Provisioning Claim Certificate and save the formal device certificates in the device.\n\nSome details informations of those three steps are discussed in the following sections. For step-by-step guide, please read the [Fleet-Provision demonstration files](./src/demo/fleet-provision/README.md).\n\n#### Initialize the Fleet-Provision Construct\n\n import * as apigateway from '@aws-cdk/aws-apigateway';\n import * as s3 from '@aws-cdk/aws-s3';\n import * as cdk from '@aws-cdk/core';\n import { FleetProvision } from '@softchef/cdk-iot-security';\n\n const app = new cdk.App();\n const id = 'FleetProvisionDemo';\n const stack = new cdk.Stack(app, id);\n const vault = new s3.Bucket(stack, 'myVault');\n const fleetProvision = new FleetProvision(stack, id, {\n vault: {\n bucket: vault,\n },\n // Decomment the following line to apply the Greengrass V2 mode\n // greengrassV2: true,\n });\n\n#### Call the Fleet Generator\n\nYou call the Fleet Generator to generate a new Fleet-Provisioning Template and Provisioning Claim Certificate on the AWS IoT.\n\nFleet Generator assumes receiving an event object with the following format:\n\n event = {\n ...\n \"body\": {\n \"templateName\": \"myTemplateName\",\n }\n }\n\nSince the event is mainly a HTTP POST request, it has a body section containing attached information. The body consist of the template name.\n\n#### Connect the Device to the AWS IoT\n\nTo trigger the Fleet-Provision, the deivce has to send a MQTT message to the AWS IoT. You can complete this step with ```aws-iot-deivce-sdk-v2```. Please read [this file](./src/demo/fleet-provision/connect.js) for detail." }, "repository": { "type": "git", "url": "https://github.com/SoftChef/cdk-iot-security.git" }, "schema": "jsii/0.10.0", "targets": { "js": { "npm": "@softchef/cdk-iot-security" } }, "types": { "@softchef/cdk-iot-security.CaRegistrator": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", "docs": { "stability": "stable", "summary": "The NodeJS Lambda Function having the main functionality of registering a CA on AWS IoT." }, "fqn": "@softchef/cdk-iot-security.CaRegistrator", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the CA Registrator." }, "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 56 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.CaRegistrator.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 49 }, "name": "CaRegistrator", "symbolId": "src/components/ca-registrator:CaRegistrator" }, "@softchef/cdk-iot-security.CaRegistrator.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the CA Registrator." }, "fqn": "@softchef/cdk-iot-security.CaRegistrator.Props", "kind": "interface", "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 29 }, "name": "Props", "namespace": "CaRegistrator", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 34 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The Role for JITP." }, "immutable": true, "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 42 }, "name": "registrationConfigRole", "optional": true, "type": { "fqn": "@softchef/cdk-iot-security.RegistrationConfigRole" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The verifiers to verify the client certificates." }, "immutable": true, "locationInModule": { "filename": "src/components/ca-registrator.ts", "line": 38 }, "name": "verifiers", "optional": true, "type": { "collection": { "elementtype": { "fqn": "aws-cdk-lib.aws_lambda.Function" }, "kind": "array" } } } ], "symbolId": "src/components/ca-registrator:CaRegistrator.Props" }, "@softchef/cdk-iot-security.DeviceActivator": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", "docs": { "stability": "stable", "summary": "The NodeJS Lambda Function having the main functionality of activating the device certificate and provision the AWS IoT resources." }, "fqn": "@softchef/cdk-iot-security.DeviceActivator", "initializer": { "docs": { "stability": "stable", "summary": "Inistialize the Device Activator." }, "locationInModule": { "filename": "src/components/device-activator.ts", "line": 23 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/device-activator.ts", "line": 16 }, "name": "DeviceActivator", "symbolId": "src/components/device-activator:DeviceActivator" }, "@softchef/cdk-iot-security.DeviceCertificateGenerator": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", "docs": { "stability": "stable", "summary": "The NodeJS Lambda Function having the main functionality of generating a device certificate set authenticated by a registered CA." }, "fqn": "@softchef/cdk-iot-security.DeviceCertificateGenerator", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the Device Certificate Generator." }, "locationInModule": { "filename": "src/components/deivce-certificate-generator.ts", "line": 40 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.DeviceCertificateGenerator.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/deivce-certificate-generator.ts", "line": 33 }, "name": "DeviceCertificateGenerator", "symbolId": "src/components/deivce-certificate-generator:DeviceCertificateGenerator" }, "@softchef/cdk-iot-security.DeviceCertificateGenerator.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Device Certificate Generator." }, "fqn": "@softchef/cdk-iot-security.DeviceCertificateGenerator.Props", "kind": "interface", "locationInModule": { "filename": "src/components/deivce-certificate-generator.ts", "line": 21 }, "name": "Props", "namespace": "DeviceCertificateGenerator", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/components/deivce-certificate-generator.ts", "line": 26 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } } ], "symbolId": "src/components/deivce-certificate-generator:DeviceCertificateGenerator.Props" }, "@softchef/cdk-iot-security.FleetGenerator": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", "docs": { "stability": "stable", "summary": "The NodeJS Lambda Function having the main functionality of generating a fleet-provisioning template and a provision-claim certificate on AWS IoT." }, "fqn": "@softchef/cdk-iot-security.FleetGenerator", "initializer": { "docs": { "stability": "stable", "summary": "* Inistialize the Fleet Generator." }, "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 50 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.FleetGenerator.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 43 }, "name": "FleetGenerator", "symbolId": "src/components/fleet-generator:FleetGenerator" }, "@softchef/cdk-iot-security.FleetGenerator.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Fleet Generator." }, "fqn": "@softchef/cdk-iot-security.FleetGenerator.Props", "kind": "interface", "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 23 }, "name": "Props", "namespace": "FleetGenerator", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The Role for Fleet Provision." }, "immutable": true, "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 32 }, "name": "fleetProvisionRole", "type": { "fqn": "@softchef/cdk-iot-security.FleetProvisioningRole" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 28 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "Enable the Greengrass V2 mode." }, "immutable": true, "locationInModule": { "filename": "src/components/fleet-generator.ts", "line": 36 }, "name": "enableGreengrassV2Mode", "optional": true, "type": { "primitive": "boolean" } } ], "symbolId": "src/components/fleet-generator:FleetGenerator.Props" }, "@softchef/cdk-iot-security.FleetProvision": { "assembly": "@softchef/cdk-iot-security", "base": "constructs.Construct", "docs": { "stability": "stable", "summary": "The CDK construct providing the funtionality of Fleet-Provision." }, "fqn": "@softchef/cdk-iot-security.FleetProvision", "initializer": { "docs": { "stability": "stable", "summary": "Initialize a Fleet-Provision Construct." }, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 41 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.FleetProvision.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/fleet-provision.ts", "line": 20 }, "name": "FleetProvision", "properties": [ { "docs": { "stability": "stable", "summary": "The Fleet Generator creating the AWS IoT resources for Fleet-Provision work flow." }, "immutable": true, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 28 }, "name": "fleetGenerator", "type": { "fqn": "@softchef/cdk-iot-security.FleetGenerator" } }, { "docs": { "stability": "stable", "summary": "The IAM Role allowing the AWS IoT to complete the automatically provisioning." }, "immutable": true, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 24 }, "name": "fleetProvisionRole", "type": { "fqn": "@softchef/cdk-iot-security.FleetProvisioningRole" } }, { "docs": { "remarks": "If the Greengrass V2 mode is not specified, it would stay as undefined.", "stability": "stable", "summary": "The IAM Role for Greengrass V2 mode." }, "immutable": true, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 34 }, "name": "greengrassV2TokenExchangeRole", "optional": true, "type": { "fqn": "@softchef/cdk-iot-security.GreenGrassV2TokenExchangeRole" } } ], "symbolId": "src/fleet-provision:FleetProvision" }, "@softchef/cdk-iot-security.FleetProvision.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Fleet-Provision Construct." }, "fqn": "@softchef/cdk-iot-security.FleetProvision.Props", "kind": "interface", "locationInModule": { "filename": "src/fleet-provision.ts", "line": 56 }, "name": "Props", "namespace": "FleetProvision", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 61 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "Apply the Greengrass V2 mode or not." }, "immutable": true, "locationInModule": { "filename": "src/fleet-provision.ts", "line": 65 }, "name": "enableGreengrassV2Mode", "optional": true, "type": { "primitive": "boolean" } } ], "symbolId": "src/fleet-provision:FleetProvision.Props" }, "@softchef/cdk-iot-security.FleetProvisioningRole": { "assembly": "@softchef/cdk-iot-security", "base": "@softchef/cdk-iot-security.ProvisionRole", "docs": { "stability": "stable", "summary": "The IAM Role allowing the AWS IoT to provision the AWS IoT resources automatically according to the specified AWS IoT Fleet-Provisioning Template." }, "fqn": "@softchef/cdk-iot-security.FleetProvisioningRole", "initializer": { "docs": { "remarks": "This construct is for Fleet-Provision construct.", "stability": "stable", "summary": "Initialize a Fleet-Provision role." }, "locationInModule": { "filename": "src/components/provision-role.ts", "line": 53 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/provision-role.ts", "line": 47 }, "name": "FleetProvisioningRole", "symbolId": "src/components/provision-role:FleetProvisioningRole" }, "@softchef/cdk-iot-security.GreenGrassV2TokenExchangeRole": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_iam.Role", "docs": { "stability": "stable", "summary": "The IAM Role defining the permissions for Greengrass V2 Core Device to access the sevices other than the AWS IoT through token exchanging machanism." }, "fqn": "@softchef/cdk-iot-security.GreenGrassV2TokenExchangeRole", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the Greengrass V2 Token Exchange Role." }, "locationInModule": { "filename": "src/components/greengrass-v2.ts", "line": 20 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/greengrass-v2.ts", "line": 14 }, "name": "GreenGrassV2TokenExchangeRole", "symbolId": "src/components/greengrass-v2:GreenGrassV2TokenExchangeRole" }, "@softchef/cdk-iot-security.JitrTopicRule": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_iot.CfnTopicRule", "docs": { "stability": "stable", "summary": "The AWS IoT topic role listening the MQTT message originating from a deivce triggered JITR event." }, "fqn": "@softchef/cdk-iot-security.JitrTopicRule", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the topic rule for JITR work flow." }, "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 84 }, "parameters": [ { "name": "queue", "type": { "fqn": "@softchef/cdk-iot-security.ReviewReceptor" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 78 }, "name": "JitrTopicRule", "symbolId": "src/components/review-receptor:JitrTopicRule" }, "@softchef/cdk-iot-security.JustInTimeProvision": { "assembly": "@softchef/cdk-iot-security", "base": "constructs.Construct", "docs": { "stability": "stable", "summary": "The CDK construct providing the funtionality of JITP." }, "fqn": "@softchef/cdk-iot-security.JustInTimeProvision", "initializer": { "docs": { "stability": "stable", "summary": "Initialize a Just-In-Time Provision Construct." }, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 56 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.JustInTimeProvision.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 32 }, "name": "JustInTimeProvision", "properties": [ { "docs": { "stability": "stable", "summary": "The IAM Role allowing the AWS IoT to provision the AWS IoT resources automatically according to the provision template associated with a specified AWS IoT CA." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 44 }, "name": "registrationConfigRole", "type": { "fqn": "@softchef/cdk-iot-security.RegistrationConfigRole" } }, { "docs": { "stability": "stable", "summary": "The CA Registrator creating the AWS IoT resources for JITP work flow." }, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 36 }, "name": "caRegistrator", "type": { "fqn": "@softchef/cdk-iot-security.CaRegistrator" } }, { "docs": { "stability": "stable", "summary": "The Device Certificate Generator generating CA-signed certificates." }, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 40 }, "name": "deviceCertificateGenerator", "type": { "fqn": "@softchef/cdk-iot-security.DeviceCertificateGenerator" } }, { "docs": { "stability": "stable", "summary": "The Verifiers Fetcher returning all the listed verifiers information." }, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 48 }, "name": "verifiersFetcher", "type": { "fqn": "@softchef/cdk-iot-security.VerifiersFetcher" } } ], "symbolId": "src/just-in-time-provision:JustInTimeProvision" }, "@softchef/cdk-iot-security.JustInTimeProvision.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Just-in-Time Provision Construct." }, "fqn": "@softchef/cdk-iot-security.JustInTimeProvision.Props", "kind": "interface", "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 16 }, "name": "Props", "namespace": "JustInTimeProvision", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 21 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The verifiers to verify the client certificates." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-provision.ts", "line": 25 }, "name": "verifiers", "optional": true, "type": { "collection": { "elementtype": { "fqn": "aws-cdk-lib.aws_lambda.Function" }, "kind": "array" } } } ], "symbolId": "src/just-in-time-provision:JustInTimeProvision.Props" }, "@softchef/cdk-iot-security.JustInTimeRegistration": { "assembly": "@softchef/cdk-iot-security", "base": "constructs.Construct", "docs": { "stability": "stable", "summary": "The CDK construct providing the funtionality of JITR." }, "fqn": "@softchef/cdk-iot-security.JustInTimeRegistration", "initializer": { "docs": { "stability": "stable", "summary": "Initialize a Just-In-Time Registration API." }, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 61 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "type": { "fqn": "@softchef/cdk-iot-security.JustInTimeRegistration.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 36 }, "name": "JustInTimeRegistration", "properties": [ { "docs": { "stability": "stable", "summary": "The CA Registrator creating the AWS IoT resources for JITP work flow." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 40 }, "name": "caRegistrator", "type": { "fqn": "@softchef/cdk-iot-security.CaRegistrator" } }, { "docs": { "stability": "stable", "summary": "The Device Activator activating the device certificate." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 44 }, "name": "deviceActivator", "type": { "fqn": "@softchef/cdk-iot-security.DeviceActivator" } }, { "docs": { "stability": "stable", "summary": "The Review Receptor collecting and passing messages to the Device Activator." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 48 }, "name": "reviewReceptor", "type": { "fqn": "@softchef/cdk-iot-security.ReviewReceptor" } }, { "docs": { "stability": "stable", "summary": "The Verifiers Fetcher returning all the listed verifiers information." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 52 }, "name": "verifiersFetcher", "type": { "fqn": "@softchef/cdk-iot-security.VerifiersFetcher" } } ], "symbolId": "src/just-in-time-registration:JustInTimeRegistration" }, "@softchef/cdk-iot-security.JustInTimeRegistration.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Just-in-Time Registration Construct." }, "fqn": "@softchef/cdk-iot-security.JustInTimeRegistration.Props", "kind": "interface", "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 19 }, "name": "Props", "namespace": "JustInTimeRegistration", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The secure AWS S3 Bucket recepting the CA registration information returned from the CA Registration Function." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 24 }, "name": "vault", "type": { "fqn": "@softchef/cdk-iot-security.VaultProps" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The verifiers to verify the client certificates." }, "immutable": true, "locationInModule": { "filename": "src/just-in-time-registration.ts", "line": 28 }, "name": "verifiers", "optional": true, "type": { "collection": { "elementtype": { "fqn": "aws-cdk-lib.aws_lambda.Function" }, "kind": "array" } } } ], "symbolId": "src/just-in-time-registration:JustInTimeRegistration.Props" }, "@softchef/cdk-iot-security.ProvisionRole": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_iam.Role", "docs": { "stability": "stable", "summary": "The IAM Role allowing the AWS IoT to provision the AWS IoT resources automatically." }, "fqn": "@softchef/cdk-iot-security.ProvisionRole", "initializer": { "docs": { "stability": "stable", "summary": "Initialize a provision role." }, "locationInModule": { "filename": "src/components/provision-role.ts", "line": 19 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/provision-role.ts", "line": 13 }, "name": "ProvisionRole", "symbolId": "src/components/provision-role:ProvisionRole" }, "@softchef/cdk-iot-security.RegistrationConfigRole": { "assembly": "@softchef/cdk-iot-security", "base": "@softchef/cdk-iot-security.ProvisionRole", "docs": { "stability": "stable", "summary": "The IAM Role allowing the AWS IoT to provision the AWS IoT resources automatically according to the provision template associated with a specified AWS IoT CA." }, "fqn": "@softchef/cdk-iot-security.RegistrationConfigRole", "initializer": { "docs": { "remarks": "This construct is for JITP construct.", "stability": "stable", "summary": "Initialize a registration configuration role." }, "locationInModule": { "filename": "src/components/provision-role.ts", "line": 39 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/provision-role.ts", "line": 33 }, "name": "RegistrationConfigRole", "symbolId": "src/components/provision-role:RegistrationConfigRole" }, "@softchef/cdk-iot-security.ReviewAcceptionRole": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_iam.Role", "docs": { "stability": "stable", "summary": "The role allowing other services to push messages into the receptor specified in the argument." }, "fqn": "@softchef/cdk-iot-security.ReviewAcceptionRole", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the Role allowed other services to push messages into the receptor specified in the argument." }, "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 52 }, "parameters": [ { "docs": { "summary": "The AWS SQS Queue recepting the messages from the IoT Topic Rule." }, "name": "reviewReceptor", "type": { "fqn": "@softchef/cdk-iot-security.ReviewReceptor" } }, { "name": "id", "type": { "primitive": "string" } }, { "docs": { "summary": "The Principal name of the Resource which is arranged to send in the messages." }, "name": "principalName", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 44 }, "name": "ReviewAcceptionRole", "symbolId": "src/components/review-receptor:ReviewAcceptionRole" }, "@softchef/cdk-iot-security.ReviewReceptor": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_sqs.Queue", "docs": { "stability": "stable", "summary": "The SQS queue having the main functionality of receiving message from the CA-associated Iot Rules." }, "fqn": "@softchef/cdk-iot-security.ReviewReceptor", "initializer": { "docs": { "stability": "stable", "summary": "Initialize the SQS Queue receiving message from the CA-associated Iot Rules." }, "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 34 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 20 }, "name": "ReviewReceptor", "properties": [ { "docs": { "stability": "stable", "summary": "The Role allowed to push messages into this Receptor." }, "immutable": true, "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 24 }, "name": "acceptionRole", "type": { "fqn": "@softchef/cdk-iot-security.ReviewAcceptionRole" } }, { "docs": { "stability": "stable", "summary": "The topic rule passing messages to this Review Receptor." }, "immutable": true, "locationInModule": { "filename": "src/components/review-receptor.ts", "line": 28 }, "name": "jitrTopicRule", "type": { "fqn": "@softchef/cdk-iot-security.JitrTopicRule" } } ], "symbolId": "src/components/review-receptor:ReviewReceptor" }, "@softchef/cdk-iot-security.VaultProps": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The data set consist of a S3 bucket construct and the sepcified path prefix." }, "fqn": "@softchef/cdk-iot-security.VaultProps", "kind": "interface", "locationInModule": { "filename": "src/components/vault.ts", "line": 13 }, "name": "VaultProps", "properties": [ { "abstract": true, "docs": { "stability": "stable", "summary": "The S3 bucket." }, "immutable": true, "locationInModule": { "filename": "src/components/vault.ts", "line": 17 }, "name": "bucket", "type": { "fqn": "aws-cdk-lib.aws_s3.Bucket" } }, { "abstract": true, "docs": { "stability": "stable", "summary": "The specified prefix to save the file." }, "immutable": true, "locationInModule": { "filename": "src/components/vault.ts", "line": 21 }, "name": "prefix", "optional": true, "type": { "primitive": "string" } } ], "symbolId": "src/components/vault:VaultProps" }, "@softchef/cdk-iot-security.VerifiersFetcher": { "assembly": "@softchef/cdk-iot-security", "base": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", "docs": { "stability": "stable", "summary": "The NodeJS Lambda Function having the main functionality of getting all the names of the verifiers." }, "fqn": "@softchef/cdk-iot-security.VerifiersFetcher", "initializer": { "docs": { "stability": "stable", "summary": "The Lambda Function returning all the verifier name and ARNs." }, "locationInModule": { "filename": "src/components/verifiers-fetcher.ts", "line": 34 }, "parameters": [ { "name": "scope", "type": { "fqn": "constructs.Construct" } }, { "name": "id", "type": { "primitive": "string" } }, { "name": "props", "optional": true, "type": { "fqn": "@softchef/cdk-iot-security.VerifiersFetcher.Props" } } ] }, "kind": "class", "locationInModule": { "filename": "src/components/verifiers-fetcher.ts", "line": 27 }, "name": "VerifiersFetcher", "symbolId": "src/components/verifiers-fetcher:VerifiersFetcher" }, "@softchef/cdk-iot-security.VerifiersFetcher.Props": { "assembly": "@softchef/cdk-iot-security", "datatype": true, "docs": { "stability": "stable", "summary": "The properties to initialize the Verifiers Fetcher." }, "fqn": "@softchef/cdk-iot-security.VerifiersFetcher.Props", "kind": "interface", "locationInModule": { "filename": "src/components/verifiers-fetcher.ts", "line": 19 }, "name": "Props", "namespace": "VerifiersFetcher", "properties": [ { "abstract": true, "docs": { "stability": "stable" }, "immutable": true, "locationInModule": { "filename": "src/components/verifiers-fetcher.ts", "line": 20 }, "name": "verifiers", "optional": true, "type": { "collection": { "elementtype": { "fqn": "aws-cdk-lib.aws_lambda.Function" }, "kind": "array" } } } ], "symbolId": "src/components/verifiers-fetcher:VerifiersFetcher.Props" } }, "version": "2.0.3", "fingerprint": "l1N/bZw6yZoJBF60uD4DaFi3D+T9ZCcRvl6ZNyqg/8k=" }