cartography 0.92.0rc1__tar.gz → 0.93.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cartography might be problematic. Click here for more details.

Files changed (348) hide show
  1. {cartography-0.92.0rc1/cartography.egg-info → cartography-0.93.0}/PKG-INFO +1 -1
  2. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/indexes.cypher +0 -6
  3. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/images.py +1 -0
  4. cartography-0.93.0/cartography/intel/aws/ec2/launch_templates.py +162 -0
  5. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/iam.py +1 -0
  6. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/compute.py +1 -1
  7. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crowdstrike/endpoints.py +2 -2
  8. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/cve/feed.py +3 -2
  9. cartography-0.93.0/cartography/models/aws/ec2/launch_template_versions.py +81 -0
  10. cartography-0.93.0/cartography/models/aws/ec2/launch_templates.py +46 -0
  11. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/subnet_instance.py +1 -1
  12. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/util.py +1 -1
  13. {cartography-0.92.0rc1 → cartography-0.93.0/cartography.egg-info}/PKG-INFO +1 -1
  14. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography.egg-info/SOURCES.txt +2 -1
  15. {cartography-0.92.0rc1 → cartography-0.93.0}/setup.cfg +5 -0
  16. {cartography-0.92.0rc1 → cartography-0.93.0}/setup.py +1 -1
  17. cartography-0.92.0rc1/cartography/data/jobs/cleanup/aws_import_ec2_launch_templates_cleanup.json +0 -13
  18. cartography-0.92.0rc1/cartography/intel/aws/ec2/launch_templates.py +0 -115
  19. {cartography-0.92.0rc1 → cartography-0.93.0}/LICENSE +0 -0
  20. {cartography-0.92.0rc1 → cartography-0.93.0}/NOTICE +0 -0
  21. {cartography-0.92.0rc1 → cartography-0.93.0}/README.md +0 -0
  22. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/__init__.py +0 -0
  23. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/__main__.py +0 -0
  24. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/cli.py +0 -0
  25. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/client/__init__.py +0 -0
  26. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/client/aws/__init__.py +0 -0
  27. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/client/aws/iam.py +0 -0
  28. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/client/core/__init__.py +0 -0
  29. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/client/core/tx.py +0 -0
  30. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/config.py +0 -0
  31. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/__init__.py +0 -0
  32. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/__init__.py +0 -0
  33. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/__init__.py +0 -0
  34. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json +0 -0
  35. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_ec2_iaminstance.json +0 -0
  36. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_ec2_iaminstanceprofile.json +0 -0
  37. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_ec2_keypair_analysis.json +0 -0
  38. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_eks_asset_exposure.json +0 -0
  39. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_foreign_accounts.json +0 -0
  40. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_lambda_ecr.json +0 -0
  41. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/aws_s3acl_analysis.json +0 -0
  42. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/gcp_compute_asset_inet_exposure.json +0 -0
  43. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/gcp_gke_asset_exposure.json +0 -0
  44. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/gcp_gke_basic_auth.json +0 -0
  45. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/analysis/gsuite_human_link.json +0 -0
  46. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/__init__.py +0 -0
  47. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_account_cleanup.json +0 -0
  48. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_apigateway_details.json +0 -0
  49. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_dns_cleanup.json +0 -0
  50. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json +0 -0
  51. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json +0 -0
  52. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_config_cleanup.json +0 -0
  53. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json +0 -0
  54. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json +0 -0
  55. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json +0 -0
  56. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json +0 -0
  57. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_elastic_ip_addresses_cleanup.json +0 -0
  58. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_elasticache_cleanup.json +0 -0
  59. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_es_cleanup.json +0 -0
  60. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_groups_cleanup.json +0 -0
  61. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json +0 -0
  62. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json +0 -0
  63. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json +0 -0
  64. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_kms_cleanup.json +0 -0
  65. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +0 -0
  66. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_principals_cleanup.json +0 -0
  67. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json +0 -0
  68. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json +0 -0
  69. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_rds_snapshots_cleanup.json +0 -0
  70. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_redshift_clusters_cleanup.json +0 -0
  71. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_reserved_instances_cleanup.json +0 -0
  72. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_roles_cleanup.json +0 -0
  73. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_roles_policy_cleanup.json +0 -0
  74. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_s3_acl_cleanup.json +0 -0
  75. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_s3_buckets_cleanup.json +0 -0
  76. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_secrets_cleanup.json +0 -0
  77. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_securityhub_cleanup.json +0 -0
  78. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_snapshots_cleanup.json +0 -0
  79. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_sqs_queues_cleanup.json +0 -0
  80. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_tags_cleanup.json +0 -0
  81. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_tgw_cleanup.json +0 -0
  82. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_users_cleanup.json +0 -0
  83. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_vpc_cleanup.json +0 -0
  84. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_import_vpc_peering_cleanup.json +0 -0
  85. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_ingest_ec2_auto_scaling_groups_cleanup.json +0 -0
  86. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_cleanup.json +0 -0
  87. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_v2_cleanup.json +0 -0
  88. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_ingest_subnets_cleanup.json +0 -0
  89. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_kms_details.json +0 -0
  90. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_post_ingestion_principals_cleanup.json +0 -0
  91. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/aws_s3_details.json +0 -0
  92. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_cosmosdb_cassandra_keyspace_cleanup.json +0 -0
  93. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_cosmosdb_cors_details.json +0 -0
  94. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_cosmosdb_mongodb_database_cleanup.json +0 -0
  95. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_cosmosdb_sql_database_cleanup.json +0 -0
  96. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_cosmosdb_table_resources_cleanup.json +0 -0
  97. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_database_account_cleanup.json +0 -0
  98. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_import_disks_cleanup.json +0 -0
  99. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_import_snapshots_cleanup.json +0 -0
  100. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_import_virtual_machines_cleanup.json +0 -0
  101. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_sql_server_cleanup.json +0 -0
  102. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_storage_account_cleanup.json +0 -0
  103. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_subscriptions_cleanup.json +0 -0
  104. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/azure_tenant_cleanup.json +0 -0
  105. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/crowdstrike_import_cleanup.json +0 -0
  106. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/crxcavator_import_cleanup.json +0 -0
  107. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/digitalocean_droplet_cleanup.json +0 -0
  108. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/digitalocean_project_cleanup.json +0 -0
  109. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_compute_firewall_cleanup.json +0 -0
  110. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_compute_forwarding_rules_cleanup.json +0 -0
  111. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_compute_instance_cleanup.json +0 -0
  112. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json +0 -0
  113. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_compute_vpc_subnet_cleanup.json +0 -0
  114. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_crm_folder_cleanup.json +0 -0
  115. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_crm_organization_cleanup.json +0 -0
  116. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json +0 -0
  117. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_dns_cleanup.json +0 -0
  118. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json +0 -0
  119. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json +0 -0
  120. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/github_repos_cleanup.json +0 -0
  121. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/github_users_cleanup.json +0 -0
  122. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json +0 -0
  123. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json +0 -0
  124. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json +0 -0
  125. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/kubernetes_import_cleanup.json +0 -0
  126. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_import_compartments_cleanup.json +0 -0
  127. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_import_groups_cleanup.json +0 -0
  128. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_import_groups_membership_cleanup.json +0 -0
  129. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_import_policies_cleanup.json +0 -0
  130. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_import_users_cleanup.json +0 -0
  131. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/oci_tenancy_cleanup.json +0 -0
  132. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/okta_groups_cleanup.json +0 -0
  133. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/okta_import_cleanup.json +0 -0
  134. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/cleanup/pagerduty_import_cleanup.json +0 -0
  135. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/scoped_analysis/__init__.py +0 -0
  136. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/jobs/scoped_analysis/semgrep_sca_risk_analysis.json +0 -0
  137. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/data/permission_relationships.yaml +0 -0
  138. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/__init__.py +0 -0
  139. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/__main__.py +0 -0
  140. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/add_shortcut.py +0 -0
  141. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/cli.py +0 -0
  142. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/config.py +0 -0
  143. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/detect_deviations.py +0 -0
  144. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/get_states.py +0 -0
  145. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/model.py +0 -0
  146. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/reporter.py +0 -0
  147. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/serializers.py +0 -0
  148. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/shortcut.py +0 -0
  149. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/storage.py +0 -0
  150. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/driftdetect/util.py +0 -0
  151. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/__init__.py +0 -0
  152. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/cleanupbuilder.py +0 -0
  153. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/context.py +0 -0
  154. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/job.py +0 -0
  155. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/querybuilder.py +0 -0
  156. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/graph/statement.py +0 -0
  157. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/__init__.py +0 -0
  158. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/analysis.py +0 -0
  159. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/__init__.py +0 -0
  160. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/apigateway.py +0 -0
  161. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/config.py +0 -0
  162. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/dynamodb.py +0 -0
  163. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/__init__.py +0 -0
  164. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/auto_scaling_groups.py +0 -0
  165. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/elastic_ip_addresses.py +0 -0
  166. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/instances.py +0 -0
  167. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/internet_gateways.py +0 -0
  168. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/key_pairs.py +0 -0
  169. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/load_balancer_v2s.py +0 -0
  170. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/load_balancers.py +0 -0
  171. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/network_interfaces.py +0 -0
  172. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/reserved_instances.py +0 -0
  173. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/security_groups.py +0 -0
  174. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/snapshots.py +0 -0
  175. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/subnets.py +0 -0
  176. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/tgw.py +0 -0
  177. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/util.py +0 -0
  178. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/volumes.py +0 -0
  179. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/vpc.py +0 -0
  180. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ec2/vpc_peerings.py +0 -0
  181. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ecr.py +0 -0
  182. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ecs.py +0 -0
  183. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/eks.py +0 -0
  184. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/elasticache.py +0 -0
  185. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/elasticsearch.py +0 -0
  186. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/emr.py +0 -0
  187. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/inspector.py +0 -0
  188. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/kms.py +0 -0
  189. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/lambda_function.py +0 -0
  190. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/organizations.py +0 -0
  191. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/permission_relationships.py +0 -0
  192. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/rds.py +0 -0
  193. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/redshift.py +0 -0
  194. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/resourcegroupstaggingapi.py +0 -0
  195. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/resources.py +0 -0
  196. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/route53.py +0 -0
  197. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/s3.py +0 -0
  198. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/secretsmanager.py +0 -0
  199. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/securityhub.py +0 -0
  200. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/sqs.py +0 -0
  201. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/ssm.py +0 -0
  202. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/util/__init__.py +0 -0
  203. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/util/arns.py +0 -0
  204. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/aws/util/common.py +0 -0
  205. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/__init__.py +0 -0
  206. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/cosmosdb.py +0 -0
  207. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/sql.py +0 -0
  208. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/storage.py +0 -0
  209. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/subscription.py +0 -0
  210. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/tenant.py +0 -0
  211. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/util/__init__.py +0 -0
  212. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/azure/util/credentials.py +0 -0
  213. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/bigfix/__init__.py +0 -0
  214. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/bigfix/computers.py +0 -0
  215. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/create_indexes.py +0 -0
  216. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crowdstrike/__init__.py +0 -0
  217. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crowdstrike/spotlight.py +0 -0
  218. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crowdstrike/util.py +0 -0
  219. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crxcavator/__init__.py +0 -0
  220. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/crxcavator/crxcavator.py +0 -0
  221. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/cve/__init__.py +0 -0
  222. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/digitalocean/__init__.py +0 -0
  223. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/digitalocean/compute.py +0 -0
  224. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/digitalocean/management.py +0 -0
  225. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/digitalocean/platform.py +0 -0
  226. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/dns.py +0 -0
  227. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/__init__.py +0 -0
  228. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/api_host.py +0 -0
  229. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/endpoints.py +0 -0
  230. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/groups.py +0 -0
  231. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/phones.py +0 -0
  232. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/tokens.py +0 -0
  233. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/users.py +0 -0
  234. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/duo/web_authn_credentials.py +0 -0
  235. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/__init__.py +0 -0
  236. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/compute.py +0 -0
  237. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/crm.py +0 -0
  238. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/dns.py +0 -0
  239. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/gke.py +0 -0
  240. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gcp/storage.py +0 -0
  241. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/github/__init__.py +0 -0
  242. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/github/repos.py +0 -0
  243. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/github/teams.py +0 -0
  244. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/github/users.py +0 -0
  245. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/github/util.py +0 -0
  246. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gsuite/__init__.py +0 -0
  247. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/gsuite/api.py +0 -0
  248. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/jamf/__init__.py +0 -0
  249. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/jamf/computers.py +0 -0
  250. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/jamf/util.py +0 -0
  251. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kandji/__init__.py +0 -0
  252. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kandji/devices.py +0 -0
  253. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/__init__.py +0 -0
  254. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/namespaces.py +0 -0
  255. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/pods.py +0 -0
  256. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/secrets.py +0 -0
  257. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/services.py +0 -0
  258. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/kubernetes/util.py +0 -0
  259. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/lastpass/__init__.py +0 -0
  260. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/lastpass/users.py +0 -0
  261. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/oci/__init__.py +0 -0
  262. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/oci/iam.py +0 -0
  263. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/oci/organizations.py +0 -0
  264. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/oci/utils.py +0 -0
  265. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/__init__.py +0 -0
  266. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/applications.py +0 -0
  267. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/awssaml.py +0 -0
  268. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/factors.py +0 -0
  269. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/groups.py +0 -0
  270. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/organization.py +0 -0
  271. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/origins.py +0 -0
  272. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/roles.py +0 -0
  273. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/sync_state.py +0 -0
  274. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/users.py +0 -0
  275. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/okta/utils.py +0 -0
  276. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/__init__.py +0 -0
  277. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/escalation_policies.py +0 -0
  278. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/schedules.py +0 -0
  279. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/services.py +0 -0
  280. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/teams.py +0 -0
  281. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/users.py +0 -0
  282. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/pagerduty/vendors.py +0 -0
  283. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/semgrep/__init__.py +0 -0
  284. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/intel/semgrep/findings.py +0 -0
  285. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/__init__.py +0 -0
  286. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/__init__.py +0 -0
  287. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/dynamodb/__init__.py +0 -0
  288. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/dynamodb/gsi.py +0 -0
  289. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/dynamodb/tables.py +0 -0
  290. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/__init__.py +0 -0
  291. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/images.py +0 -0
  292. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/instances.py +0 -0
  293. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/keypairs.py +0 -0
  294. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/loadbalancerv2.py +0 -0
  295. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/networkinterface_instance.py +0 -0
  296. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/networkinterfaces.py +0 -0
  297. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/privateip_networkinterface.py +0 -0
  298. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/reservations.py +0 -0
  299. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/securitygroup_instance.py +0 -0
  300. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/securitygroup_networkinterface.py +0 -0
  301. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/subnet_networkinterface.py +0 -0
  302. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ec2/volumes.py +0 -0
  303. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/eks/__init__.py +0 -0
  304. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/eks/clusters.py +0 -0
  305. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/emr.py +0 -0
  306. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/inspector/__init__.py +0 -0
  307. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/inspector/findings.py +0 -0
  308. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/inspector/packages.py +0 -0
  309. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ssm/__init__.py +0 -0
  310. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ssm/instance_information.py +0 -0
  311. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/aws/ssm/instance_patch.py +0 -0
  312. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/bigfix/__init__.py +0 -0
  313. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/bigfix/bigfix_computer.py +0 -0
  314. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/bigfix/bigfix_root.py +0 -0
  315. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/core/__init__.py +0 -0
  316. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/core/common.py +0 -0
  317. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/core/nodes.py +0 -0
  318. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/core/relationships.py +0 -0
  319. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/cve/__init__.py +0 -0
  320. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/cve/cve.py +0 -0
  321. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/cve/cve_feed.py +0 -0
  322. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/__init__.py +0 -0
  323. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/api_host.py +0 -0
  324. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/endpoint.py +0 -0
  325. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/group.py +0 -0
  326. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/phone.py +0 -0
  327. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/token.py +0 -0
  328. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/user.py +0 -0
  329. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/duo/web_authn_credential.py +0 -0
  330. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/github/__init__.py +0 -0
  331. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/github/teams.py +0 -0
  332. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/kandji/__init__.py +0 -0
  333. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/kandji/device.py +0 -0
  334. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/kandji/tenant.py +0 -0
  335. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/lastpass/__init__.py +0 -0
  336. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/lastpass/tenant.py +0 -0
  337. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/lastpass/user.py +0 -0
  338. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/semgrep/__init__.py +0 -0
  339. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/semgrep/deployment.py +0 -0
  340. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/semgrep/findings.py +0 -0
  341. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/models/semgrep/locations.py +0 -0
  342. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/py.typed +0 -0
  343. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/stats.py +0 -0
  344. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography/sync.py +0 -0
  345. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography.egg-info/dependency_links.txt +0 -0
  346. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography.egg-info/entry_points.txt +0 -0
  347. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography.egg-info/requires.txt +0 -0
  348. {cartography-0.92.0rc1 → cartography-0.93.0}/cartography.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cartography
3
- Version: 0.92.0rc1
3
+ Version: 0.93.0
4
4
  Summary: Explore assets and their relationships across your technical infrastructure.
5
5
  Home-page: https://www.github.com/lyft/cartography
6
6
  Maintainer: Lyft
@@ -200,12 +200,6 @@ CREATE INDEX IF NOT EXISTS FOR (n:KMSGrant) ON (n.lastupdated);
200
200
  CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.id);
201
201
  CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.name);
202
202
  CREATE INDEX IF NOT EXISTS FOR (n:LaunchConfiguration) ON (n.lastupdated);
203
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.id);
204
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.name);
205
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplate) ON (n.lastupdated);
206
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.id);
207
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.name);
208
- CREATE INDEX IF NOT EXISTS FOR (n:LaunchTemplateVersion) ON (n.lastupdated);
209
203
  CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.dnsname);
210
204
  CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.id);
211
205
  CREATE INDEX IF NOT EXISTS FOR (n:LoadBalancer) ON (n.lastupdated);
@@ -51,6 +51,7 @@ def get_images(boto3_session: boto3.session.Session, region: str, image_ids: Lis
51
51
  logger.warning(f"Failed retrieve images for region - {region}. Error - {e}")
52
52
  try:
53
53
  if image_ids:
54
+ image_ids = [image_id for image_id in image_ids if image_id is not None]
54
55
  images_in_use = client.describe_images(ImageIds=image_ids)['Images']
55
56
  # Ensure we're not adding duplicates
56
57
  _ids = [image["ImageId"] for image in images]
@@ -0,0 +1,162 @@
1
+ import logging
2
+ from typing import Any
3
+
4
+ import boto3
5
+ import neo4j
6
+ from botocore.exceptions import ClientError
7
+
8
+ from .util import get_botocore_config
9
+ from cartography.client.core.tx import load
10
+ from cartography.graph.job import GraphJob
11
+ from cartography.models.aws.ec2.launch_template_versions import LaunchTemplateVersionSchema
12
+ from cartography.models.aws.ec2.launch_templates import LaunchTemplateSchema
13
+ from cartography.util import aws_handle_regions
14
+ from cartography.util import timeit
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ @timeit
20
+ @aws_handle_regions
21
+ def get_launch_templates(
22
+ boto3_session: boto3.session.Session,
23
+ region: str,
24
+ ) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]:
25
+ client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
26
+ paginator = client.get_paginator('describe_launch_templates')
27
+ templates: list[dict[str, Any]] = []
28
+ template_versions: list[dict[str, Any]] = []
29
+ for page in paginator.paginate():
30
+ paginated_templates = page['LaunchTemplates']
31
+ for template in paginated_templates:
32
+ template_id = template['LaunchTemplateId']
33
+ try:
34
+ versions = get_launch_template_versions_by_template(boto3_session, template_id, region)
35
+ except ClientError as e:
36
+ logger.warning(
37
+ f"Failed to get launch template versions for {template_id}: {e}",
38
+ exc_info=True,
39
+ )
40
+ versions = []
41
+ # Using a key not defined in latest boto3 documentation
42
+ template_versions.extend(versions)
43
+ templates.extend(paginated_templates)
44
+ return templates, template_versions
45
+
46
+
47
+ def transform_launch_templates(templates: list[dict[str, Any]]) -> list[dict[str, Any]]:
48
+ result: list[dict[str, Any]] = []
49
+ for template in templates:
50
+ current = template.copy()
51
+ current['CreateTime'] = str(int(current['CreateTime'].timestamp()))
52
+ result.append(current)
53
+ return result
54
+
55
+
56
+ @timeit
57
+ def load_launch_templates(
58
+ neo4j_session: neo4j.Session,
59
+ data: list[dict[str, Any]],
60
+ region: str,
61
+ current_aws_account_id: str,
62
+ update_tag: int,
63
+ ) -> None:
64
+ load(
65
+ neo4j_session,
66
+ LaunchTemplateSchema(),
67
+ data,
68
+ Region=region,
69
+ AWS_ID=current_aws_account_id,
70
+ lastupdated=update_tag,
71
+ )
72
+
73
+
74
+ @timeit
75
+ @aws_handle_regions
76
+ def get_launch_template_versions_by_template(
77
+ boto3_session: boto3.session.Session,
78
+ template: str,
79
+ region: str,
80
+ ) -> list[dict[str, Any]]:
81
+ client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
82
+ v_paginator = client.get_paginator('describe_launch_template_versions')
83
+ template_versions = []
84
+ for versions in v_paginator.paginate(LaunchTemplateId=template):
85
+ template_versions.extend(versions['LaunchTemplateVersions'])
86
+ return template_versions
87
+
88
+
89
+ def transform_launch_template_versions(versions: list[dict[str, Any]]) -> list[dict[str, Any]]:
90
+ result: list[dict[str, Any]] = []
91
+ for version in versions:
92
+ current = version.copy()
93
+
94
+ # Reformat some fields
95
+ current['Id'] = f"{version['LaunchTemplateId']}-{version['VersionNumber']}"
96
+ current['CreateTime'] = str(int(version['CreateTime'].timestamp()))
97
+
98
+ # Handle the nested object returned from boto
99
+ ltd = version['LaunchTemplateData']
100
+ current['KernelId'] = ltd.get('KernelId')
101
+ current['EbsOptimized'] = ltd.get('EbsOptimized')
102
+ current['IamInstanceProfileArn'] = ltd.get('IamInstanceProfileArn')
103
+ current['IamInstanceProfileName'] = ltd.get('IamInstanceProfileName')
104
+ current['ImageId'] = ltd.get('ImageId')
105
+ current['InstanceType'] = ltd.get('InstanceType')
106
+ current['KeyName'] = ltd.get('KeyName')
107
+ current['MonitoringEnabled'] = ltd.get('MonitoringEnabled')
108
+ current['RamdiskId'] = ltd.get('RamdiskId')
109
+ current['DisableApiTermination'] = ltd.get('DisableApiTermination')
110
+ current['InstanceInitiatedShutDownBehavior'] = ltd.get('InstanceInitiatedShutDownBehavior')
111
+ current['SecurityGroupIds'] = ltd.get('SecurityGroupIds')
112
+ current['SecurityGroups'] = ltd.get('SecurityGroups')
113
+ result.append(current)
114
+ return result
115
+
116
+
117
+ @timeit
118
+ def load_launch_template_versions(
119
+ neo4j_session: neo4j.Session,
120
+ data: list[dict[str, Any]],
121
+ region: str,
122
+ current_aws_account_id: str,
123
+ update_tag: int,
124
+ ) -> None:
125
+ load(
126
+ neo4j_session,
127
+ LaunchTemplateVersionSchema(),
128
+ data,
129
+ Region=region,
130
+ AWS_ID=current_aws_account_id,
131
+ lastupdated=update_tag,
132
+ )
133
+
134
+
135
+ @timeit
136
+ def cleanup(neo4j_session: neo4j.Session, common_job_parameters: dict[str, Any]) -> None:
137
+ logger.info("Running launch template cleanup job.")
138
+ cleanup_job = GraphJob.from_node_schema(LaunchTemplateSchema(), common_job_parameters)
139
+ cleanup_job.run(neo4j_session)
140
+
141
+ cleanup_job = GraphJob.from_node_schema(LaunchTemplateVersionSchema(), common_job_parameters)
142
+ cleanup_job.run(neo4j_session)
143
+
144
+
145
+ @timeit
146
+ def sync_ec2_launch_templates(
147
+ neo4j_session: neo4j.Session,
148
+ boto3_session: boto3.session.Session,
149
+ regions: list[str],
150
+ current_aws_account_id: str,
151
+ update_tag: int,
152
+ common_job_parameters: dict[str, Any],
153
+ ) -> None:
154
+ for region in regions:
155
+ logger.info(f"Syncing launch templates for region '{region}' in account '{current_aws_account_id}'.")
156
+ templates, versions = get_launch_templates(boto3_session, region)
157
+ templates = transform_launch_templates(templates)
158
+ load_launch_templates(neo4j_session, templates, region, current_aws_account_id, update_tag)
159
+ versions = transform_launch_template_versions(versions)
160
+ load_launch_template_versions(neo4j_session, versions, region, current_aws_account_id, update_tag)
161
+
162
+ cleanup(neo4j_session, common_job_parameters)
@@ -227,6 +227,7 @@ def get_account_access_key_data(boto3_session: boto3.session.Session, username:
227
227
  logger.warning(
228
228
  f"Could not get access key for user {username} due to NoSuchEntityException; skipping.",
229
229
  )
230
+ return access_keys
230
231
  for access_key in access_keys['AccessKeyMetadata']:
231
232
  access_key_id = access_key['AccessKeyId']
232
233
  last_used_info = client.get_access_key_last_used(
@@ -43,7 +43,7 @@ def load_vms(neo4j_session: neo4j.Session, subscription_id: str, vm_list: List[D
43
43
  v.resourcegroup = vm.resource_group
44
44
  SET v.lastupdated = $update_tag, v.name = vm.name,
45
45
  v.plan = vm.plan.product, v.size = vm.hardware_profile.vm_size,
46
- v.license_type=vm.license_type, v.computer_name=vm.os_profile.computer_ame,
46
+ v.license_type=vm.license_type, v.computer_name=vm.os_profile.computer_name,
47
47
  v.identity_type=vm.identity.type, v.zones=vm.zones,
48
48
  v.ultra_ssd_enabled=vm.additional_capabilities.ultra_ssd_enabled,
49
49
  v.priority=vm.priority, v.eviction_policy=vm.eviction_policy
@@ -76,9 +76,9 @@ def load_host_data(
76
76
  )
77
77
 
78
78
 
79
- def get_host_ids(client: Hosts) -> List[List[str]]:
79
+ def get_host_ids(client: Hosts, crowdstrikeapi_filter: str = '', crowdstrikeapi_limit: int = 5000) -> List[List[str]]:
80
80
  ids = []
81
- parameters = {"filter": 'service_provider:"AWS_EC2"', "limit": 400}
81
+ parameters = {"filter": crowdstrikeapi_filter, "limit": crowdstrikeapi_limit}
82
82
  response = client.QueryDevicesByFilter(parameters=parameters)
83
83
  body = response.get("body", {})
84
84
  resources = body.get("resources", [])
@@ -23,7 +23,8 @@ from cartography.util import timeit
23
23
  logger = logging.getLogger(__name__)
24
24
 
25
25
  MAX_RETRIES = 3
26
- REQUEST_TIMEOUT = 10
26
+ # Connect and read timeouts of 60 seconds each; see https://requests.readthedocs.io/en/master/user/advanced/#timeouts
27
+ CONNECT_AND_READ_TIMEOUT = (60, 60)
27
28
  CVE_FEED_ID = "NIST_NVD"
28
29
  BATCH_SIZE_DAYS = 120
29
30
  RESULTS_PER_PAGE = 2000
@@ -87,7 +88,7 @@ def _call_cves_api(url: str, api_key: str, params: Dict[str, Any]) -> Dict[Any,
87
88
  while params["resultsPerPage"] > 0 or params["startIndex"] < totalResults:
88
89
  try:
89
90
  res = requests.get(
90
- url, params=params, headers=headers, timeout=REQUEST_TIMEOUT,
91
+ url, params=params, headers=headers, timeout=CONNECT_AND_READ_TIMEOUT,
91
92
  )
92
93
  res.raise_for_status()
93
94
  except requests.exceptions.HTTPError:
@@ -0,0 +1,81 @@
1
+ from dataclasses import dataclass
2
+
3
+ from cartography.models.core.common import PropertyRef
4
+ from cartography.models.core.nodes import CartographyNodeProperties
5
+ from cartography.models.core.nodes import CartographyNodeSchema
6
+ from cartography.models.core.relationships import CartographyRelProperties
7
+ from cartography.models.core.relationships import CartographyRelSchema
8
+ from cartography.models.core.relationships import LinkDirection
9
+ from cartography.models.core.relationships import make_target_node_matcher
10
+ from cartography.models.core.relationships import OtherRelationships
11
+ from cartography.models.core.relationships import TargetNodeMatcher
12
+
13
+
14
+ @dataclass(frozen=True)
15
+ class LaunchTemplateVersionNodeProperties(CartographyNodeProperties):
16
+ id: PropertyRef = PropertyRef('Id')
17
+ name: PropertyRef = PropertyRef('LaunchTemplateName')
18
+ create_time: PropertyRef = PropertyRef('CreateTime')
19
+ created_by: PropertyRef = PropertyRef('CreatedBy')
20
+ default_version: PropertyRef = PropertyRef('DefaultVersion')
21
+ version_number: PropertyRef = PropertyRef('VersionNumber')
22
+ version_description: PropertyRef = PropertyRef('VersionDescription')
23
+ kernel_id: PropertyRef = PropertyRef('KernelId')
24
+ ebs_optimized: PropertyRef = PropertyRef('EbsOptimized')
25
+ iam_instance_profile_arn: PropertyRef = PropertyRef('IamInstanceProfileArn')
26
+ iam_instance_profile_name: PropertyRef = PropertyRef('IamInstanceProfileName')
27
+ image_id: PropertyRef = PropertyRef('ImageId')
28
+ instance_type: PropertyRef = PropertyRef('InstanceType')
29
+ key_name: PropertyRef = PropertyRef('KeyName')
30
+ monitoring_enabled: PropertyRef = PropertyRef('MonitoringEnabled')
31
+ ramdisk_id: PropertyRef = PropertyRef('RamdiskId')
32
+ disable_api_termination: PropertyRef = PropertyRef('DisableApiTermination')
33
+ instance_initiated_shutdown_behavior: PropertyRef = PropertyRef('InstanceInitiatedShutdownBehavior')
34
+ security_group_ids: PropertyRef = PropertyRef('SecurityGroupIds')
35
+ security_groups: PropertyRef = PropertyRef('SecurityGroups')
36
+ region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
37
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
38
+
39
+
40
+ @dataclass(frozen=True)
41
+ class LaunchTemplateVersionToAwsAccountRelProperties(CartographyRelProperties):
42
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
43
+
44
+
45
+ @dataclass(frozen=True)
46
+ class LaunchTemplateVersionToAWSAccount(CartographyRelSchema):
47
+ target_node_label: str = 'AWSAccount'
48
+ target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
49
+ {'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
50
+ )
51
+ direction: LinkDirection = LinkDirection.INWARD
52
+ rel_label: str = "RESOURCE"
53
+ properties: LaunchTemplateVersionToAwsAccountRelProperties = LaunchTemplateVersionToAwsAccountRelProperties()
54
+
55
+
56
+ @dataclass(frozen=True)
57
+ class LaunchTemplateVersionToLTRelProperties(CartographyRelProperties):
58
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
59
+
60
+
61
+ @dataclass(frozen=True)
62
+ class LaunchTemplateVersionToLT(CartographyRelSchema):
63
+ target_node_label: str = 'LaunchTemplate'
64
+ target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
65
+ {'id': PropertyRef('LaunchTemplateId')},
66
+ )
67
+ direction: LinkDirection = LinkDirection.INWARD
68
+ rel_label: str = "VERSION"
69
+ properties: LaunchTemplateVersionToLTRelProperties = LaunchTemplateVersionToLTRelProperties()
70
+
71
+
72
+ @dataclass(frozen=True)
73
+ class LaunchTemplateVersionSchema(CartographyNodeSchema):
74
+ label: str = 'LaunchTemplateVersion'
75
+ properties: LaunchTemplateVersionNodeProperties = LaunchTemplateVersionNodeProperties()
76
+ sub_resource_relationship: LaunchTemplateVersionToAWSAccount = LaunchTemplateVersionToAWSAccount()
77
+ other_relationships: OtherRelationships = OtherRelationships(
78
+ [
79
+ LaunchTemplateVersionToLT(),
80
+ ],
81
+ )
@@ -0,0 +1,46 @@
1
+ from dataclasses import dataclass
2
+
3
+ from cartography.models.core.common import PropertyRef
4
+ from cartography.models.core.nodes import CartographyNodeProperties
5
+ from cartography.models.core.nodes import CartographyNodeSchema
6
+ from cartography.models.core.relationships import CartographyRelProperties
7
+ from cartography.models.core.relationships import CartographyRelSchema
8
+ from cartography.models.core.relationships import LinkDirection
9
+ from cartography.models.core.relationships import make_target_node_matcher
10
+ from cartography.models.core.relationships import TargetNodeMatcher
11
+
12
+
13
+ @dataclass(frozen=True)
14
+ class LaunchTemplateNodeProperties(CartographyNodeProperties):
15
+ id: PropertyRef = PropertyRef('LaunchTemplateId')
16
+ launch_template_id: PropertyRef = PropertyRef('LaunchTemplateId')
17
+ name: PropertyRef = PropertyRef('LaunchTemplateName')
18
+ create_time: PropertyRef = PropertyRef('CreateTime')
19
+ created_by: PropertyRef = PropertyRef('CreatedBy')
20
+ default_version_number: PropertyRef = PropertyRef('DefaultVersionNumber')
21
+ latest_version_number: PropertyRef = PropertyRef('LatestVersionNumber')
22
+ region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
23
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
24
+
25
+
26
+ @dataclass(frozen=True)
27
+ class LaunchTemplateToAwsAccountRelProperties(CartographyRelProperties):
28
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
29
+
30
+
31
+ @dataclass(frozen=True)
32
+ class LaunchTemplateToAWSAccount(CartographyRelSchema):
33
+ target_node_label: str = 'AWSAccount'
34
+ target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
35
+ {'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
36
+ )
37
+ direction: LinkDirection = LinkDirection.INWARD
38
+ rel_label: str = "RESOURCE"
39
+ properties: LaunchTemplateToAwsAccountRelProperties = LaunchTemplateToAwsAccountRelProperties()
40
+
41
+
42
+ @dataclass(frozen=True)
43
+ class LaunchTemplateSchema(CartographyNodeSchema):
44
+ label: str = 'LaunchTemplate'
45
+ properties: LaunchTemplateNodeProperties = LaunchTemplateNodeProperties()
46
+ sub_resource_relationship: LaunchTemplateToAWSAccount = LaunchTemplateToAWSAccount()
@@ -15,7 +15,7 @@ from cartography.models.core.relationships import TargetNodeMatcher
15
15
  class EC2SubnetInstanceNodeProperties(CartographyNodeProperties):
16
16
  # arn: PropertyRef = PropertyRef('Arn', extra_index=True) TODO use arn; issue #1024
17
17
  id: PropertyRef = PropertyRef('SubnetId')
18
- subnet_id: PropertyRef = PropertyRef('SubnetId', extra_index=True)
18
+ subnetid: PropertyRef = PropertyRef('SubnetId', extra_index=True)
19
19
  region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
20
20
  lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
21
21
 
@@ -225,7 +225,7 @@ If not, then the AWS datatype somehow does not have this key.''',
225
225
  return items
226
226
 
227
227
 
228
- AWSGetFunc = TypeVar('AWSGetFunc', bound=Callable[..., List])
228
+ AWSGetFunc = TypeVar('AWSGetFunc', bound=Callable[..., Iterable])
229
229
 
230
230
  # fix for AWS TooManyRequestsException
231
231
  # https://github.com/lyft/cartography/issues/297
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cartography
3
- Version: 0.92.0rc1
3
+ Version: 0.93.0
4
4
  Summary: Explore assets and their relationships across your technical infrastructure.
5
5
  Home-page: https://www.github.com/lyft/cartography
6
6
  Maintainer: Lyft
@@ -47,7 +47,6 @@ cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json
47
47
  cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json
48
48
  cartography/data/jobs/cleanup/aws_import_config_cleanup.json
49
49
  cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json
50
- cartography/data/jobs/cleanup/aws_import_ec2_launch_templates_cleanup.json
51
50
  cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json
52
51
  cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json
53
52
  cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json
@@ -294,6 +293,8 @@ cartography/models/aws/ec2/__init__.py
294
293
  cartography/models/aws/ec2/images.py
295
294
  cartography/models/aws/ec2/instances.py
296
295
  cartography/models/aws/ec2/keypairs.py
296
+ cartography/models/aws/ec2/launch_template_versions.py
297
+ cartography/models/aws/ec2/launch_templates.py
297
298
  cartography/models/aws/ec2/loadbalancerv2.py
298
299
  cartography/models/aws/ec2/networkinterface_instance.py
299
300
  cartography/models/aws/ec2/networkinterfaces.py
@@ -68,6 +68,11 @@ ignore_errors = true
68
68
  [coverage:report]
69
69
  fail_under = 30
70
70
 
71
+ [tool:pytest]
72
+ addopts = --cov-config=setup.cfg --no-cov-on-fail --cov-report=term-missing:skip-covered --strict-markers
73
+ markers =
74
+ flaky: mark test as flaky
75
+
71
76
  [egg_info]
72
77
  tag_build =
73
78
  tag_date = 0
@@ -1,7 +1,7 @@
1
1
  from setuptools import find_packages
2
2
  from setuptools import setup
3
3
 
4
- __version__ = '0.92.0rc1'
4
+ __version__ = '0.93.0'
5
5
 
6
6
 
7
7
  setup(
@@ -1,13 +0,0 @@
1
- {
2
- "statements": [{
3
- "query": "MATCH (n:LaunchTemplateVersion)<-[:VERSION]-(:LaunchTemplate)<-[:RESOURCE]-(:AWSAccount{id: $AWS_ID}) WHERE n.lastupdated <> $UPDATE_TAG WITH n LIMIT $LIMIT_SIZE DETACH DELETE (n)",
4
- "iterative": true,
5
- "iterationsize": 100
6
- },
7
- {
8
- "query": "MATCH (n:LaunchTemplate)<-[:RESOURCE]-(:AWSAccount{id: $AWS_ID}) WHERE n.lastupdated <> $UPDATE_TAG WITH n LIMIT $LIMIT_SIZE DETACH DELETE (n)",
9
- "iterative": true,
10
- "iterationsize": 100
11
- }],
12
- "name": "cleanup LaunchTemplate"
13
- }
@@ -1,115 +0,0 @@
1
- import logging
2
- from typing import Dict
3
- from typing import List
4
-
5
- import boto3
6
- import neo4j
7
-
8
- from .util import get_botocore_config
9
- from cartography.util import aws_handle_regions
10
- from cartography.util import run_cleanup_job
11
- from cartography.util import timeit
12
-
13
- logger = logging.getLogger(__name__)
14
-
15
-
16
- @timeit
17
- @aws_handle_regions
18
- def get_launch_templates(boto3_session: boto3.session.Session, region: str) -> List[Dict]:
19
- client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
20
- paginator = client.get_paginator('describe_launch_templates')
21
- templates: List[Dict] = []
22
- for page in paginator.paginate():
23
- templates.extend(page['LaunchTemplates'])
24
- for template in templates:
25
- template_versions: List[Dict] = []
26
- v_paginator = client.get_paginator('describe_launch_template_versions')
27
- for versions in v_paginator.paginate(LaunchTemplateId=template['LaunchTemplateId']):
28
- template_versions.extend(versions["LaunchTemplateVersions"])
29
- template["_template_versions"] = template_versions
30
- return templates
31
-
32
-
33
- @timeit
34
- def load_launch_templates(
35
- neo4j_session: neo4j.Session, data: List[Dict], region: str, current_aws_account_id: str, update_tag: int,
36
- ) -> None:
37
- ingest_lt = """
38
- UNWIND $launch_templates as lt
39
- MERGE (template:LaunchTemplate{id: lt.LaunchTemplateId})
40
- ON CREATE SET template.firstseen = timestamp(),
41
- template.name = lt.LaunchTemplateName,
42
- template.create_time = lt.CreateTime,
43
- template.created_by = lt.CreatedBy
44
- SET template.default_version_number = lt.DefaultVersionNumber,
45
- template.latest_version_number = lt.LatestVersionNumber,
46
- template.lastupdated = $update_tag,
47
- template.region=$Region
48
- WITH template, lt._template_versions as versions
49
- MATCH (aa:AWSAccount{id: $AWS_ACCOUNT_ID})
50
- MERGE (aa)-[r:RESOURCE]->(template)
51
- ON CREATE SET r.firstseen = timestamp()
52
- SET r.lastupdated = $update_tag
53
- WITH template, versions
54
- UNWIND versions as tv
55
- MERGE (version:LaunchTemplateVersion{id: tv.LaunchTemplateId + '-' + tv.VersionNumber})
56
- ON CREATE SET version.firstseen = timestamp(),
57
- version.name = tv.LaunchTemplateName,
58
- version.create_time = tv.CreateTime,
59
- version.created_by = tv.CreatedBy,
60
- version.default_version = tv.DefaultVersion,
61
- version.version_number = tv.VersionNumber,
62
- version.version_description = tv.VersionDescription,
63
- version.kernel_id = tv.LaunchTemplateData.KernelId,
64
- version.ebs_optimized = tv.LaunchTemplateData.EbsOptimized,
65
- version.iam_instance_profile_arn = tv.LaunchTemplateData.IamInstanceProfile.Arn,
66
- version.iam_instance_profile_name = tv.LaunchTemplateData.IamInstanceProfile.Name,
67
- version.image_id = tv.LaunchTemplateData.ImageId,
68
- version.instance_type = tv.LaunchTemplateData.InstanceType,
69
- version.key_name = tv.LaunchTemplateData.KeyName,
70
- version.monitoring_enabled = tv.LaunchTemplateData.Monitoring.Enabled,
71
- version.ramdisk_id = tv.LaunchTemplateData.RamdiskId,
72
- version.disable_api_termination = tv.LaunchTemplateData.DisableApiTermination,
73
- version.instance_initiated_shutdown_behavior = tv.LaunchTemplateData.InstanceInitiatedShutdownBehavior,
74
- version.security_group_ids = tv.LaunchTemplateData.SecurityGroupIds,
75
- version.security_groups = tv.LaunchTemplateData.SecurityGroups
76
- SET version.lastupdated = $update_tag,
77
- version.region=$Region
78
- WITH template, version
79
- MERGE (template)-[r:VERSION]->(version)
80
- ON CREATE SET r.firstseen = timestamp()
81
- SET r.lastupdated = $update_tag
82
- """
83
- for lt in data:
84
- lt['CreateTime'] = str(int(lt['CreateTime'].timestamp()))
85
- for tv in lt["_template_versions"]:
86
- tv['CreateTime'] = str(int(tv['CreateTime'].timestamp()))
87
-
88
- neo4j_session.run(
89
- ingest_lt,
90
- launch_templates=data,
91
- AWS_ACCOUNT_ID=current_aws_account_id,
92
- Region=region,
93
- update_tag=update_tag,
94
- )
95
-
96
-
97
- @timeit
98
- def cleanup_ec2_launch_templates(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
99
- run_cleanup_job(
100
- 'aws_import_ec2_launch_templates_cleanup.json',
101
- neo4j_session,
102
- common_job_parameters,
103
- )
104
-
105
-
106
- @timeit
107
- def sync_ec2_launch_templates(
108
- neo4j_session: neo4j.Session, boto3_session: boto3.session.Session, regions: List[str],
109
- current_aws_account_id: str, update_tag: int, common_job_parameters: Dict,
110
- ) -> None:
111
- for region in regions:
112
- logger.debug("Syncing launch templates for region '%s' in account '%s'.", region, current_aws_account_id)
113
- data = get_launch_templates(boto3_session, region)
114
- load_launch_templates(neo4j_session, data, region, current_aws_account_id, update_tag)
115
- cleanup_ec2_launch_templates(neo4j_session, common_job_parameters)
File without changes
File without changes
File without changes