aws-sdk-securityhub 1.51.0 → 1.52.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f0e071dba069075a4d2eaa562a957baf7cb84b626d395a57efcfd9094e28826
4
- data.tar.gz: b8c7fbc7ccd6d6e2fc58178392bc9e67a9858f10a7e4601d8a0521561430ce16
3
+ metadata.gz: 27b7ec646e7ed9690d4d7026bd4f0fba112ec931f00f528af7592d104facafa2
4
+ data.tar.gz: 153dd7fe21a853f334989a3d82804b9b97dd7395849aa3b40a25f32e9f07469e
5
5
  SHA512:
6
- metadata.gz: f34876210029e4094414957392989df04ec419df4a1b7e67e800156fd790bcbb59e5edf556ef2702a70e45d4262fbc100e4e2d0e30d9e2a2e8fe1f0973c83c2f
7
- data.tar.gz: ac34490470bf9ce0eca91dc35aa6cad0108a9815da585d3dbf4a56574c826fe30f7eba465b6c8bf57c09ee0fc0d69414ad46a0199b034fdff40eb62900bd9e2e
6
+ metadata.gz: f2e86143b1bf607bf62807640128a9bb2c7bdf119b5e18139d6328b8cab3636b593b244b54963054fccee984f0b8b009ca3b9b07bd46bdfe715e2af84500b4e7
7
+ data.tar.gz: 4a39341f0c061619aec1d49fda81627a921074d9eb26c2d1eeddeafb731d921f699f56758f92069d1be518d3c34d109f0cd11860e6a097f9c32cae3f82d21357
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.52.0 (2021-09-02)
5
+ ------------------
6
+
7
+ * Feature - New ASFF Resources: AwsAutoScalingLaunchConfiguration, AwsEc2VpnConnection, AwsEcrContainerImage. Added KeyRotationStatus to AwsKmsKey. Added AccessControlList, BucketLoggingConfiguration,BucketNotificationConfiguration and BucketNotificationConfiguration to AwsS3Bucket.
8
+
4
9
  1.51.0 (2021-09-01)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.51.0
1
+ 1.52.0
@@ -1296,6 +1296,53 @@ module Aws::SecurityHub
1296
1296
  # ignore_public_acls: false,
1297
1297
  # restrict_public_buckets: false,
1298
1298
  # },
1299
+ # access_control_list: "NonEmptyString",
1300
+ # bucket_logging_configuration: {
1301
+ # destination_bucket_name: "NonEmptyString",
1302
+ # log_file_prefix: "NonEmptyString",
1303
+ # },
1304
+ # bucket_website_configuration: {
1305
+ # error_document: "NonEmptyString",
1306
+ # index_document_suffix: "NonEmptyString",
1307
+ # redirect_all_requests_to: {
1308
+ # hostname: "NonEmptyString",
1309
+ # protocol: "NonEmptyString",
1310
+ # },
1311
+ # routing_rules: [
1312
+ # {
1313
+ # condition: {
1314
+ # http_error_code_returned_equals: "NonEmptyString",
1315
+ # key_prefix_equals: "NonEmptyString",
1316
+ # },
1317
+ # redirect: {
1318
+ # hostname: "NonEmptyString",
1319
+ # http_redirect_code: "NonEmptyString",
1320
+ # protocol: "NonEmptyString",
1321
+ # replace_key_prefix_with: "NonEmptyString",
1322
+ # replace_key_with: "NonEmptyString",
1323
+ # },
1324
+ # },
1325
+ # ],
1326
+ # },
1327
+ # bucket_notification_configuration: {
1328
+ # configurations: [
1329
+ # {
1330
+ # events: ["NonEmptyString"],
1331
+ # filter: {
1332
+ # s3_key_filter: {
1333
+ # filter_rules: [
1334
+ # {
1335
+ # name: "Prefix", # accepts Prefix, Suffix
1336
+ # value: "NonEmptyString",
1337
+ # },
1338
+ # ],
1339
+ # },
1340
+ # },
1341
+ # destination: "NonEmptyString",
1342
+ # type: "NonEmptyString",
1343
+ # },
1344
+ # ],
1345
+ # },
1299
1346
  # },
1300
1347
  # aws_s3_account_public_access_block: {
1301
1348
  # block_public_acls: false,
@@ -1983,6 +2030,7 @@ module Aws::SecurityHub
1983
2030
  # key_state: "NonEmptyString",
1984
2031
  # origin: "NonEmptyString",
1985
2032
  # description: "NonEmptyString",
2033
+ # key_rotation_status: false,
1986
2034
  # },
1987
2035
  # aws_lambda_function: {
1988
2036
  # code: {
@@ -2674,6 +2722,99 @@ module Aws::SecurityHub
2674
2722
  # ],
2675
2723
  # task_definition: "NonEmptyString",
2676
2724
  # },
2725
+ # aws_auto_scaling_launch_configuration: {
2726
+ # associate_public_ip_address: false,
2727
+ # block_device_mappings: [
2728
+ # {
2729
+ # device_name: "NonEmptyString",
2730
+ # ebs: {
2731
+ # delete_on_termination: false,
2732
+ # encrypted: false,
2733
+ # iops: 1,
2734
+ # snapshot_id: "NonEmptyString",
2735
+ # volume_size: 1,
2736
+ # volume_type: "NonEmptyString",
2737
+ # },
2738
+ # no_device: false,
2739
+ # virtual_name: "NonEmptyString",
2740
+ # },
2741
+ # ],
2742
+ # classic_link_vpc_id: "NonEmptyString",
2743
+ # classic_link_vpc_security_groups: ["NonEmptyString"],
2744
+ # created_time: "NonEmptyString",
2745
+ # ebs_optimized: false,
2746
+ # iam_instance_profile: "NonEmptyString",
2747
+ # image_id: "NonEmptyString",
2748
+ # instance_monitoring: {
2749
+ # enabled: false,
2750
+ # },
2751
+ # instance_type: "NonEmptyString",
2752
+ # kernel_id: "NonEmptyString",
2753
+ # key_name: "NonEmptyString",
2754
+ # launch_configuration_name: "NonEmptyString",
2755
+ # placement_tenancy: "NonEmptyString",
2756
+ # ramdisk_id: "NonEmptyString",
2757
+ # security_groups: ["NonEmptyString"],
2758
+ # spot_price: "NonEmptyString",
2759
+ # user_data: "NonEmptyString",
2760
+ # },
2761
+ # aws_ec2_vpn_connection: {
2762
+ # vpn_connection_id: "NonEmptyString",
2763
+ # state: "NonEmptyString",
2764
+ # customer_gateway_id: "NonEmptyString",
2765
+ # customer_gateway_configuration: "NonEmptyString",
2766
+ # type: "NonEmptyString",
2767
+ # vpn_gateway_id: "NonEmptyString",
2768
+ # category: "NonEmptyString",
2769
+ # vgw_telemetry: [
2770
+ # {
2771
+ # accepted_route_count: 1,
2772
+ # certificate_arn: "NonEmptyString",
2773
+ # last_status_change: "NonEmptyString",
2774
+ # outside_ip_address: "NonEmptyString",
2775
+ # status: "NonEmptyString",
2776
+ # status_message: "NonEmptyString",
2777
+ # },
2778
+ # ],
2779
+ # options: {
2780
+ # static_routes_only: false,
2781
+ # tunnel_options: [
2782
+ # {
2783
+ # dpd_timeout_seconds: 1,
2784
+ # ike_versions: ["NonEmptyString"],
2785
+ # outside_ip_address: "NonEmptyString",
2786
+ # phase_1_dh_group_numbers: [1],
2787
+ # phase_1_encryption_algorithms: ["NonEmptyString"],
2788
+ # phase_1_integrity_algorithms: ["NonEmptyString"],
2789
+ # phase_1_lifetime_seconds: 1,
2790
+ # phase_2_dh_group_numbers: [1],
2791
+ # phase_2_encryption_algorithms: ["NonEmptyString"],
2792
+ # phase_2_integrity_algorithms: ["NonEmptyString"],
2793
+ # phase_2_lifetime_seconds: 1,
2794
+ # pre_shared_key: "NonEmptyString",
2795
+ # rekey_fuzz_percentage: 1,
2796
+ # rekey_margin_time_seconds: 1,
2797
+ # replay_window_size: 1,
2798
+ # tunnel_inside_cidr: "NonEmptyString",
2799
+ # },
2800
+ # ],
2801
+ # },
2802
+ # routes: [
2803
+ # {
2804
+ # destination_cidr_block: "NonEmptyString",
2805
+ # state: "NonEmptyString",
2806
+ # },
2807
+ # ],
2808
+ # transit_gateway_id: "NonEmptyString",
2809
+ # },
2810
+ # aws_ecr_container_image: {
2811
+ # registry_id: "NonEmptyString",
2812
+ # repository_name: "NonEmptyString",
2813
+ # architecture: "NonEmptyString",
2814
+ # image_digest: "NonEmptyString",
2815
+ # image_tags: ["NonEmptyString"],
2816
+ # image_published_at: "NonEmptyString",
2817
+ # },
2677
2818
  # },
2678
2819
  # },
2679
2820
  # ],
@@ -2714,6 +2855,8 @@ module Aws::SecurityHub
2714
2855
  # epoch: "NonEmptyString",
2715
2856
  # release: "NonEmptyString",
2716
2857
  # architecture: "NonEmptyString",
2858
+ # package_manager: "NonEmptyString",
2859
+ # file_path: "NonEmptyString",
2717
2860
  # },
2718
2861
  # ],
2719
2862
  # cvss: [
@@ -2721,6 +2864,13 @@ module Aws::SecurityHub
2721
2864
  # version: "NonEmptyString",
2722
2865
  # base_score: 1.0,
2723
2866
  # base_vector: "NonEmptyString",
2867
+ # source: "NonEmptyString",
2868
+ # adjustments: [
2869
+ # {
2870
+ # metric: "NonEmptyString",
2871
+ # reason: "NonEmptyString",
2872
+ # },
2873
+ # ],
2724
2874
  # },
2725
2875
  # ],
2726
2876
  # related_vulnerabilities: ["NonEmptyString"],
@@ -5750,6 +5900,29 @@ module Aws::SecurityHub
5750
5900
  # resp.findings[0].resources[0].details.aws_s3_bucket.public_access_block_configuration.block_public_policy #=> Boolean
5751
5901
  # resp.findings[0].resources[0].details.aws_s3_bucket.public_access_block_configuration.ignore_public_acls #=> Boolean
5752
5902
  # resp.findings[0].resources[0].details.aws_s3_bucket.public_access_block_configuration.restrict_public_buckets #=> Boolean
5903
+ # resp.findings[0].resources[0].details.aws_s3_bucket.access_control_list #=> String
5904
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_logging_configuration.destination_bucket_name #=> String
5905
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_logging_configuration.log_file_prefix #=> String
5906
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.error_document #=> String
5907
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.index_document_suffix #=> String
5908
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.redirect_all_requests_to.hostname #=> String
5909
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.redirect_all_requests_to.protocol #=> String
5910
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules #=> Array
5911
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].condition.http_error_code_returned_equals #=> String
5912
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].condition.key_prefix_equals #=> String
5913
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].redirect.hostname #=> String
5914
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].redirect.http_redirect_code #=> String
5915
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].redirect.protocol #=> String
5916
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].redirect.replace_key_prefix_with #=> String
5917
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_website_configuration.routing_rules[0].redirect.replace_key_with #=> String
5918
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations #=> Array
5919
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].events #=> Array
5920
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].events[0] #=> String
5921
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].filter.s3_key_filter.filter_rules #=> Array
5922
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].filter.s3_key_filter.filter_rules[0].name #=> String, one of "Prefix", "Suffix"
5923
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].filter.s3_key_filter.filter_rules[0].value #=> String
5924
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].destination #=> String
5925
+ # resp.findings[0].resources[0].details.aws_s3_bucket.bucket_notification_configuration.configurations[0].type #=> String
5753
5926
  # resp.findings[0].resources[0].details.aws_s3_account_public_access_block.block_public_acls #=> Boolean
5754
5927
  # resp.findings[0].resources[0].details.aws_s3_account_public_access_block.block_public_policy #=> Boolean
5755
5928
  # resp.findings[0].resources[0].details.aws_s3_account_public_access_block.ignore_public_acls #=> Boolean
@@ -6224,6 +6397,7 @@ module Aws::SecurityHub
6224
6397
  # resp.findings[0].resources[0].details.aws_kms_key.key_state #=> String
6225
6398
  # resp.findings[0].resources[0].details.aws_kms_key.origin #=> String
6226
6399
  # resp.findings[0].resources[0].details.aws_kms_key.description #=> String
6400
+ # resp.findings[0].resources[0].details.aws_kms_key.key_rotation_status #=> Boolean
6227
6401
  # resp.findings[0].resources[0].details.aws_lambda_function.code.s3_bucket #=> String
6228
6402
  # resp.findings[0].resources[0].details.aws_lambda_function.code.s3_key #=> String
6229
6403
  # resp.findings[0].resources[0].details.aws_lambda_function.code.s3_object_version #=> String
@@ -6709,6 +6883,85 @@ module Aws::SecurityHub
6709
6883
  # resp.findings[0].resources[0].details.aws_ecs_service.service_registries[0].port #=> Integer
6710
6884
  # resp.findings[0].resources[0].details.aws_ecs_service.service_registries[0].registry_arn #=> String
6711
6885
  # resp.findings[0].resources[0].details.aws_ecs_service.task_definition #=> String
6886
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.associate_public_ip_address #=> Boolean
6887
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings #=> Array
6888
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].device_name #=> String
6889
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.delete_on_termination #=> Boolean
6890
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.encrypted #=> Boolean
6891
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.iops #=> Integer
6892
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.snapshot_id #=> String
6893
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.volume_size #=> Integer
6894
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].ebs.volume_type #=> String
6895
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].no_device #=> Boolean
6896
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.block_device_mappings[0].virtual_name #=> String
6897
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.classic_link_vpc_id #=> String
6898
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.classic_link_vpc_security_groups #=> Array
6899
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.classic_link_vpc_security_groups[0] #=> String
6900
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.created_time #=> String
6901
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.ebs_optimized #=> Boolean
6902
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.iam_instance_profile #=> String
6903
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.image_id #=> String
6904
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.instance_monitoring.enabled #=> Boolean
6905
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.instance_type #=> String
6906
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.kernel_id #=> String
6907
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.key_name #=> String
6908
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.launch_configuration_name #=> String
6909
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.placement_tenancy #=> String
6910
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.ramdisk_id #=> String
6911
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.security_groups #=> Array
6912
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.security_groups[0] #=> String
6913
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.spot_price #=> String
6914
+ # resp.findings[0].resources[0].details.aws_auto_scaling_launch_configuration.user_data #=> String
6915
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vpn_connection_id #=> String
6916
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.state #=> String
6917
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.customer_gateway_id #=> String
6918
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.customer_gateway_configuration #=> String
6919
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.type #=> String
6920
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vpn_gateway_id #=> String
6921
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.category #=> String
6922
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry #=> Array
6923
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].accepted_route_count #=> Integer
6924
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].certificate_arn #=> String
6925
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].last_status_change #=> String
6926
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].outside_ip_address #=> String
6927
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].status #=> String
6928
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.vgw_telemetry[0].status_message #=> String
6929
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.static_routes_only #=> Boolean
6930
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options #=> Array
6931
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].dpd_timeout_seconds #=> Integer
6932
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].ike_versions #=> Array
6933
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].ike_versions[0] #=> String
6934
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].outside_ip_address #=> String
6935
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_dh_group_numbers #=> Array
6936
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_dh_group_numbers[0] #=> Integer
6937
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_encryption_algorithms #=> Array
6938
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_encryption_algorithms[0] #=> String
6939
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_integrity_algorithms #=> Array
6940
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_integrity_algorithms[0] #=> String
6941
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_1_lifetime_seconds #=> Integer
6942
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_dh_group_numbers #=> Array
6943
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_dh_group_numbers[0] #=> Integer
6944
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_encryption_algorithms #=> Array
6945
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_encryption_algorithms[0] #=> String
6946
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_integrity_algorithms #=> Array
6947
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_integrity_algorithms[0] #=> String
6948
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].phase_2_lifetime_seconds #=> Integer
6949
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].pre_shared_key #=> String
6950
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].rekey_fuzz_percentage #=> Integer
6951
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].rekey_margin_time_seconds #=> Integer
6952
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].replay_window_size #=> Integer
6953
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.options.tunnel_options[0].tunnel_inside_cidr #=> String
6954
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.routes #=> Array
6955
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.routes[0].destination_cidr_block #=> String
6956
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.routes[0].state #=> String
6957
+ # resp.findings[0].resources[0].details.aws_ec2_vpn_connection.transit_gateway_id #=> String
6958
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.registry_id #=> String
6959
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.repository_name #=> String
6960
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.architecture #=> String
6961
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.image_digest #=> String
6962
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.image_tags #=> Array
6963
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.image_tags[0] #=> String
6964
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.image_published_at #=> String
6712
6965
  # resp.findings[0].compliance.status #=> String, one of "PASSED", "WARNING", "FAILED", "NOT_AVAILABLE"
6713
6966
  # resp.findings[0].compliance.related_requirements #=> Array
6714
6967
  # resp.findings[0].compliance.related_requirements[0] #=> String
@@ -6733,10 +6986,16 @@ module Aws::SecurityHub
6733
6986
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].epoch #=> String
6734
6987
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].release #=> String
6735
6988
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].architecture #=> String
6989
+ # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].package_manager #=> String
6990
+ # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].file_path #=> String
6736
6991
  # resp.findings[0].vulnerabilities[0].cvss #=> Array
6737
6992
  # resp.findings[0].vulnerabilities[0].cvss[0].version #=> String
6738
6993
  # resp.findings[0].vulnerabilities[0].cvss[0].base_score #=> Float
6739
6994
  # resp.findings[0].vulnerabilities[0].cvss[0].base_vector #=> String
6995
+ # resp.findings[0].vulnerabilities[0].cvss[0].source #=> String
6996
+ # resp.findings[0].vulnerabilities[0].cvss[0].adjustments #=> Array
6997
+ # resp.findings[0].vulnerabilities[0].cvss[0].adjustments[0].metric #=> String
6998
+ # resp.findings[0].vulnerabilities[0].cvss[0].adjustments[0].reason #=> String
6740
6999
  # resp.findings[0].vulnerabilities[0].related_vulnerabilities #=> Array
6741
7000
  # resp.findings[0].vulnerabilities[0].related_vulnerabilities[0] #=> String
6742
7001
  # resp.findings[0].vulnerabilities[0].vendor.name #=> String
@@ -9101,7 +9360,7 @@ module Aws::SecurityHub
9101
9360
  params: params,
9102
9361
  config: config)
9103
9362
  context[:gem_name] = 'aws-sdk-securityhub'
9104
- context[:gem_version] = '1.51.0'
9363
+ context[:gem_version] = '1.52.0'
9105
9364
  Seahorse::Client::Request.new(handlers, context)
9106
9365
  end
9107
9366
 
@@ -29,6 +29,8 @@ module Aws::SecurityHub
29
29
  ActionRemotePortDetails = Shapes::StructureShape.new(name: 'ActionRemotePortDetails')
30
30
  ActionTarget = Shapes::StructureShape.new(name: 'ActionTarget')
31
31
  ActionTargetList = Shapes::ListShape.new(name: 'ActionTargetList')
32
+ Adjustment = Shapes::StructureShape.new(name: 'Adjustment')
33
+ AdjustmentList = Shapes::ListShape.new(name: 'AdjustmentList')
32
34
  AdminAccount = Shapes::StructureShape.new(name: 'AdminAccount')
33
35
  AdminAccounts = Shapes::ListShape.new(name: 'AdminAccounts')
34
36
  AdminStatus = Shapes::StringShape.new(name: 'AdminStatus')
@@ -49,6 +51,11 @@ module Aws::SecurityHub
49
51
  AwsApiGatewayV2RouteSettings = Shapes::StructureShape.new(name: 'AwsApiGatewayV2RouteSettings')
50
52
  AwsApiGatewayV2StageDetails = Shapes::StructureShape.new(name: 'AwsApiGatewayV2StageDetails')
51
53
  AwsAutoScalingAutoScalingGroupDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingAutoScalingGroupDetails')
54
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails')
55
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails')
56
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsList = Shapes::ListShape.new(name: 'AwsAutoScalingLaunchConfigurationBlockDeviceMappingsList')
57
+ AwsAutoScalingLaunchConfigurationDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationDetails')
58
+ AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails')
52
59
  AwsCertificateManagerCertificateDetails = Shapes::StructureShape.new(name: 'AwsCertificateManagerCertificateDetails')
53
60
  AwsCertificateManagerCertificateDomainValidationOption = Shapes::StructureShape.new(name: 'AwsCertificateManagerCertificateDomainValidationOption')
54
61
  AwsCertificateManagerCertificateDomainValidationOptions = Shapes::ListShape.new(name: 'AwsCertificateManagerCertificateDomainValidationOptions')
@@ -135,6 +142,15 @@ module Aws::SecurityHub
135
142
  AwsEc2VolumeAttachmentList = Shapes::ListShape.new(name: 'AwsEc2VolumeAttachmentList')
136
143
  AwsEc2VolumeDetails = Shapes::StructureShape.new(name: 'AwsEc2VolumeDetails')
137
144
  AwsEc2VpcDetails = Shapes::StructureShape.new(name: 'AwsEc2VpcDetails')
145
+ AwsEc2VpnConnectionDetails = Shapes::StructureShape.new(name: 'AwsEc2VpnConnectionDetails')
146
+ AwsEc2VpnConnectionOptionsDetails = Shapes::StructureShape.new(name: 'AwsEc2VpnConnectionOptionsDetails')
147
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails = Shapes::StructureShape.new(name: 'AwsEc2VpnConnectionOptionsTunnelOptionsDetails')
148
+ AwsEc2VpnConnectionOptionsTunnelOptionsList = Shapes::ListShape.new(name: 'AwsEc2VpnConnectionOptionsTunnelOptionsList')
149
+ AwsEc2VpnConnectionRoutesDetails = Shapes::StructureShape.new(name: 'AwsEc2VpnConnectionRoutesDetails')
150
+ AwsEc2VpnConnectionRoutesList = Shapes::ListShape.new(name: 'AwsEc2VpnConnectionRoutesList')
151
+ AwsEc2VpnConnectionVgwTelemetryDetails = Shapes::StructureShape.new(name: 'AwsEc2VpnConnectionVgwTelemetryDetails')
152
+ AwsEc2VpnConnectionVgwTelemetryList = Shapes::ListShape.new(name: 'AwsEc2VpnConnectionVgwTelemetryList')
153
+ AwsEcrContainerImageDetails = Shapes::StructureShape.new(name: 'AwsEcrContainerImageDetails')
138
154
  AwsEcsClusterClusterSettingsDetails = Shapes::StructureShape.new(name: 'AwsEcsClusterClusterSettingsDetails')
139
155
  AwsEcsClusterClusterSettingsList = Shapes::ListShape.new(name: 'AwsEcsClusterClusterSettingsList')
140
156
  AwsEcsClusterConfigurationDetails = Shapes::StructureShape.new(name: 'AwsEcsClusterConfigurationDetails')
@@ -353,10 +369,26 @@ module Aws::SecurityHub
353
369
  AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails = Shapes::StructureShape.new(name: 'AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails')
354
370
  AwsS3BucketBucketLifecycleConfigurationRulesTransitionsList = Shapes::ListShape.new(name: 'AwsS3BucketBucketLifecycleConfigurationRulesTransitionsList')
355
371
  AwsS3BucketDetails = Shapes::StructureShape.new(name: 'AwsS3BucketDetails')
372
+ AwsS3BucketLoggingConfiguration = Shapes::StructureShape.new(name: 'AwsS3BucketLoggingConfiguration')
373
+ AwsS3BucketNotificationConfiguration = Shapes::StructureShape.new(name: 'AwsS3BucketNotificationConfiguration')
374
+ AwsS3BucketNotificationConfigurationDetail = Shapes::StructureShape.new(name: 'AwsS3BucketNotificationConfigurationDetail')
375
+ AwsS3BucketNotificationConfigurationDetails = Shapes::ListShape.new(name: 'AwsS3BucketNotificationConfigurationDetails')
376
+ AwsS3BucketNotificationConfigurationEvents = Shapes::ListShape.new(name: 'AwsS3BucketNotificationConfigurationEvents')
377
+ AwsS3BucketNotificationConfigurationFilter = Shapes::StructureShape.new(name: 'AwsS3BucketNotificationConfigurationFilter')
378
+ AwsS3BucketNotificationConfigurationS3KeyFilter = Shapes::StructureShape.new(name: 'AwsS3BucketNotificationConfigurationS3KeyFilter')
379
+ AwsS3BucketNotificationConfigurationS3KeyFilterRule = Shapes::StructureShape.new(name: 'AwsS3BucketNotificationConfigurationS3KeyFilterRule')
380
+ AwsS3BucketNotificationConfigurationS3KeyFilterRuleName = Shapes::StringShape.new(name: 'AwsS3BucketNotificationConfigurationS3KeyFilterRuleName')
381
+ AwsS3BucketNotificationConfigurationS3KeyFilterRules = Shapes::ListShape.new(name: 'AwsS3BucketNotificationConfigurationS3KeyFilterRules')
356
382
  AwsS3BucketServerSideEncryptionByDefault = Shapes::StructureShape.new(name: 'AwsS3BucketServerSideEncryptionByDefault')
357
383
  AwsS3BucketServerSideEncryptionConfiguration = Shapes::StructureShape.new(name: 'AwsS3BucketServerSideEncryptionConfiguration')
358
384
  AwsS3BucketServerSideEncryptionRule = Shapes::StructureShape.new(name: 'AwsS3BucketServerSideEncryptionRule')
359
385
  AwsS3BucketServerSideEncryptionRules = Shapes::ListShape.new(name: 'AwsS3BucketServerSideEncryptionRules')
386
+ AwsS3BucketWebsiteConfiguration = Shapes::StructureShape.new(name: 'AwsS3BucketWebsiteConfiguration')
387
+ AwsS3BucketWebsiteConfigurationRedirectTo = Shapes::StructureShape.new(name: 'AwsS3BucketWebsiteConfigurationRedirectTo')
388
+ AwsS3BucketWebsiteConfigurationRoutingRule = Shapes::StructureShape.new(name: 'AwsS3BucketWebsiteConfigurationRoutingRule')
389
+ AwsS3BucketWebsiteConfigurationRoutingRuleCondition = Shapes::StructureShape.new(name: 'AwsS3BucketWebsiteConfigurationRoutingRuleCondition')
390
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect = Shapes::StructureShape.new(name: 'AwsS3BucketWebsiteConfigurationRoutingRuleRedirect')
391
+ AwsS3BucketWebsiteConfigurationRoutingRules = Shapes::ListShape.new(name: 'AwsS3BucketWebsiteConfigurationRoutingRules')
360
392
  AwsS3ObjectDetails = Shapes::StructureShape.new(name: 'AwsS3ObjectDetails')
361
393
  AwsSecretsManagerSecretDetails = Shapes::StructureShape.new(name: 'AwsSecretsManagerSecretDetails')
362
394
  AwsSecretsManagerSecretRotationRules = Shapes::StructureShape.new(name: 'AwsSecretsManagerSecretRotationRules')
@@ -488,6 +520,7 @@ module Aws::SecurityHub
488
520
  InsightResultValueList = Shapes::ListShape.new(name: 'InsightResultValueList')
489
521
  InsightResults = Shapes::StructureShape.new(name: 'InsightResults')
490
522
  Integer = Shapes::IntegerShape.new(name: 'Integer')
523
+ IntegerList = Shapes::ListShape.new(name: 'IntegerList')
491
524
  IntegrationType = Shapes::StringShape.new(name: 'IntegrationType')
492
525
  IntegrationTypeList = Shapes::ListShape.new(name: 'IntegrationTypeList')
493
526
  InternalException = Shapes::StructureShape.new(name: 'InternalException')
@@ -702,6 +735,12 @@ module Aws::SecurityHub
702
735
 
703
736
  ActionTargetList.member = Shapes::ShapeRef.new(shape: ActionTarget)
704
737
 
738
+ Adjustment.add_member(:metric, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Metric"))
739
+ Adjustment.add_member(:reason, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Reason"))
740
+ Adjustment.struct_class = Types::Adjustment
741
+
742
+ AdjustmentList.member = Shapes::ShapeRef.new(shape: Adjustment)
743
+
705
744
  AdminAccount.add_member(:account_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AccountId"))
706
745
  AdminAccount.add_member(:status, Shapes::ShapeRef.new(shape: AdminStatus, location_name: "Status"))
707
746
  AdminAccount.struct_class = Types::AdminAccount
@@ -828,6 +867,45 @@ module Aws::SecurityHub
828
867
  AwsAutoScalingAutoScalingGroupDetails.add_member(:created_time, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CreatedTime"))
829
868
  AwsAutoScalingAutoScalingGroupDetails.struct_class = Types::AwsAutoScalingAutoScalingGroupDetails
830
869
 
870
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails.add_member(:device_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DeviceName"))
871
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails.add_member(:ebs, Shapes::ShapeRef.new(shape: AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails, location_name: "Ebs"))
872
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails.add_member(:no_device, Shapes::ShapeRef.new(shape: Boolean, location_name: "NoDevice"))
873
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails.add_member(:virtual_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VirtualName"))
874
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails.struct_class = Types::AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails
875
+
876
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:delete_on_termination, Shapes::ShapeRef.new(shape: Boolean, location_name: "DeleteOnTermination"))
877
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:encrypted, Shapes::ShapeRef.new(shape: Boolean, location_name: "Encrypted"))
878
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:iops, Shapes::ShapeRef.new(shape: Integer, location_name: "Iops"))
879
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:snapshot_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SnapshotId"))
880
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:volume_size, Shapes::ShapeRef.new(shape: Integer, location_name: "VolumeSize"))
881
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.add_member(:volume_type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VolumeType"))
882
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails.struct_class = Types::AwsAutoScalingLaunchConfigurationBlockDeviceMappingsEbsDetails
883
+
884
+ AwsAutoScalingLaunchConfigurationBlockDeviceMappingsList.member = Shapes::ShapeRef.new(shape: AwsAutoScalingLaunchConfigurationBlockDeviceMappingsDetails)
885
+
886
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:associate_public_ip_address, Shapes::ShapeRef.new(shape: Boolean, location_name: "AssociatePublicIpAddress"))
887
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:block_device_mappings, Shapes::ShapeRef.new(shape: AwsAutoScalingLaunchConfigurationBlockDeviceMappingsList, location_name: "BlockDeviceMappings"))
888
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:classic_link_vpc_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ClassicLinkVpcId"))
889
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:classic_link_vpc_security_groups, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "ClassicLinkVpcSecurityGroups"))
890
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:created_time, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CreatedTime"))
891
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:ebs_optimized, Shapes::ShapeRef.new(shape: Boolean, location_name: "EbsOptimized"))
892
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:iam_instance_profile, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "IamInstanceProfile"))
893
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:image_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ImageId"))
894
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:instance_monitoring, Shapes::ShapeRef.new(shape: AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails, location_name: "InstanceMonitoring"))
895
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "InstanceType"))
896
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:kernel_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "KernelId"))
897
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:key_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "KeyName"))
898
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:launch_configuration_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "LaunchConfigurationName"))
899
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:placement_tenancy, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PlacementTenancy"))
900
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:ramdisk_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RamdiskId"))
901
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:security_groups, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "SecurityGroups"))
902
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:spot_price, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SpotPrice"))
903
+ AwsAutoScalingLaunchConfigurationDetails.add_member(:user_data, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "UserData"))
904
+ AwsAutoScalingLaunchConfigurationDetails.struct_class = Types::AwsAutoScalingLaunchConfigurationDetails
905
+
906
+ AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails.add_member(:enabled, Shapes::ShapeRef.new(shape: Boolean, location_name: "Enabled"))
907
+ AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails.struct_class = Types::AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails
908
+
831
909
  AwsCertificateManagerCertificateDetails.add_member(:certificate_authority_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CertificateAuthorityArn"))
832
910
  AwsCertificateManagerCertificateDetails.add_member(:created_at, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CreatedAt"))
833
911
  AwsCertificateManagerCertificateDetails.add_member(:domain_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DomainName"))
@@ -1281,6 +1359,67 @@ module Aws::SecurityHub
1281
1359
  AwsEc2VpcDetails.add_member(:state, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "State"))
1282
1360
  AwsEc2VpcDetails.struct_class = Types::AwsEc2VpcDetails
1283
1361
 
1362
+ AwsEc2VpnConnectionDetails.add_member(:vpn_connection_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VpnConnectionId"))
1363
+ AwsEc2VpnConnectionDetails.add_member(:state, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "State"))
1364
+ AwsEc2VpnConnectionDetails.add_member(:customer_gateway_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CustomerGatewayId"))
1365
+ AwsEc2VpnConnectionDetails.add_member(:customer_gateway_configuration, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CustomerGatewayConfiguration"))
1366
+ AwsEc2VpnConnectionDetails.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Type"))
1367
+ AwsEc2VpnConnectionDetails.add_member(:vpn_gateway_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VpnGatewayId"))
1368
+ AwsEc2VpnConnectionDetails.add_member(:category, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Category"))
1369
+ AwsEc2VpnConnectionDetails.add_member(:vgw_telemetry, Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionVgwTelemetryList, location_name: "VgwTelemetry"))
1370
+ AwsEc2VpnConnectionDetails.add_member(:options, Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionOptionsDetails, location_name: "Options"))
1371
+ AwsEc2VpnConnectionDetails.add_member(:routes, Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionRoutesList, location_name: "Routes"))
1372
+ AwsEc2VpnConnectionDetails.add_member(:transit_gateway_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "TransitGatewayId"))
1373
+ AwsEc2VpnConnectionDetails.struct_class = Types::AwsEc2VpnConnectionDetails
1374
+
1375
+ AwsEc2VpnConnectionOptionsDetails.add_member(:static_routes_only, Shapes::ShapeRef.new(shape: Boolean, location_name: "StaticRoutesOnly"))
1376
+ AwsEc2VpnConnectionOptionsDetails.add_member(:tunnel_options, Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionOptionsTunnelOptionsList, location_name: "TunnelOptions"))
1377
+ AwsEc2VpnConnectionOptionsDetails.struct_class = Types::AwsEc2VpnConnectionOptionsDetails
1378
+
1379
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:dpd_timeout_seconds, Shapes::ShapeRef.new(shape: Integer, location_name: "DpdTimeoutSeconds"))
1380
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:ike_versions, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "IkeVersions"))
1381
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:outside_ip_address, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "OutsideIpAddress"))
1382
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_1_dh_group_numbers, Shapes::ShapeRef.new(shape: IntegerList, location_name: "Phase1DhGroupNumbers"))
1383
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_1_encryption_algorithms, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "Phase1EncryptionAlgorithms"))
1384
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_1_integrity_algorithms, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "Phase1IntegrityAlgorithms"))
1385
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_1_lifetime_seconds, Shapes::ShapeRef.new(shape: Integer, location_name: "Phase1LifetimeSeconds"))
1386
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_2_dh_group_numbers, Shapes::ShapeRef.new(shape: IntegerList, location_name: "Phase2DhGroupNumbers"))
1387
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_2_encryption_algorithms, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "Phase2EncryptionAlgorithms"))
1388
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_2_integrity_algorithms, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "Phase2IntegrityAlgorithms"))
1389
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:phase_2_lifetime_seconds, Shapes::ShapeRef.new(shape: Integer, location_name: "Phase2LifetimeSeconds"))
1390
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:pre_shared_key, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PreSharedKey"))
1391
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:rekey_fuzz_percentage, Shapes::ShapeRef.new(shape: Integer, location_name: "RekeyFuzzPercentage"))
1392
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:rekey_margin_time_seconds, Shapes::ShapeRef.new(shape: Integer, location_name: "RekeyMarginTimeSeconds"))
1393
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:replay_window_size, Shapes::ShapeRef.new(shape: Integer, location_name: "ReplayWindowSize"))
1394
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.add_member(:tunnel_inside_cidr, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "TunnelInsideCidr"))
1395
+ AwsEc2VpnConnectionOptionsTunnelOptionsDetails.struct_class = Types::AwsEc2VpnConnectionOptionsTunnelOptionsDetails
1396
+
1397
+ AwsEc2VpnConnectionOptionsTunnelOptionsList.member = Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionOptionsTunnelOptionsDetails)
1398
+
1399
+ AwsEc2VpnConnectionRoutesDetails.add_member(:destination_cidr_block, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DestinationCidrBlock"))
1400
+ AwsEc2VpnConnectionRoutesDetails.add_member(:state, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "State"))
1401
+ AwsEc2VpnConnectionRoutesDetails.struct_class = Types::AwsEc2VpnConnectionRoutesDetails
1402
+
1403
+ AwsEc2VpnConnectionRoutesList.member = Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionRoutesDetails)
1404
+
1405
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:accepted_route_count, Shapes::ShapeRef.new(shape: Integer, location_name: "AcceptedRouteCount"))
1406
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:certificate_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CertificateArn"))
1407
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:last_status_change, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "LastStatusChange"))
1408
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:outside_ip_address, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "OutsideIpAddress"))
1409
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:status, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Status"))
1410
+ AwsEc2VpnConnectionVgwTelemetryDetails.add_member(:status_message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "StatusMessage"))
1411
+ AwsEc2VpnConnectionVgwTelemetryDetails.struct_class = Types::AwsEc2VpnConnectionVgwTelemetryDetails
1412
+
1413
+ AwsEc2VpnConnectionVgwTelemetryList.member = Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionVgwTelemetryDetails)
1414
+
1415
+ AwsEcrContainerImageDetails.add_member(:registry_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RegistryId"))
1416
+ AwsEcrContainerImageDetails.add_member(:repository_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RepositoryName"))
1417
+ AwsEcrContainerImageDetails.add_member(:architecture, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Architecture"))
1418
+ AwsEcrContainerImageDetails.add_member(:image_digest, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ImageDigest"))
1419
+ AwsEcrContainerImageDetails.add_member(:image_tags, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "ImageTags"))
1420
+ AwsEcrContainerImageDetails.add_member(:image_published_at, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ImagePublishedAt"))
1421
+ AwsEcrContainerImageDetails.struct_class = Types::AwsEcrContainerImageDetails
1422
+
1284
1423
  AwsEcsClusterClusterSettingsDetails.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Name"))
1285
1424
  AwsEcsClusterClusterSettingsDetails.add_member(:value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Value"))
1286
1425
  AwsEcsClusterClusterSettingsDetails.struct_class = Types::AwsEcsClusterClusterSettingsDetails
@@ -1958,6 +2097,7 @@ module Aws::SecurityHub
1958
2097
  AwsKmsKeyDetails.add_member(:key_state, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "KeyState"))
1959
2098
  AwsKmsKeyDetails.add_member(:origin, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Origin"))
1960
2099
  AwsKmsKeyDetails.add_member(:description, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Description"))
2100
+ AwsKmsKeyDetails.add_member(:key_rotation_status, Shapes::ShapeRef.new(shape: Boolean, location_name: "KeyRotationStatus"))
1961
2101
  AwsKmsKeyDetails.struct_class = Types::AwsKmsKeyDetails
1962
2102
 
1963
2103
  AwsLambdaFunctionCode.add_member(:s3_bucket, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "S3Bucket"))
@@ -2491,8 +2631,41 @@ module Aws::SecurityHub
2491
2631
  AwsS3BucketDetails.add_member(:server_side_encryption_configuration, Shapes::ShapeRef.new(shape: AwsS3BucketServerSideEncryptionConfiguration, location_name: "ServerSideEncryptionConfiguration"))
2492
2632
  AwsS3BucketDetails.add_member(:bucket_lifecycle_configuration, Shapes::ShapeRef.new(shape: AwsS3BucketBucketLifecycleConfigurationDetails, location_name: "BucketLifecycleConfiguration"))
2493
2633
  AwsS3BucketDetails.add_member(:public_access_block_configuration, Shapes::ShapeRef.new(shape: AwsS3AccountPublicAccessBlockDetails, location_name: "PublicAccessBlockConfiguration"))
2634
+ AwsS3BucketDetails.add_member(:access_control_list, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AccessControlList"))
2635
+ AwsS3BucketDetails.add_member(:bucket_logging_configuration, Shapes::ShapeRef.new(shape: AwsS3BucketLoggingConfiguration, location_name: "BucketLoggingConfiguration"))
2636
+ AwsS3BucketDetails.add_member(:bucket_website_configuration, Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfiguration, location_name: "BucketWebsiteConfiguration"))
2637
+ AwsS3BucketDetails.add_member(:bucket_notification_configuration, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfiguration, location_name: "BucketNotificationConfiguration"))
2494
2638
  AwsS3BucketDetails.struct_class = Types::AwsS3BucketDetails
2495
2639
 
2640
+ AwsS3BucketLoggingConfiguration.add_member(:destination_bucket_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DestinationBucketName"))
2641
+ AwsS3BucketLoggingConfiguration.add_member(:log_file_prefix, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "LogFilePrefix"))
2642
+ AwsS3BucketLoggingConfiguration.struct_class = Types::AwsS3BucketLoggingConfiguration
2643
+
2644
+ AwsS3BucketNotificationConfiguration.add_member(:configurations, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationDetails, location_name: "Configurations"))
2645
+ AwsS3BucketNotificationConfiguration.struct_class = Types::AwsS3BucketNotificationConfiguration
2646
+
2647
+ AwsS3BucketNotificationConfigurationDetail.add_member(:events, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationEvents, location_name: "Events"))
2648
+ AwsS3BucketNotificationConfigurationDetail.add_member(:filter, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationFilter, location_name: "Filter"))
2649
+ AwsS3BucketNotificationConfigurationDetail.add_member(:destination, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Destination"))
2650
+ AwsS3BucketNotificationConfigurationDetail.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Type"))
2651
+ AwsS3BucketNotificationConfigurationDetail.struct_class = Types::AwsS3BucketNotificationConfigurationDetail
2652
+
2653
+ AwsS3BucketNotificationConfigurationDetails.member = Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationDetail)
2654
+
2655
+ AwsS3BucketNotificationConfigurationEvents.member = Shapes::ShapeRef.new(shape: NonEmptyString)
2656
+
2657
+ AwsS3BucketNotificationConfigurationFilter.add_member(:s3_key_filter, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationS3KeyFilter, location_name: "S3KeyFilter"))
2658
+ AwsS3BucketNotificationConfigurationFilter.struct_class = Types::AwsS3BucketNotificationConfigurationFilter
2659
+
2660
+ AwsS3BucketNotificationConfigurationS3KeyFilter.add_member(:filter_rules, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationS3KeyFilterRules, location_name: "FilterRules"))
2661
+ AwsS3BucketNotificationConfigurationS3KeyFilter.struct_class = Types::AwsS3BucketNotificationConfigurationS3KeyFilter
2662
+
2663
+ AwsS3BucketNotificationConfigurationS3KeyFilterRule.add_member(:name, Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationS3KeyFilterRuleName, location_name: "Name"))
2664
+ AwsS3BucketNotificationConfigurationS3KeyFilterRule.add_member(:value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Value"))
2665
+ AwsS3BucketNotificationConfigurationS3KeyFilterRule.struct_class = Types::AwsS3BucketNotificationConfigurationS3KeyFilterRule
2666
+
2667
+ AwsS3BucketNotificationConfigurationS3KeyFilterRules.member = Shapes::ShapeRef.new(shape: AwsS3BucketNotificationConfigurationS3KeyFilterRule)
2668
+
2496
2669
  AwsS3BucketServerSideEncryptionByDefault.add_member(:sse_algorithm, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SSEAlgorithm"))
2497
2670
  AwsS3BucketServerSideEncryptionByDefault.add_member(:kms_master_key_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "KMSMasterKeyID"))
2498
2671
  AwsS3BucketServerSideEncryptionByDefault.struct_class = Types::AwsS3BucketServerSideEncryptionByDefault
@@ -2505,6 +2678,33 @@ module Aws::SecurityHub
2505
2678
 
2506
2679
  AwsS3BucketServerSideEncryptionRules.member = Shapes::ShapeRef.new(shape: AwsS3BucketServerSideEncryptionRule)
2507
2680
 
2681
+ AwsS3BucketWebsiteConfiguration.add_member(:error_document, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ErrorDocument"))
2682
+ AwsS3BucketWebsiteConfiguration.add_member(:index_document_suffix, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "IndexDocumentSuffix"))
2683
+ AwsS3BucketWebsiteConfiguration.add_member(:redirect_all_requests_to, Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfigurationRedirectTo, location_name: "RedirectAllRequestsTo"))
2684
+ AwsS3BucketWebsiteConfiguration.add_member(:routing_rules, Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfigurationRoutingRules, location_name: "RoutingRules"))
2685
+ AwsS3BucketWebsiteConfiguration.struct_class = Types::AwsS3BucketWebsiteConfiguration
2686
+
2687
+ AwsS3BucketWebsiteConfigurationRedirectTo.add_member(:hostname, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Hostname"))
2688
+ AwsS3BucketWebsiteConfigurationRedirectTo.add_member(:protocol, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Protocol"))
2689
+ AwsS3BucketWebsiteConfigurationRedirectTo.struct_class = Types::AwsS3BucketWebsiteConfigurationRedirectTo
2690
+
2691
+ AwsS3BucketWebsiteConfigurationRoutingRule.add_member(:condition, Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfigurationRoutingRuleCondition, location_name: "Condition"))
2692
+ AwsS3BucketWebsiteConfigurationRoutingRule.add_member(:redirect, Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfigurationRoutingRuleRedirect, location_name: "Redirect"))
2693
+ AwsS3BucketWebsiteConfigurationRoutingRule.struct_class = Types::AwsS3BucketWebsiteConfigurationRoutingRule
2694
+
2695
+ AwsS3BucketWebsiteConfigurationRoutingRuleCondition.add_member(:http_error_code_returned_equals, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "HttpErrorCodeReturnedEquals"))
2696
+ AwsS3BucketWebsiteConfigurationRoutingRuleCondition.add_member(:key_prefix_equals, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "KeyPrefixEquals"))
2697
+ AwsS3BucketWebsiteConfigurationRoutingRuleCondition.struct_class = Types::AwsS3BucketWebsiteConfigurationRoutingRuleCondition
2698
+
2699
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.add_member(:hostname, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Hostname"))
2700
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.add_member(:http_redirect_code, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "HttpRedirectCode"))
2701
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.add_member(:protocol, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Protocol"))
2702
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.add_member(:replace_key_prefix_with, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ReplaceKeyPrefixWith"))
2703
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.add_member(:replace_key_with, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ReplaceKeyWith"))
2704
+ AwsS3BucketWebsiteConfigurationRoutingRuleRedirect.struct_class = Types::AwsS3BucketWebsiteConfigurationRoutingRuleRedirect
2705
+
2706
+ AwsS3BucketWebsiteConfigurationRoutingRules.member = Shapes::ShapeRef.new(shape: AwsS3BucketWebsiteConfigurationRoutingRule)
2707
+
2508
2708
  AwsS3ObjectDetails.add_member(:last_modified, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "LastModified"))
2509
2709
  AwsS3ObjectDetails.add_member(:etag, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ETag"))
2510
2710
  AwsS3ObjectDetails.add_member(:version_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VersionId"))
@@ -2860,6 +3060,8 @@ module Aws::SecurityHub
2860
3060
  Cvss.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Version"))
2861
3061
  Cvss.add_member(:base_score, Shapes::ShapeRef.new(shape: Double, location_name: "BaseScore"))
2862
3062
  Cvss.add_member(:base_vector, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BaseVector"))
3063
+ Cvss.add_member(:source, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Source"))
3064
+ Cvss.add_member(:adjustments, Shapes::ShapeRef.new(shape: AdjustmentList, location_name: "Adjustments"))
2863
3065
  Cvss.struct_class = Types::Cvss
2864
3066
 
2865
3067
  CvssList.member = Shapes::ShapeRef.new(shape: Cvss)
@@ -3111,6 +3313,8 @@ module Aws::SecurityHub
3111
3313
  InsightResults.add_member(:result_values, Shapes::ShapeRef.new(shape: InsightResultValueList, required: true, location_name: "ResultValues"))
3112
3314
  InsightResults.struct_class = Types::InsightResults
3113
3315
 
3316
+ IntegerList.member = Shapes::ShapeRef.new(shape: Integer)
3317
+
3114
3318
  IntegrationTypeList.member = Shapes::ShapeRef.new(shape: IntegrationType)
3115
3319
 
3116
3320
  InternalException.add_member(:message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Message"))
@@ -3454,6 +3658,9 @@ module Aws::SecurityHub
3454
3658
  ResourceDetails.add_member(:other, Shapes::ShapeRef.new(shape: FieldMap, location_name: "Other"))
3455
3659
  ResourceDetails.add_member(:aws_rds_event_subscription, Shapes::ShapeRef.new(shape: AwsRdsEventSubscriptionDetails, location_name: "AwsRdsEventSubscription"))
3456
3660
  ResourceDetails.add_member(:aws_ecs_service, Shapes::ShapeRef.new(shape: AwsEcsServiceDetails, location_name: "AwsEcsService"))
3661
+ ResourceDetails.add_member(:aws_auto_scaling_launch_configuration, Shapes::ShapeRef.new(shape: AwsAutoScalingLaunchConfigurationDetails, location_name: "AwsAutoScalingLaunchConfiguration"))
3662
+ ResourceDetails.add_member(:aws_ec2_vpn_connection, Shapes::ShapeRef.new(shape: AwsEc2VpnConnectionDetails, location_name: "AwsEc2VpnConnection"))
3663
+ ResourceDetails.add_member(:aws_ecr_container_image, Shapes::ShapeRef.new(shape: AwsEcrContainerImageDetails, location_name: "AwsEcrContainerImage"))
3457
3664
  ResourceDetails.struct_class = Types::ResourceDetails
3458
3665
 
3459
3666
  ResourceList.member = Shapes::ShapeRef.new(shape: Resource)
@@ -3500,6 +3707,8 @@ module Aws::SecurityHub
3500
3707
  SoftwarePackage.add_member(:epoch, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Epoch"))
3501
3708
  SoftwarePackage.add_member(:release, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Release"))
3502
3709
  SoftwarePackage.add_member(:architecture, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Architecture"))
3710
+ SoftwarePackage.add_member(:package_manager, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PackageManager"))
3711
+ SoftwarePackage.add_member(:file_path, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "FilePath"))
3503
3712
  SoftwarePackage.struct_class = Types::SoftwarePackage
3504
3713
 
3505
3714
  SoftwarePackageList.member = Shapes::ShapeRef.new(shape: SoftwarePackage)