├── .checkov.yaml
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ ├── ci.yml
│ ├── codeql-analysis.yml
│ ├── pr.yml
│ ├── release.yml
│ └── stale.yml
├── .gitignore
├── .goreleaser.yml
├── .idea
├── .gitignore
├── .name
├── golinter.xml
├── modules.xml
├── sato.iml
└── vcs.xml
├── .markdownlint.json
├── .pre-commit-config.yaml
├── .run
└── test sato parse.run.xml
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── bump.ps1
├── bump.sh
├── entrypoint.sh
├── examples
├── ami-factory.yaml
├── arm
│ ├── microsoft.compute
│ │ └── vm-simple-windows
│ │ │ ├── README.md
│ │ │ ├── azuredeploy.json
│ │ │ ├── azuredeploy.parameters.json
│ │ │ ├── azuredeploymin.json
│ │ │ ├── createUiDefinition.json
│ │ │ ├── main.bicep
│ │ │ └── metadata.json
│ ├── smallest.json
│ └── smallest.yaml
├── athena.yaml
├── aws-vpc.template-variables.yaml
├── aws-vpc.template.yaml
├── kinesis.yaml
├── linux-bastion-master.template.yaml
├── template.yaml
└── workload-yaml-entrypoint-new-vpc.template.yaml
├── go.mod
├── go.sum
├── main.go
├── schema
├── README.md
├── alexa-ask-skill.json
├── aws-accessanalyzer-analyzer.json
├── aws-acmpca-certificate.json
├── aws-acmpca-certificateauthority.json
├── aws-acmpca-certificateauthorityactivation.json
├── aws-acmpca-permission.json
├── aws-amazonmq-broker.json
├── aws-amazonmq-configuration.json
├── aws-amazonmq-configurationassociation.json
├── aws-amplify-app.json
├── aws-amplify-branch.json
├── aws-amplify-domain.json
├── aws-amplifyuibuilder-component.json
├── aws-amplifyuibuilder-form.json
├── aws-amplifyuibuilder-theme.json
├── aws-apigateway-account.json
├── aws-apigateway-apikey.json
├── aws-apigateway-authorizer.json
├── aws-apigateway-basepathmapping.json
├── aws-apigateway-basepathmappingv2.json
├── aws-apigateway-clientcertificate.json
├── aws-apigateway-deployment.json
├── aws-apigateway-documentationpart.json
├── aws-apigateway-documentationversion.json
├── aws-apigateway-domainname.json
├── aws-apigateway-domainnameaccessassociation.json
├── aws-apigateway-domainnamev2.json
├── aws-apigateway-gatewayresponse.json
├── aws-apigateway-method.json
├── aws-apigateway-model.json
├── aws-apigateway-requestvalidator.json
├── aws-apigateway-resource.json
├── aws-apigateway-restapi.json
├── aws-apigateway-stage.json
├── aws-apigateway-usageplan.json
├── aws-apigateway-usageplankey.json
├── aws-apigateway-vpclink.json
├── aws-apigatewayv2-api.json
├── aws-apigatewayv2-apigatewaymanagedoverrides.json
├── aws-apigatewayv2-apimapping.json
├── aws-apigatewayv2-authorizer.json
├── aws-apigatewayv2-deployment.json
├── aws-apigatewayv2-domainname.json
├── aws-apigatewayv2-integration.json
├── aws-apigatewayv2-integrationresponse.json
├── aws-apigatewayv2-model.json
├── aws-apigatewayv2-route.json
├── aws-apigatewayv2-routeresponse.json
├── aws-apigatewayv2-stage.json
├── aws-apigatewayv2-vpclink.json
├── aws-appconfig-application.json
├── aws-appconfig-configurationprofile.json
├── aws-appconfig-deployment.json
├── aws-appconfig-deploymentstrategy.json
├── aws-appconfig-environment.json
├── aws-appconfig-extension.json
├── aws-appconfig-extensionassociation.json
├── aws-appconfig-hostedconfigurationversion.json
├── aws-appflow-connector.json
├── aws-appflow-connectorprofile.json
├── aws-appflow-flow.json
├── aws-appintegrations-application.json
├── aws-appintegrations-dataintegration.json
├── aws-appintegrations-eventintegration.json
├── aws-applicationautoscaling-scalabletarget.json
├── aws-applicationautoscaling-scalingpolicy.json
├── aws-applicationinsights-application.json
├── aws-applicationsignals-discovery.json
├── aws-applicationsignals-servicelevelobjective.json
├── aws-appmesh-gatewayroute.json
├── aws-appmesh-mesh.json
├── aws-appmesh-route.json
├── aws-appmesh-virtualgateway.json
├── aws-appmesh-virtualnode.json
├── aws-appmesh-virtualrouter.json
├── aws-appmesh-virtualservice.json
├── aws-apprunner-autoscalingconfiguration.json
├── aws-apprunner-observabilityconfiguration.json
├── aws-apprunner-service.json
├── aws-apprunner-vpcconnector.json
├── aws-apprunner-vpcingressconnection.json
├── aws-appstream-appblock.json
├── aws-appstream-appblockbuilder.json
├── aws-appstream-application.json
├── aws-appstream-applicationentitlementassociation.json
├── aws-appstream-applicationfleetassociation.json
├── aws-appstream-directoryconfig.json
├── aws-appstream-entitlement.json
├── aws-appstream-fleet.json
├── aws-appstream-imagebuilder.json
├── aws-appstream-stack.json
├── aws-appstream-stackfleetassociation.json
├── aws-appstream-stackuserassociation.json
├── aws-appstream-user.json
├── aws-appsync-api.json
├── aws-appsync-apicache.json
├── aws-appsync-apikey.json
├── aws-appsync-channelnamespace.json
├── aws-appsync-datasource.json
├── aws-appsync-domainname.json
├── aws-appsync-domainnameapiassociation.json
├── aws-appsync-functionconfiguration.json
├── aws-appsync-graphqlapi.json
├── aws-appsync-graphqlschema.json
├── aws-appsync-resolver.json
├── aws-appsync-sourceapiassociation.json
├── aws-apptest-testcase.json
├── aws-aps-rulegroupsnamespace.json
├── aws-aps-scraper.json
├── aws-aps-workspace.json
├── aws-arczonalshift-autoshiftobservernotificationstatus.json
├── aws-arczonalshift-zonalautoshiftconfiguration.json
├── aws-athena-capacityreservation.json
├── aws-athena-datacatalog.json
├── aws-athena-namedquery.json
├── aws-athena-preparedstatement.json
├── aws-athena-workgroup.json
├── aws-auditmanager-assessment.json
├── aws-autoscaling-autoscalinggroup.json
├── aws-autoscaling-launchconfiguration.json
├── aws-autoscaling-lifecyclehook.json
├── aws-autoscaling-scalingpolicy.json
├── aws-autoscaling-scheduledaction.json
├── aws-autoscaling-warmpool.json
├── aws-autoscalingplans-scalingplan.json
├── aws-b2bi-capability.json
├── aws-b2bi-partnership.json
├── aws-b2bi-profile.json
├── aws-b2bi-transformer.json
├── aws-backup-backupplan.json
├── aws-backup-backupselection.json
├── aws-backup-backupvault.json
├── aws-backup-framework.json
├── aws-backup-logicallyairgappedbackupvault.json
├── aws-backup-reportplan.json
├── aws-backup-restoretestingplan.json
├── aws-backup-restoretestingselection.json
├── aws-backupgateway-hypervisor.json
├── aws-batch-computeenvironment.json
├── aws-batch-consumableresource.json
├── aws-batch-jobdefinition.json
├── aws-batch-jobqueue.json
├── aws-batch-schedulingpolicy.json
├── aws-bcmdataexports-export.json
├── aws-bedrock-agent.json
├── aws-bedrock-agentalias.json
├── aws-bedrock-applicationinferenceprofile.json
├── aws-bedrock-blueprint.json
├── aws-bedrock-dataautomationproject.json
├── aws-bedrock-datasource.json
├── aws-bedrock-flow.json
├── aws-bedrock-flowalias.json
├── aws-bedrock-flowversion.json
├── aws-bedrock-guardrail.json
├── aws-bedrock-guardrailversion.json
├── aws-bedrock-knowledgebase.json
├── aws-bedrock-prompt.json
├── aws-bedrock-promptversion.json
├── aws-billingconductor-billinggroup.json
├── aws-billingconductor-customlineitem.json
├── aws-billingconductor-pricingplan.json
├── aws-billingconductor-pricingrule.json
├── aws-budgets-budget.json
├── aws-budgets-budgetsaction.json
├── aws-cassandra-keyspace.json
├── aws-cassandra-table.json
├── aws-cassandra-type.json
├── aws-ce-anomalymonitor.json
├── aws-ce-anomalysubscription.json
├── aws-ce-costcategory.json
├── aws-certificatemanager-account.json
├── aws-certificatemanager-certificate.json
├── aws-chatbot-customaction.json
├── aws-chatbot-microsoftteamschannelconfiguration.json
├── aws-chatbot-slackchannelconfiguration.json
├── aws-cleanrooms-analysistemplate.json
├── aws-cleanrooms-collaboration.json
├── aws-cleanrooms-configuredtable.json
├── aws-cleanrooms-configuredtableassociation.json
├── aws-cleanrooms-idmappingtable.json
├── aws-cleanrooms-idnamespaceassociation.json
├── aws-cleanrooms-membership.json
├── aws-cleanrooms-privacybudgettemplate.json
├── aws-cleanroomsml-trainingdataset.json
├── aws-cloud9-environmentec2.json
├── aws-cloudformation-customresource.json
├── aws-cloudformation-guardhook.json
├── aws-cloudformation-hookdefaultversion.json
├── aws-cloudformation-hooktypeconfig.json
├── aws-cloudformation-hookversion.json
├── aws-cloudformation-lambdahook.json
├── aws-cloudformation-macro.json
├── aws-cloudformation-moduledefaultversion.json
├── aws-cloudformation-moduleversion.json
├── aws-cloudformation-publictypeversion.json
├── aws-cloudformation-publisher.json
├── aws-cloudformation-resourcedefaultversion.json
├── aws-cloudformation-resourceversion.json
├── aws-cloudformation-stack.json
├── aws-cloudformation-stackset.json
├── aws-cloudformation-typeactivation.json
├── aws-cloudformation-waitcondition.json
├── aws-cloudformation-waitconditionhandle.json
├── aws-cloudfront-anycastiplist.json
├── aws-cloudfront-cachepolicy.json
├── aws-cloudfront-cloudfrontoriginaccessidentity.json
├── aws-cloudfront-connectiongroup.json
├── aws-cloudfront-continuousdeploymentpolicy.json
├── aws-cloudfront-distribution.json
├── aws-cloudfront-distributiontenant.json
├── aws-cloudfront-function.json
├── aws-cloudfront-keygroup.json
├── aws-cloudfront-keyvaluestore.json
├── aws-cloudfront-monitoringsubscription.json
├── aws-cloudfront-originaccesscontrol.json
├── aws-cloudfront-originrequestpolicy.json
├── aws-cloudfront-publickey.json
├── aws-cloudfront-realtimelogconfig.json
├── aws-cloudfront-responseheaderspolicy.json
├── aws-cloudfront-streamingdistribution.json
├── aws-cloudfront-vpcorigin.json
├── aws-cloudtrail-channel.json
├── aws-cloudtrail-dashboard.json
├── aws-cloudtrail-eventdatastore.json
├── aws-cloudtrail-resourcepolicy.json
├── aws-cloudtrail-trail.json
├── aws-cloudwatch-alarm.json
├── aws-cloudwatch-anomalydetector.json
├── aws-cloudwatch-compositealarm.json
├── aws-cloudwatch-dashboard.json
├── aws-cloudwatch-insightrule.json
├── aws-cloudwatch-metricstream.json
├── aws-codeartifact-domain.json
├── aws-codeartifact-packagegroup.json
├── aws-codeartifact-repository.json
├── aws-codebuild-fleet.json
├── aws-codebuild-project.json
├── aws-codebuild-reportgroup.json
├── aws-codebuild-sourcecredential.json
├── aws-codecommit-repository.json
├── aws-codeconnections-connection.json
├── aws-codedeploy-application.json
├── aws-codedeploy-deploymentconfig.json
├── aws-codedeploy-deploymentgroup.json
├── aws-codeguruprofiler-profilinggroup.json
├── aws-codegurureviewer-repositoryassociation.json
├── aws-codepipeline-customactiontype.json
├── aws-codepipeline-pipeline.json
├── aws-codepipeline-webhook.json
├── aws-codestar-githubrepository.json
├── aws-codestarconnections-connection.json
├── aws-codestarconnections-repositorylink.json
├── aws-codestarconnections-syncconfiguration.json
├── aws-codestarnotifications-notificationrule.json
├── aws-cognito-identitypool.json
├── aws-cognito-identitypoolprincipaltag.json
├── aws-cognito-identitypoolroleattachment.json
├── aws-cognito-logdeliveryconfiguration.json
├── aws-cognito-managedloginbranding.json
├── aws-cognito-userpool.json
├── aws-cognito-userpoolclient.json
├── aws-cognito-userpooldomain.json
├── aws-cognito-userpoolgroup.json
├── aws-cognito-userpoolidentityprovider.json
├── aws-cognito-userpoolresourceserver.json
├── aws-cognito-userpoolriskconfigurationattachment.json
├── aws-cognito-userpooluicustomizationattachment.json
├── aws-cognito-userpooluser.json
├── aws-cognito-userpoolusertogroupattachment.json
├── aws-comprehend-documentclassifier.json
├── aws-comprehend-flywheel.json
├── aws-config-aggregationauthorization.json
├── aws-config-configrule.json
├── aws-config-configurationaggregator.json
├── aws-config-configurationrecorder.json
├── aws-config-conformancepack.json
├── aws-config-deliverychannel.json
├── aws-config-organizationconfigrule.json
├── aws-config-organizationconformancepack.json
├── aws-config-remediationconfiguration.json
├── aws-config-storedquery.json
├── aws-connect-agentstatus.json
├── aws-connect-approvedorigin.json
├── aws-connect-contactflow.json
├── aws-connect-contactflowmodule.json
├── aws-connect-contactflowversion.json
├── aws-connect-emailaddress.json
├── aws-connect-evaluationform.json
├── aws-connect-hoursofoperation.json
├── aws-connect-instance.json
├── aws-connect-instancestorageconfig.json
├── aws-connect-integrationassociation.json
├── aws-connect-phonenumber.json
├── aws-connect-predefinedattribute.json
├── aws-connect-prompt.json
├── aws-connect-queue.json
├── aws-connect-quickconnect.json
├── aws-connect-routingprofile.json
├── aws-connect-rule.json
├── aws-connect-securitykey.json
├── aws-connect-securityprofile.json
├── aws-connect-tasktemplate.json
├── aws-connect-trafficdistributiongroup.json
├── aws-connect-user.json
├── aws-connect-userhierarchygroup.json
├── aws-connect-userhierarchystructure.json
├── aws-connect-view.json
├── aws-connect-viewversion.json
├── aws-connectcampaigns-campaign.json
├── aws-connectcampaignsv2-campaign.json
├── aws-controltower-enabledbaseline.json
├── aws-controltower-enabledcontrol.json
├── aws-controltower-landingzone.json
├── aws-cur-reportdefinition.json
├── aws-customerprofiles-calculatedattributedefinition.json
├── aws-customerprofiles-domain.json
├── aws-customerprofiles-eventstream.json
├── aws-customerprofiles-eventtrigger.json
├── aws-customerprofiles-integration.json
├── aws-customerprofiles-objecttype.json
├── aws-customerprofiles-segmentdefinition.json
├── aws-databrew-dataset.json
├── aws-databrew-job.json
├── aws-databrew-project.json
├── aws-databrew-recipe.json
├── aws-databrew-ruleset.json
├── aws-databrew-schedule.json
├── aws-datapipeline-pipeline.json
├── aws-datasync-agent.json
├── aws-datasync-locationazureblob.json
├── aws-datasync-locationefs.json
├── aws-datasync-locationfsxlustre.json
├── aws-datasync-locationfsxontap.json
├── aws-datasync-locationfsxopenzfs.json
├── aws-datasync-locationfsxwindows.json
├── aws-datasync-locationhdfs.json
├── aws-datasync-locationnfs.json
├── aws-datasync-locationobjectstorage.json
├── aws-datasync-locations3.json
├── aws-datasync-locationsmb.json
├── aws-datasync-storagesystem.json
├── aws-datasync-task.json
├── aws-datazone-connection.json
├── aws-datazone-datasource.json
├── aws-datazone-domain.json
├── aws-datazone-environment.json
├── aws-datazone-environmentactions.json
├── aws-datazone-environmentblueprintconfiguration.json
├── aws-datazone-environmentprofile.json
├── aws-datazone-groupprofile.json
├── aws-datazone-project.json
├── aws-datazone-projectmembership.json
├── aws-datazone-subscriptiontarget.json
├── aws-datazone-userprofile.json
├── aws-dax-cluster.json
├── aws-dax-parametergroup.json
├── aws-dax-subnetgroup.json
├── aws-deadline-farm.json
├── aws-deadline-fleet.json
├── aws-deadline-licenseendpoint.json
├── aws-deadline-limit.json
├── aws-deadline-meteredproduct.json
├── aws-deadline-monitor.json
├── aws-deadline-queue.json
├── aws-deadline-queueenvironment.json
├── aws-deadline-queuefleetassociation.json
├── aws-deadline-queuelimitassociation.json
├── aws-deadline-storageprofile.json
├── aws-detective-graph.json
├── aws-detective-memberinvitation.json
├── aws-detective-organizationadmin.json
├── aws-devopsguru-loganomalydetectionintegration.json
├── aws-devopsguru-notificationchannel.json
├── aws-devopsguru-resourcecollection.json
├── aws-directoryservice-microsoftad.json
├── aws-directoryservice-simplead.json
├── aws-dlm-lifecyclepolicy.json
├── aws-dms-certificate.json
├── aws-dms-datamigration.json
├── aws-dms-dataprovider.json
├── aws-dms-endpoint.json
├── aws-dms-eventsubscription.json
├── aws-dms-instanceprofile.json
├── aws-dms-migrationproject.json
├── aws-dms-replicationconfig.json
├── aws-dms-replicationinstance.json
├── aws-dms-replicationsubnetgroup.json
├── aws-dms-replicationtask.json
├── aws-docdb-dbcluster.json
├── aws-docdb-dbclusterparametergroup.json
├── aws-docdb-dbinstance.json
├── aws-docdb-dbsubnetgroup.json
├── aws-docdb-eventsubscription.json
├── aws-docdbelastic-cluster.json
├── aws-dsql-cluster.json
├── aws-dynamodb-globaltable.json
├── aws-dynamodb-table.json
├── aws-ec2-capacityreservation.json
├── aws-ec2-capacityreservationfleet.json
├── aws-ec2-carriergateway.json
├── aws-ec2-clientvpnauthorizationrule.json
├── aws-ec2-clientvpnendpoint.json
├── aws-ec2-clientvpnroute.json
├── aws-ec2-clientvpntargetnetworkassociation.json
├── aws-ec2-customergateway.json
├── aws-ec2-dhcpoptions.json
├── aws-ec2-ec2fleet.json
├── aws-ec2-egressonlyinternetgateway.json
├── aws-ec2-eip.json
├── aws-ec2-eipassociation.json
├── aws-ec2-enclavecertificateiamroleassociation.json
├── aws-ec2-flowlog.json
├── aws-ec2-gatewayroutetableassociation.json
├── aws-ec2-host.json
├── aws-ec2-instance.json
├── aws-ec2-instanceconnectendpoint.json
├── aws-ec2-internetgateway.json
├── aws-ec2-ipam.json
├── aws-ec2-ipamallocation.json
├── aws-ec2-ipampool.json
├── aws-ec2-ipampoolcidr.json
├── aws-ec2-ipamresourcediscovery.json
├── aws-ec2-ipamresourcediscoveryassociation.json
├── aws-ec2-ipamscope.json
├── aws-ec2-keypair.json
├── aws-ec2-launchtemplate.json
├── aws-ec2-localgatewayroute.json
├── aws-ec2-localgatewayroutetable.json
├── aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json
├── aws-ec2-localgatewayroutetablevpcassociation.json
├── aws-ec2-natgateway.json
├── aws-ec2-networkacl.json
├── aws-ec2-networkaclentry.json
├── aws-ec2-networkinsightsaccessscope.json
├── aws-ec2-networkinsightsaccessscopeanalysis.json
├── aws-ec2-networkinsightsanalysis.json
├── aws-ec2-networkinsightspath.json
├── aws-ec2-networkinterface.json
├── aws-ec2-networkinterfaceattachment.json
├── aws-ec2-networkinterfacepermission.json
├── aws-ec2-networkperformancemetricsubscription.json
├── aws-ec2-placementgroup.json
├── aws-ec2-prefixlist.json
├── aws-ec2-route.json
├── aws-ec2-routeserver.json
├── aws-ec2-routeserverassociation.json
├── aws-ec2-routeserverendpoint.json
├── aws-ec2-routeserverpeer.json
├── aws-ec2-routeserverpropagation.json
├── aws-ec2-routetable.json
├── aws-ec2-securitygroup.json
├── aws-ec2-securitygroupegress.json
├── aws-ec2-securitygroupingress.json
├── aws-ec2-securitygroupvpcassociation.json
├── aws-ec2-snapshotblockpublicaccess.json
├── aws-ec2-spotfleet.json
├── aws-ec2-subnet.json
├── aws-ec2-subnetcidrblock.json
├── aws-ec2-subnetnetworkaclassociation.json
├── aws-ec2-subnetroutetableassociation.json
├── aws-ec2-trafficmirrorfilter.json
├── aws-ec2-trafficmirrorfilterrule.json
├── aws-ec2-trafficmirrorsession.json
├── aws-ec2-trafficmirrortarget.json
├── aws-ec2-transitgateway.json
├── aws-ec2-transitgatewayattachment.json
├── aws-ec2-transitgatewayconnect.json
├── aws-ec2-transitgatewaymulticastdomain.json
├── aws-ec2-transitgatewaymulticastdomainassociation.json
├── aws-ec2-transitgatewaymulticastgroupmember.json
├── aws-ec2-transitgatewaymulticastgroupsource.json
├── aws-ec2-transitgatewaypeeringattachment.json
├── aws-ec2-transitgatewayroute.json
├── aws-ec2-transitgatewayroutetable.json
├── aws-ec2-transitgatewayroutetableassociation.json
├── aws-ec2-transitgatewayroutetablepropagation.json
├── aws-ec2-transitgatewayvpcattachment.json
├── aws-ec2-verifiedaccessendpoint.json
├── aws-ec2-verifiedaccessgroup.json
├── aws-ec2-verifiedaccessinstance.json
├── aws-ec2-verifiedaccesstrustprovider.json
├── aws-ec2-volume.json
├── aws-ec2-volumeattachment.json
├── aws-ec2-vpc.json
├── aws-ec2-vpcblockpublicaccessexclusion.json
├── aws-ec2-vpcblockpublicaccessoptions.json
├── aws-ec2-vpccidrblock.json
├── aws-ec2-vpcdhcpoptionsassociation.json
├── aws-ec2-vpcendpoint.json
├── aws-ec2-vpcendpointconnectionnotification.json
├── aws-ec2-vpcendpointservice.json
├── aws-ec2-vpcendpointservicepermissions.json
├── aws-ec2-vpcgatewayattachment.json
├── aws-ec2-vpcpeeringconnection.json
├── aws-ec2-vpnconnection.json
├── aws-ec2-vpnconnectionroute.json
├── aws-ec2-vpngateway.json
├── aws-ec2-vpngatewayroutepropagation.json
├── aws-ecr-publicrepository.json
├── aws-ecr-pullthroughcacherule.json
├── aws-ecr-registrypolicy.json
├── aws-ecr-registryscanningconfiguration.json
├── aws-ecr-replicationconfiguration.json
├── aws-ecr-repository.json
├── aws-ecr-repositorycreationtemplate.json
├── aws-ecs-capacityprovider.json
├── aws-ecs-cluster.json
├── aws-ecs-clustercapacityproviderassociations.json
├── aws-ecs-primarytaskset.json
├── aws-ecs-service.json
├── aws-ecs-taskdefinition.json
├── aws-ecs-taskset.json
├── aws-efs-accesspoint.json
├── aws-efs-filesystem.json
├── aws-efs-mounttarget.json
├── aws-eks-accessentry.json
├── aws-eks-addon.json
├── aws-eks-cluster.json
├── aws-eks-fargateprofile.json
├── aws-eks-identityproviderconfig.json
├── aws-eks-nodegroup.json
├── aws-eks-podidentityassociation.json
├── aws-elasticache-cachecluster.json
├── aws-elasticache-globalreplicationgroup.json
├── aws-elasticache-parametergroup.json
├── aws-elasticache-replicationgroup.json
├── aws-elasticache-securitygroup.json
├── aws-elasticache-securitygroupingress.json
├── aws-elasticache-serverlesscache.json
├── aws-elasticache-subnetgroup.json
├── aws-elasticache-user.json
├── aws-elasticache-usergroup.json
├── aws-elasticbeanstalk-application.json
├── aws-elasticbeanstalk-applicationversion.json
├── aws-elasticbeanstalk-configurationtemplate.json
├── aws-elasticbeanstalk-environment.json
├── aws-elasticloadbalancing-loadbalancer.json
├── aws-elasticloadbalancingv2-listener.json
├── aws-elasticloadbalancingv2-listenercertificate.json
├── aws-elasticloadbalancingv2-listenerrule.json
├── aws-elasticloadbalancingv2-loadbalancer.json
├── aws-elasticloadbalancingv2-targetgroup.json
├── aws-elasticloadbalancingv2-truststore.json
├── aws-elasticloadbalancingv2-truststorerevocation.json
├── aws-elasticsearch-domain.json
├── aws-emr-cluster.json
├── aws-emr-instancefleetconfig.json
├── aws-emr-instancegroupconfig.json
├── aws-emr-securityconfiguration.json
├── aws-emr-step.json
├── aws-emr-studio.json
├── aws-emr-studiosessionmapping.json
├── aws-emr-walworkspace.json
├── aws-emrcontainers-virtualcluster.json
├── aws-emrserverless-application.json
├── aws-entityresolution-idmappingworkflow.json
├── aws-entityresolution-idnamespace.json
├── aws-entityresolution-matchingworkflow.json
├── aws-entityresolution-policystatement.json
├── aws-entityresolution-schemamapping.json
├── aws-events-apidestination.json
├── aws-events-archive.json
├── aws-events-connection.json
├── aws-events-endpoint.json
├── aws-events-eventbus.json
├── aws-events-eventbuspolicy.json
├── aws-events-rule.json
├── aws-eventschemas-discoverer.json
├── aws-eventschemas-registry.json
├── aws-eventschemas-registrypolicy.json
├── aws-eventschemas-schema.json
├── aws-evidently-experiment.json
├── aws-evidently-feature.json
├── aws-evidently-launch.json
├── aws-evidently-project.json
├── aws-evidently-segment.json
├── aws-finspace-environment.json
├── aws-fis-experimenttemplate.json
├── aws-fis-targetaccountconfiguration.json
├── aws-fms-notificationchannel.json
├── aws-fms-policy.json
├── aws-fms-resourceset.json
├── aws-forecast-dataset.json
├── aws-forecast-datasetgroup.json
├── aws-frauddetector-detector.json
├── aws-frauddetector-entitytype.json
├── aws-frauddetector-eventtype.json
├── aws-frauddetector-label.json
├── aws-frauddetector-list.json
├── aws-frauddetector-outcome.json
├── aws-frauddetector-variable.json
├── aws-fsx-datarepositoryassociation.json
├── aws-fsx-filesystem.json
├── aws-fsx-snapshot.json
├── aws-fsx-storagevirtualmachine.json
├── aws-fsx-volume.json
├── aws-gamelift-alias.json
├── aws-gamelift-build.json
├── aws-gamelift-containerfleet.json
├── aws-gamelift-containergroupdefinition.json
├── aws-gamelift-fleet.json
├── aws-gamelift-gameservergroup.json
├── aws-gamelift-gamesessionqueue.json
├── aws-gamelift-location.json
├── aws-gamelift-matchmakingconfiguration.json
├── aws-gamelift-matchmakingruleset.json
├── aws-gamelift-script.json
├── aws-globalaccelerator-accelerator.json
├── aws-globalaccelerator-crossaccountattachment.json
├── aws-globalaccelerator-endpointgroup.json
├── aws-globalaccelerator-listener.json
├── aws-glue-classifier.json
├── aws-glue-connection.json
├── aws-glue-crawler.json
├── aws-glue-customentitytype.json
├── aws-glue-database.json
├── aws-glue-datacatalogencryptionsettings.json
├── aws-glue-dataqualityruleset.json
├── aws-glue-devendpoint.json
├── aws-glue-job.json
├── aws-glue-mltransform.json
├── aws-glue-partition.json
├── aws-glue-registry.json
├── aws-glue-schema.json
├── aws-glue-schemaversion.json
├── aws-glue-schemaversionmetadata.json
├── aws-glue-securityconfiguration.json
├── aws-glue-table.json
├── aws-glue-tableoptimizer.json
├── aws-glue-trigger.json
├── aws-glue-usageprofile.json
├── aws-glue-workflow.json
├── aws-grafana-workspace.json
├── aws-greengrass-connectordefinition.json
├── aws-greengrass-connectordefinitionversion.json
├── aws-greengrass-coredefinition.json
├── aws-greengrass-coredefinitionversion.json
├── aws-greengrass-devicedefinition.json
├── aws-greengrass-devicedefinitionversion.json
├── aws-greengrass-functiondefinition.json
├── aws-greengrass-functiondefinitionversion.json
├── aws-greengrass-group.json
├── aws-greengrass-groupversion.json
├── aws-greengrass-loggerdefinition.json
├── aws-greengrass-loggerdefinitionversion.json
├── aws-greengrass-resourcedefinition.json
├── aws-greengrass-resourcedefinitionversion.json
├── aws-greengrass-subscriptiondefinition.json
├── aws-greengrass-subscriptiondefinitionversion.json
├── aws-greengrassv2-componentversion.json
├── aws-greengrassv2-deployment.json
├── aws-groundstation-config.json
├── aws-groundstation-dataflowendpointgroup.json
├── aws-groundstation-missionprofile.json
├── aws-guardduty-detector.json
├── aws-guardduty-filter.json
├── aws-guardduty-ipset.json
├── aws-guardduty-malwareprotectionplan.json
├── aws-guardduty-master.json
├── aws-guardduty-member.json
├── aws-guardduty-publishingdestination.json
├── aws-guardduty-threatintelset.json
├── aws-healthimaging-datastore.json
├── aws-healthlake-fhirdatastore.json
├── aws-iam-accesskey.json
├── aws-iam-group.json
├── aws-iam-grouppolicy.json
├── aws-iam-instanceprofile.json
├── aws-iam-managedpolicy.json
├── aws-iam-oidcprovider.json
├── aws-iam-policy.json
├── aws-iam-role.json
├── aws-iam-rolepolicy.json
├── aws-iam-samlprovider.json
├── aws-iam-servercertificate.json
├── aws-iam-servicelinkedrole.json
├── aws-iam-user.json
├── aws-iam-userpolicy.json
├── aws-iam-usertogroupaddition.json
├── aws-iam-virtualmfadevice.json
├── aws-identitystore-group.json
├── aws-identitystore-groupmembership.json
├── aws-imagebuilder-component.json
├── aws-imagebuilder-containerrecipe.json
├── aws-imagebuilder-distributionconfiguration.json
├── aws-imagebuilder-image.json
├── aws-imagebuilder-imagepipeline.json
├── aws-imagebuilder-imagerecipe.json
├── aws-imagebuilder-infrastructureconfiguration.json
├── aws-imagebuilder-lifecyclepolicy.json
├── aws-imagebuilder-workflow.json
├── aws-inspector-assessmenttarget.json
├── aws-inspector-assessmenttemplate.json
├── aws-inspector-resourcegroup.json
├── aws-inspectorv2-cisscanconfiguration.json
├── aws-inspectorv2-filter.json
├── aws-internetmonitor-monitor.json
├── aws-invoicing-invoiceunit.json
├── aws-iot-accountauditconfiguration.json
├── aws-iot-authorizer.json
├── aws-iot-billinggroup.json
├── aws-iot-cacertificate.json
├── aws-iot-certificate.json
├── aws-iot-certificateprovider.json
├── aws-iot-command.json
├── aws-iot-custommetric.json
├── aws-iot-dimension.json
├── aws-iot-domainconfiguration.json
├── aws-iot-fleetmetric.json
├── aws-iot-jobtemplate.json
├── aws-iot-logging.json
├── aws-iot-mitigationaction.json
├── aws-iot-policy.json
├── aws-iot-policyprincipalattachment.json
├── aws-iot-provisioningtemplate.json
├── aws-iot-resourcespecificlogging.json
├── aws-iot-rolealias.json
├── aws-iot-scheduledaudit.json
├── aws-iot-securityprofile.json
├── aws-iot-softwarepackage.json
├── aws-iot-softwarepackageversion.json
├── aws-iot-thing.json
├── aws-iot-thinggroup.json
├── aws-iot-thingprincipalattachment.json
├── aws-iot-thingtype.json
├── aws-iot-topicrule.json
├── aws-iot-topicruledestination.json
├── aws-iotanalytics-channel.json
├── aws-iotanalytics-dataset.json
├── aws-iotanalytics-datastore.json
├── aws-iotanalytics-pipeline.json
├── aws-iotcoredeviceadvisor-suitedefinition.json
├── aws-iotevents-alarmmodel.json
├── aws-iotevents-detectormodel.json
├── aws-iotevents-input.json
├── aws-iotfleethub-application.json
├── aws-iotfleetwise-campaign.json
├── aws-iotfleetwise-decodermanifest.json
├── aws-iotfleetwise-fleet.json
├── aws-iotfleetwise-modelmanifest.json
├── aws-iotfleetwise-signalcatalog.json
├── aws-iotfleetwise-statetemplate.json
├── aws-iotfleetwise-vehicle.json
├── aws-iotsitewise-accesspolicy.json
├── aws-iotsitewise-asset.json
├── aws-iotsitewise-assetmodel.json
├── aws-iotsitewise-dashboard.json
├── aws-iotsitewise-dataset.json
├── aws-iotsitewise-gateway.json
├── aws-iotsitewise-portal.json
├── aws-iotsitewise-project.json
├── aws-iotthingsgraph-flowtemplate.json
├── aws-iottwinmaker-componenttype.json
├── aws-iottwinmaker-entity.json
├── aws-iottwinmaker-scene.json
├── aws-iottwinmaker-syncjob.json
├── aws-iottwinmaker-workspace.json
├── aws-iotwireless-destination.json
├── aws-iotwireless-deviceprofile.json
├── aws-iotwireless-fuotatask.json
├── aws-iotwireless-multicastgroup.json
├── aws-iotwireless-networkanalyzerconfiguration.json
├── aws-iotwireless-partneraccount.json
├── aws-iotwireless-serviceprofile.json
├── aws-iotwireless-taskdefinition.json
├── aws-iotwireless-wirelessdevice.json
├── aws-iotwireless-wirelessdeviceimporttask.json
├── aws-iotwireless-wirelessgateway.json
├── aws-ivs-channel.json
├── aws-ivs-encoderconfiguration.json
├── aws-ivs-ingestconfiguration.json
├── aws-ivs-playbackkeypair.json
├── aws-ivs-playbackrestrictionpolicy.json
├── aws-ivs-publickey.json
├── aws-ivs-recordingconfiguration.json
├── aws-ivs-stage.json
├── aws-ivs-storageconfiguration.json
├── aws-ivs-streamkey.json
├── aws-ivschat-loggingconfiguration.json
├── aws-ivschat-room.json
├── aws-kafkaconnect-connector.json
├── aws-kafkaconnect-customplugin.json
├── aws-kafkaconnect-workerconfiguration.json
├── aws-kendra-datasource.json
├── aws-kendra-faq.json
├── aws-kendra-index.json
├── aws-kendraranking-executionplan.json
├── aws-kinesis-resourcepolicy.json
├── aws-kinesis-stream.json
├── aws-kinesis-streamconsumer.json
├── aws-kinesisanalytics-application.json
├── aws-kinesisanalytics-applicationoutput.json
├── aws-kinesisanalytics-applicationreferencedatasource.json
├── aws-kinesisanalyticsv2-application.json
├── aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json
├── aws-kinesisanalyticsv2-applicationoutput.json
├── aws-kinesisanalyticsv2-applicationreferencedatasource.json
├── aws-kinesisfirehose-deliverystream.json
├── aws-kinesisvideo-signalingchannel.json
├── aws-kinesisvideo-stream.json
├── aws-kms-alias.json
├── aws-kms-key.json
├── aws-kms-replicakey.json
├── aws-lakeformation-datacellsfilter.json
├── aws-lakeformation-datalakesettings.json
├── aws-lakeformation-permissions.json
├── aws-lakeformation-principalpermissions.json
├── aws-lakeformation-resource.json
├── aws-lakeformation-tag.json
├── aws-lakeformation-tagassociation.json
├── aws-lambda-alias.json
├── aws-lambda-codesigningconfig.json
├── aws-lambda-eventinvokeconfig.json
├── aws-lambda-eventsourcemapping.json
├── aws-lambda-function.json
├── aws-lambda-layerversion.json
├── aws-lambda-layerversionpermission.json
├── aws-lambda-permission.json
├── aws-lambda-url.json
├── aws-lambda-version.json
├── aws-launchwizard-deployment.json
├── aws-lex-bot.json
├── aws-lex-botalias.json
├── aws-lex-botversion.json
├── aws-lex-resourcepolicy.json
├── aws-licensemanager-grant.json
├── aws-licensemanager-license.json
├── aws-lightsail-alarm.json
├── aws-lightsail-bucket.json
├── aws-lightsail-certificate.json
├── aws-lightsail-container.json
├── aws-lightsail-database.json
├── aws-lightsail-disk.json
├── aws-lightsail-distribution.json
├── aws-lightsail-instance.json
├── aws-lightsail-loadbalancer.json
├── aws-lightsail-loadbalancertlscertificate.json
├── aws-lightsail-staticip.json
├── aws-location-apikey.json
├── aws-location-geofencecollection.json
├── aws-location-map.json
├── aws-location-placeindex.json
├── aws-location-routecalculator.json
├── aws-location-tracker.json
├── aws-location-trackerconsumer.json
├── aws-logs-accountpolicy.json
├── aws-logs-delivery.json
├── aws-logs-deliverydestination.json
├── aws-logs-deliverysource.json
├── aws-logs-destination.json
├── aws-logs-integration.json
├── aws-logs-loganomalydetector.json
├── aws-logs-loggroup.json
├── aws-logs-logstream.json
├── aws-logs-metricfilter.json
├── aws-logs-querydefinition.json
├── aws-logs-resourcepolicy.json
├── aws-logs-subscriptionfilter.json
├── aws-logs-transformer.json
├── aws-lookoutequipment-inferencescheduler.json
├── aws-lookoutmetrics-alert.json
├── aws-lookoutmetrics-anomalydetector.json
├── aws-lookoutvision-project.json
├── aws-m2-application.json
├── aws-m2-deployment.json
├── aws-m2-environment.json
├── aws-macie-allowlist.json
├── aws-macie-customdataidentifier.json
├── aws-macie-findingsfilter.json
├── aws-macie-session.json
├── aws-managedblockchain-accessor.json
├── aws-managedblockchain-member.json
├── aws-managedblockchain-node.json
├── aws-mediaconnect-bridge.json
├── aws-mediaconnect-bridgeoutput.json
├── aws-mediaconnect-bridgesource.json
├── aws-mediaconnect-flow.json
├── aws-mediaconnect-flowentitlement.json
├── aws-mediaconnect-flowoutput.json
├── aws-mediaconnect-flowsource.json
├── aws-mediaconnect-flowvpcinterface.json
├── aws-mediaconnect-gateway.json
├── aws-mediaconvert-jobtemplate.json
├── aws-mediaconvert-preset.json
├── aws-mediaconvert-queue.json
├── aws-medialive-channel.json
├── aws-medialive-channelplacementgroup.json
├── aws-medialive-cloudwatchalarmtemplate.json
├── aws-medialive-cloudwatchalarmtemplategroup.json
├── aws-medialive-cluster.json
├── aws-medialive-eventbridgeruletemplate.json
├── aws-medialive-eventbridgeruletemplategroup.json
├── aws-medialive-input.json
├── aws-medialive-inputsecuritygroup.json
├── aws-medialive-multiplex.json
├── aws-medialive-multiplexprogram.json
├── aws-medialive-network.json
├── aws-medialive-sdisource.json
├── aws-medialive-signalmap.json
├── aws-mediapackage-asset.json
├── aws-mediapackage-channel.json
├── aws-mediapackage-originendpoint.json
├── aws-mediapackage-packagingconfiguration.json
├── aws-mediapackage-packaginggroup.json
├── aws-mediapackagev2-channel.json
├── aws-mediapackagev2-channelgroup.json
├── aws-mediapackagev2-channelpolicy.json
├── aws-mediapackagev2-originendpoint.json
├── aws-mediapackagev2-originendpointpolicy.json
├── aws-mediastore-container.json
├── aws-mediatailor-channel.json
├── aws-mediatailor-channelpolicy.json
├── aws-mediatailor-livesource.json
├── aws-mediatailor-playbackconfiguration.json
├── aws-mediatailor-sourcelocation.json
├── aws-mediatailor-vodsource.json
├── aws-memorydb-acl.json
├── aws-memorydb-cluster.json
├── aws-memorydb-multiregioncluster.json
├── aws-memorydb-parametergroup.json
├── aws-memorydb-subnetgroup.json
├── aws-memorydb-user.json
├── aws-msk-batchscramsecret.json
├── aws-msk-cluster.json
├── aws-msk-clusterpolicy.json
├── aws-msk-configuration.json
├── aws-msk-replicator.json
├── aws-msk-serverlesscluster.json
├── aws-msk-vpcconnection.json
├── aws-mwaa-environment.json
├── aws-neptune-dbcluster.json
├── aws-neptune-dbclusterparametergroup.json
├── aws-neptune-dbinstance.json
├── aws-neptune-dbparametergroup.json
├── aws-neptune-dbsubnetgroup.json
├── aws-neptune-eventsubscription.json
├── aws-neptunegraph-graph.json
├── aws-neptunegraph-privategraphendpoint.json
├── aws-networkfirewall-firewall.json
├── aws-networkfirewall-firewallpolicy.json
├── aws-networkfirewall-loggingconfiguration.json
├── aws-networkfirewall-rulegroup.json
├── aws-networkfirewall-tlsinspectionconfiguration.json
├── aws-networkmanager-connectattachment.json
├── aws-networkmanager-connectpeer.json
├── aws-networkmanager-corenetwork.json
├── aws-networkmanager-customergatewayassociation.json
├── aws-networkmanager-device.json
├── aws-networkmanager-directconnectgatewayattachment.json
├── aws-networkmanager-globalnetwork.json
├── aws-networkmanager-link.json
├── aws-networkmanager-linkassociation.json
├── aws-networkmanager-site.json
├── aws-networkmanager-sitetositevpnattachment.json
├── aws-networkmanager-transitgatewaypeering.json
├── aws-networkmanager-transitgatewayregistration.json
├── aws-networkmanager-transitgatewayroutetableattachment.json
├── aws-networkmanager-vpcattachment.json
├── aws-notifications-channelassociation.json
├── aws-notifications-eventrule.json
├── aws-notifications-managednotificationaccountcontactassociation.json
├── aws-notifications-managednotificationadditionalchannelassociation.json
├── aws-notifications-notificationconfiguration.json
├── aws-notifications-notificationhub.json
├── aws-notificationscontacts-emailcontact.json
├── aws-oam-link.json
├── aws-oam-sink.json
├── aws-omics-annotationstore.json
├── aws-omics-referencestore.json
├── aws-omics-rungroup.json
├── aws-omics-sequencestore.json
├── aws-omics-variantstore.json
├── aws-omics-workflow.json
├── aws-opensearchserverless-accesspolicy.json
├── aws-opensearchserverless-collection.json
├── aws-opensearchserverless-index.json
├── aws-opensearchserverless-lifecyclepolicy.json
├── aws-opensearchserverless-securityconfig.json
├── aws-opensearchserverless-securitypolicy.json
├── aws-opensearchserverless-vpcendpoint.json
├── aws-opensearchservice-application.json
├── aws-opensearchservice-domain.json
├── aws-opsworks-app.json
├── aws-opsworks-elasticloadbalancerattachment.json
├── aws-opsworks-instance.json
├── aws-opsworks-layer.json
├── aws-opsworks-stack.json
├── aws-opsworks-userprofile.json
├── aws-opsworks-volume.json
├── aws-opsworkscm-server.json
├── aws-organizations-account.json
├── aws-organizations-organization.json
├── aws-organizations-organizationalunit.json
├── aws-organizations-policy.json
├── aws-organizations-resourcepolicy.json
├── aws-osis-pipeline.json
├── aws-panorama-applicationinstance.json
├── aws-panorama-package.json
├── aws-panorama-packageversion.json
├── aws-paymentcryptography-alias.json
├── aws-paymentcryptography-key.json
├── aws-pcaconnectorad-connector.json
├── aws-pcaconnectorad-directoryregistration.json
├── aws-pcaconnectorad-serviceprincipalname.json
├── aws-pcaconnectorad-template.json
├── aws-pcaconnectorad-templategroupaccesscontrolentry.json
├── aws-pcaconnectorscep-challenge.json
├── aws-pcaconnectorscep-connector.json
├── aws-pcs-cluster.json
├── aws-pcs-computenodegroup.json
├── aws-pcs-queue.json
├── aws-personalize-dataset.json
├── aws-personalize-datasetgroup.json
├── aws-personalize-schema.json
├── aws-personalize-solution.json
├── aws-pinpoint-admchannel.json
├── aws-pinpoint-apnschannel.json
├── aws-pinpoint-apnssandboxchannel.json
├── aws-pinpoint-apnsvoipchannel.json
├── aws-pinpoint-apnsvoipsandboxchannel.json
├── aws-pinpoint-app.json
├── aws-pinpoint-applicationsettings.json
├── aws-pinpoint-baiduchannel.json
├── aws-pinpoint-campaign.json
├── aws-pinpoint-emailchannel.json
├── aws-pinpoint-emailtemplate.json
├── aws-pinpoint-eventstream.json
├── aws-pinpoint-gcmchannel.json
├── aws-pinpoint-inapptemplate.json
├── aws-pinpoint-pushtemplate.json
├── aws-pinpoint-segment.json
├── aws-pinpoint-smschannel.json
├── aws-pinpoint-smstemplate.json
├── aws-pinpoint-voicechannel.json
├── aws-pinpointemail-configurationset.json
├── aws-pinpointemail-configurationseteventdestination.json
├── aws-pinpointemail-dedicatedippool.json
├── aws-pinpointemail-identity.json
├── aws-pipes-pipe.json
├── aws-proton-environmentaccountconnection.json
├── aws-proton-environmenttemplate.json
├── aws-proton-servicetemplate.json
├── aws-qbusiness-application.json
├── aws-qbusiness-dataaccessor.json
├── aws-qbusiness-datasource.json
├── aws-qbusiness-index.json
├── aws-qbusiness-permission.json
├── aws-qbusiness-plugin.json
├── aws-qbusiness-retriever.json
├── aws-qbusiness-webexperience.json
├── aws-qldb-ledger.json
├── aws-qldb-stream.json
├── aws-quicksight-analysis.json
├── aws-quicksight-custompermissions.json
├── aws-quicksight-dashboard.json
├── aws-quicksight-dataset.json
├── aws-quicksight-datasource.json
├── aws-quicksight-folder.json
├── aws-quicksight-refreshschedule.json
├── aws-quicksight-template.json
├── aws-quicksight-theme.json
├── aws-quicksight-topic.json
├── aws-quicksight-vpcconnection.json
├── aws-ram-permission.json
├── aws-ram-resourceshare.json
├── aws-rbin-rule.json
├── aws-rds-customdbengineversion.json
├── aws-rds-dbcluster.json
├── aws-rds-dbclusterparametergroup.json
├── aws-rds-dbinstance.json
├── aws-rds-dbparametergroup.json
├── aws-rds-dbproxy.json
├── aws-rds-dbproxyendpoint.json
├── aws-rds-dbproxytargetgroup.json
├── aws-rds-dbsecuritygroup.json
├── aws-rds-dbsecuritygroupingress.json
├── aws-rds-dbshardgroup.json
├── aws-rds-dbsubnetgroup.json
├── aws-rds-eventsubscription.json
├── aws-rds-globalcluster.json
├── aws-rds-integration.json
├── aws-rds-optiongroup.json
├── aws-redshift-cluster.json
├── aws-redshift-clusterparametergroup.json
├── aws-redshift-clustersecuritygroup.json
├── aws-redshift-clustersecuritygroupingress.json
├── aws-redshift-clustersubnetgroup.json
├── aws-redshift-endpointaccess.json
├── aws-redshift-endpointauthorization.json
├── aws-redshift-eventsubscription.json
├── aws-redshift-integration.json
├── aws-redshift-scheduledaction.json
├── aws-redshiftserverless-namespace.json
├── aws-redshiftserverless-workgroup.json
├── aws-refactorspaces-application.json
├── aws-refactorspaces-environment.json
├── aws-refactorspaces-route.json
├── aws-refactorspaces-service.json
├── aws-rekognition-collection.json
├── aws-rekognition-project.json
├── aws-rekognition-streamprocessor.json
├── aws-resiliencehub-app.json
├── aws-resiliencehub-resiliencypolicy.json
├── aws-resourceexplorer2-defaultviewassociation.json
├── aws-resourceexplorer2-index.json
├── aws-resourceexplorer2-view.json
├── aws-resourcegroups-group.json
├── aws-resourcegroups-tagsynctask.json
├── aws-robomaker-fleet.json
├── aws-robomaker-robot.json
├── aws-robomaker-robotapplication.json
├── aws-robomaker-robotapplicationversion.json
├── aws-robomaker-simulationapplication.json
├── aws-robomaker-simulationapplicationversion.json
├── aws-rolesanywhere-crl.json
├── aws-rolesanywhere-profile.json
├── aws-rolesanywhere-trustanchor.json
├── aws-route53-cidrcollection.json
├── aws-route53-dnssec.json
├── aws-route53-healthcheck.json
├── aws-route53-hostedzone.json
├── aws-route53-keysigningkey.json
├── aws-route53-recordset.json
├── aws-route53-recordsetgroup.json
├── aws-route53profiles-profile.json
├── aws-route53profiles-profileassociation.json
├── aws-route53profiles-profileresourceassociation.json
├── aws-route53recoverycontrol-cluster.json
├── aws-route53recoverycontrol-controlpanel.json
├── aws-route53recoverycontrol-routingcontrol.json
├── aws-route53recoverycontrol-safetyrule.json
├── aws-route53recoveryreadiness-cell.json
├── aws-route53recoveryreadiness-readinesscheck.json
├── aws-route53recoveryreadiness-recoverygroup.json
├── aws-route53recoveryreadiness-resourceset.json
├── aws-route53resolver-firewalldomainlist.json
├── aws-route53resolver-firewallrulegroup.json
├── aws-route53resolver-firewallrulegroupassociation.json
├── aws-route53resolver-outpostresolver.json
├── aws-route53resolver-resolverconfig.json
├── aws-route53resolver-resolverdnssecconfig.json
├── aws-route53resolver-resolverendpoint.json
├── aws-route53resolver-resolverqueryloggingconfig.json
├── aws-route53resolver-resolverqueryloggingconfigassociation.json
├── aws-route53resolver-resolverrule.json
├── aws-route53resolver-resolverruleassociation.json
├── aws-rum-appmonitor.json
├── aws-s3-accessgrant.json
├── aws-s3-accessgrantsinstance.json
├── aws-s3-accessgrantslocation.json
├── aws-s3-accesspoint.json
├── aws-s3-bucket.json
├── aws-s3-bucketpolicy.json
├── aws-s3-multiregionaccesspoint.json
├── aws-s3-multiregionaccesspointpolicy.json
├── aws-s3-storagelens.json
├── aws-s3-storagelensgroup.json
├── aws-s3express-bucketpolicy.json
├── aws-s3express-directorybucket.json
├── aws-s3objectlambda-accesspoint.json
├── aws-s3objectlambda-accesspointpolicy.json
├── aws-s3outposts-accesspoint.json
├── aws-s3outposts-bucket.json
├── aws-s3outposts-bucketpolicy.json
├── aws-s3outposts-endpoint.json
├── aws-s3tables-tablebucket.json
├── aws-s3tables-tablebucketpolicy.json
├── aws-sagemaker-app.json
├── aws-sagemaker-appimageconfig.json
├── aws-sagemaker-cluster.json
├── aws-sagemaker-coderepository.json
├── aws-sagemaker-dataqualityjobdefinition.json
├── aws-sagemaker-device.json
├── aws-sagemaker-devicefleet.json
├── aws-sagemaker-domain.json
├── aws-sagemaker-endpoint.json
├── aws-sagemaker-endpointconfig.json
├── aws-sagemaker-featuregroup.json
├── aws-sagemaker-image.json
├── aws-sagemaker-imageversion.json
├── aws-sagemaker-inferencecomponent.json
├── aws-sagemaker-inferenceexperiment.json
├── aws-sagemaker-mlflowtrackingserver.json
├── aws-sagemaker-model.json
├── aws-sagemaker-modelbiasjobdefinition.json
├── aws-sagemaker-modelcard.json
├── aws-sagemaker-modelexplainabilityjobdefinition.json
├── aws-sagemaker-modelpackage.json
├── aws-sagemaker-modelpackagegroup.json
├── aws-sagemaker-modelqualityjobdefinition.json
├── aws-sagemaker-monitoringschedule.json
├── aws-sagemaker-notebookinstance.json
├── aws-sagemaker-notebookinstancelifecycleconfig.json
├── aws-sagemaker-partnerapp.json
├── aws-sagemaker-pipeline.json
├── aws-sagemaker-project.json
├── aws-sagemaker-space.json
├── aws-sagemaker-studiolifecycleconfig.json
├── aws-sagemaker-userprofile.json
├── aws-sagemaker-workteam.json
├── aws-scheduler-schedule.json
├── aws-scheduler-schedulegroup.json
├── aws-sdb-domain.json
├── aws-secretsmanager-resourcepolicy.json
├── aws-secretsmanager-rotationschedule.json
├── aws-secretsmanager-secret.json
├── aws-secretsmanager-secrettargetattachment.json
├── aws-securityhub-automationrule.json
├── aws-securityhub-configurationpolicy.json
├── aws-securityhub-delegatedadmin.json
├── aws-securityhub-findingaggregator.json
├── aws-securityhub-hub.json
├── aws-securityhub-insight.json
├── aws-securityhub-organizationconfiguration.json
├── aws-securityhub-policyassociation.json
├── aws-securityhub-productsubscription.json
├── aws-securityhub-securitycontrol.json
├── aws-securityhub-standard.json
├── aws-securitylake-awslogsource.json
├── aws-securitylake-datalake.json
├── aws-securitylake-subscriber.json
├── aws-securitylake-subscribernotification.json
├── aws-servicecatalog-acceptedportfolioshare.json
├── aws-servicecatalog-cloudformationproduct.json
├── aws-servicecatalog-cloudformationprovisionedproduct.json
├── aws-servicecatalog-launchnotificationconstraint.json
├── aws-servicecatalog-launchroleconstraint.json
├── aws-servicecatalog-launchtemplateconstraint.json
├── aws-servicecatalog-portfolio.json
├── aws-servicecatalog-portfolioprincipalassociation.json
├── aws-servicecatalog-portfolioproductassociation.json
├── aws-servicecatalog-portfolioshare.json
├── aws-servicecatalog-resourceupdateconstraint.json
├── aws-servicecatalog-serviceaction.json
├── aws-servicecatalog-serviceactionassociation.json
├── aws-servicecatalog-stacksetconstraint.json
├── aws-servicecatalog-tagoption.json
├── aws-servicecatalog-tagoptionassociation.json
├── aws-servicecatalogappregistry-application.json
├── aws-servicecatalogappregistry-attributegroup.json
├── aws-servicecatalogappregistry-attributegroupassociation.json
├── aws-servicecatalogappregistry-resourceassociation.json
├── aws-servicediscovery-httpnamespace.json
├── aws-servicediscovery-instance.json
├── aws-servicediscovery-privatednsnamespace.json
├── aws-servicediscovery-publicdnsnamespace.json
├── aws-servicediscovery-service.json
├── aws-ses-configurationset.json
├── aws-ses-configurationseteventdestination.json
├── aws-ses-contactlist.json
├── aws-ses-dedicatedippool.json
├── aws-ses-emailidentity.json
├── aws-ses-mailmanageraddoninstance.json
├── aws-ses-mailmanageraddonsubscription.json
├── aws-ses-mailmanagerarchive.json
├── aws-ses-mailmanageringresspoint.json
├── aws-ses-mailmanagerrelay.json
├── aws-ses-mailmanagerruleset.json
├── aws-ses-mailmanagertrafficpolicy.json
├── aws-ses-receiptfilter.json
├── aws-ses-receiptrule.json
├── aws-ses-receiptruleset.json
├── aws-ses-template.json
├── aws-ses-vdmattributes.json
├── aws-shield-drtaccess.json
├── aws-shield-proactiveengagement.json
├── aws-shield-protection.json
├── aws-shield-protectiongroup.json
├── aws-signer-profilepermission.json
├── aws-signer-signingprofile.json
├── aws-simspaceweaver-simulation.json
├── aws-sns-subscription.json
├── aws-sns-topic.json
├── aws-sns-topicinlinepolicy.json
├── aws-sns-topicpolicy.json
├── aws-sqs-queue.json
├── aws-sqs-queueinlinepolicy.json
├── aws-sqs-queuepolicy.json
├── aws-ssm-association.json
├── aws-ssm-document.json
├── aws-ssm-maintenancewindow.json
├── aws-ssm-maintenancewindowtarget.json
├── aws-ssm-maintenancewindowtask.json
├── aws-ssm-parameter.json
├── aws-ssm-patchbaseline.json
├── aws-ssm-resourcedatasync.json
├── aws-ssm-resourcepolicy.json
├── aws-ssmcontacts-contact.json
├── aws-ssmcontacts-contactchannel.json
├── aws-ssmcontacts-plan.json
├── aws-ssmcontacts-rotation.json
├── aws-ssmincidents-replicationset.json
├── aws-ssmincidents-responseplan.json
├── aws-ssmquicksetup-configurationmanager.json
├── aws-sso-application.json
├── aws-sso-applicationassignment.json
├── aws-sso-assignment.json
├── aws-sso-instance.json
├── aws-sso-instanceaccesscontrolattributeconfiguration.json
├── aws-sso-permissionset.json
├── aws-stepfunctions-activity.json
├── aws-stepfunctions-statemachine.json
├── aws-stepfunctions-statemachinealias.json
├── aws-stepfunctions-statemachineversion.json
├── aws-supportapp-accountalias.json
├── aws-supportapp-slackchannelconfiguration.json
├── aws-supportapp-slackworkspaceconfiguration.json
├── aws-synthetics-canary.json
├── aws-synthetics-group.json
├── aws-systemsmanagersap-application.json
├── aws-timestream-database.json
├── aws-timestream-influxdbinstance.json
├── aws-timestream-scheduledquery.json
├── aws-timestream-table.json
├── aws-transfer-agreement.json
├── aws-transfer-certificate.json
├── aws-transfer-connector.json
├── aws-transfer-profile.json
├── aws-transfer-server.json
├── aws-transfer-user.json
├── aws-transfer-webapp.json
├── aws-transfer-workflow.json
├── aws-verifiedpermissions-identitysource.json
├── aws-verifiedpermissions-policy.json
├── aws-verifiedpermissions-policystore.json
├── aws-verifiedpermissions-policytemplate.json
├── aws-voiceid-domain.json
├── aws-vpclattice-accesslogsubscription.json
├── aws-vpclattice-authpolicy.json
├── aws-vpclattice-listener.json
├── aws-vpclattice-resourceconfiguration.json
├── aws-vpclattice-resourcegateway.json
├── aws-vpclattice-resourcepolicy.json
├── aws-vpclattice-rule.json
├── aws-vpclattice-service.json
├── aws-vpclattice-servicenetwork.json
├── aws-vpclattice-servicenetworkresourceassociation.json
├── aws-vpclattice-servicenetworkserviceassociation.json
├── aws-vpclattice-servicenetworkvpcassociation.json
├── aws-vpclattice-targetgroup.json
├── aws-waf-bytematchset.json
├── aws-waf-ipset.json
├── aws-waf-rule.json
├── aws-waf-sizeconstraintset.json
├── aws-waf-sqlinjectionmatchset.json
├── aws-waf-webacl.json
├── aws-waf-xssmatchset.json
├── aws-wafregional-bytematchset.json
├── aws-wafregional-geomatchset.json
├── aws-wafregional-ipset.json
├── aws-wafregional-ratebasedrule.json
├── aws-wafregional-regexpatternset.json
├── aws-wafregional-rule.json
├── aws-wafregional-sizeconstraintset.json
├── aws-wafregional-sqlinjectionmatchset.json
├── aws-wafregional-webacl.json
├── aws-wafregional-webaclassociation.json
├── aws-wafregional-xssmatchset.json
├── aws-wafv2-ipset.json
├── aws-wafv2-loggingconfiguration.json
├── aws-wafv2-regexpatternset.json
├── aws-wafv2-rulegroup.json
├── aws-wafv2-webacl.json
├── aws-wafv2-webaclassociation.json
├── aws-wisdom-aiagent.json
├── aws-wisdom-aiagentversion.json
├── aws-wisdom-aiguardrail.json
├── aws-wisdom-aiguardrailversion.json
├── aws-wisdom-aiprompt.json
├── aws-wisdom-aipromptversion.json
├── aws-wisdom-assistant.json
├── aws-wisdom-assistantassociation.json
├── aws-wisdom-knowledgebase.json
├── aws-wisdom-messagetemplate.json
├── aws-wisdom-messagetemplateversion.json
├── aws-workspaces-connectionalias.json
├── aws-workspaces-workspace.json
├── aws-workspaces-workspacespool.json
├── aws-workspacesthinclient-environment.json
├── aws-workspacesweb-browsersettings.json
├── aws-workspacesweb-dataprotectionsettings.json
├── aws-workspacesweb-identityprovider.json
├── aws-workspacesweb-ipaccesssettings.json
├── aws-workspacesweb-networksettings.json
├── aws-workspacesweb-portal.json
├── aws-workspacesweb-truststore.json
├── aws-workspacesweb-useraccessloggingsettings.json
├── aws-workspacesweb-usersettings.json
├── aws-xray-group.json
├── aws-xray-resourcepolicy.json
├── aws-xray-samplingrule.json
├── aws-xray-transactionsearchconfig.json
├── update.ps1
└── update.sh
├── set-version.sh
├── src
├── arm
│ ├── data.go
│ ├── data.template
│ ├── data_test.go
│ ├── error.go
│ ├── error_test.go
│ ├── helpers.go
│ ├── helpers_test.go
│ ├── locals.go
│ ├── lookup.go
│ ├── lookup_test.go
│ ├── output.template
│ ├── outputs.go
│ ├── outputs_test.go
│ ├── parameters.go
│ ├── parse.go
│ ├── parse_test.go
│ ├── resource.go
│ ├── resources.go
│ ├── resources
│ │ ├── azurerm_active_directory_domain_service.template
│ │ ├── azurerm_analysis_services_server.template
│ │ ├── azurerm_api_management.template
│ │ ├── azurerm_application_gateway.template
│ │ ├── azurerm_availability_set.template
│ │ ├── azurerm_bastion_host.template
│ │ ├── azurerm_container_app.template
│ │ ├── azurerm_container_app_environment.template
│ │ ├── azurerm_container_registry.template
│ │ ├── azurerm_key_vault.template
│ │ ├── azurerm_kubernetes_cluster.template
│ │ ├── azurerm_log_analytics_solution.template
│ │ ├── azurerm_log_analytics_workspace.template
│ │ ├── azurerm_managed_disk.template
│ │ ├── azurerm_monitor_activity_log_alert.template
│ │ ├── azurerm_network_interface.template
│ │ ├── azurerm_network_interface_application_gateway_backend_address_pool_association.template
│ │ ├── azurerm_network_security_group.template
│ │ ├── azurerm_network_security_rule.template
│ │ ├── azurerm_private_dns_zone.template
│ │ ├── azurerm_private_dns_zone_virtual_network_link.template
│ │ ├── azurerm_private_endpoint.template
│ │ ├── azurerm_public_ip.template
│ │ ├── azurerm_role_assignment.template
│ │ ├── azurerm_role_definition.template
│ │ ├── azurerm_servicebus_namespace.template
│ │ ├── azurerm_servicebus_namespace_authorization_rule.template
│ │ ├── azurerm_servicebus_queue.template
│ │ ├── azurerm_storage_account.template
│ │ ├── azurerm_subnet.template
│ │ ├── azurerm_template_deployment.template
│ │ ├── azurerm_user_assigned_identity.template
│ │ ├── azurerm_virtual_machine.template
│ │ ├── azurerm_virtual_machine_extension.template
│ │ ├── azurerm_virtual_network.template
│ │ └── azurerm_web_application_firewall_policy.template
│ ├── resources_test.go
│ ├── variable.go
│ ├── variable.template
│ ├── variables.go
│ └── variables_test.go
├── cf
│ ├── data.go
│ ├── errors.go
│ ├── errors_test.go
│ ├── helpers.go
│ ├── helpers_test.go
│ ├── lookup.go
│ ├── lookup_test.go
│ ├── parse.go
│ ├── parse_test.go
│ ├── resource_mapping.go
│ ├── resources.go
│ ├── resources
│ │ ├── aws_appautoscaling_policy.template
│ │ ├── aws_appautoscaling_target.template
│ │ ├── aws_athena_named_query.template
│ │ ├── aws_athena_workgroup.template
│ │ ├── aws_autoscaling_group.template
│ │ ├── aws_autoscaling_lifecycle_hook.template
│ │ ├── aws_autoscaling_policy.template
│ │ ├── aws_autoscaling_schedule.template
│ │ ├── aws_backup_plan.template
│ │ ├── aws_backup_selection.template
│ │ ├── aws_backup_vault.template
│ │ ├── aws_cloud9_environment_ec2.template
│ │ ├── aws_cloudformation_stack.template
│ │ ├── aws_cloudfront_distribution.template
│ │ ├── aws_cloudfront_origin_access_identity.template
│ │ ├── aws_cloudwatch_dashboard.template
│ │ ├── aws_cloudwatch_event_rule.template
│ │ ├── aws_cloudwatch_log_group.template
│ │ ├── aws_cloudwatch_log_metric_filter.template
│ │ ├── aws_cloudwatch_metric_alarm.template
│ │ ├── aws_codebuild_project.template
│ │ ├── aws_codecommit_repository.template
│ │ ├── aws_codepipeline.template
│ │ ├── aws_config_config_rule.template
│ │ ├── aws_config_configuration_recorder.template
│ │ ├── aws_config_delivery_channel.template
│ │ ├── aws_db_instance.template
│ │ ├── aws_db_parameter_group.template
│ │ ├── aws_db_subnet_group.template
│ │ ├── aws_directory_service_directory.template
│ │ ├── aws_dms_endpoint.template
│ │ ├── aws_dms_replication_instance.template
│ │ ├── aws_dms_replication_subnet_group.template
│ │ ├── aws_dms_replication_task.template
│ │ ├── aws_dynamodb_table.template
│ │ ├── aws_ebs_volume.template
│ │ ├── aws_ecs_cluster.template
│ │ ├── aws_ecs_service.template
│ │ ├── aws_ecs_task_definition.template
│ │ ├── aws_efs_file_system.template
│ │ ├── aws_efs_mount_target.template
│ │ ├── aws_eip.template
│ │ ├── aws_eip_association.template
│ │ ├── aws_eks_cluster.template
│ │ ├── aws_eks_node_group.template
│ │ ├── aws_elasticache_parameter_group.template
│ │ ├── aws_elasticache_replication_group.template
│ │ ├── aws_elasticache_subnet_group.template
│ │ ├── aws_elb.template
│ │ ├── aws_flow_log.template
│ │ ├── aws_iam_access_key.template
│ │ ├── aws_iam_group.template
│ │ ├── aws_iam_group_membership.template
│ │ ├── aws_iam_instance_profile.template
│ │ ├── aws_iam_managed_policy.template
│ │ ├── aws_iam_policy.template
│ │ ├── aws_iam_role.template
│ │ ├── aws_iam_user.template
│ │ ├── aws_instance.template
│ │ ├── aws_internet_gateway.template
│ │ ├── aws_kinesis_firehose_delivery_stream.template
│ │ ├── aws_kms_alias.template
│ │ ├── aws_kms_key.template
│ │ ├── aws_lambda_event_source_mapping.template
│ │ ├── aws_lambda_function.template
│ │ ├── aws_lambda_permission.template
│ │ ├── aws_lambda_version.template
│ │ ├── aws_launch_configuration.template
│ │ ├── aws_launch_template.template
│ │ ├── aws_lb.template
│ │ ├── aws_lb_listener.template
│ │ ├── aws_lb_listener_rule.template
│ │ ├── aws_lb_target_group.template
│ │ ├── aws_nat_gateway.template
│ │ ├── aws_neptune_cluster.template
│ │ ├── aws_neptune_cluster_instance.template
│ │ ├── aws_neptune_cluster_parameter_group.template
│ │ ├── aws_neptune_parameter_group.template
│ │ ├── aws_neptune_subnet_group.template
│ │ ├── aws_network_acl.template
│ │ ├── aws_network_acl_association.template
│ │ ├── aws_network_acl_rule.template
│ │ ├── aws_network_interface.template
│ │ ├── aws_rds_cluster.template
│ │ ├── aws_route.template
│ │ ├── aws_route53_record.template
│ │ ├── aws_route_table.template
│ │ ├── aws_route_table_association.template
│ │ ├── aws_s3_bucket.template
│ │ ├── aws_s3_bucket_policy.template
│ │ ├── aws_secretsmanager_secret.template
│ │ ├── aws_security_group.template
│ │ ├── aws_security_group_rule_egress.template
│ │ ├── aws_security_group_rule_ingress.template
│ │ ├── aws_service_discovery_service.template
│ │ ├── aws_servicecatalog_portfolio.template
│ │ ├── aws_servicecatalog_portfolio_share.template
│ │ ├── aws_servicecatalog_product_portfolio_association.template
│ │ ├── aws_servicecatalog_tag_option.template
│ │ ├── aws_servicecatalog_tag_option_resource_association.template
│ │ ├── aws_sfn_state_machine.template
│ │ ├── aws_sns_topic.template
│ │ ├── aws_sns_topic_policy.template
│ │ ├── aws_sns_topic_subscription.template
│ │ ├── aws_sqs_queue.template
│ │ ├── aws_ssm_association.template
│ │ ├── aws_ssm_document.template
│ │ ├── aws_ssm_maintenance_window.template
│ │ ├── aws_ssm_maintenance_window_target.template
│ │ ├── aws_ssm_maintenance_window_task.template
│ │ ├── aws_subnet.template
│ │ ├── aws_vpc.template
│ │ ├── aws_vpc_dhcp_options.template
│ │ ├── aws_vpc_dhcp_options_association.template
│ │ ├── aws_vpc_endpoint.template
│ │ ├── aws_vpn_gateway_attachment.template
│ │ └── aws_wafv2_web_acl_association.template
│ ├── testdata
│ │ ├── min.cg.yaml
│ │ └── minwithparams.cg.yaml
│ ├── variable.go
│ └── variable.template
├── see
│ ├── lookup.go
│ ├── lookup_test.go
│ └── resource_mapping.go
└── version
│ └── version.go
├── tests
├── integration
│ └── integration_test.go
└── utils
│ └── utils.go
└── todo.txt
/.checkov.yaml:
--------------------------------------------------------------------------------
1 | block-list-secret-scan: [ ]
2 | branch: master
3 | directory:
4 | - .
5 | download-external-modules: false
6 | evaluate-variables: true
7 | external-modules-download-path: .external_modules
8 | framework:
9 | - secrets
10 | - dockerfile
11 | - github_configuration
12 | - github_actions
13 | - json
14 | - yaml
15 | - sca_package
16 | - sca_image
17 | mask: [ ]
18 | secrets-history-timeout: 12h
19 | secrets-scan-file-type: [ ]
20 | skip-path:
21 | - terraform
22 | - venv
23 | summary-position: top
24 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behaviour:
15 |
16 | 1. Go to '...'
17 | 2. Click on '...'
18 | 3. Scroll down to '...'
19 | 4. See error
20 |
21 | **Expected behaviour**
22 | A clear and concise description of what you expected to happen.
23 |
24 | **Screenshots**
25 | If applicable, add screenshots to help explain your problem.
26 |
27 | **Desktop (please complete the following information):**
28 |
29 | - OS: [e.g. iOS]
30 | - Browser [e.g. chrome, safari]
31 | - Version [e.g. 22]
32 |
33 | **Smartphone (please complete the following information):**
34 |
35 | - Device: [e.g. iPhone6]
36 | - OS: [e.g. iOS8.1]
37 | - Browser [e.g. stock browser, safari]
38 | - Version [e.g. 22]
39 |
40 | **Additional context**
41 | Add any other context about the problem here.
42 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is.
12 | Ex. I'm always frustrated when [...]
13 |
14 | **Describe the solution you'd like**
15 | A clear and concise description of what you want to happen.
16 |
17 | **Describe alternatives you've considered**
18 | A clear and concise description of any alternative solutions or features you've considered.
19 |
20 | **Additional context**
21 | Add any other context or screenshots about the feature request here.
22 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Stale'
2 | on:
3 | schedule:
4 | - cron: '30 1 * * *'
5 | workflow_dispatch:
6 | permissions: read-all
7 |
8 | jobs:
9 | stale:
10 | permissions:
11 | contents: write
12 | issues: write
13 | pull-requests: write
14 | runs-on: ubuntu-latest
15 | steps:
16 | - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
17 | with:
18 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
19 | days-before-stale: 30
20 | days-before-close: 5
21 | enable-statistics: true
22 | exempt-issue-labels: enhancement
23 | exempt-pr-labels: enhancement
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | sato.exe
2 | sato
3 | vendor
4 | .sato
5 | .idea
6 | .terraform
7 | terraform.tfstate
8 | .terraform.lock.hcl
9 | .vscode/
10 | pike
11 | .pytest_cache/
12 | *.backup
13 | __debug_bin.exe
14 | .DS_Store
15 | *.orig
16 | .terraform.tfstate.lock.info
17 | .pike
18 | provider.azure.tf
19 | *.js
20 | *.zip
21 | arm/test-output/
22 | src/arm/test-output/
23 | src/arm/nowhere/
24 | src/cf/test.tf
25 | src/cf/*.txt
26 | src/cf/*.tf
27 |
--------------------------------------------------------------------------------
/.goreleaser.yml:
--------------------------------------------------------------------------------
1 | # .goreleaser.yml
2 |
3 | # The lines below are called `modelines`. See `:help modeline`
4 | # Feel free to remove those if you don't want/need to use them.
5 | # yaml-language-server: $schema=https://goreleaser.com/static/schema.json
6 | # vim: set ts=2 sw=2 tw=0 fo=cnqoj
7 |
8 | version: 2
9 |
10 | before:
11 | hooks:
12 | - ./set-version.sh
13 |
14 | builds:
15 | - goos:
16 | - darwin
17 | - linux
18 | - windows
19 | goarch:
20 | - "386"
21 | - amd64
22 | - arm64
23 | goarm:
24 | - "7"
25 | ignore:
26 | - goarch: "386"
27 | goos: darwin
28 | archives:
29 | - format_overrides:
30 | - goos: windows
31 | format: zip
32 |
33 | brews:
34 | - name: sato
35 |
36 | repository:
37 | owner: JamesWoolfenden
38 | name: homebrew-tap
39 | token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
40 |
41 |
42 | commit_author:
43 | name: "GitHub Action"
44 | email: action@github.com
45 |
46 | homepage: "https://github.com/JamesWoolfenden/sato#readme"
47 |
48 | description: "Sato is for converting Cloudformation to Terraform"
49 |
50 | install: |
51 | bin.install "sato"
52 |
53 | test: |
54 | system "#{bin}/sato", "--help"
55 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | sato
2 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/sato.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.markdownlint.json:
--------------------------------------------------------------------------------
1 | {
2 | "MD013": false,
3 | "MD033": {
4 | "allowed_elements": [
5 | "small"
6 | ]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.run/test sato parse.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM alpine
2 |
3 | RUN apk --no-cache add build-base git curl jq bash
4 | RUN curl -s -k https://api.github.com/repos/JamesWoolfenden/sato/releases/latest | jq '.assets[] | select(.name | contains("linux_386")) | select(.content_type | contains("gzip")) | .browser_download_url' -r | awk '{print "curl -L -k " $0 " -o ./sato.tar.gz"}' | sh
5 | RUN tar -xf ./sato.tar.gz -C /usr/bin/ && rm ./sato.tar.gz && chmod +x /usr/bin/sato && echo 'alias sato="/usr/bin/sato"' >> ~/.bashrc
6 | COPY entrypoint.sh /entrypoint.sh
7 |
8 | # Code file to execute when the docker container starts up (`entrypoint.sh`)
9 | ENTRYPOINT ["/entrypoint.sh"]
10 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | I'm only supporting the latest version, and required changes will be releases ASAP.
6 |
7 | ## Reporting a Vulnerability
8 |
9 | Contact James Woolfenden at gmail dot com.
10 |
--------------------------------------------------------------------------------
/bump.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory = $false)]
3 | [ValidateNotNullOrEmpty()]
4 | [string]$message = "new release"
5 | )
6 |
7 | $versionPattern = '^\d+\.\d+\.\d+$'
8 | $version = $null
9 |
10 | try
11 | {
12 | $version = $( git describe --tags --abbrev=0 ) -replace "v"
13 | if ($version -notmatch $versionPattern)
14 | {
15 | Write-Error "Invalid version format $version. Expected: x.y.z"
16 | exit 1
17 | }
18 |
19 | $splitter = $version.split(".")
20 | $build = [int]($splitter[2]) + 1
21 | [string]$newVersion = $splitter[0] + "." + $splitter[1] + "." + $build.ToString()
22 |
23 | if ([version]$newVersion -le [version]$version)
24 | {
25 | Write-Error "New version must be greater than current version"
26 | exit 1
27 | }
28 |
29 | Write-Host "Current version: $version"
30 | Write-Host "New version: $newVersion"
31 | Write-Host "Creating new tag..."
32 |
33 | git tag -a v$newVersion -m "$message"
34 | git push origin v$newVersion
35 | }
36 | catch
37 | {
38 | Write-Error "An error occurred: $_"
39 | exit 1
40 | }
41 |
--------------------------------------------------------------------------------
/bump.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Parameters
4 | message="${1:-new release}"
5 |
6 | # Version pattern
7 | versionPattern='^[0-9]+\.[0-9]+\.[0-9]+$'
8 | version=''
9 |
10 | # Get the current version
11 | version=$(git describe --tags --abbrev=0 2>/dev/null)
12 | version=${version//v}
13 | if [[ ! $version =~ $versionPattern ]]; then
14 | echo "Invalid version format. Expected: x.y.z"
15 | exit 1
16 | fi
17 |
18 | # Split the version and increment the build number
19 | IFS='.' read -r major minor build <<< "$version"
20 | newBuild=$((build + 1))
21 | newVersion="$major.$minor.$newBuild"
22 |
23 | if [[ ! "$newVersion" > "$version" ]]; then
24 | echo "New version must be greater than current version"
25 | exit 1
26 | fi
27 |
28 | # Output the current and new version
29 | echo "Current version: $version"
30 | echo "New version: $newVersion"
31 | echo "Creating new tag..."
32 |
33 | # Create a new tag and push it
34 | git tag -a "v$newVersion" -m "$message"
35 | git push origin "v$newVersion"
36 |
--------------------------------------------------------------------------------
/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Leverage the default env variables as described in:
4 | # https://docs.github.com/en/actions/reference/environment-variables#default-environment-variables
5 | if [[ $GITHUB_ACTIONS != "true" ]]
6 | then
7 | /usr/bin/sato "$@"
8 | exit $?
9 | fi
10 |
11 | flags=""
12 |
13 | echo "running command:"
14 | echo sato parse -f "$INPUT_FILE" "$flags"
15 |
16 | /usr/bin/sato parse -f "$INPUT_FILE" "$flags"
17 | export sato_EXIT_CODE=$?
18 |
--------------------------------------------------------------------------------
/examples/arm/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
3 | "contentVersion": "1.0.0.0",
4 | "parameters": {
5 | "adminPassword": {
6 | "value": "GEN-PASSWORD"
7 | },
8 | "adminUsername": {
9 | "value": "GEN-UNIQUE"
10 | },
11 | "dnsLabelPrefix": {
12 | "value": "GEN-UNIQUE"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/arm/microsoft.compute/vm-simple-windows/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://aka.ms/azure-quickstart-templates-metadata-schema#",
3 | "dateUpdated": "2023-04-21",
4 | "description": "This template allows you to deploy a simple Windows VM using a few different options for the Windows version, using the latest patched version. This will deploy an A2 size VM in the resource group location and return the FQDN of the VM.",
5 | "docOwner": "cynthn",
6 | "githubUsername": "bmoore-msft",
7 | "icon": "windowsVM",
8 | "itemDisplayName": "Deploy a simple Windows VM",
9 | "summary": "This template takes a minimum amount of parameters and deploys a Windows VM, using the latest patched version.",
10 | "type": "QuickStart"
11 | }
12 |
--------------------------------------------------------------------------------
/examples/arm/smallest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
3 | "apiProfile": "",
4 | "contentVersion": "",
5 | "definitions": {},
6 | "functions": [],
7 | "languageVersion": "",
8 | "outputs": {},
9 | "parameters": {},
10 | "resources": [],
11 | "variables": {}
12 | }
13 |
--------------------------------------------------------------------------------
/examples/arm/smallest.yaml:
--------------------------------------------------------------------------------
1 | AWSTemplateFormatVersion: "2010-09-09"
2 | Description: AMi Factory Set up template
3 |
4 | Parameters:
5 | InstanceType:
6 | Type: String
7 | Default: t2.small
8 | Description: Instance Type
9 | SubnetId:
10 | Type: AWS::EC2::Subnet::Id
11 | Description: Subnet ID to run the EC2 instance for AMI building
12 | NotificationEmail:
13 | Type: String
14 | Description: Email id to be notified once AMI is created
15 |
16 | Resources:
17 | SNSTopic:
18 | Type: AWS::SNS::Topic
19 | Properties:
20 | Subscription:
21 | - Endpoint: !Ref NotificationEmail
22 | Protocol: "email"
23 |
--------------------------------------------------------------------------------
/examples/athena.yaml:
--------------------------------------------------------------------------------
1 | Resources:
2 |
3 | athenworkgroup:
4 | Type: AWS::Athena::WorkGroup
5 | Properties:
6 | Name: "my-workgroup"
7 | State: "ENABLED"
8 |
9 | securityhubAthenaView:
10 | Type: AWS::Athena::NamedQuery
11 | Properties:
12 | Name: AWS-athena
13 | Database: !Ref database
14 | WorkGroup: !Ref athenworkgroup
15 | QueryString: >
16 | SELECT * FROM "my_table" WHERE "severity" = 'CRITICAL'
17 |
18 | MyAthenaWorkGroup:
19 | Type: 'AWS::Athena::WorkGroup'
20 | Properties:
21 | Name: "MyCustomWorkGroup"
22 | Description: "My WorkGroup"
23 | State: "ENABLED"
24 | Tags:
25 | - Key: "key1"
26 | Value: "value1"
27 | - Key: "key2"
28 | Value: "value2"
29 | WorkGroupConfiguration:
30 | BytesScannedCutoffPerQuery: 200000000
31 | EnforceWorkGroupConfiguration: false
32 | PublishCloudWatchMetricsEnabled: false
33 | RequesterPaysEnabled: true
34 | ResultConfiguration:
35 | OutputLocation: "s3://path/to/my/bucket/"
36 |
--------------------------------------------------------------------------------
/examples/kinesis.yaml:
--------------------------------------------------------------------------------
1 | Resources:
2 | SecHubEventsFirehoseDeliveryStream:
3 | Type: AWS::KinesisFirehose::DeliveryStream
4 | Properties:
5 | DeliveryStreamName: aws-sechub-logs-kinesis-delivery-stream
6 | DeliveryStreamType: DirectPut
7 | DeliveryStreamEncryptionConfigurationInput:
8 | KeyType: AWS_OWNED_CMK
9 | ExtendedS3DestinationConfiguration:
10 | BucketARN: !GetAtt S3Bucketsechubyashdatafirehose.Arn
11 | Prefix: !Sub "sechub_events/managementid=${AWS::AccountId}/!{timestamp:yyyy}/!{timestamp:MM}/!{timestamp:dd}/"
12 | ErrorOutputPrefix: "aws-sechub-logs-firehose-error/"
13 | RoleARN: !GetAtt kinesisFirehoseRole.Arn
14 | CloudWatchLoggingOptions:
15 | Enabled: true
16 | LogGroupName: !Ref FirehoseLogGroup
17 | LogStreamName: !Ref FirehoseLogStream
18 | BufferingHints:
19 | IntervalInSeconds: 900
20 | SizeInMBs: 30
21 | CompressionFormat: "GZIP"
22 | ProcessingConfiguration:
23 | Enabled: true
24 | Processors:
25 | - Type: Lambda
26 | Parameters:
27 | - ParameterName: LambdaArn
28 | ParameterValue: !GetAtt LambdaFunctiontransformationsechub.Arn
29 | - ParameterName: BufferIntervalInSeconds
30 | ParameterValue: "600"
31 | - ParameterName: BufferSizeInMBs
32 | ParameterValue: "3"
33 |
--------------------------------------------------------------------------------
/examples/template.yaml:
--------------------------------------------------------------------------------
1 | AWSTemplateFormatVersion: 2010-09-09
2 |
3 | Resources:
4 | ExampleTopic:
5 | Type: AWS::SNS::Topic
6 | Properties:
7 | TopicName: example
8 |
--------------------------------------------------------------------------------
/schema/README.md:
--------------------------------------------------------------------------------
1 | # lookup
2 |
3 | from
4 |
5 | Using us-east-1 as base.
6 |
7 |
--------------------------------------------------------------------------------
/schema/aws-amazonmq-configurationassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Broker"
5 | ],
6 | "definitions": {
7 | "ConfigurationId": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Id": {
11 | "type": "string"
12 | },
13 | "Revision": {
14 | "type": "integer"
15 | }
16 | },
17 | "required": [
18 | "Revision",
19 | "Id"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::AmazonMQ::ConfigurationAssociation",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Broker": {
30 | "type": "string"
31 | },
32 | "Configuration": {
33 | "$ref": "#/definitions/ConfigurationId"
34 | },
35 | "Id": {
36 | "type": "string"
37 | }
38 | },
39 | "readOnlyProperties": [
40 | "/properties/Id"
41 | ],
42 | "required": [
43 | "Configuration",
44 | "Broker"
45 | ],
46 | "typeName": "AWS::AmazonMQ::ConfigurationAssociation"
47 | }
48 |
--------------------------------------------------------------------------------
/schema/aws-apigateway-account.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "The ``AWS::ApiGateway::Account`` resource specifies the IAM role that Amazon API Gateway uses to write API logs to Amazon CloudWatch Logs. To avoid overwriting other roles, you should only have one ``AWS::ApiGateway::Account`` resource per region per account.",
4 | "handlers": {
5 | "create": {
6 | "permissions": [
7 | "apigateway:PATCH",
8 | "iam:GetRole",
9 | "iam:PassRole"
10 | ]
11 | },
12 | "delete": {
13 | "permissions": [
14 | "apigateway:PATCH"
15 | ]
16 | },
17 | "read": {
18 | "permissions": [
19 | "apigateway:GET"
20 | ]
21 | },
22 | "update": {
23 | "permissions": [
24 | "apigateway:PATCH",
25 | "iam:GetRole",
26 | "iam:PassRole"
27 | ]
28 | }
29 | },
30 | "primaryIdentifier": [
31 | "/properties/Id"
32 | ],
33 | "properties": {
34 | "CloudWatchRoleArn": {
35 | "description": "",
36 | "type": "string"
37 | },
38 | "Id": {
39 | "description": "",
40 | "type": "string"
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway",
47 | "tagging": {
48 | "taggable": false
49 | },
50 | "typeName": "AWS::ApiGateway::Account"
51 | }
52 |
--------------------------------------------------------------------------------
/schema/aws-appstream-stackfleetassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::AppStream::StackFleetAssociation",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "FleetName": {
9 | "type": "string"
10 | },
11 | "Id": {
12 | "type": "string"
13 | },
14 | "StackName": {
15 | "type": "string"
16 | }
17 | },
18 | "readOnlyProperties": [
19 | "/properties/Id"
20 | ],
21 | "required": [
22 | "FleetName",
23 | "StackName"
24 | ],
25 | "typeName": "AWS::AppStream::StackFleetAssociation"
26 | }
27 |
--------------------------------------------------------------------------------
/schema/aws-appstream-stackuserassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/StackName",
5 | "/properties/AuthenticationType",
6 | "/properties/SendEmailNotification",
7 | "/properties/UserName"
8 | ],
9 | "description": "Resource Type definition for AWS::AppStream::StackUserAssociation",
10 | "primaryIdentifier": [
11 | "/properties/Id"
12 | ],
13 | "properties": {
14 | "AuthenticationType": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "SendEmailNotification": {
21 | "type": "boolean"
22 | },
23 | "StackName": {
24 | "type": "string"
25 | },
26 | "UserName": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "StackName",
35 | "UserName",
36 | "AuthenticationType"
37 | ],
38 | "typeName": "AWS::AppStream::StackUserAssociation"
39 | }
40 |
--------------------------------------------------------------------------------
/schema/aws-appstream-user.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/FirstName",
5 | "/properties/MessageAction",
6 | "/properties/LastName",
7 | "/properties/AuthenticationType",
8 | "/properties/UserName"
9 | ],
10 | "description": "Resource Type definition for AWS::AppStream::User",
11 | "primaryIdentifier": [
12 | "/properties/Id"
13 | ],
14 | "properties": {
15 | "AuthenticationType": {
16 | "type": "string"
17 | },
18 | "FirstName": {
19 | "type": "string"
20 | },
21 | "Id": {
22 | "type": "string"
23 | },
24 | "LastName": {
25 | "type": "string"
26 | },
27 | "MessageAction": {
28 | "type": "string"
29 | },
30 | "UserName": {
31 | "type": "string"
32 | }
33 | },
34 | "readOnlyProperties": [
35 | "/properties/Id"
36 | ],
37 | "required": [
38 | "UserName",
39 | "AuthenticationType"
40 | ],
41 | "typeName": "AWS::AppStream::User"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-appsync-apicache.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApiId"
5 | ],
6 | "description": "Resource Type definition for AWS::AppSync::ApiCache",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApiCachingBehavior": {
12 | "type": "string"
13 | },
14 | "ApiId": {
15 | "type": "string"
16 | },
17 | "AtRestEncryptionEnabled": {
18 | "type": "boolean"
19 | },
20 | "HealthMetricsConfig": {
21 | "type": "string"
22 | },
23 | "Id": {
24 | "type": "string"
25 | },
26 | "TransitEncryptionEnabled": {
27 | "type": "boolean"
28 | },
29 | "Ttl": {
30 | "type": "number"
31 | },
32 | "Type": {
33 | "type": "string"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id"
38 | ],
39 | "required": [
40 | "Type",
41 | "ApiId",
42 | "ApiCachingBehavior",
43 | "Ttl"
44 | ],
45 | "typeName": "AWS::AppSync::ApiCache"
46 | }
47 |
--------------------------------------------------------------------------------
/schema/aws-appsync-apikey.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApiId"
5 | ],
6 | "description": "Resource Type definition for AWS::AppSync::ApiKey",
7 | "primaryIdentifier": [
8 | "/properties/ApiKeyId"
9 | ],
10 | "properties": {
11 | "ApiId": {
12 | "type": "string"
13 | },
14 | "ApiKey": {
15 | "type": "string"
16 | },
17 | "ApiKeyId": {
18 | "type": "string"
19 | },
20 | "Arn": {
21 | "type": "string"
22 | },
23 | "Description": {
24 | "type": "string"
25 | },
26 | "Expires": {
27 | "type": "number"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/ApiKeyId",
32 | "/properties/ApiKey",
33 | "/properties/Arn"
34 | ],
35 | "required": [
36 | "ApiId"
37 | ],
38 | "typeName": "AWS::AppSync::ApiKey"
39 | }
40 |
--------------------------------------------------------------------------------
/schema/aws-appsync-graphqlschema.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApiId"
5 | ],
6 | "description": "Resource Type definition for AWS::AppSync::GraphQLSchema",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApiId": {
12 | "type": "string"
13 | },
14 | "Definition": {
15 | "type": "string"
16 | },
17 | "DefinitionS3Location": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | }
23 | },
24 | "readOnlyProperties": [
25 | "/properties/Id"
26 | ],
27 | "required": [
28 | "ApiId"
29 | ],
30 | "typeName": "AWS::AppSync::GraphQLSchema"
31 | }
32 |
--------------------------------------------------------------------------------
/schema/aws-cloudformation-customresource.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ServiceToken"
5 | ],
6 | "description": "Resource Type definition for AWS::CloudFormation::CustomResource",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Id": {
12 | "type": "string"
13 | },
14 | "ServiceTimeout": {
15 | "type": "integer"
16 | },
17 | "ServiceToken": {
18 | "type": "string"
19 | }
20 | },
21 | "readOnlyProperties": [
22 | "/properties/Id"
23 | ],
24 | "required": [
25 | "ServiceToken"
26 | ],
27 | "typeName": "AWS::CloudFormation::CustomResource"
28 | }
29 |
--------------------------------------------------------------------------------
/schema/aws-cloudformation-macro.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::CloudFormation::Macro",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Description": {
12 | "type": "string"
13 | },
14 | "FunctionName": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "LogGroupName": {
21 | "type": "string"
22 | },
23 | "LogRoleARN": {
24 | "type": "string"
25 | },
26 | "Name": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "FunctionName",
35 | "Name"
36 | ],
37 | "typeName": "AWS::CloudFormation::Macro"
38 | }
39 |
--------------------------------------------------------------------------------
/schema/aws-cloudformation-waitcondition.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::CloudFormation::WaitCondition",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "Count": {
9 | "type": "integer"
10 | },
11 | "Data": {
12 | "type": "object"
13 | },
14 | "Handle": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "Timeout": {
21 | "type": "string"
22 | }
23 | },
24 | "readOnlyProperties": [
25 | "/properties/Data",
26 | "/properties/Id"
27 | ],
28 | "typeName": "AWS::CloudFormation::WaitCondition"
29 | }
30 |
--------------------------------------------------------------------------------
/schema/aws-cloudformation-waitconditionhandle.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::CloudFormation::WaitConditionHandle",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "Id": {
9 | "type": "string"
10 | }
11 | },
12 | "readOnlyProperties": [
13 | "/properties/Id"
14 | ],
15 | "typeName": "AWS::CloudFormation::WaitConditionHandle"
16 | }
17 |
--------------------------------------------------------------------------------
/schema/aws-cloudwatch-insightrule.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/RuleName"
5 | ],
6 | "definitions": {
7 | "Tags": {
8 | "additionalProperties": false,
9 | "type": "object"
10 | }
11 | },
12 | "description": "Resource Type definition for AWS::CloudWatch::InsightRule",
13 | "primaryIdentifier": [
14 | "/properties/Id"
15 | ],
16 | "properties": {
17 | "Arn": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "RuleBody": {
24 | "type": "string"
25 | },
26 | "RuleName": {
27 | "type": "string"
28 | },
29 | "RuleState": {
30 | "type": "string"
31 | },
32 | "Tags": {
33 | "$ref": "#/definitions/Tags"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id",
38 | "/properties/Arn"
39 | ],
40 | "required": [
41 | "RuleState",
42 | "RuleBody",
43 | "RuleName"
44 | ],
45 | "typeName": "AWS::CloudWatch::InsightRule"
46 | }
47 |
--------------------------------------------------------------------------------
/schema/aws-codebuild-sourcecredential.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ServerType"
5 | ],
6 | "description": "Resource Type definition for AWS::CodeBuild::SourceCredential",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "AuthType": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "ServerType": {
18 | "type": "string"
19 | },
20 | "Token": {
21 | "type": "string"
22 | },
23 | "Username": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "ServerType",
32 | "Token",
33 | "AuthType"
34 | ],
35 | "typeName": "AWS::CodeBuild::SourceCredential"
36 | }
37 |
--------------------------------------------------------------------------------
/schema/aws-config-deliverychannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "ConfigSnapshotDeliveryProperties": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "DeliveryFrequency": {
11 | "type": "string"
12 | }
13 | },
14 | "type": "object"
15 | }
16 | },
17 | "description": "Resource Type definition for AWS::Config::DeliveryChannel",
18 | "primaryIdentifier": [
19 | "/properties/Id"
20 | ],
21 | "properties": {
22 | "ConfigSnapshotDeliveryProperties": {
23 | "$ref": "#/definitions/ConfigSnapshotDeliveryProperties"
24 | },
25 | "Id": {
26 | "type": "string"
27 | },
28 | "Name": {
29 | "type": "string"
30 | },
31 | "S3BucketName": {
32 | "type": "string"
33 | },
34 | "S3KeyPrefix": {
35 | "type": "string"
36 | },
37 | "S3KmsKeyArn": {
38 | "type": "string"
39 | },
40 | "SnsTopicARN": {
41 | "type": "string"
42 | }
43 | },
44 | "readOnlyProperties": [
45 | "/properties/Id"
46 | ],
47 | "required": [
48 | "S3BucketName"
49 | ],
50 | "typeName": "AWS::Config::DeliveryChannel"
51 | }
52 |
--------------------------------------------------------------------------------
/schema/aws-dax-parametergroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ParameterGroupName"
5 | ],
6 | "description": "Resource Type definition for AWS::DAX::ParameterGroup",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Description": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "ParameterGroupName": {
18 | "type": "string"
19 | },
20 | "ParameterNameValues": {
21 | "type": "object"
22 | }
23 | },
24 | "readOnlyProperties": [
25 | "/properties/Id"
26 | ],
27 | "typeName": "AWS::DAX::ParameterGroup"
28 | }
29 |
--------------------------------------------------------------------------------
/schema/aws-dax-subnetgroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/SubnetGroupName"
5 | ],
6 | "description": "Resource Type definition for AWS::DAX::SubnetGroup",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Description": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "SubnetGroupName": {
18 | "type": "string"
19 | },
20 | "SubnetIds": {
21 | "items": {
22 | "type": "string"
23 | },
24 | "type": "array",
25 | "uniqueItems": false
26 | }
27 | },
28 | "readOnlyProperties": [
29 | "/properties/Id"
30 | ],
31 | "required": [
32 | "SubnetIds"
33 | ],
34 | "typeName": "AWS::DAX::SubnetGroup"
35 | }
36 |
--------------------------------------------------------------------------------
/schema/aws-dms-certificate.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/CertificateIdentifier",
5 | "/properties/CertificatePem",
6 | "/properties/CertificateWallet"
7 | ],
8 | "description": "Resource Type definition for AWS::DMS::Certificate",
9 | "primaryIdentifier": [
10 | "/properties/Id"
11 | ],
12 | "properties": {
13 | "CertificateIdentifier": {
14 | "type": "string"
15 | },
16 | "CertificatePem": {
17 | "type": "string"
18 | },
19 | "CertificateWallet": {
20 | "type": "string"
21 | },
22 | "Id": {
23 | "type": "string"
24 | }
25 | },
26 | "readOnlyProperties": [
27 | "/properties/Id"
28 | ],
29 | "typeName": "AWS::DMS::Certificate"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-docdb-dbclusterparametergroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Family",
5 | "/properties/Description",
6 | "/properties/Name"
7 | ],
8 | "definitions": {
9 | "Tag": {
10 | "additionalProperties": false,
11 | "properties": {
12 | "Key": {
13 | "type": "string"
14 | },
15 | "Value": {
16 | "type": "string"
17 | }
18 | },
19 | "required": [
20 | "Value",
21 | "Key"
22 | ],
23 | "type": "object"
24 | }
25 | },
26 | "description": "Resource Type definition for AWS::DocDB::DBClusterParameterGroup",
27 | "primaryIdentifier": [
28 | "/properties/Id"
29 | ],
30 | "properties": {
31 | "Description": {
32 | "type": "string"
33 | },
34 | "Family": {
35 | "type": "string"
36 | },
37 | "Id": {
38 | "type": "string"
39 | },
40 | "Name": {
41 | "type": "string"
42 | },
43 | "Parameters": {
44 | "type": "object"
45 | },
46 | "Tags": {
47 | "items": {
48 | "$ref": "#/definitions/Tag"
49 | },
50 | "type": "array",
51 | "uniqueItems": false
52 | }
53 | },
54 | "readOnlyProperties": [
55 | "/properties/Id"
56 | ],
57 | "required": [
58 | "Family",
59 | "Description",
60 | "Parameters"
61 | ],
62 | "typeName": "AWS::DocDB::DBClusterParameterGroup"
63 | }
64 |
--------------------------------------------------------------------------------
/schema/aws-docdb-dbsubnetgroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/DBSubnetGroupName"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::DocDB::DBSubnetGroup",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "DBSubnetGroupDescription": {
30 | "type": "string"
31 | },
32 | "DBSubnetGroupName": {
33 | "type": "string"
34 | },
35 | "Id": {
36 | "type": "string"
37 | },
38 | "SubnetIds": {
39 | "items": {
40 | "type": "string"
41 | },
42 | "type": "array",
43 | "uniqueItems": false
44 | },
45 | "Tags": {
46 | "items": {
47 | "$ref": "#/definitions/Tag"
48 | },
49 | "type": "array",
50 | "uniqueItems": false
51 | }
52 | },
53 | "readOnlyProperties": [
54 | "/properties/Id"
55 | ],
56 | "required": [
57 | "DBSubnetGroupDescription",
58 | "SubnetIds"
59 | ],
60 | "typeName": "AWS::DocDB::DBSubnetGroup"
61 | }
62 |
--------------------------------------------------------------------------------
/schema/aws-docdb-eventsubscription.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/SubscriptionName",
5 | "/properties/SnsTopicArn"
6 | ],
7 | "description": "Resource Type definition for AWS::DocDB::EventSubscription",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Enabled": {
13 | "type": "boolean"
14 | },
15 | "EventCategories": {
16 | "items": {
17 | "type": "string"
18 | },
19 | "type": "array",
20 | "uniqueItems": false
21 | },
22 | "Id": {
23 | "type": "string"
24 | },
25 | "SnsTopicArn": {
26 | "type": "string"
27 | },
28 | "SourceIds": {
29 | "items": {
30 | "type": "string"
31 | },
32 | "type": "array",
33 | "uniqueItems": false
34 | },
35 | "SourceType": {
36 | "type": "string"
37 | },
38 | "SubscriptionName": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/Id"
44 | ],
45 | "required": [
46 | "SnsTopicArn"
47 | ],
48 | "typeName": "AWS::DocDB::EventSubscription"
49 | }
50 |
--------------------------------------------------------------------------------
/schema/aws-ec2-clientvpnauthorizationrule.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ClientVpnEndpointId",
5 | "/properties/AuthorizeAllGroups",
6 | "/properties/Description",
7 | "/properties/AccessGroupId",
8 | "/properties/TargetNetworkCidr"
9 | ],
10 | "description": "Resource Type definition for AWS::EC2::ClientVpnAuthorizationRule",
11 | "primaryIdentifier": [
12 | "/properties/Id"
13 | ],
14 | "properties": {
15 | "AccessGroupId": {
16 | "type": "string"
17 | },
18 | "AuthorizeAllGroups": {
19 | "type": "boolean"
20 | },
21 | "ClientVpnEndpointId": {
22 | "type": "string"
23 | },
24 | "Description": {
25 | "type": "string"
26 | },
27 | "Id": {
28 | "type": "string"
29 | },
30 | "TargetNetworkCidr": {
31 | "type": "string"
32 | }
33 | },
34 | "readOnlyProperties": [
35 | "/properties/Id"
36 | ],
37 | "required": [
38 | "ClientVpnEndpointId",
39 | "TargetNetworkCidr"
40 | ],
41 | "typeName": "AWS::EC2::ClientVpnAuthorizationRule"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-ec2-clientvpnroute.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ClientVpnEndpointId",
5 | "/properties/DestinationCidrBlock",
6 | "/properties/Description",
7 | "/properties/TargetVpcSubnetId"
8 | ],
9 | "description": "Resource Type definition for AWS::EC2::ClientVpnRoute",
10 | "primaryIdentifier": [
11 | "/properties/Id"
12 | ],
13 | "properties": {
14 | "ClientVpnEndpointId": {
15 | "type": "string"
16 | },
17 | "Description": {
18 | "type": "string"
19 | },
20 | "DestinationCidrBlock": {
21 | "type": "string"
22 | },
23 | "Id": {
24 | "type": "string"
25 | },
26 | "TargetVpcSubnetId": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "ClientVpnEndpointId",
35 | "TargetVpcSubnetId",
36 | "DestinationCidrBlock"
37 | ],
38 | "typeName": "AWS::EC2::ClientVpnRoute"
39 | }
40 |
--------------------------------------------------------------------------------
/schema/aws-ec2-clientvpntargetnetworkassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ClientVpnEndpointId",
5 | "/properties/SubnetId"
6 | ],
7 | "description": "Resource Type definition for AWS::EC2::ClientVpnTargetNetworkAssociation",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "ClientVpnEndpointId": {
13 | "type": "string"
14 | },
15 | "Id": {
16 | "type": "string"
17 | },
18 | "SubnetId": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "ClientVpnEndpointId",
27 | "SubnetId"
28 | ],
29 | "typeName": "AWS::EC2::ClientVpnTargetNetworkAssociation"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-ec2-networkinterfacepermission.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/AwsAccountId",
5 | "/properties/Permission",
6 | "/properties/NetworkInterfaceId"
7 | ],
8 | "description": "Resource Type definition for AWS::EC2::NetworkInterfacePermission",
9 | "primaryIdentifier": [
10 | "/properties/Id"
11 | ],
12 | "properties": {
13 | "AwsAccountId": {
14 | "type": "string"
15 | },
16 | "Id": {
17 | "type": "string"
18 | },
19 | "NetworkInterfaceId": {
20 | "type": "string"
21 | },
22 | "Permission": {
23 | "type": "string"
24 | }
25 | },
26 | "readOnlyProperties": [
27 | "/properties/Id"
28 | ],
29 | "required": [
30 | "AwsAccountId",
31 | "NetworkInterfaceId",
32 | "Permission"
33 | ],
34 | "typeName": "AWS::EC2::NetworkInterfacePermission"
35 | }
36 |
--------------------------------------------------------------------------------
/schema/aws-ec2-trafficmirrorfilter.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Description"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilter",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Description": {
30 | "type": "string"
31 | },
32 | "Id": {
33 | "type": "string"
34 | },
35 | "NetworkServices": {
36 | "items": {
37 | "type": "string"
38 | },
39 | "type": "array",
40 | "uniqueItems": false
41 | },
42 | "Tags": {
43 | "items": {
44 | "$ref": "#/definitions/Tag"
45 | },
46 | "type": "array",
47 | "uniqueItems": false
48 | }
49 | },
50 | "readOnlyProperties": [
51 | "/properties/Id"
52 | ],
53 | "typeName": "AWS::EC2::TrafficMirrorFilter"
54 | }
55 |
--------------------------------------------------------------------------------
/schema/aws-ec2-trafficmirrortarget.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/GatewayLoadBalancerEndpointId",
5 | "/properties/NetworkLoadBalancerArn",
6 | "/properties/NetworkInterfaceId",
7 | "/properties/Description"
8 | ],
9 | "definitions": {
10 | "Tag": {
11 | "additionalProperties": false,
12 | "properties": {
13 | "Key": {
14 | "type": "string"
15 | },
16 | "Value": {
17 | "type": "string"
18 | }
19 | },
20 | "required": [
21 | "Value",
22 | "Key"
23 | ],
24 | "type": "object"
25 | }
26 | },
27 | "description": "Resource Type definition for AWS::EC2::TrafficMirrorTarget",
28 | "primaryIdentifier": [
29 | "/properties/Id"
30 | ],
31 | "properties": {
32 | "Description": {
33 | "type": "string"
34 | },
35 | "GatewayLoadBalancerEndpointId": {
36 | "type": "string"
37 | },
38 | "Id": {
39 | "type": "string"
40 | },
41 | "NetworkInterfaceId": {
42 | "type": "string"
43 | },
44 | "NetworkLoadBalancerArn": {
45 | "type": "string"
46 | },
47 | "Tags": {
48 | "items": {
49 | "$ref": "#/definitions/Tag"
50 | },
51 | "type": "array",
52 | "uniqueItems": false
53 | }
54 | },
55 | "readOnlyProperties": [
56 | "/properties/Id"
57 | ],
58 | "typeName": "AWS::EC2::TrafficMirrorTarget"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-elasticache-securitygroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "definitions": {
4 | "Tag": {
5 | "additionalProperties": false,
6 | "properties": {
7 | "Key": {
8 | "type": "string"
9 | },
10 | "Value": {
11 | "type": "string"
12 | }
13 | },
14 | "required": [
15 | "Value",
16 | "Key"
17 | ],
18 | "type": "object"
19 | }
20 | },
21 | "description": "Resource Type definition for AWS::ElastiCache::SecurityGroup",
22 | "primaryIdentifier": [
23 | "/properties/Id"
24 | ],
25 | "properties": {
26 | "Description": {
27 | "type": "string"
28 | },
29 | "Id": {
30 | "type": "string"
31 | },
32 | "Tags": {
33 | "items": {
34 | "$ref": "#/definitions/Tag"
35 | },
36 | "type": "array",
37 | "uniqueItems": false
38 | }
39 | },
40 | "readOnlyProperties": [
41 | "/properties/Id"
42 | ],
43 | "required": [
44 | "Description"
45 | ],
46 | "typeName": "AWS::ElastiCache::SecurityGroup"
47 | }
48 |
--------------------------------------------------------------------------------
/schema/aws-elasticache-securitygroupingress.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::ElastiCache::SecurityGroupIngress",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "CacheSecurityGroupName": {
9 | "type": "string"
10 | },
11 | "EC2SecurityGroupName": {
12 | "type": "string"
13 | },
14 | "EC2SecurityGroupOwnerId": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | }
20 | },
21 | "readOnlyProperties": [
22 | "/properties/Id"
23 | ],
24 | "required": [
25 | "EC2SecurityGroupName",
26 | "CacheSecurityGroupName"
27 | ],
28 | "typeName": "AWS::ElastiCache::SecurityGroupIngress"
29 | }
30 |
--------------------------------------------------------------------------------
/schema/aws-elasticloadbalancingv2-listenercertificate.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ListenerArn"
5 | ],
6 | "definitions": {
7 | "Certificate": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "CertificateArn": {
11 | "type": "string"
12 | }
13 | },
14 | "type": "object"
15 | }
16 | },
17 | "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::ListenerCertificate",
18 | "primaryIdentifier": [
19 | "/properties/Id"
20 | ],
21 | "properties": {
22 | "Certificates": {
23 | "items": {
24 | "$ref": "#/definitions/Certificate"
25 | },
26 | "type": "array",
27 | "uniqueItems": true
28 | },
29 | "Id": {
30 | "type": "string"
31 | },
32 | "ListenerArn": {
33 | "type": "string"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id"
38 | ],
39 | "required": [
40 | "ListenerArn",
41 | "Certificates"
42 | ],
43 | "typeName": "AWS::ElasticLoadBalancingV2::ListenerCertificate"
44 | }
45 |
--------------------------------------------------------------------------------
/schema/aws-events-eventbuspolicy.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/EventBusName",
5 | "/properties/StatementId"
6 | ],
7 | "definitions": {
8 | "Condition": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "Key": {
12 | "type": "string"
13 | },
14 | "Type": {
15 | "type": "string"
16 | },
17 | "Value": {
18 | "type": "string"
19 | }
20 | },
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::Events::EventBusPolicy",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Action": {
30 | "type": "string"
31 | },
32 | "Condition": {
33 | "$ref": "#/definitions/Condition"
34 | },
35 | "EventBusName": {
36 | "type": "string"
37 | },
38 | "Id": {
39 | "type": "string"
40 | },
41 | "Principal": {
42 | "type": "string"
43 | },
44 | "Statement": {
45 | "type": "object"
46 | },
47 | "StatementId": {
48 | "type": "string"
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "StatementId"
56 | ],
57 | "typeName": "AWS::Events::EventBusPolicy"
58 | }
59 |
--------------------------------------------------------------------------------
/schema/aws-eventschemas-registrypolicy.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::EventSchemas::RegistryPolicy",
4 | "handlers": {
5 | "create": {
6 | "permissions": [
7 | "schemas:PutResourcePolicy",
8 | "schemas:GetResourcePolicy",
9 | "schemas:DescribeRegistry"
10 | ]
11 | },
12 | "delete": {
13 | "permissions": [
14 | "schemas:DeleteResourcePolicy",
15 | "schemas:GetResourcePolicy"
16 | ]
17 | },
18 | "read": {
19 | "permissions": [
20 | "schemas:GetResourcePolicy"
21 | ]
22 | },
23 | "update": {
24 | "permissions": [
25 | "schemas:PutResourcePolicy",
26 | "schemas:GetResourcePolicy"
27 | ]
28 | }
29 | },
30 | "primaryIdentifier": [
31 | "/properties/Id"
32 | ],
33 | "properties": {
34 | "Id": {
35 | "type": "string"
36 | },
37 | "Policy": {
38 | "type": "object"
39 | },
40 | "RegistryName": {
41 | "type": "string"
42 | },
43 | "RevisionId": {
44 | "type": "string"
45 | }
46 | },
47 | "readOnlyProperties": [
48 | "/properties/Id"
49 | ],
50 | "required": [
51 | "RegistryName",
52 | "Policy"
53 | ],
54 | "tagging": {
55 | "taggable": false
56 | },
57 | "typeName": "AWS::EventSchemas::RegistryPolicy"
58 | }
59 |
--------------------------------------------------------------------------------
/schema/aws-fsx-snapshot.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/VolumeId"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::FSx::Snapshot",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Id": {
30 | "type": "string"
31 | },
32 | "Name": {
33 | "type": "string"
34 | },
35 | "ResourceARN": {
36 | "type": "string"
37 | },
38 | "Tags": {
39 | "items": {
40 | "$ref": "#/definitions/Tag"
41 | },
42 | "type": "array",
43 | "uniqueItems": false
44 | },
45 | "VolumeId": {
46 | "type": "string"
47 | }
48 | },
49 | "readOnlyProperties": [
50 | "/properties/ResourceARN",
51 | "/properties/Id"
52 | ],
53 | "required": [
54 | "VolumeId",
55 | "Name"
56 | ],
57 | "typeName": "AWS::FSx::Snapshot"
58 | }
59 |
--------------------------------------------------------------------------------
/schema/aws-glue-customentitytype.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::Glue::CustomEntityType",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "ContextWords": {
9 | "items": {
10 | "type": "string"
11 | },
12 | "type": "array",
13 | "uniqueItems": false
14 | },
15 | "Id": {
16 | "type": "string"
17 | },
18 | "Name": {
19 | "type": "string"
20 | },
21 | "RegexString": {
22 | "type": "string"
23 | },
24 | "Tags": {
25 | "type": "object"
26 | }
27 | },
28 | "readOnlyProperties": [
29 | "/properties/Id"
30 | ],
31 | "typeName": "AWS::Glue::CustomEntityType"
32 | }
33 |
--------------------------------------------------------------------------------
/schema/aws-glue-dataqualityruleset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "definitions": {
4 | "DataQualityTargetTable": {
5 | "additionalProperties": false,
6 | "properties": {
7 | "DatabaseName": {
8 | "type": "string"
9 | },
10 | "TableName": {
11 | "type": "string"
12 | }
13 | },
14 | "type": "object"
15 | }
16 | },
17 | "description": "Resource Type definition for AWS::Glue::DataQualityRuleset",
18 | "primaryIdentifier": [
19 | "/properties/Id"
20 | ],
21 | "properties": {
22 | "ClientToken": {
23 | "type": "string"
24 | },
25 | "Description": {
26 | "type": "string"
27 | },
28 | "Id": {
29 | "type": "string"
30 | },
31 | "Name": {
32 | "type": "string"
33 | },
34 | "Ruleset": {
35 | "type": "string"
36 | },
37 | "Tags": {
38 | "type": "object"
39 | },
40 | "TargetTable": {
41 | "$ref": "#/definitions/DataQualityTargetTable"
42 | }
43 | },
44 | "readOnlyProperties": [
45 | "/properties/Id"
46 | ],
47 | "typeName": "AWS::Glue::DataQualityRuleset"
48 | }
49 |
--------------------------------------------------------------------------------
/schema/aws-glue-workflow.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::Glue::Workflow",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "DefaultRunProperties": {
12 | "type": "object"
13 | },
14 | "Description": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "MaxConcurrentRuns": {
21 | "type": "integer"
22 | },
23 | "Name": {
24 | "type": "string"
25 | },
26 | "Tags": {
27 | "type": "object"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "typeName": "AWS::Glue::Workflow"
34 | }
35 |
--------------------------------------------------------------------------------
/schema/aws-greengrass-connectordefinitionversion.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ConnectorDefinitionId",
5 | "/properties/Connectors"
6 | ],
7 | "definitions": {
8 | "Connector": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "ConnectorArn": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "Parameters": {
18 | "type": "object"
19 | }
20 | },
21 | "required": [
22 | "ConnectorArn",
23 | "Id"
24 | ],
25 | "type": "object"
26 | }
27 | },
28 | "description": "Resource Type definition for AWS::Greengrass::ConnectorDefinitionVersion",
29 | "primaryIdentifier": [
30 | "/properties/Id"
31 | ],
32 | "properties": {
33 | "ConnectorDefinitionId": {
34 | "type": "string"
35 | },
36 | "Connectors": {
37 | "items": {
38 | "$ref": "#/definitions/Connector"
39 | },
40 | "type": "array",
41 | "uniqueItems": false
42 | },
43 | "Id": {
44 | "type": "string"
45 | }
46 | },
47 | "readOnlyProperties": [
48 | "/properties/Id"
49 | ],
50 | "required": [
51 | "Connectors",
52 | "ConnectorDefinitionId"
53 | ],
54 | "typeName": "AWS::Greengrass::ConnectorDefinitionVersion"
55 | }
56 |
--------------------------------------------------------------------------------
/schema/aws-greengrass-coredefinitionversion.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Cores",
5 | "/properties/CoreDefinitionId"
6 | ],
7 | "definitions": {
8 | "Core": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "CertificateArn": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "SyncShadow": {
18 | "type": "boolean"
19 | },
20 | "ThingArn": {
21 | "type": "string"
22 | }
23 | },
24 | "required": [
25 | "ThingArn",
26 | "Id",
27 | "CertificateArn"
28 | ],
29 | "type": "object"
30 | }
31 | },
32 | "description": "Resource Type definition for AWS::Greengrass::CoreDefinitionVersion",
33 | "primaryIdentifier": [
34 | "/properties/Id"
35 | ],
36 | "properties": {
37 | "CoreDefinitionId": {
38 | "type": "string"
39 | },
40 | "Cores": {
41 | "items": {
42 | "$ref": "#/definitions/Core"
43 | },
44 | "type": "array",
45 | "uniqueItems": false
46 | },
47 | "Id": {
48 | "type": "string"
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "Cores",
56 | "CoreDefinitionId"
57 | ],
58 | "typeName": "AWS::Greengrass::CoreDefinitionVersion"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-greengrass-devicedefinitionversion.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/DeviceDefinitionId",
5 | "/properties/Devices"
6 | ],
7 | "definitions": {
8 | "Device": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "CertificateArn": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "SyncShadow": {
18 | "type": "boolean"
19 | },
20 | "ThingArn": {
21 | "type": "string"
22 | }
23 | },
24 | "required": [
25 | "ThingArn",
26 | "Id",
27 | "CertificateArn"
28 | ],
29 | "type": "object"
30 | }
31 | },
32 | "description": "Resource Type definition for AWS::Greengrass::DeviceDefinitionVersion",
33 | "primaryIdentifier": [
34 | "/properties/Id"
35 | ],
36 | "properties": {
37 | "DeviceDefinitionId": {
38 | "type": "string"
39 | },
40 | "Devices": {
41 | "items": {
42 | "$ref": "#/definitions/Device"
43 | },
44 | "type": "array",
45 | "uniqueItems": false
46 | },
47 | "Id": {
48 | "type": "string"
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "Devices",
56 | "DeviceDefinitionId"
57 | ],
58 | "typeName": "AWS::Greengrass::DeviceDefinitionVersion"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-iam-accesskey.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/UserName",
5 | "/properties/Serial"
6 | ],
7 | "description": "Resource Type definition for AWS::IAM::AccessKey",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Id": {
13 | "type": "string"
14 | },
15 | "SecretAccessKey": {
16 | "type": "string"
17 | },
18 | "Serial": {
19 | "type": "integer"
20 | },
21 | "Status": {
22 | "type": "string"
23 | },
24 | "UserName": {
25 | "type": "string"
26 | }
27 | },
28 | "readOnlyProperties": [
29 | "/properties/SecretAccessKey",
30 | "/properties/Id"
31 | ],
32 | "required": [
33 | "UserName"
34 | ],
35 | "typeName": "AWS::IAM::AccessKey"
36 | }
37 |
--------------------------------------------------------------------------------
/schema/aws-iam-usertogroupaddition.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::IAM::UserToGroupAddition",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "GroupName": {
9 | "type": "string"
10 | },
11 | "Id": {
12 | "type": "string"
13 | },
14 | "Users": {
15 | "items": {
16 | "type": "string"
17 | },
18 | "type": "array",
19 | "uniqueItems": false
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "GroupName",
27 | "Users"
28 | ],
29 | "typeName": "AWS::IAM::UserToGroupAddition"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-inspector-assessmenttarget.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/AssessmentTargetName"
5 | ],
6 | "description": "Resource Type definition for AWS::Inspector::AssessmentTarget",
7 | "handlers": {
8 | "create": {
9 | "permissions": [
10 | "inspector:CreateAssessmentTarget",
11 | "inspector:ListAssessmentTargets",
12 | "inspector:DescribeAssessmentTargets"
13 | ]
14 | },
15 | "delete": {
16 | "permissions": [
17 | "inspector:DeleteAssessmentTarget"
18 | ]
19 | },
20 | "list": {
21 | "permissions": [
22 | "inspector:ListAssessmentTargets"
23 | ]
24 | },
25 | "read": {
26 | "permissions": [
27 | "inspector:DescribeAssessmentTargets"
28 | ]
29 | },
30 | "update": {
31 | "permissions": [
32 | "inspector:DescribeAssessmentTargets",
33 | "inspector:UpdateAssessmentTarget"
34 | ]
35 | }
36 | },
37 | "primaryIdentifier": [
38 | "/properties/Arn"
39 | ],
40 | "properties": {
41 | "Arn": {
42 | "type": "string"
43 | },
44 | "AssessmentTargetName": {
45 | "type": "string"
46 | },
47 | "ResourceGroupArn": {
48 | "type": "string"
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Arn"
53 | ],
54 | "taggable": false,
55 | "typeName": "AWS::Inspector::AssessmentTarget"
56 | }
57 |
--------------------------------------------------------------------------------
/schema/aws-iot-policyprincipalattachment.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PolicyName",
5 | "/properties/Principal"
6 | ],
7 | "description": "Resource Type definition for AWS::IoT::PolicyPrincipalAttachment",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Id": {
13 | "type": "string"
14 | },
15 | "PolicyName": {
16 | "type": "string"
17 | },
18 | "Principal": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "Principal",
27 | "PolicyName"
28 | ],
29 | "typeName": "AWS::IoT::PolicyPrincipalAttachment"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-iot-thingprincipalattachment.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ThingName",
5 | "/properties/Principal"
6 | ],
7 | "description": "Resource Type definition for AWS::IoT::ThingPrincipalAttachment",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Id": {
13 | "type": "string"
14 | },
15 | "Principal": {
16 | "type": "string"
17 | },
18 | "ThingName": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "Principal",
27 | "ThingName"
28 | ],
29 | "typeName": "AWS::IoT::ThingPrincipalAttachment"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-iotthingsgraph-flowtemplate.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "definitions": {
4 | "DefinitionDocument": {
5 | "additionalProperties": false,
6 | "properties": {
7 | "Language": {
8 | "type": "string"
9 | },
10 | "Text": {
11 | "type": "string"
12 | }
13 | },
14 | "required": [
15 | "Language",
16 | "Text"
17 | ],
18 | "type": "object"
19 | }
20 | },
21 | "description": "Resource Type definition for AWS::IoTThingsGraph::FlowTemplate",
22 | "primaryIdentifier": [
23 | "/properties/Id"
24 | ],
25 | "properties": {
26 | "CompatibleNamespaceVersion": {
27 | "type": "number"
28 | },
29 | "Definition": {
30 | "$ref": "#/definitions/DefinitionDocument"
31 | },
32 | "Id": {
33 | "type": "string"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id"
38 | ],
39 | "required": [
40 | "Definition"
41 | ],
42 | "typeName": "AWS::IoTThingsGraph::FlowTemplate"
43 | }
44 |
--------------------------------------------------------------------------------
/schema/aws-kinesis-streamconsumer.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ConsumerName",
5 | "/properties/StreamARN"
6 | ],
7 | "description": "Resource Type definition for AWS::Kinesis::StreamConsumer",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "ConsumerARN": {
13 | "type": "string"
14 | },
15 | "ConsumerCreationTimestamp": {
16 | "type": "string"
17 | },
18 | "ConsumerName": {
19 | "type": "string"
20 | },
21 | "ConsumerStatus": {
22 | "type": "string"
23 | },
24 | "Id": {
25 | "type": "string"
26 | },
27 | "StreamARN": {
28 | "type": "string"
29 | }
30 | },
31 | "readOnlyProperties": [
32 | "/properties/ConsumerStatus",
33 | "/properties/ConsumerARN",
34 | "/properties/ConsumerCreationTimestamp",
35 | "/properties/Id"
36 | ],
37 | "required": [
38 | "ConsumerName",
39 | "StreamARN"
40 | ],
41 | "typeName": "AWS::Kinesis::StreamConsumer"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationName"
5 | ],
6 | "definitions": {
7 | "CloudWatchLoggingOption": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "LogStreamARN": {
11 | "type": "string"
12 | }
13 | },
14 | "required": [
15 | "LogStreamARN"
16 | ],
17 | "type": "object"
18 | }
19 | },
20 | "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption",
21 | "primaryIdentifier": [
22 | "/properties/Id"
23 | ],
24 | "properties": {
25 | "ApplicationName": {
26 | "type": "string"
27 | },
28 | "CloudWatchLoggingOption": {
29 | "$ref": "#/definitions/CloudWatchLoggingOption"
30 | },
31 | "Id": {
32 | "type": "string"
33 | }
34 | },
35 | "readOnlyProperties": [
36 | "/properties/Id"
37 | ],
38 | "required": [
39 | "CloudWatchLoggingOption",
40 | "ApplicationName"
41 | ],
42 | "typeName": "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption"
43 | }
44 |
--------------------------------------------------------------------------------
/schema/aws-lakeformation-resource.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ResourceArn"
5 | ],
6 | "description": "Resource Type definition for AWS::LakeFormation::Resource",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "HybridAccessEnabled": {
12 | "type": "boolean"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "ResourceArn": {
18 | "type": "string"
19 | },
20 | "RoleArn": {
21 | "type": "string"
22 | },
23 | "UseServiceLinkedRole": {
24 | "type": "boolean"
25 | },
26 | "WithFederation": {
27 | "type": "boolean"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "ResourceArn",
35 | "UseServiceLinkedRole"
36 | ],
37 | "typeName": "AWS::LakeFormation::Resource"
38 | }
39 |
--------------------------------------------------------------------------------
/schema/aws-managedblockchain-node.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "definitions": {
4 | "NodeConfiguration": {
5 | "additionalProperties": false,
6 | "properties": {
7 | "AvailabilityZone": {
8 | "type": "string"
9 | },
10 | "InstanceType": {
11 | "type": "string"
12 | }
13 | },
14 | "required": [
15 | "AvailabilityZone",
16 | "InstanceType"
17 | ],
18 | "type": "object"
19 | }
20 | },
21 | "description": "Resource Type definition for AWS::ManagedBlockchain::Node",
22 | "primaryIdentifier": [
23 | "/properties/NodeId"
24 | ],
25 | "properties": {
26 | "Arn": {
27 | "type": "string"
28 | },
29 | "MemberId": {
30 | "type": "string"
31 | },
32 | "NetworkId": {
33 | "type": "string"
34 | },
35 | "NodeConfiguration": {
36 | "$ref": "#/definitions/NodeConfiguration"
37 | },
38 | "NodeId": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/NodeId",
44 | "/properties/Arn"
45 | ],
46 | "required": [
47 | "NetworkId",
48 | "NodeConfiguration"
49 | ],
50 | "typeName": "AWS::ManagedBlockchain::Node"
51 | }
52 |
--------------------------------------------------------------------------------
/schema/aws-mediaconvert-preset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::MediaConvert::Preset",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Arn": {
12 | "type": "string"
13 | },
14 | "Category": {
15 | "type": "string"
16 | },
17 | "Description": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "Name": {
24 | "type": "string"
25 | },
26 | "SettingsJson": {
27 | "type": "object"
28 | },
29 | "Tags": {
30 | "type": "object"
31 | }
32 | },
33 | "readOnlyProperties": [
34 | "/properties/Id",
35 | "/properties/Arn"
36 | ],
37 | "required": [
38 | "SettingsJson"
39 | ],
40 | "typeName": "AWS::MediaConvert::Preset"
41 | }
42 |
--------------------------------------------------------------------------------
/schema/aws-mediaconvert-queue.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::MediaConvert::Queue",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Arn": {
12 | "type": "string"
13 | },
14 | "ConcurrentJobs": {
15 | "type": "integer"
16 | },
17 | "Description": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "Name": {
24 | "type": "string"
25 | },
26 | "PricingPlan": {
27 | "type": "string"
28 | },
29 | "Status": {
30 | "type": "string"
31 | },
32 | "Tags": {
33 | "type": "object"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id",
38 | "/properties/Arn"
39 | ],
40 | "typeName": "AWS::MediaConvert::Queue"
41 | }
42 |
--------------------------------------------------------------------------------
/schema/aws-medialive-inputsecuritygroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Tags"
5 | ],
6 | "definitions": {
7 | "InputWhitelistRuleCidr": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Cidr": {
11 | "type": "string"
12 | }
13 | },
14 | "type": "object"
15 | }
16 | },
17 | "description": "Resource Type definition for AWS::MediaLive::InputSecurityGroup",
18 | "primaryIdentifier": [
19 | "/properties/Id"
20 | ],
21 | "properties": {
22 | "Arn": {
23 | "type": "string"
24 | },
25 | "Id": {
26 | "type": "string"
27 | },
28 | "Tags": {
29 | "type": "object"
30 | },
31 | "WhitelistRules": {
32 | "items": {
33 | "$ref": "#/definitions/InputWhitelistRuleCidr"
34 | },
35 | "type": "array",
36 | "uniqueItems": false
37 | }
38 | },
39 | "readOnlyProperties": [
40 | "/properties/Id",
41 | "/properties/Arn"
42 | ],
43 | "typeName": "AWS::MediaLive::InputSecurityGroup"
44 | }
45 |
--------------------------------------------------------------------------------
/schema/aws-neptune-eventsubscription.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/SnsTopicArn"
5 | ],
6 | "description": "Resource Type definition for AWS::Neptune::EventSubscription",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Enabled": {
12 | "type": "boolean"
13 | },
14 | "EventCategories": {
15 | "items": {
16 | "type": "string"
17 | },
18 | "type": "array",
19 | "uniqueItems": false
20 | },
21 | "Id": {
22 | "type": "string"
23 | },
24 | "SnsTopicArn": {
25 | "type": "string"
26 | },
27 | "SourceIds": {
28 | "items": {
29 | "type": "string"
30 | },
31 | "type": "array",
32 | "uniqueItems": false
33 | },
34 | "SourceType": {
35 | "type": "string"
36 | }
37 | },
38 | "readOnlyProperties": [
39 | "/properties/Id"
40 | ],
41 | "typeName": "AWS::Neptune::EventSubscription"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-opsworks-elasticloadbalancerattachment.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::OpsWorks::ElasticLoadBalancerAttachment",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "ElasticLoadBalancerName": {
9 | "type": "string"
10 | },
11 | "Id": {
12 | "type": "string"
13 | },
14 | "LayerId": {
15 | "type": "string"
16 | }
17 | },
18 | "readOnlyProperties": [
19 | "/properties/Id"
20 | ],
21 | "required": [
22 | "LayerId",
23 | "ElasticLoadBalancerName"
24 | ],
25 | "typeName": "AWS::OpsWorks::ElasticLoadBalancerAttachment"
26 | }
27 |
--------------------------------------------------------------------------------
/schema/aws-opsworks-userprofile.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/IamUserArn"
5 | ],
6 | "description": "Resource Type definition for AWS::OpsWorks::UserProfile",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "AllowSelfManagement": {
12 | "type": "boolean"
13 | },
14 | "IamUserArn": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "SshPublicKey": {
21 | "type": "string"
22 | },
23 | "SshUsername": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "IamUserArn"
32 | ],
33 | "typeName": "AWS::OpsWorks::UserProfile"
34 | }
35 |
--------------------------------------------------------------------------------
/schema/aws-opsworks-volume.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/StackId",
5 | "/properties/Ec2VolumeId"
6 | ],
7 | "description": "Resource Type definition for AWS::OpsWorks::Volume",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Ec2VolumeId": {
13 | "type": "string"
14 | },
15 | "Id": {
16 | "type": "string"
17 | },
18 | "MountPoint": {
19 | "type": "string"
20 | },
21 | "Name": {
22 | "type": "string"
23 | },
24 | "StackId": {
25 | "type": "string"
26 | }
27 | },
28 | "readOnlyProperties": [
29 | "/properties/Id"
30 | ],
31 | "required": [
32 | "Ec2VolumeId",
33 | "StackId"
34 | ],
35 | "typeName": "AWS::OpsWorks::Volume"
36 | }
37 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-admchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::ADMChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "ClientId": {
15 | "type": "string"
16 | },
17 | "ClientSecret": {
18 | "type": "string"
19 | },
20 | "Enabled": {
21 | "type": "boolean"
22 | },
23 | "Id": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "ApplicationId",
32 | "ClientId",
33 | "ClientSecret"
34 | ],
35 | "typeName": "AWS::Pinpoint::ADMChannel"
36 | }
37 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-apnschannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::APNSChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "BundleId": {
15 | "type": "string"
16 | },
17 | "Certificate": {
18 | "type": "string"
19 | },
20 | "DefaultAuthenticationMethod": {
21 | "type": "string"
22 | },
23 | "Enabled": {
24 | "type": "boolean"
25 | },
26 | "Id": {
27 | "type": "string"
28 | },
29 | "PrivateKey": {
30 | "type": "string"
31 | },
32 | "TeamId": {
33 | "type": "string"
34 | },
35 | "TokenKey": {
36 | "type": "string"
37 | },
38 | "TokenKeyId": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/Id"
44 | ],
45 | "required": [
46 | "ApplicationId"
47 | ],
48 | "typeName": "AWS::Pinpoint::APNSChannel"
49 | }
50 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-apnssandboxchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::APNSSandboxChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "BundleId": {
15 | "type": "string"
16 | },
17 | "Certificate": {
18 | "type": "string"
19 | },
20 | "DefaultAuthenticationMethod": {
21 | "type": "string"
22 | },
23 | "Enabled": {
24 | "type": "boolean"
25 | },
26 | "Id": {
27 | "type": "string"
28 | },
29 | "PrivateKey": {
30 | "type": "string"
31 | },
32 | "TeamId": {
33 | "type": "string"
34 | },
35 | "TokenKey": {
36 | "type": "string"
37 | },
38 | "TokenKeyId": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/Id"
44 | ],
45 | "required": [
46 | "ApplicationId"
47 | ],
48 | "typeName": "AWS::Pinpoint::APNSSandboxChannel"
49 | }
50 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-apnsvoipchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::APNSVoipChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "BundleId": {
15 | "type": "string"
16 | },
17 | "Certificate": {
18 | "type": "string"
19 | },
20 | "DefaultAuthenticationMethod": {
21 | "type": "string"
22 | },
23 | "Enabled": {
24 | "type": "boolean"
25 | },
26 | "Id": {
27 | "type": "string"
28 | },
29 | "PrivateKey": {
30 | "type": "string"
31 | },
32 | "TeamId": {
33 | "type": "string"
34 | },
35 | "TokenKey": {
36 | "type": "string"
37 | },
38 | "TokenKeyId": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/Id"
44 | ],
45 | "required": [
46 | "ApplicationId"
47 | ],
48 | "typeName": "AWS::Pinpoint::APNSVoipChannel"
49 | }
50 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-apnsvoipsandboxchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::APNSVoipSandboxChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "BundleId": {
15 | "type": "string"
16 | },
17 | "Certificate": {
18 | "type": "string"
19 | },
20 | "DefaultAuthenticationMethod": {
21 | "type": "string"
22 | },
23 | "Enabled": {
24 | "type": "boolean"
25 | },
26 | "Id": {
27 | "type": "string"
28 | },
29 | "PrivateKey": {
30 | "type": "string"
31 | },
32 | "TeamId": {
33 | "type": "string"
34 | },
35 | "TokenKey": {
36 | "type": "string"
37 | },
38 | "TokenKeyId": {
39 | "type": "string"
40 | }
41 | },
42 | "readOnlyProperties": [
43 | "/properties/Id"
44 | ],
45 | "required": [
46 | "ApplicationId"
47 | ],
48 | "typeName": "AWS::Pinpoint::APNSVoipSandboxChannel"
49 | }
50 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-app.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::App",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Arn": {
12 | "type": "string"
13 | },
14 | "Id": {
15 | "type": "string"
16 | },
17 | "Name": {
18 | "type": "string"
19 | },
20 | "Tags": {
21 | "type": "object"
22 | }
23 | },
24 | "readOnlyProperties": [
25 | "/properties/Arn",
26 | "/properties/Id"
27 | ],
28 | "required": [
29 | "Name"
30 | ],
31 | "typeName": "AWS::Pinpoint::App"
32 | }
33 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-baiduchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::BaiduChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApiKey": {
12 | "type": "string"
13 | },
14 | "ApplicationId": {
15 | "type": "string"
16 | },
17 | "Enabled": {
18 | "type": "boolean"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "SecretKey": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "ApplicationId",
32 | "SecretKey",
33 | "ApiKey"
34 | ],
35 | "typeName": "AWS::Pinpoint::BaiduChannel"
36 | }
37 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-emailchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::EmailChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "ConfigurationSet": {
15 | "type": "string"
16 | },
17 | "Enabled": {
18 | "type": "boolean"
19 | },
20 | "FromAddress": {
21 | "type": "string"
22 | },
23 | "Id": {
24 | "type": "string"
25 | },
26 | "Identity": {
27 | "type": "string"
28 | },
29 | "OrchestrationSendingRoleArn": {
30 | "type": "string"
31 | },
32 | "RoleArn": {
33 | "type": "string"
34 | }
35 | },
36 | "readOnlyProperties": [
37 | "/properties/Id"
38 | ],
39 | "required": [
40 | "FromAddress",
41 | "ApplicationId",
42 | "Identity"
43 | ],
44 | "typeName": "AWS::Pinpoint::EmailChannel"
45 | }
46 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-emailtemplate.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/TemplateName"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::EmailTemplate",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Arn": {
12 | "type": "string"
13 | },
14 | "DefaultSubstitutions": {
15 | "type": "string"
16 | },
17 | "HtmlPart": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "Subject": {
24 | "type": "string"
25 | },
26 | "Tags": {
27 | "type": "object"
28 | },
29 | "TemplateDescription": {
30 | "type": "string"
31 | },
32 | "TemplateName": {
33 | "type": "string"
34 | },
35 | "TextPart": {
36 | "type": "string"
37 | }
38 | },
39 | "readOnlyProperties": [
40 | "/properties/Id",
41 | "/properties/Arn"
42 | ],
43 | "required": [
44 | "TemplateName",
45 | "Subject"
46 | ],
47 | "typeName": "AWS::Pinpoint::EmailTemplate"
48 | }
49 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-eventstream.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::EventStream",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "DestinationStreamArn": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "RoleArn": {
21 | "type": "string"
22 | }
23 | },
24 | "readOnlyProperties": [
25 | "/properties/Id"
26 | ],
27 | "required": [
28 | "ApplicationId",
29 | "DestinationStreamArn",
30 | "RoleArn"
31 | ],
32 | "typeName": "AWS::Pinpoint::EventStream"
33 | }
34 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-gcmchannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::GCMChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApiKey": {
12 | "type": "string"
13 | },
14 | "ApplicationId": {
15 | "type": "string"
16 | },
17 | "DefaultAuthenticationMethod": {
18 | "type": "string"
19 | },
20 | "Enabled": {
21 | "type": "boolean"
22 | },
23 | "Id": {
24 | "type": "string"
25 | },
26 | "ServiceJson": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "ApplicationId"
35 | ],
36 | "typeName": "AWS::Pinpoint::GCMChannel"
37 | }
38 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-smschannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::SMSChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "Enabled": {
15 | "type": "boolean"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "SenderId": {
21 | "type": "string"
22 | },
23 | "ShortCode": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "ApplicationId"
32 | ],
33 | "typeName": "AWS::Pinpoint::SMSChannel"
34 | }
35 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-smstemplate.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/TemplateName"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::SmsTemplate",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Arn": {
12 | "type": "string"
13 | },
14 | "Body": {
15 | "type": "string"
16 | },
17 | "DefaultSubstitutions": {
18 | "type": "string"
19 | },
20 | "Id": {
21 | "type": "string"
22 | },
23 | "Tags": {
24 | "type": "object"
25 | },
26 | "TemplateDescription": {
27 | "type": "string"
28 | },
29 | "TemplateName": {
30 | "type": "string"
31 | }
32 | },
33 | "readOnlyProperties": [
34 | "/properties/Id",
35 | "/properties/Arn"
36 | ],
37 | "required": [
38 | "TemplateName",
39 | "Body"
40 | ],
41 | "typeName": "AWS::Pinpoint::SmsTemplate"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-pinpoint-voicechannel.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ApplicationId"
5 | ],
6 | "description": "Resource Type definition for AWS::Pinpoint::VoiceChannel",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "ApplicationId": {
12 | "type": "string"
13 | },
14 | "Enabled": {
15 | "type": "boolean"
16 | },
17 | "Id": {
18 | "type": "string"
19 | }
20 | },
21 | "readOnlyProperties": [
22 | "/properties/Id"
23 | ],
24 | "required": [
25 | "ApplicationId"
26 | ],
27 | "typeName": "AWS::Pinpoint::VoiceChannel"
28 | }
29 |
--------------------------------------------------------------------------------
/schema/aws-pinpointemail-dedicatedippool.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PoolName"
5 | ],
6 | "definitions": {
7 | "Tags": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "type": "object"
18 | }
19 | },
20 | "description": "Resource Type definition for AWS::PinpointEmail::DedicatedIpPool",
21 | "primaryIdentifier": [
22 | "/properties/Id"
23 | ],
24 | "properties": {
25 | "Id": {
26 | "type": "string"
27 | },
28 | "PoolName": {
29 | "type": "string"
30 | },
31 | "Tags": {
32 | "items": {
33 | "$ref": "#/definitions/Tags"
34 | },
35 | "type": "array",
36 | "uniqueItems": false
37 | }
38 | },
39 | "readOnlyProperties": [
40 | "/properties/Id"
41 | ],
42 | "typeName": "AWS::PinpointEmail::DedicatedIpPool"
43 | }
44 |
--------------------------------------------------------------------------------
/schema/aws-qldb-ledger.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::QLDB::Ledger",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "DeletionProtection": {
30 | "type": "boolean"
31 | },
32 | "Id": {
33 | "type": "string"
34 | },
35 | "KmsKey": {
36 | "type": "string"
37 | },
38 | "Name": {
39 | "type": "string"
40 | },
41 | "PermissionsMode": {
42 | "type": "string"
43 | },
44 | "Tags": {
45 | "items": {
46 | "$ref": "#/definitions/Tag"
47 | },
48 | "type": "array",
49 | "uniqueItems": false
50 | }
51 | },
52 | "readOnlyProperties": [
53 | "/properties/Id"
54 | ],
55 | "required": [
56 | "PermissionsMode"
57 | ],
58 | "typeName": "AWS::QLDB::Ledger"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-rds-dbsecuritygroupingress.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::RDS::DBSecurityGroupIngress",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "CIDRIP": {
9 | "type": "string"
10 | },
11 | "DBSecurityGroupName": {
12 | "type": "string"
13 | },
14 | "EC2SecurityGroupId": {
15 | "type": "string"
16 | },
17 | "EC2SecurityGroupName": {
18 | "type": "string"
19 | },
20 | "EC2SecurityGroupOwnerId": {
21 | "type": "string"
22 | },
23 | "Id": {
24 | "type": "string"
25 | }
26 | },
27 | "readOnlyProperties": [
28 | "/properties/Id"
29 | ],
30 | "required": [
31 | "DBSecurityGroupName"
32 | ],
33 | "typeName": "AWS::RDS::DBSecurityGroupIngress"
34 | }
35 |
--------------------------------------------------------------------------------
/schema/aws-redshift-clustersecuritygroup.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Description"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroup",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Description": {
30 | "type": "string"
31 | },
32 | "Id": {
33 | "type": "string"
34 | },
35 | "Tags": {
36 | "items": {
37 | "$ref": "#/definitions/Tag"
38 | },
39 | "type": "array",
40 | "uniqueItems": false
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "required": [
47 | "Description"
48 | ],
49 | "typeName": "AWS::Redshift::ClusterSecurityGroup"
50 | }
51 |
--------------------------------------------------------------------------------
/schema/aws-redshift-clustersecuritygroupingress.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ClusterSecurityGroupName",
5 | "/properties/CIDRIP",
6 | "/properties/EC2SecurityGroupOwnerId",
7 | "/properties/EC2SecurityGroupName"
8 | ],
9 | "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroupIngress",
10 | "primaryIdentifier": [
11 | "/properties/Id"
12 | ],
13 | "properties": {
14 | "CIDRIP": {
15 | "type": "string"
16 | },
17 | "ClusterSecurityGroupName": {
18 | "type": "string"
19 | },
20 | "EC2SecurityGroupName": {
21 | "type": "string"
22 | },
23 | "EC2SecurityGroupOwnerId": {
24 | "type": "string"
25 | },
26 | "Id": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "ClusterSecurityGroupName"
35 | ],
36 | "typeName": "AWS::Redshift::ClusterSecurityGroupIngress"
37 | }
38 |
--------------------------------------------------------------------------------
/schema/aws-sagemaker-notebookinstancelifecycleconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/NotebookInstanceLifecycleConfigName"
5 | ],
6 | "definitions": {
7 | "NotebookInstanceLifecycleHook": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Content": {
11 | "type": "string"
12 | }
13 | },
14 | "type": "object"
15 | }
16 | },
17 | "description": "Resource Type definition for AWS::SageMaker::NotebookInstanceLifecycleConfig",
18 | "primaryIdentifier": [
19 | "/properties/Id"
20 | ],
21 | "properties": {
22 | "Id": {
23 | "type": "string"
24 | },
25 | "NotebookInstanceLifecycleConfigName": {
26 | "type": "string"
27 | },
28 | "OnCreate": {
29 | "items": {
30 | "$ref": "#/definitions/NotebookInstanceLifecycleHook"
31 | },
32 | "type": "array",
33 | "uniqueItems": false
34 | },
35 | "OnStart": {
36 | "items": {
37 | "$ref": "#/definitions/NotebookInstanceLifecycleHook"
38 | },
39 | "type": "array",
40 | "uniqueItems": false
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "typeName": "AWS::SageMaker::NotebookInstanceLifecycleConfig"
47 | }
48 |
--------------------------------------------------------------------------------
/schema/aws-sdb-domain.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "description": "Resource Type definition for AWS::SDB::Domain",
4 | "primaryIdentifier": [
5 | "/properties/Id"
6 | ],
7 | "properties": {
8 | "Description": {
9 | "type": "string"
10 | },
11 | "Id": {
12 | "type": "string"
13 | }
14 | },
15 | "readOnlyProperties": [
16 | "/properties/Id"
17 | ],
18 | "typeName": "AWS::SDB::Domain"
19 | }
20 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-acceptedportfolioshare.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/AcceptLanguage"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::AcceptedPortfolioShare",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "AcceptLanguage": {
13 | "type": "string"
14 | },
15 | "Id": {
16 | "type": "string"
17 | },
18 | "PortfolioId": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "PortfolioId"
27 | ],
28 | "typeName": "AWS::ServiceCatalog::AcceptedPortfolioShare"
29 | }
30 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-launchnotificationconstraint.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/ProductId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::LaunchNotificationConstraint",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "AcceptLanguage": {
13 | "type": "string"
14 | },
15 | "Description": {
16 | "type": "string"
17 | },
18 | "Id": {
19 | "type": "string"
20 | },
21 | "NotificationArns": {
22 | "items": {
23 | "type": "string"
24 | },
25 | "type": "array",
26 | "uniqueItems": false
27 | },
28 | "PortfolioId": {
29 | "type": "string"
30 | },
31 | "ProductId": {
32 | "type": "string"
33 | }
34 | },
35 | "readOnlyProperties": [
36 | "/properties/Id"
37 | ],
38 | "required": [
39 | "NotificationArns",
40 | "PortfolioId",
41 | "ProductId"
42 | ],
43 | "typeName": "AWS::ServiceCatalog::LaunchNotificationConstraint"
44 | }
45 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-launchroleconstraint.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/ProductId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::LaunchRoleConstraint",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "AcceptLanguage": {
13 | "type": "string"
14 | },
15 | "Description": {
16 | "type": "string"
17 | },
18 | "Id": {
19 | "type": "string"
20 | },
21 | "LocalRoleName": {
22 | "type": "string"
23 | },
24 | "PortfolioId": {
25 | "type": "string"
26 | },
27 | "ProductId": {
28 | "type": "string"
29 | },
30 | "RoleArn": {
31 | "type": "string"
32 | }
33 | },
34 | "readOnlyProperties": [
35 | "/properties/Id"
36 | ],
37 | "required": [
38 | "PortfolioId",
39 | "ProductId"
40 | ],
41 | "typeName": "AWS::ServiceCatalog::LaunchRoleConstraint"
42 | }
43 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-launchtemplateconstraint.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/ProductId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::LaunchTemplateConstraint",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "AcceptLanguage": {
13 | "type": "string"
14 | },
15 | "Description": {
16 | "type": "string"
17 | },
18 | "Id": {
19 | "type": "string"
20 | },
21 | "PortfolioId": {
22 | "type": "string"
23 | },
24 | "ProductId": {
25 | "type": "string"
26 | },
27 | "Rules": {
28 | "type": "string"
29 | }
30 | },
31 | "readOnlyProperties": [
32 | "/properties/Id"
33 | ],
34 | "required": [
35 | "PortfolioId",
36 | "ProductId",
37 | "Rules"
38 | ],
39 | "typeName": "AWS::ServiceCatalog::LaunchTemplateConstraint"
40 | }
41 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-portfolio.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "definitions": {
4 | "Tag": {
5 | "additionalProperties": false,
6 | "properties": {
7 | "Key": {
8 | "type": "string"
9 | },
10 | "Value": {
11 | "type": "string"
12 | }
13 | },
14 | "required": [
15 | "Value",
16 | "Key"
17 | ],
18 | "type": "object"
19 | }
20 | },
21 | "description": "Resource Type definition for AWS::ServiceCatalog::Portfolio",
22 | "primaryIdentifier": [
23 | "/properties/Id"
24 | ],
25 | "properties": {
26 | "AcceptLanguage": {
27 | "type": "string"
28 | },
29 | "Description": {
30 | "type": "string"
31 | },
32 | "DisplayName": {
33 | "type": "string"
34 | },
35 | "Id": {
36 | "type": "string"
37 | },
38 | "PortfolioName": {
39 | "type": "string"
40 | },
41 | "ProviderName": {
42 | "type": "string"
43 | },
44 | "Tags": {
45 | "items": {
46 | "$ref": "#/definitions/Tag"
47 | },
48 | "type": "array",
49 | "uniqueItems": false
50 | }
51 | },
52 | "readOnlyProperties": [
53 | "/properties/PortfolioName",
54 | "/properties/Id"
55 | ],
56 | "required": [
57 | "DisplayName",
58 | "ProviderName"
59 | ],
60 | "typeName": "AWS::ServiceCatalog::Portfolio"
61 | }
62 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-portfolioprincipalassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/AcceptLanguage",
6 | "/properties/PrincipalARN",
7 | "/properties/PrincipalType"
8 | ],
9 | "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioPrincipalAssociation",
10 | "primaryIdentifier": [
11 | "/properties/Id"
12 | ],
13 | "properties": {
14 | "AcceptLanguage": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "PortfolioId": {
21 | "type": "string"
22 | },
23 | "PrincipalARN": {
24 | "type": "string"
25 | },
26 | "PrincipalType": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "PortfolioId",
35 | "PrincipalType",
36 | "PrincipalARN"
37 | ],
38 | "typeName": "AWS::ServiceCatalog::PortfolioPrincipalAssociation"
39 | }
40 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-portfolioproductassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/SourcePortfolioId",
5 | "/properties/PortfolioId",
6 | "/properties/AcceptLanguage",
7 | "/properties/ProductId"
8 | ],
9 | "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioProductAssociation",
10 | "primaryIdentifier": [
11 | "/properties/Id"
12 | ],
13 | "properties": {
14 | "AcceptLanguage": {
15 | "type": "string"
16 | },
17 | "Id": {
18 | "type": "string"
19 | },
20 | "PortfolioId": {
21 | "type": "string"
22 | },
23 | "ProductId": {
24 | "type": "string"
25 | },
26 | "SourcePortfolioId": {
27 | "type": "string"
28 | }
29 | },
30 | "readOnlyProperties": [
31 | "/properties/Id"
32 | ],
33 | "required": [
34 | "PortfolioId",
35 | "ProductId"
36 | ],
37 | "typeName": "AWS::ServiceCatalog::PortfolioProductAssociation"
38 | }
39 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-portfolioshare.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/AcceptLanguage",
5 | "/properties/AccountId",
6 | "/properties/PortfolioId"
7 | ],
8 | "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioShare",
9 | "primaryIdentifier": [
10 | "/properties/Id"
11 | ],
12 | "properties": {
13 | "AcceptLanguage": {
14 | "type": "string"
15 | },
16 | "AccountId": {
17 | "type": "string"
18 | },
19 | "Id": {
20 | "type": "string"
21 | },
22 | "PortfolioId": {
23 | "type": "string"
24 | },
25 | "ShareTagOptions": {
26 | "type": "boolean"
27 | }
28 | },
29 | "readOnlyProperties": [
30 | "/properties/Id"
31 | ],
32 | "required": [
33 | "AccountId",
34 | "PortfolioId"
35 | ],
36 | "typeName": "AWS::ServiceCatalog::PortfolioShare"
37 | }
38 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-resourceupdateconstraint.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/PortfolioId",
5 | "/properties/ProductId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::ResourceUpdateConstraint",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "AcceptLanguage": {
13 | "type": "string"
14 | },
15 | "Description": {
16 | "type": "string"
17 | },
18 | "Id": {
19 | "type": "string"
20 | },
21 | "PortfolioId": {
22 | "type": "string"
23 | },
24 | "ProductId": {
25 | "type": "string"
26 | },
27 | "TagUpdateOnProvisionedProduct": {
28 | "type": "string"
29 | }
30 | },
31 | "readOnlyProperties": [
32 | "/properties/Id"
33 | ],
34 | "required": [
35 | "TagUpdateOnProvisionedProduct",
36 | "PortfolioId",
37 | "ProductId"
38 | ],
39 | "typeName": "AWS::ServiceCatalog::ResourceUpdateConstraint"
40 | }
41 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-tagoption.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Value",
5 | "/properties/Key"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::TagOption",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Active": {
13 | "type": "boolean"
14 | },
15 | "Id": {
16 | "type": "string"
17 | },
18 | "Key": {
19 | "type": "string"
20 | },
21 | "Value": {
22 | "type": "string"
23 | }
24 | },
25 | "readOnlyProperties": [
26 | "/properties/Id"
27 | ],
28 | "required": [
29 | "Value",
30 | "Key"
31 | ],
32 | "typeName": "AWS::ServiceCatalog::TagOption"
33 | }
34 |
--------------------------------------------------------------------------------
/schema/aws-servicecatalog-tagoptionassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/TagOptionId",
5 | "/properties/ResourceId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceCatalog::TagOptionAssociation",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Id": {
13 | "type": "string"
14 | },
15 | "ResourceId": {
16 | "type": "string"
17 | },
18 | "TagOptionId": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "TagOptionId",
27 | "ResourceId"
28 | ],
29 | "typeName": "AWS::ServiceCatalog::TagOptionAssociation"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-servicediscovery-httpnamespace.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "Tag": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Key": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Key"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::ServiceDiscovery::HttpNamespace",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "Arn": {
30 | "type": "string"
31 | },
32 | "Description": {
33 | "type": "string"
34 | },
35 | "Id": {
36 | "type": "string"
37 | },
38 | "Name": {
39 | "type": "string"
40 | },
41 | "Tags": {
42 | "items": {
43 | "$ref": "#/definitions/Tag"
44 | },
45 | "type": "array",
46 | "uniqueItems": false
47 | }
48 | },
49 | "readOnlyProperties": [
50 | "/properties/Id",
51 | "/properties/Arn"
52 | ],
53 | "required": [
54 | "Name"
55 | ],
56 | "typeName": "AWS::ServiceDiscovery::HttpNamespace"
57 | }
58 |
--------------------------------------------------------------------------------
/schema/aws-servicediscovery-instance.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/InstanceId",
5 | "/properties/ServiceId"
6 | ],
7 | "description": "Resource Type definition for AWS::ServiceDiscovery::Instance",
8 | "primaryIdentifier": [
9 | "/properties/InstanceId"
10 | ],
11 | "properties": {
12 | "InstanceAttributes": {
13 | "type": "object"
14 | },
15 | "InstanceId": {
16 | "type": "string"
17 | },
18 | "ServiceId": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/InstanceId"
24 | ],
25 | "required": [
26 | "InstanceAttributes",
27 | "ServiceId"
28 | ],
29 | "typeName": "AWS::ServiceDiscovery::Instance"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/aws-ses-receiptfilter.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Filter"
5 | ],
6 | "definitions": {
7 | "Filter": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "IpFilter": {
11 | "$ref": "#/definitions/IpFilter"
12 | },
13 | "Name": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "IpFilter"
19 | ],
20 | "type": "object"
21 | },
22 | "IpFilter": {
23 | "additionalProperties": false,
24 | "properties": {
25 | "Cidr": {
26 | "type": "string"
27 | },
28 | "Policy": {
29 | "type": "string"
30 | }
31 | },
32 | "required": [
33 | "Policy",
34 | "Cidr"
35 | ],
36 | "type": "object"
37 | }
38 | },
39 | "description": "Resource Type definition for AWS::SES::ReceiptFilter",
40 | "primaryIdentifier": [
41 | "/properties/Id"
42 | ],
43 | "properties": {
44 | "Filter": {
45 | "$ref": "#/definitions/Filter"
46 | },
47 | "Id": {
48 | "type": "string"
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "Filter"
56 | ],
57 | "typeName": "AWS::SES::ReceiptFilter"
58 | }
59 |
--------------------------------------------------------------------------------
/schema/aws-ses-receiptruleset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/RuleSetName"
5 | ],
6 | "description": "Resource Type definition for AWS::SES::ReceiptRuleSet",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Id": {
12 | "type": "string"
13 | },
14 | "RuleSetName": {
15 | "type": "string"
16 | }
17 | },
18 | "readOnlyProperties": [
19 | "/properties/Id"
20 | ],
21 | "typeName": "AWS::SES::ReceiptRuleSet"
22 | }
23 |
--------------------------------------------------------------------------------
/schema/aws-waf-ipset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "IPSetDescriptor": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Type": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Type"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::WAF::IPSet",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "IPSetDescriptors": {
30 | "items": {
31 | "$ref": "#/definitions/IPSetDescriptor"
32 | },
33 | "type": "array",
34 | "uniqueItems": true
35 | },
36 | "Id": {
37 | "type": "string"
38 | },
39 | "Name": {
40 | "type": "string"
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "required": [
47 | "Name"
48 | ],
49 | "typeName": "AWS::WAF::IPSet"
50 | }
51 |
--------------------------------------------------------------------------------
/schema/aws-waf-rule.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/MetricName",
5 | "/properties/Name"
6 | ],
7 | "definitions": {
8 | "Predicate": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "DataId": {
12 | "type": "string"
13 | },
14 | "Negated": {
15 | "type": "boolean"
16 | },
17 | "Type": {
18 | "type": "string"
19 | }
20 | },
21 | "required": [
22 | "Negated",
23 | "Type",
24 | "DataId"
25 | ],
26 | "type": "object"
27 | }
28 | },
29 | "description": "Resource Type definition for AWS::WAF::Rule",
30 | "primaryIdentifier": [
31 | "/properties/Id"
32 | ],
33 | "properties": {
34 | "Id": {
35 | "type": "string"
36 | },
37 | "MetricName": {
38 | "type": "string"
39 | },
40 | "Name": {
41 | "type": "string"
42 | },
43 | "Predicates": {
44 | "items": {
45 | "$ref": "#/definitions/Predicate"
46 | },
47 | "type": "array",
48 | "uniqueItems": true
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "MetricName",
56 | "Name"
57 | ],
58 | "typeName": "AWS::WAF::Rule"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-wafregional-geomatchset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "GeoMatchConstraint": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Type": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Type"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::WAFRegional::GeoMatchSet",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "GeoMatchConstraints": {
30 | "items": {
31 | "$ref": "#/definitions/GeoMatchConstraint"
32 | },
33 | "type": "array",
34 | "uniqueItems": false
35 | },
36 | "Id": {
37 | "type": "string"
38 | },
39 | "Name": {
40 | "type": "string"
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "required": [
47 | "Name"
48 | ],
49 | "typeName": "AWS::WAFRegional::GeoMatchSet"
50 | }
51 |
--------------------------------------------------------------------------------
/schema/aws-wafregional-ipset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "definitions": {
7 | "IPSetDescriptor": {
8 | "additionalProperties": false,
9 | "properties": {
10 | "Type": {
11 | "type": "string"
12 | },
13 | "Value": {
14 | "type": "string"
15 | }
16 | },
17 | "required": [
18 | "Value",
19 | "Type"
20 | ],
21 | "type": "object"
22 | }
23 | },
24 | "description": "Resource Type definition for AWS::WAFRegional::IPSet",
25 | "primaryIdentifier": [
26 | "/properties/Id"
27 | ],
28 | "properties": {
29 | "IPSetDescriptors": {
30 | "items": {
31 | "$ref": "#/definitions/IPSetDescriptor"
32 | },
33 | "type": "array",
34 | "uniqueItems": false
35 | },
36 | "Id": {
37 | "type": "string"
38 | },
39 | "Name": {
40 | "type": "string"
41 | }
42 | },
43 | "readOnlyProperties": [
44 | "/properties/Id"
45 | ],
46 | "required": [
47 | "Name"
48 | ],
49 | "typeName": "AWS::WAFRegional::IPSet"
50 | }
51 |
--------------------------------------------------------------------------------
/schema/aws-wafregional-regexpatternset.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/Name"
5 | ],
6 | "description": "Resource Type definition for AWS::WAFRegional::RegexPatternSet",
7 | "primaryIdentifier": [
8 | "/properties/Id"
9 | ],
10 | "properties": {
11 | "Id": {
12 | "type": "string"
13 | },
14 | "Name": {
15 | "type": "string"
16 | },
17 | "RegexPatternStrings": {
18 | "items": {
19 | "type": "string"
20 | },
21 | "type": "array",
22 | "uniqueItems": false
23 | }
24 | },
25 | "readOnlyProperties": [
26 | "/properties/Id"
27 | ],
28 | "required": [
29 | "RegexPatternStrings",
30 | "Name"
31 | ],
32 | "typeName": "AWS::WAFRegional::RegexPatternSet"
33 | }
34 |
--------------------------------------------------------------------------------
/schema/aws-wafregional-rule.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/MetricName",
5 | "/properties/Name"
6 | ],
7 | "definitions": {
8 | "Predicate": {
9 | "additionalProperties": false,
10 | "properties": {
11 | "DataId": {
12 | "type": "string"
13 | },
14 | "Negated": {
15 | "type": "boolean"
16 | },
17 | "Type": {
18 | "type": "string"
19 | }
20 | },
21 | "required": [
22 | "Type",
23 | "Negated",
24 | "DataId"
25 | ],
26 | "type": "object"
27 | }
28 | },
29 | "description": "Resource Type definition for AWS::WAFRegional::Rule",
30 | "primaryIdentifier": [
31 | "/properties/Id"
32 | ],
33 | "properties": {
34 | "Id": {
35 | "type": "string"
36 | },
37 | "MetricName": {
38 | "type": "string"
39 | },
40 | "Name": {
41 | "type": "string"
42 | },
43 | "Predicates": {
44 | "items": {
45 | "$ref": "#/definitions/Predicate"
46 | },
47 | "type": "array",
48 | "uniqueItems": false
49 | }
50 | },
51 | "readOnlyProperties": [
52 | "/properties/Id"
53 | ],
54 | "required": [
55 | "MetricName",
56 | "Name"
57 | ],
58 | "typeName": "AWS::WAFRegional::Rule"
59 | }
60 |
--------------------------------------------------------------------------------
/schema/aws-wafregional-webaclassociation.json:
--------------------------------------------------------------------------------
1 | {
2 | "additionalProperties": false,
3 | "createOnlyProperties": [
4 | "/properties/ResourceArn",
5 | "/properties/WebACLId"
6 | ],
7 | "description": "Resource Type definition for AWS::WAFRegional::WebACLAssociation",
8 | "primaryIdentifier": [
9 | "/properties/Id"
10 | ],
11 | "properties": {
12 | "Id": {
13 | "type": "string"
14 | },
15 | "ResourceArn": {
16 | "type": "string"
17 | },
18 | "WebACLId": {
19 | "type": "string"
20 | }
21 | },
22 | "readOnlyProperties": [
23 | "/properties/Id"
24 | ],
25 | "required": [
26 | "ResourceArn",
27 | "WebACLId"
28 | ],
29 | "typeName": "AWS::WAFRegional::WebACLAssociation"
30 | }
31 |
--------------------------------------------------------------------------------
/schema/update.ps1:
--------------------------------------------------------------------------------
1 | Add-Type -AssemblyName System.IO.Compression.FileSystem
2 | function Unzip {
3 | param(
4 | [Parameter(Mandatory=$true)]
5 | [ValidateNotNullOrEmpty()]
6 | [string]$zipfile,
7 |
8 | [Parameter(Mandatory=$true)]
9 | [ValidateNotNullOrEmpty()]
10 | [string]$outpath
11 | )
12 |
13 | [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
14 | }
15 |
16 | $root = "./"| Resolve-Path
17 | $schemaUrl = "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"
18 | $filepath = Join-Path $root "CloudformationSchema.zip"
19 | write-host "path $filepath"
20 | Get-ChildItem *.json| ForEach-Object { Remove-Item $_}
21 |
22 | try {
23 | Write-Progress -Activity "Downloading Schema" -Status "Downloading..."
24 | invoke-webrequest $schemaUrl -OutFile $filepath
25 | Write-Progress -Activity "Downloading Schema" -Completed
26 | Unzip $filepath $root
27 | } catch {
28 | Write-Error "Failed to download/extract schema: $_"
29 | exit 1
30 | }
31 |
32 | Remove-Item $filepath
33 |
34 | [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
35 |
--------------------------------------------------------------------------------
/schema/update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Set working directory
4 | ROOT_DIR="$(pwd)"
5 | SCHEMA_URL="https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"
6 | FILEPATH="${ROOT_DIR}/CloudformationSchema.zip"
7 |
8 | # Function to cleanup on exit
9 | cleanup() {
10 | rm -f "${FILEPATH}"
11 | }
12 |
13 | # Error handling
14 | set -e
15 | trap cleanup EXIT
16 |
17 | # Remove existing JSON files
18 | rm -f ./*.json
19 |
20 | # Download schema
21 | echo "Downloading schema..."
22 | curl -L -o "${FILEPATH}" "${SCHEMA_URL}" || {
23 | echo "Failed to download schema"
24 | exit 1
25 | }
26 |
27 | # Extract zip file
28 | echo "Extracting schema..."
29 | unzip -o "${FILEPATH}" || {
30 | echo "Failed to extract schema"
31 | exit 1
32 | }
33 |
--------------------------------------------------------------------------------
/set-version.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # set-version.sh: Updates version.go file with latest git tag
3 | # Usage: ./set-version.sh
4 | # Requires: git
5 | set -e # Exit on error
6 |
7 | if ! latesttag=$(git describe --tags); then
8 | echo "Error: Failed to get git tag" >&2
9 | exit 1
10 | fi
11 |
12 | if [ -z "$latesttag" ]; then
13 | echo "Error: No git tags found" >&2
14 | exit 1
15 | fi
16 |
17 | if ! echo "$latesttag" | grep -Eq '^v[0-9]+\.[0-9]+\.[0-9]+'; then
18 | echo "Error: Invalid version tag format" >&2
19 | exit 1
20 | fi
21 |
22 | echo "Updating version file with new tag: $latesttag"
23 | echo "package version" > src/version/version.go
24 | echo "" >> src/version/version.go
25 | echo "const Version = \"$latesttag\"" >> src/version/version.go
26 |
--------------------------------------------------------------------------------
/src/arm/data.go:
--------------------------------------------------------------------------------
1 | package arm
2 |
3 | import (
4 | "bytes"
5 | "sato/src/cf"
6 | tftemplate "text/template"
7 | )
8 |
9 | // ParseData writes out to data.tf.
10 | func ParseData(result map[string]interface{}, funcMap tftemplate.FuncMap, destination string) error {
11 |
12 | if result["data"] == nil {
13 | return nil
14 | }
15 |
16 | data := result["data"]
17 |
18 | var output bytes.Buffer
19 |
20 | tmpl, err := tftemplate.New("test").Funcs(funcMap).Parse(string(dataFile))
21 | if err != nil {
22 | return &templateNewError{err: err}
23 | }
24 |
25 | err = tmpl.Execute(&output, m{
26 | "data": data,
27 | })
28 |
29 | if err != nil {
30 | return &templateExecuteError{err: err}
31 | }
32 |
33 | err = cf.Write(output.String(), destination, "data")
34 | if err != nil {
35 | return &writeFileError{destination: destination, err: err}
36 | }
37 |
38 | return nil
39 | }
40 |
--------------------------------------------------------------------------------
/src/arm/data.template:
--------------------------------------------------------------------------------
1 | {{- if eq true .data.resource_group }}
2 | data "azurerm_resource_group" "sato" {
3 | name = "sato"
4 | }
5 | {{- end }}
6 | {{- if eq true .data.client_config }}
7 | data "azurerm_client_config" "sato" {
8 | }
9 | {{- end }}
10 | {{- if .data.uuid }}
11 | {{Uuid .data.uuid }}
12 | {{- end }}
13 | provider "azurerm" {
14 | features{}
15 | }
16 |
--------------------------------------------------------------------------------
/src/arm/data_test.go:
--------------------------------------------------------------------------------
1 | package arm_test
2 |
3 | import (
4 | "testing"
5 | "text/template"
6 |
7 | "sato/src/arm"
8 | )
9 |
10 | func Test_parseData(t *testing.T) {
11 | t.Parallel()
12 |
13 | type args struct {
14 | result map[string]interface{}
15 | funcMap template.FuncMap
16 | destination string
17 | }
18 |
19 | var badFunk template.FuncMap
20 |
21 | empty := make(map[string]interface{})
22 | emptyData := make(map[string]interface{})
23 | emptyData["data"] = make(map[string]interface{})
24 |
25 | results := make(map[string]interface{})
26 | data := make(map[string]interface{})
27 |
28 | data["resource_group"] = true
29 | results["data"] = data
30 |
31 | tests := []struct {
32 | name string
33 | args args
34 | wantErr bool
35 | }{
36 | {"empty", args{empty, funcMap, "test-output"}, false},
37 | {"emptyData", args{emptyData, funcMap, "test-output"}, false},
38 | {"data", args{results, funcMap, "test-output"}, false},
39 | {"bad funk", args{results, badFunk, "test-output"}, true},
40 | // {"bad destination", args{results, funcMap, "/usr/bin/nowhere"}, true},
41 | }
42 |
43 | for _, tt := range tests {
44 | tt := tt
45 | t.Run(tt.name, func(t *testing.T) {
46 | t.Parallel()
47 |
48 | if err := arm.ParseData(tt.args.result, tt.args.funcMap, tt.args.destination); (err != nil) != tt.wantErr {
49 | t.Errorf("ParseData() error = %v, wantErr %v", err, tt.wantErr)
50 | }
51 | })
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/arm/locals.go:
--------------------------------------------------------------------------------
1 | package arm
2 |
3 | import (
4 | "strings"
5 | )
6 |
7 | // ParseLocals parses fields into locals.tf.
8 | func ParseLocals(result map[string]interface{}) (string, map[string]interface{}, error) {
9 | var locals string
10 |
11 | myLocals, ok := result["locals"].(map[string]interface{})
12 |
13 | if !ok || myLocals == nil {
14 | return "", result, &emptyResourceError{}
15 | }
16 |
17 | for item, value := range myLocals {
18 | var (
19 | theValue string
20 | local string
21 | )
22 |
23 | theValue, result = ParseString(value.(string), result)
24 |
25 | myLocals[item] = theValue
26 |
27 | if strings.Contains(theValue, "${") {
28 | local = "\t" + item + " = \"" + theValue + "\" #" + value.(string) + "\n"
29 | } else {
30 | local = "\t" + item + " = " + theValue + " #" + value.(string) + "\n"
31 | }
32 |
33 | locals += strings.ReplaceAll(local, "'", "\"")
34 | }
35 |
36 | result["locals"] = myLocals
37 |
38 | return locals, result, nil
39 | }
40 |
--------------------------------------------------------------------------------
/src/arm/lookup_test.go:
--------------------------------------------------------------------------------
1 | package arm
2 |
3 | import (
4 | "reflect"
5 | "testing"
6 | )
7 |
8 | func Test_lookup(t *testing.T) {
9 | t.Parallel()
10 |
11 | type args struct {
12 | myType string
13 | }
14 |
15 | test := azurermTemplateDeployment
16 |
17 | var empty []byte
18 |
19 | tests := []struct {
20 | name string
21 | args args
22 | want []byte
23 | }{
24 | {"Find", args{"Microsoft.Resources/deployments"}, test},
25 | {"Dont Find", args{"garbage"}, empty},
26 | {"Nil", args{""}, empty},
27 | }
28 |
29 | for _, tt := range tests {
30 | tt := tt
31 | t.Run(tt.name, func(t *testing.T) {
32 | t.Parallel()
33 |
34 | if got := lookup(tt.args.myType); !reflect.DeepEqual(got, tt.want) {
35 | t.Errorf("lookup() = %v, want %v", got, tt.want)
36 | }
37 | })
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/arm/output.template:
--------------------------------------------------------------------------------
1 |
2 | output "{{.item}}" {
3 | {{- if eq .variable.Type "securestring"}}
4 | sensitive = true
5 | {{- end }}
6 | {{- if .variable.Value}}
7 | value = {{ .variable.Value }}
8 | {{- end }}
9 | description = "{{ .variable.Description }}"
10 | }
11 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_availability_set.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_availability_set" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | {{- if .resource.properties.platformUpdateDomainCount}}
14 | platform_update_domain_count= {{.resource.properties.platformUpdateDomainCount}}
15 | {{- end}}
16 | {{- if .resource.properties.platformFaultDomainCount}}
17 | platform_fault_domain_count = {{.resource.properties.platformFaultDomainCount}}
18 | {{- end}}
19 | {{- if .resource.tags}}
20 | tags = {{Tags .resource.tags}}
21 | {{- end}}
22 | {{- if .resource.dependsOn }}
23 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
24 | {{- end}}
25 | }
26 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_bastion_host.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_bastion_host" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 |
14 | {{- if .resource.properties.ipConfigurations}}
15 | {{ range $i, $j:= .resource.properties.ipConfigurations}}
16 | ip_configuration {
17 | name = {{$j.name|Quote}}
18 | subnet_id = {{$j.properties.subnet.id}}
19 | public_ip_address_id = {{$j.properties.publicIPAddress.id}}
20 | }
21 | {{- end}}
22 | {{- end}}
23 | {{- if .resource.tags}}
24 | tags = {{Tags .resource.tags}}
25 | {{- end}}
26 | {{- if .resource.dependsOn }}
27 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
28 | {{- end}}
29 | }
30 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_container_app_environment.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_container_app_environment" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | log_analytics_workspace_id={{- Replace .resource.properties.appLogsConfiguration.logAnalyticsConfiguration.customerId ".customerId" ".id"}}
14 | {{- if .resource.tags}}
15 | tags = {{Tags .resource.tags}}
16 | {{- end}}
17 | {{- if .resource.dependsOn }}
18 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
19 | {{- end}}
20 | }
21 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_log_analytics_solution.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_log_analytics_solution" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | solution_name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | workspace_resource_id = {{Nil .resource.properties.workspaceresourceId|Quote}}
14 | workspace_name = ""
15 | {{- if .resource.plan}}
16 | plan {
17 | publisher = {{ .resource.plan.publisher|Quote}}
18 | product = {{ .resource.plan.product|Quote}}
19 | {{- if .resource.plan.promotionCode}}
20 | promotion_code = {{ .resource.plan.promotionCode|Quote}}
21 | {{- end}}
22 | }
23 | {{- end}}
24 | {{- if .resource.tags}}
25 | tags = {{Tags .resource.tags}}
26 | {{- end}}
27 | {{- if .resource.dependsOn }}
28 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
29 | {{- end}}
30 | }
31 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_monitor_activity_log_alert.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_monitor_activity_log_alert" "{{.item}}" {
2 | name = {{.resource.name|Quote }}
3 | {{- if .resource.resourceGroupName }}
4 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
5 | {{- else }}
6 | resource_group_name = data.azurerm_resource_group.sato.name
7 | {{- end}}
8 | scopes = {{index .resource.properties.scopes 0}}
9 | description = {{ .resource.properties.description|Quote}}
10 | enabled = {{ .resource.properties.enabled}}
11 | {{- if .resource.tags}}
12 | tags = {{Tags .resource.tags}}
13 | {{- end}}
14 | {{- if .resource.dependsOn }}
15 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
16 | {{- end}}
17 | }
18 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_network_interface.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_network_interface" "{{ .item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | {{- range $x, $i:= .resource.properties.ipConfigurations}}
14 | ip_configuration {
15 | name = {{ $i.name |Quote}}
16 | {{- if $i.properties.subnet}}
17 | subnet_id = {{ $i.properties.subnet.id }}
18 | {{- end}}
19 | {{- if $i.properties.privateIPAllocationMethod }}
20 | private_ip_address_allocation = {{ $i.properties.privateIPAllocationMethod|Quote }}
21 | {{- end}}
22 | }
23 | {{- end}}
24 | {{- if .resource.tags}}
25 | tags = {{Tags .resource.tags}}
26 | {{- end}}
27 | {{- if .resource.dependsOn }}
28 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
29 | {{- end}}
30 | }
31 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_network_interface_application_gateway_backend_address_pool_association.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "{{.item}}" {
2 | network_interface_id = azurerm_network_interface.example.id
3 | ip_configuration_name = "testconfiguration1"
4 | backend_address_pool_id = tolist(azurerm_application_gateway.network.backend_address_pool).0.id
5 | {{- if .resource.tags}}
6 | tags = {{Tags .resource.tags}}
7 | {{- end}}
8 | {{- if .resource.dependsOn }}
9 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
10 | {{- end}}
11 | }
12 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_private_dns_zone.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_private_dns_zone" "{{.item}}" {
2 | name = {{.resource.name|Quote }}
3 | {{- if .resource.resourceGroupName }}
4 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
5 | {{- else }}
6 | resource_group_name = data.azurerm_resource_group.sato.name
7 | {{- end}}
8 |
9 |
10 | {{- if .resource.tags}}
11 | tags = {{Tags .resource.tags}}
12 | {{- end}}
13 | {{- if .resource.dependsOn }}
14 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
15 | {{- end}}
16 | }
17 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_private_dns_zone_virtual_network_link.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_private_dns_zone_virtual_network_link" "{{.item}}" {
2 | name = {{ .resource.name|Quote }}
3 | {{- if .resource.resourceGroupName }}
4 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
5 | {{- else }}
6 | resource_group_name = data.azurerm_resource_group.sato.name
7 | {{- end}}
8 | private_dns_zone_name = {{.resource.name|Quote}}
9 | virtual_network_id = {{.resource.properties.virtualNetwork.id|Quote}}
10 | {{- if NotNil .resource.properties.registrationEnabled}}
11 | registration_enabled = {{.resource.properties.registrationEnabled|Quote}}
12 | {{- end}}
13 | {{- if .resource.tags}}
14 | tags = {{Tags .resource.tags}}
15 | {{- end}}
16 | {{- if .resource.dependsOn }}
17 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{$j}}, {{- end}}]
18 | {{- end}}
19 | }
20 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_private_endpoint.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_private_endpoint" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | subnet_id = {{ .resource.properties.subnet.id|Quote}}
14 | {{- if .resource.properties.privateLinkServiceConnections}}
15 | {{- range $x, $y:= .resource.properties.privateLinkServiceConnections}}
16 | private_service_connection {
17 | {{- if $y.name}}
18 | name = {{$y.name|Quote}}
19 | {{- end}}
20 | {{- if $y.properties.privateLinkServiceId}}
21 | private_connection_resource_id = {{$y.properties.privateLinkServiceId}}
22 | {{- end}}
23 | is_manual_connection = false
24 | }
25 | {{- end}}
26 | {{- end}}
27 | {{- if .resource.tags}}
28 | tags = {{Tags .resource.tags}}
29 | {{- end}}
30 | {{- if .resource.dependsOn }}
31 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
32 | {{- end}}
33 | }
34 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_public_ip.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_public_ip" "{{ .item }}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- range $a, $j:= .resource.sku}}
9 | sku = {{ $j|Quote }}
10 | {{- end }}
11 | {{- if .resource.resourceGroupName }}
12 | resource_group_name = "{{ .resource.resourceGroupName|Quote }}"
13 | {{- else }}
14 | resource_group_name = data.azurerm_resource_group.sato.name
15 | {{- end}}
16 | {{- if .resource.tags}}
17 | tags = {{Tags .resource.tags}}
18 | {{- end}}
19 | {{- if .resource.properties.dnsSettings.domainNameLabel}}
20 | domain_name_label = {{ .resource.properties.dnsSettings.domainNameLabel|Quote }}
21 | {{- end}}
22 | {{- if .resource.properties.publicIPAllocationMethod}}
23 | allocation_method = {{.resource.properties.publicIPAllocationMethod|Quote}}
24 | {{- end}}
25 | {{- if .resource.dependsOn }}
26 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
27 | {{- end}}
28 | }
29 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_role_assignment.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_role_assignment" "{{.item}}" {
2 | name = {{.resource.name}}
3 | principal_id = {{.resource.properties.principalId}}
4 | {{- if .resource.properties.scope}}
5 | scope = {{.resource.properties.scope}}
6 | {{- else}}
7 | scope = ""
8 | {{- end}}
9 | role_definition_id = {{.resource.properties.roleDefinitionId}}
10 | {{- if .resource.metadata.description}}
11 | description = {{.resource.metadata.description|Quote}}
12 | {{- else}}
13 | {{- if .resource.properties.description }}
14 | description = {{.resource.properties.description|Quote}}
15 | {{- end}}
16 | {{- end}}
17 | {{- if .resource.tags}}
18 | tags = {{Tags .resource.tags}}
19 | {{- end}}
20 | {{- if .resource.dependsOn }}
21 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
22 | {{- end}}
23 | }
24 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_role_definition.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_role_definition" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | scope
14 | description
15 | permissions
16 | assignable_scopes
17 | {{- if .resource.tags}}
18 | tags = {{Tags .resource.tags}}
19 | {{- end}}
20 | {{- if .resource.dependsOn }}
21 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
22 | {{- end}}
23 | }
24 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_servicebus_namespace_authorization_rule.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_servicebus_namespace_authorization_rule" "{{.item}}" {
2 | name = {{ .resource.name|Quote }}
3 | {{- if .resource.properties.rights}}
4 | {{- range $a, $i:= .resource.properties.rights}}
5 | {{ToLower $i}} = true
6 | {{- end}}
7 | {{- end}}
8 | namespace_id = ""
9 | {{- if .resource.dependsOn }}
10 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
11 | {{- end}}
12 | {{- if .resource.tags}}
13 | tags = {{Tags .resource.tags}}
14 | {{- end}}
15 | }
16 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_storage_account.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_storage_account" "{{.item}}" {
2 | {{- range $a, $i:= .resource.sku}}
3 | account_replication_type = {{ SplitOn $i "_" 1|Quote }}
4 | account_tier = {{ SplitOn $i "_" 0|Quote }}
5 | {{- end}}
6 | location = {{ .resource.location|Quote }}
7 | name = {{ .resource.name|Quote }}
8 | account_kind = {{ .resource.kind|Quote}}
9 | {{- if .resource.resourceGroupName }}
10 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
11 | {{- else }}
12 | resource_group_name = data.azurerm_resource_group.sato.name
13 | {{- end}}
14 | {{- if .resource.tags}}
15 | tags = {{Tags .resource.tags}}
16 | {{- end}}
17 | {{- if .resource.dependsOn }}
18 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
19 | {{- end}}
20 | }
21 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_subnet.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_subnet" "{{.item}}" {
2 | {{- if .resource.tags}}
3 | tags = {{Tags .resource.tags}}
4 | {{- end}}
5 | {{- if .resource.dependsOn }}
6 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
7 | {{- end}}
8 | }
9 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_template_deployment.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_template_deployment" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | template_body = {{Marshal .resource.properties.template}}
14 | deployment_mode= {{ .resource.properties.mode|Quote}}
15 | parameters {
16 | {{- range $i,$j:=.resource.properties.parameters}}
17 | {{ $i }} = {{$j.value}}
18 | {{- end}}
19 | }
20 | {{- if .resource.tags}}
21 | tags = {{Tags .resource.tags}}
22 | {{- end}}
23 | {{- if .resource.dependsOn }}
24 | depends_on = {{ .resource.dependsOn }}
25 | {{- end}}
26 | }
27 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_user_assigned_identity.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_user_assigned_identity" "{{.item}}" {
2 | {{- if .resource.location}}
3 | location = {{ .resource.location|Quote }}
4 | {{- else}}
5 | location = data.azurerm_resource_group.sato.location
6 | {{- end }}
7 | name = {{ .resource.name|Quote }}
8 | {{- if .resource.resourceGroupName }}
9 | resource_group_name = {{ .resource.resourceGroupName|Quote }}
10 | {{- else }}
11 | resource_group_name = data.azurerm_resource_group.sato.name
12 | {{- end}}
13 | {{- if .resource.tags}}
14 | tags = {{Tags .resource.tags}}
15 | {{- end}}
16 | {{- if .resource.dependsOn }}
17 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{Deref $j}}, {{- end}}]
18 | {{- end}}
19 | }
20 |
--------------------------------------------------------------------------------
/src/arm/resources/azurerm_virtual_machine_extension.template:
--------------------------------------------------------------------------------
1 | resource "azurerm_virtual_machine_extension" "{{.item}}" {
2 | name = {{ .resource.name |Quote}}
3 | {{- $p:= .resource.properties}}
4 | publisher = {{$p.publisher|Quote}}
5 | type = {{$p.type|Quote}}
6 | type_handler_version = {{$p.typeHandlerVersion|Quote}}
7 | {{- if NotNil $p.autoUpgradeMinorVersion}}
8 | auto_upgrade_minor_version = {{$p.autoUpgradeMinorVersion}}
9 | {{- end}}
10 | {{- if NotNil $p.enableAutomaticUpgrade}}
11 | automatic_upgrade_enabled = {{$p.enableAutomaticUpgrade}}
12 | {{- end}}
13 | {{- if $p.settings}}
14 | settings = jsonencode({{Marshal $p.settings}})
15 | {{- end}}
16 | {{- if $p.protectedSettings}}
17 | protected_settings = jsonencode({{Marshal $p.protectedSettings}})
18 | {{- end}}
19 | {{- if .resource.tags}}
20 | tags = {{Tags .resource.tags}}
21 | {{- end}}
22 | {{- if .resource.dependsOn }}
23 | virtual_machine_id = {{index .resource.dependsOn 0|Quote}}.id
24 | depends_on = [{{- range $x, $j:= .resource.dependsOn }} {{ $j}}, {{- end}}]
25 | {{- end}}
26 | }
27 |
--------------------------------------------------------------------------------
/src/arm/resources_test.go:
--------------------------------------------------------------------------------
1 | package arm_test
2 |
3 | import (
4 | "reflect"
5 | "sato/src/arm"
6 | "testing"
7 | "text/template"
8 | )
9 |
10 | func Test_parseResources(t *testing.T) {
11 | t.Parallel()
12 |
13 | type args struct {
14 | result map[string]interface{}
15 | funcMap template.FuncMap
16 | destination string
17 | }
18 |
19 | tests := []struct {
20 | name string
21 | args args
22 | want map[string]interface{}
23 | wantErr bool
24 | }{
25 | {"Fail", args{}, nil, true},
26 | {"Empty Cast", args{nil, nil, ""}, nil, true},
27 | //{"minimal", args{result, nil, ""}, nil, false},
28 | }
29 |
30 | for _, tt := range tests {
31 | tt := tt
32 | t.Run(tt.name, func(t *testing.T) {
33 | t.Parallel()
34 | got, err := arm.ParseResources(tt.args.result, tt.args.funcMap, tt.args.destination)
35 | if (err != nil) != tt.wantErr {
36 | t.Errorf("ParseResources() error = %v, wantErr %v", err, tt.wantErr)
37 |
38 | return
39 | }
40 | if !reflect.DeepEqual(got, tt.want) {
41 | t.Errorf("ParseResources() got = %v, want %v", got, tt.want)
42 | }
43 | })
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/arm/variable.go:
--------------------------------------------------------------------------------
1 | package arm
2 |
3 | import (
4 | _ "embed" // required for embed
5 | )
6 |
7 | //go:embed variable.template
8 | var variableFile []byte
9 |
10 | //go:embed output.template
11 | var outputFile []byte
12 |
13 | //go:embed data.template
14 | var dataFile []byte
15 |
--------------------------------------------------------------------------------
/src/arm/variable.template:
--------------------------------------------------------------------------------
1 |
2 | variable "{{.item}}" {
3 | {{- if eq .variable.type "securestring"}}
4 | type = string
5 | sensitive = true
6 | {{- else }}
7 | type = {{.variable.type}}
8 | {{- end }}
9 | {{- if .variable.default}}
10 | {{- if or (eq .variable.type "string") (eq .variable.type "securestring")}}
11 | default = {{ Replace .variable.default "${" "$${" | Quote }}
12 | {{- else}}
13 | default = {{ Replace .variable.default "${" "$${" }}
14 | {{- end }}
15 | {{- end }}
16 | {{- if .variable.metadata.description }}
17 | description = "{{ .variable.metadata.description }}"
18 | {{- end }}
19 | }
20 |
--------------------------------------------------------------------------------
/src/cf/data.go:
--------------------------------------------------------------------------------
1 | package cf
2 |
3 | const dataAvailabilityZone = `data "aws_availability_zone" "example" {
4 | name = ""
5 | }
6 | `
7 |
8 | const dataSubnet = `data "aws_subnet" "selected" {
9 | id = ""
10 | }
11 | `
12 |
13 | const dataKeyPair = `data "aws_key_pair" "example" {
14 | key_name = ""
15 | include_public_key = true
16 | }
17 | `
18 |
19 | const dataVpc = `data "aws_vpc" "selected" {
20 | id = ""
21 | }
22 | `
23 |
24 | const dataRegion = "data \"aws_region\" \"current\" {}\n"
25 |
26 | const dataSecurityGroup = "data \"aws_security_group\" \"selected\" {\n id = \"\"\n}\n"
27 |
28 | const provider = "provider \"aws\" {\n region=\"eu-west-2\"\n}\n"
29 |
--------------------------------------------------------------------------------
/src/cf/resources/aws_appautoscaling_target.template:
--------------------------------------------------------------------------------
1 | resource "aws_appautoscaling_target" "{{.item}}" {
2 | max_capacity = {{.resource.MaxCapacity}}
3 | min_capacity = {{.resource.MinCapacity}}
4 | resource_id = {{Nil .resource.ResourceId|Quote}}
5 | role_arn = {{Nil .resource.RoleARN|Quote}}
6 | scalable_dimension = {{Nil .resource.ScalableDimension|Quote}}
7 | service_namespace = {{Nil .resource.ServiceNamespace|Quote}}
8 | }
9 |
--------------------------------------------------------------------------------
/src/cf/resources/aws_athena_named_query.template:
--------------------------------------------------------------------------------
1 | resource "aws_athena_named_query" "{{.item}}" {
2 | name = {{.resource.Name|Quote}}
3 | {{- if .resource.Description}}
4 | description = {{Nil .resource.Description|Quote}}
5 | {{- end}}
6 | {{- if .resource.WorkGroup}}
7 | workgroup = {{Nil .resource.WorkGroup|Quote}}
8 | {{- end }}
9 | database = {{Nil .resource.Database|Quote}}
10 | query = <