aws-sdk-securityhub 1.166.0 → 1.167.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.
@@ -2356,6 +2356,66 @@ module Aws::SecurityHub
2356
2356
  req.send_request(options)
2357
2357
  end
2358
2358
 
2359
+ # Cancels a findings export job that is in progress. Security Hub
2360
+ # transitions a running job to the `CANCELLED` state and returns the
2361
+ # `ExportJobId` and its new `Status`. Canceling a job that is already in
2362
+ # the `CANCELLED` state succeeds and returns the same result, so you can
2363
+ # safely retry a cancel request.
2364
+ #
2365
+ # You can't cancel an export job that has already reached a terminal
2366
+ # `SUCCEEDED` or `FAILED` state; in that case, this operation returns a
2367
+ # `ConflictException`. If no export job matches the `ExportJobId` that
2368
+ # you provide, this operation returns a `ResourceNotFoundException`.
2369
+ #
2370
+ # The `Status` value returned by this operation reflects the
2371
+ # cancellation immediately, even though the job can take a short time to
2372
+ # stop completely.
2373
+ #
2374
+ # @option params [required, String] :export_job_id
2375
+ # The unique identifier of the export job to cancel. This is the value
2376
+ # returned by `StartExportJobV2`.
2377
+ #
2378
+ # @return [Types::CancelExportJobV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2379
+ #
2380
+ # * {Types::CancelExportJobV2Response#export_job_id #export_job_id} => String
2381
+ # * {Types::CancelExportJobV2Response#status #status} => String
2382
+ #
2383
+ #
2384
+ # @example Example: Example – Canceling a running export job
2385
+ #
2386
+ # # The following example cancels an export job that is in progress. Security Hub transitions the job to the CANCELLED state
2387
+ # # and returns its new status.
2388
+ #
2389
+ # resp = client.cancel_export_job_v2({
2390
+ # export_job_id: "a1b2c3d4e5f6",
2391
+ # })
2392
+ #
2393
+ # resp.to_h outputs the following:
2394
+ # {
2395
+ # export_job_id: "a1b2c3d4e5f6",
2396
+ # status: "CANCELLED",
2397
+ # }
2398
+ #
2399
+ # @example Request syntax with placeholder values
2400
+ #
2401
+ # resp = client.cancel_export_job_v2({
2402
+ # export_job_id: "ExportJobId", # required
2403
+ # })
2404
+ #
2405
+ # @example Response structure
2406
+ #
2407
+ # resp.export_job_id #=> String
2408
+ # resp.status #=> String, one of "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED"
2409
+ #
2410
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/CancelExportJobV2 AWS API Documentation
2411
+ #
2412
+ # @overload cancel_export_job_v2(params = {})
2413
+ # @param [Hash] params ({})
2414
+ def cancel_export_job_v2(params = {}, options = {})
2415
+ req = build_request(:cancel_export_job_v2, params)
2416
+ req.send_request(options)
2417
+ end
2418
+
2359
2419
  # Creates a custom action target in Security Hub CSPM.
2360
2420
  #
2361
2421
  # You can use custom actions on findings and insights in Security Hub
@@ -6703,6 +6763,227 @@ module Aws::SecurityHub
6703
6763
  req.send_request(options)
6704
6764
  end
6705
6765
 
6766
+ # Returns the details of a single findings export job, including its
6767
+ # current `Status`, the `Destination` it writes to, the
6768
+ # `OutputConfiguration` it was started with, and its `StartedAt` and
6769
+ # `EndedAt` timestamps. Use this operation to poll an export job that
6770
+ # you started with `StartExportJobV2` until it reaches a terminal state
6771
+ # (`SUCCEEDED`, `FAILED`, or `CANCELLED`).
6772
+ #
6773
+ # If the job failed, the response includes a `FailureCode` and
6774
+ # `FailureMessage` that describe the reason. Input values such as
6775
+ # `Scopes` and `Filters` are echoed back as they were submitted, with
6776
+ # relative date ranges returned unresolved. If no export job matches the
6777
+ # `ExportJobId` that you provide, this operation returns a
6778
+ # `ResourceNotFoundException`.
6779
+ #
6780
+ # @option params [required, String] :export_job_id
6781
+ # The unique identifier of the export job to retrieve. This is the value
6782
+ # returned by `StartExportJobV2`.
6783
+ #
6784
+ # @return [Types::GetExportJobV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
6785
+ #
6786
+ # * {Types::GetExportJobV2Response#export_job_id #export_job_id} => String
6787
+ # * {Types::GetExportJobV2Response#name #name} => String
6788
+ # * {Types::GetExportJobV2Response#status #status} => String
6789
+ # * {Types::GetExportJobV2Response#data_type #data_type} => String
6790
+ # * {Types::GetExportJobV2Response#output_configuration #output_configuration} => Types::ExportOutput
6791
+ # * {Types::GetExportJobV2Response#scopes #scopes} => Types::ExportScopes
6792
+ # * {Types::GetExportJobV2Response#destination #destination} => Types::ExportDestination
6793
+ # * {Types::GetExportJobV2Response#failure_code #failure_code} => String
6794
+ # * {Types::GetExportJobV2Response#failure_message #failure_message} => String
6795
+ # * {Types::GetExportJobV2Response#started_at #started_at} => Time
6796
+ # * {Types::GetExportJobV2Response#ended_at #ended_at} => Time
6797
+ #
6798
+ #
6799
+ # @example Example: Example – Getting the details of a completed export job
6800
+ #
6801
+ # # The following example retrieves an export job that has finished successfully. The output is available in the destination
6802
+ # # bucket.
6803
+ #
6804
+ # resp = client.get_export_job_v2({
6805
+ # export_job_id: "a1b2c3d4e5f6",
6806
+ # })
6807
+ #
6808
+ # resp.to_h outputs the following:
6809
+ # {
6810
+ # data_type: "FINDINGS",
6811
+ # destination: {
6812
+ # s3: {
6813
+ # bucket_arn: "arn:aws:s3:::amzn-s3-demo-bucket",
6814
+ # kms_key_arn: "arn:aws:kms:aa-example-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
6815
+ # object_prefix: "security-hub-exports/2026-Q1",
6816
+ # },
6817
+ # },
6818
+ # ended_at: Time.parse("2026-03-27T18:09:52Z"),
6819
+ # export_job_id: "a1b2c3d4e5f6",
6820
+ # name: "quarterly-critical-findings",
6821
+ # output_configuration: {
6822
+ # findings: {
6823
+ # filters: {
6824
+ # composite_filters: [
6825
+ # {
6826
+ # operator: "AND",
6827
+ # string_filters: [
6828
+ # {
6829
+ # field_name: "severity",
6830
+ # filter: {
6831
+ # comparison: "EQUALS",
6832
+ # value: "Critical",
6833
+ # },
6834
+ # },
6835
+ # {
6836
+ # field_name: "status",
6837
+ # filter: {
6838
+ # comparison: "EQUALS",
6839
+ # value: "New",
6840
+ # },
6841
+ # },
6842
+ # ],
6843
+ # },
6844
+ # ],
6845
+ # composite_operator: "AND",
6846
+ # },
6847
+ # format: "CSV",
6848
+ # selected_fields: [
6849
+ # "finding_info.title",
6850
+ # "severity",
6851
+ # "status",
6852
+ # "cloud.account.uid",
6853
+ # "resources.uid",
6854
+ # ],
6855
+ # },
6856
+ # },
6857
+ # started_at: Time.parse("2026-03-27T18:04:11Z"),
6858
+ # status: "SUCCEEDED",
6859
+ # }
6860
+ #
6861
+ # @example Example: Example – Getting the details of a failed export job
6862
+ #
6863
+ # # The following example retrieves an export job that failed because Security Hub couldn't write to the destination. The
6864
+ # # FailureCode and FailureMessage explain the cause.
6865
+ #
6866
+ # resp = client.get_export_job_v2({
6867
+ # export_job_id: "f6e5d4c3b2a1",
6868
+ # })
6869
+ #
6870
+ # resp.to_h outputs the following:
6871
+ # {
6872
+ # data_type: "FINDINGS",
6873
+ # destination: {
6874
+ # s3: {
6875
+ # bucket_arn: "arn:aws:s3:::amzn-s3-demo-bucket",
6876
+ # kms_key_arn: "arn:aws:kms:aa-example-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
6877
+ # },
6878
+ # },
6879
+ # ended_at: Time.parse("2026-03-27T18:05:03Z"),
6880
+ # export_job_id: "f6e5d4c3b2a1",
6881
+ # failure_code: "ACCESS_DENIED",
6882
+ # failure_message: "Security Hub could not write to the destination bucket. Verify the bucket policy and KMS key policy.",
6883
+ # output_configuration: {
6884
+ # findings: {
6885
+ # filters: {
6886
+ # composite_filters: [
6887
+ # {
6888
+ # date_filters: [
6889
+ # {
6890
+ # field_name: "finding_info.last_seen_time_dt",
6891
+ # filter: {
6892
+ # date_range: {
6893
+ # comparison: "WITHIN",
6894
+ # unit: "DAYS",
6895
+ # value: 30,
6896
+ # },
6897
+ # },
6898
+ # },
6899
+ # ],
6900
+ # operator: "AND",
6901
+ # },
6902
+ # ],
6903
+ # composite_operator: "AND",
6904
+ # },
6905
+ # format: "OCSF_JSON",
6906
+ # },
6907
+ # },
6908
+ # scopes: {
6909
+ # aws_organizations: [
6910
+ # {
6911
+ # organizational_unit_id: "ou-1234-a1b2c3d4",
6912
+ # },
6913
+ # ],
6914
+ # },
6915
+ # started_at: Time.parse("2026-03-27T18:04:11Z"),
6916
+ # status: "FAILED",
6917
+ # }
6918
+ #
6919
+ # @example Request syntax with placeholder values
6920
+ #
6921
+ # resp = client.get_export_job_v2({
6922
+ # export_job_id: "ExportJobId", # required
6923
+ # })
6924
+ #
6925
+ # @example Response structure
6926
+ #
6927
+ # resp.export_job_id #=> String
6928
+ # resp.name #=> String
6929
+ # resp.status #=> String, one of "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED"
6930
+ # resp.data_type #=> String, one of "FINDINGS"
6931
+ # resp.output_configuration.findings.format #=> String, one of "CSV", "OCSF_JSON"
6932
+ # resp.output_configuration.findings.filters.composite_filters #=> Array
6933
+ # resp.output_configuration.findings.filters.composite_filters[0].string_filters #=> Array
6934
+ # resp.output_configuration.findings.filters.composite_filters[0].string_filters[0].field_name #=> String, one of "metadata.uid", "activity_name", "cloud.account.uid", "cloud.provider", "cloud.region", "compliance.assessments.category", "compliance.assessments.name", "compliance.control", "compliance.status", "compliance.standards", "finding_info.desc", "finding_info.src_url", "finding_info.title", "finding_info.types", "finding_info.uid", "finding_info.related_events.traits.category", "finding_info.related_events.uid", "finding_info.related_events.product.uid", "finding_info.related_events.title", "metadata.product.name", "metadata.product.uid", "metadata.product.vendor_name", "remediation.desc", "remediation.references", "resources.cloud_partition", "resources.name", "resources.owner.account.uid", "resources.owner.org.uid", "resources.owner.account.name", "resources.provider", "resources.region", "resources.type", "resources.uid", "severity", "status", "comment", "vulnerabilities.fix_coverage", "class_name", "databucket.encryption_details.algorithm", "databucket.encryption_details.key_uid", "databucket.file.data_classifications.classifier_details.type", "evidences.actor.user.account.uid", "evidences.api.operation", "evidences.api.response.error_message", "evidences.api.service.name", "evidences.connection_info.direction", "evidences.connection_info.protocol_name", "evidences.dst_endpoint.autonomous_system.name", "evidences.dst_endpoint.location.city", "evidences.dst_endpoint.location.country", "evidences.src_endpoint.autonomous_system.name", "evidences.src_endpoint.hostname", "evidences.src_endpoint.location.city", "evidences.src_endpoint.location.country", "finding_info.analytic.name", "malware.name", "malware_scan_info.uid", "malware.severity", "resources.cloud_function.layers.uid_alt", "resources.cloud_function.runtime", "resources.cloud_function.user.uid", "resources.device.encryption_details.key_uid", "resources.device.image.uid", "resources.image.architecture", "resources.image.registry_uid", "resources.image.repository_name", "resources.image.uid", "resources.subnet_info.uid", "resources.vpc_uid", "vulnerabilities.affected_code.file.path", "vulnerabilities.affected_packages.name", "vulnerabilities.cve.epss.score", "vulnerabilities.cve.uid", "vulnerabilities.related_vulnerabilities", "cloud.account.name", "vendor_attributes.severity"
6935
+ # resp.output_configuration.findings.filters.composite_filters[0].string_filters[0].filter.value #=> String
6936
+ # resp.output_configuration.findings.filters.composite_filters[0].string_filters[0].filter.comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS", "CONTAINS_WORD"
6937
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters #=> Array
6938
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].field_name #=> String, one of "finding_info.created_time_dt", "finding_info.first_seen_time_dt", "finding_info.last_seen_time_dt", "finding_info.modified_time_dt", "resources.image.created_time_dt", "resources.image.last_used_time_dt", "resources.modified_time_dt"
6939
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].filter.start #=> String
6940
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].filter.end #=> String
6941
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].filter.date_range.value #=> Integer
6942
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].filter.date_range.unit #=> String, one of "DAYS"
6943
+ # resp.output_configuration.findings.filters.composite_filters[0].date_filters[0].filter.date_range.comparison #=> String, one of "WITHIN", "OLDER_THAN"
6944
+ # resp.output_configuration.findings.filters.composite_filters[0].boolean_filters #=> Array
6945
+ # resp.output_configuration.findings.filters.composite_filters[0].boolean_filters[0].field_name #=> String, one of "compliance.assessments.meets_criteria", "vulnerabilities.is_exploit_available", "vulnerabilities.is_fix_available"
6946
+ # resp.output_configuration.findings.filters.composite_filters[0].boolean_filters[0].filter.value #=> Boolean
6947
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters #=> Array
6948
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].field_name #=> String, one of "activity_id", "compliance.status_id", "confidence_score", "severity_id", "status_id", "finding_info.related_events_count", "evidences.api.response.code", "evidences.dst_endpoint.autonomous_system.number", "evidences.dst_endpoint.port", "evidences.src_endpoint.autonomous_system.number", "evidences.src_endpoint.port", "resources.image.in_use_count", "vulnerabilities.cve.cvss.base_score", "vendor_attributes.severity_id"
6949
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].filter.gte #=> Float
6950
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].filter.lte #=> Float
6951
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].filter.eq #=> Float
6952
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].filter.gt #=> Float
6953
+ # resp.output_configuration.findings.filters.composite_filters[0].number_filters[0].filter.lt #=> Float
6954
+ # resp.output_configuration.findings.filters.composite_filters[0].map_filters #=> Array
6955
+ # resp.output_configuration.findings.filters.composite_filters[0].map_filters[0].field_name #=> String, one of "resources.tags", "compliance.control_parameters", "databucket.tags", "finding_info.tags"
6956
+ # resp.output_configuration.findings.filters.composite_filters[0].map_filters[0].filter.key #=> String
6957
+ # resp.output_configuration.findings.filters.composite_filters[0].map_filters[0].filter.value #=> String
6958
+ # resp.output_configuration.findings.filters.composite_filters[0].map_filters[0].filter.comparison #=> String, one of "EQUALS", "NOT_EQUALS", "CONTAINS", "NOT_CONTAINS"
6959
+ # resp.output_configuration.findings.filters.composite_filters[0].ip_filters #=> Array
6960
+ # resp.output_configuration.findings.filters.composite_filters[0].ip_filters[0].field_name #=> String, one of "evidences.dst_endpoint.ip", "evidences.src_endpoint.ip"
6961
+ # resp.output_configuration.findings.filters.composite_filters[0].ip_filters[0].filter.cidr #=> String
6962
+ # resp.output_configuration.findings.filters.composite_filters[0].nested_composite_filters #=> Types::CompositeFilterList
6963
+ # resp.output_configuration.findings.filters.composite_filters[0].operator #=> String, one of "AND", "OR"
6964
+ # resp.output_configuration.findings.filters.composite_operator #=> String, one of "AND", "OR"
6965
+ # resp.output_configuration.findings.selected_fields #=> Array
6966
+ # resp.output_configuration.findings.selected_fields[0] #=> String, one of "metadata.uid", "activity_name", "cloud.account.name", "cloud.account.uid", "cloud.provider", "cloud.region", "compliance.assessments.category", "compliance.assessments.name", "compliance.control", "compliance.status", "compliance.standards", "finding_info.desc", "finding_info.src_url", "finding_info.title", "finding_info.types", "finding_info.uid", "finding_info.related_events.traits.category", "finding_info.related_events.uid", "finding_info.related_events.product.uid", "finding_info.related_events.title", "metadata.product.feature.uid", "metadata.product.name", "metadata.product.uid", "metadata.product.vendor_name", "remediation.desc", "remediation.references", "resources.cloud_partition", "resources.name", "resources.owner.account.uid", "resources.owner.org.uid", "resources.owner.account.name", "resources.provider", "resources.region", "resources.type", "resources.uid", "severity", "status", "comment", "vulnerabilities.fix_coverage", "class_name", "databucket.encryption_details.algorithm", "databucket.encryption_details.key_uid", "databucket.file.data_classifications.classifier_details.type", "evidences.actor.user.account.uid", "evidences.api.operation", "evidences.api.response.error_message", "evidences.api.service.name", "evidences.connection_info.direction", "evidences.connection_info.protocol_name", "evidences.dst_endpoint.autonomous_system.name", "evidences.dst_endpoint.location.city", "evidences.dst_endpoint.location.country", "evidences.src_endpoint.autonomous_system.name", "evidences.src_endpoint.hostname", "evidences.src_endpoint.location.city", "evidences.src_endpoint.location.country", "finding_info.analytic.name", "malware.name", "malware_scan_info.uid", "malware.severity", "resources.cloud_function.layers.uid_alt", "resources.cloud_function.runtime", "resources.cloud_function.user.uid", "resources.device.encryption_details.key_uid", "resources.device.image.uid", "resources.image.architecture", "resources.image.registry_uid", "resources.image.repository_name", "resources.image.uid", "resources.subnet_info.uid", "resources.vpc_uid", "vulnerabilities.affected_code.file.path", "vulnerabilities.affected_packages.name", "vulnerabilities.cve.cvss.vendor_name", "vulnerabilities.cve.cvss.version", "vulnerabilities.cve.epss.score", "vulnerabilities.cve.uid", "vulnerabilities.related_vulnerabilities", "vendor_attributes.severity", "activity_id", "compliance.status_id", "confidence_score", "severity_id", "status_id", "finding_info.related_events_count", "evidences.api.response.code", "evidences.dst_endpoint.autonomous_system.number", "evidences.dst_endpoint.port", "evidences.src_endpoint.autonomous_system.number", "evidences.src_endpoint.port", "resources.image.in_use_count", "vulnerabilities.cve.cvss.base_score", "vendor_attributes.severity_id", "finding_info.created_time_dt", "finding_info.first_seen_time_dt", "finding_info.last_seen_time_dt", "finding_info.modified_time_dt", "resources.image.created_time_dt", "resources.image.last_used_time_dt", "resources.modified_time_dt", "compliance.assessments.meets_criteria", "vulnerabilities.is_exploit_available", "vulnerabilities.is_fix_available", "resources.tags", "compliance.control_parameters", "databucket.tags", "finding_info.tags", "evidences.dst_endpoint.ip", "evidences.src_endpoint.ip"
6967
+ # resp.scopes.aws_organizations #=> Array
6968
+ # resp.scopes.aws_organizations[0].organization_id #=> String
6969
+ # resp.scopes.aws_organizations[0].organizational_unit_id #=> String
6970
+ # resp.destination.s3.bucket_arn #=> String
6971
+ # resp.destination.s3.kms_key_arn #=> String
6972
+ # resp.destination.s3.object_prefix #=> String
6973
+ # resp.failure_code #=> String, one of "ACCESS_DENIED", "RESOURCE_NOT_FOUND", "INTERNAL_ERROR"
6974
+ # resp.failure_message #=> String
6975
+ # resp.started_at #=> Time
6976
+ # resp.ended_at #=> Time
6977
+ #
6978
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetExportJobV2 AWS API Documentation
6979
+ #
6980
+ # @overload get_export_job_v2(params = {})
6981
+ # @param [Hash] params ({})
6982
+ def get_export_job_v2(params = {}, options = {})
6983
+ req = build_request(:get_export_job_v2, params)
6984
+ req.send_request(options)
6985
+ end
6986
+
6706
6987
  # <note markdown="1"> The *aggregation Region* is now called the *home Region*.
6707
6988
  #
6708
6989
  # </note>
@@ -10288,6 +10569,119 @@ module Aws::SecurityHub
10288
10569
  req.send_request(options)
10289
10570
  end
10290
10571
 
10572
+ # Returns the findings export jobs in your account as a paginated list
10573
+ # of `ExportSummary` objects. You can filter the results by job `Status`
10574
+ # or `DataType`.
10575
+ #
10576
+ # To page through the results, use the `MaxResults` and `NextToken`
10577
+ # parameters. If the response includes a `NextToken` value, pass it in a
10578
+ # subsequent request to retrieve the next page of results.
10579
+ #
10580
+ # Each `ExportSummary` reports the output `Format` of the job but not
10581
+ # its full `OutputConfiguration`. To retrieve the filters and selected
10582
+ # fields that a job was started with, call `GetExportJobV2`.
10583
+ #
10584
+ # @option params [String] :status
10585
+ # Filters the results to export jobs that have the specified status.
10586
+ #
10587
+ # @option params [String] :data_type
10588
+ # Filters the results to export jobs that produce the specified data
10589
+ # type.
10590
+ #
10591
+ # @option params [Integer] :max_results
10592
+ # The maximum number of results to return in a single call. Valid range
10593
+ # is 1–20.
10594
+ #
10595
+ # @option params [String] :next_token
10596
+ # The token required for pagination. On your first call, set the value
10597
+ # of this parameter to `NULL`. For subsequent calls, to continue listing
10598
+ # data, set the value of this parameter to the value returned in the
10599
+ # previous response.
10600
+ #
10601
+ # @return [Types::ListExportJobsV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10602
+ #
10603
+ # * {Types::ListExportJobsV2Response#items #items} => Array&lt;Types::ExportSummary&gt;
10604
+ # * {Types::ListExportJobsV2Response#next_token #next_token} => String
10605
+ #
10606
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10607
+ #
10608
+ #
10609
+ # @example Example: Example – Listing successful findings export jobs
10610
+ #
10611
+ # # The following example lists the findings export jobs in the account that have succeeded, returning up to 10 results per
10612
+ # # page.
10613
+ #
10614
+ # resp = client.list_export_jobs_v2({
10615
+ # data_type: "FINDINGS",
10616
+ # max_results: 10,
10617
+ # status: "SUCCEEDED",
10618
+ # })
10619
+ #
10620
+ # resp.to_h outputs the following:
10621
+ # {
10622
+ # items: [
10623
+ # {
10624
+ # data_type: "FINDINGS",
10625
+ # destination: {
10626
+ # s3: {
10627
+ # bucket_arn: "arn:aws:s3:::amzn-s3-demo-bucket",
10628
+ # kms_key_arn: "arn:aws:kms:aa-example-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
10629
+ # object_prefix: "security-hub-exports/2026-Q1",
10630
+ # },
10631
+ # },
10632
+ # ended_at: Time.parse("2026-03-27T18:09:52Z"),
10633
+ # export_job_id: "a1b2c3d4e5f6",
10634
+ # name: "quarterly-critical-findings",
10635
+ # output_configuration: {
10636
+ # findings: {
10637
+ # format: "CSV",
10638
+ # },
10639
+ # },
10640
+ # started_at: Time.parse("2026-03-27T18:04:11Z"),
10641
+ # status: "SUCCEEDED",
10642
+ # },
10643
+ # ],
10644
+ # next_token: "U2VjdXJpdHlIdWJFeGFtcGxlUGFnaW5hdGlvblRva2Vu",
10645
+ # }
10646
+ #
10647
+ # @example Request syntax with placeholder values
10648
+ #
10649
+ # resp = client.list_export_jobs_v2({
10650
+ # status: "RUNNING", # accepts RUNNING, SUCCEEDED, FAILED, CANCELLED
10651
+ # data_type: "FINDINGS", # accepts FINDINGS
10652
+ # max_results: 1,
10653
+ # next_token: "NextToken",
10654
+ # })
10655
+ #
10656
+ # @example Response structure
10657
+ #
10658
+ # resp.items #=> Array
10659
+ # resp.items[0].export_job_id #=> String
10660
+ # resp.items[0].name #=> String
10661
+ # resp.items[0].status #=> String, one of "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED"
10662
+ # resp.items[0].data_type #=> String, one of "FINDINGS"
10663
+ # resp.items[0].output_configuration.findings.format #=> String, one of "CSV", "OCSF_JSON"
10664
+ # resp.items[0].scopes.aws_organizations #=> Array
10665
+ # resp.items[0].scopes.aws_organizations[0].organization_id #=> String
10666
+ # resp.items[0].scopes.aws_organizations[0].organizational_unit_id #=> String
10667
+ # resp.items[0].destination.s3.bucket_arn #=> String
10668
+ # resp.items[0].destination.s3.kms_key_arn #=> String
10669
+ # resp.items[0].destination.s3.object_prefix #=> String
10670
+ # resp.items[0].failure_code #=> String, one of "ACCESS_DENIED", "RESOURCE_NOT_FOUND", "INTERNAL_ERROR"
10671
+ # resp.items[0].failure_message #=> String
10672
+ # resp.items[0].started_at #=> Time
10673
+ # resp.items[0].ended_at #=> Time
10674
+ # resp.next_token #=> String
10675
+ #
10676
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListExportJobsV2 AWS API Documentation
10677
+ #
10678
+ # @overload list_export_jobs_v2(params = {})
10679
+ # @param [Hash] params ({})
10680
+ def list_export_jobs_v2(params = {}, options = {})
10681
+ req = build_request(:list_export_jobs_v2, params)
10682
+ req.send_request(options)
10683
+ end
10684
+
10291
10685
  # Retrieves the exposure findings tied to a specific remediation target.
10292
10686
  # Results are sorted by previous severity, highest first, and are
10293
10687
  # paginated.
@@ -11257,6 +11651,307 @@ module Aws::SecurityHub
11257
11651
  req.send_request(options)
11258
11652
  end
11259
11653
 
11654
+ # Starts an ad hoc export job that writes Security Hub findings to an
11655
+ # Amazon Simple Storage Service (Amazon S3) bucket that you own. Because
11656
+ # the export runs asynchronously, this operation returns only the
11657
+ # `ExportJobId` of the new job; it doesn't wait for the export to
11658
+ # finish. Use `GetExportJobV2` to poll the job, and `ListExportJobsV2`
11659
+ # to view the export jobs in your account.
11660
+ #
11661
+ # Security Hub allows only one export job in the `RUNNING` state per
11662
+ # account at a time. If an export job is already running, this operation
11663
+ # returns a `ServiceQuotaExceededException`. Wait for the running job to
11664
+ # finish, or cancel it with `CancelExportJobV2`, before you start a new
11665
+ # one.
11666
+ #
11667
+ # Specify the destination bucket and Amazon Web Services Key Management
11668
+ # Service (Amazon Web Services KMS) key in the `Destination` parameter,
11669
+ # and the output format (`CSV` or `OCSF_JSON`), optional filters, and
11670
+ # field selection in the `OutputConfiguration` parameter. Before you
11671
+ # call this operation, you must grant Security Hub permission to write
11672
+ # to your bucket and use your Amazon Web Services KMS key by adding the
11673
+ # bucket policy and key policy statements shown in the Examples section.
11674
+ #
11675
+ # Two identities use your Amazon Web Services KMS key, and each needs
11676
+ # its own permission. Security Hub uses the key when it writes the
11677
+ # export objects to your bucket. The IAM principal that calls
11678
+ # `StartExportJobV2` must also have `kms:GenerateDataKey` and
11679
+ # `kms:Decrypt` permissions on the key. The Examples section shows both
11680
+ # grants.
11681
+ #
11682
+ # A delegated administrator can use the optional `Scopes` parameter to
11683
+ # export findings for specific organizations or organizational units
11684
+ # (OUs).
11685
+ #
11686
+ # To make the request idempotent, provide a `ClientToken`. If you retry
11687
+ # a `StartExportJobV2` request with the same `ClientToken` and the same
11688
+ # request parameters, Security Hub returns the `ExportJobId` of the
11689
+ # original job instead of starting a new one. If you reuse a
11690
+ # `ClientToken` with different request parameters, this operation
11691
+ # returns a `ConflictException`.
11692
+ #
11693
+ # @option params [String] :name
11694
+ # An optional, user-provided name for the export job that helps you
11695
+ # identify it in `ListExportJobsV2` results. The value can be 1–256
11696
+ # characters. Alphanumeric characters, spaces, and the following ASCII
11697
+ # characters are permitted: `. _ , : ( ) / + -`.
11698
+ #
11699
+ # @option params [required, Types::ExportDestination] :destination
11700
+ # The destination that Security Hub writes the export to. You must
11701
+ # specify exactly one destination type. Currently, the only supported
11702
+ # type is Amazon S3.
11703
+ #
11704
+ # @option params [required, Types::ExportOutput] :output_configuration
11705
+ # Specifies what data to export and how to format it. You must specify
11706
+ # exactly one output type. Currently, the only supported type is
11707
+ # `Findings`.
11708
+ #
11709
+ # @option params [Types::ExportScopes] :scopes
11710
+ # Limits the export to findings from specific organizational units (OUs)
11711
+ # or from the delegated administrator's organization. Only the
11712
+ # delegated administrator account can use this parameter; other accounts
11713
+ # that specify it receive an `AccessDeniedException`.
11714
+ #
11715
+ # This parameter is optional. If you omit it, the delegated
11716
+ # administrator exports findings from all accounts across the entire
11717
+ # organization, and other accounts export only their own findings.
11718
+ #
11719
+ # You can specify up to 10 entries in `Scopes.AwsOrganizations`. If you
11720
+ # specify multiple entries, Security Hub combines them using OR logic.
11721
+ #
11722
+ # @option params [String] :client_token
11723
+ # A unique identifier used to ensure idempotency.
11724
+ #
11725
+ # **A suitable default value is auto-generated.** You should normally
11726
+ # not need to pass this option.**
11727
+ #
11728
+ # @return [Types::StartExportJobV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
11729
+ #
11730
+ # * {Types::StartExportJobV2Response#export_job_id #export_job_id} => String
11731
+ #
11732
+ #
11733
+ # @example Example: Example – Starting a CSV export of critical findings
11734
+ #
11735
+ # # The following example starts an export that writes selected fields of new, critical findings to an Amazon S3 bucket in
11736
+ # # CSV format.
11737
+ #
11738
+ # resp = client.start_export_job_v2({
11739
+ # client_token: "b3d1f9a2-1c4e-4b9a-9f2e-EXAMPLE11111",
11740
+ # destination: {
11741
+ # s3: {
11742
+ # bucket_arn: "arn:aws:s3:::amzn-s3-demo-bucket",
11743
+ # kms_key_arn: "arn:aws:kms:aa-example-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
11744
+ # object_prefix: "security-hub-exports/2026-Q1",
11745
+ # },
11746
+ # },
11747
+ # name: "quarterly-critical-findings",
11748
+ # output_configuration: {
11749
+ # findings: {
11750
+ # filters: {
11751
+ # composite_filters: [
11752
+ # {
11753
+ # operator: "AND",
11754
+ # string_filters: [
11755
+ # {
11756
+ # field_name: "severity",
11757
+ # filter: {
11758
+ # comparison: "EQUALS",
11759
+ # value: "Critical",
11760
+ # },
11761
+ # },
11762
+ # {
11763
+ # field_name: "status",
11764
+ # filter: {
11765
+ # comparison: "EQUALS",
11766
+ # value: "New",
11767
+ # },
11768
+ # },
11769
+ # ],
11770
+ # },
11771
+ # ],
11772
+ # composite_operator: "AND",
11773
+ # },
11774
+ # format: "CSV",
11775
+ # selected_fields: [
11776
+ # "finding_info.title",
11777
+ # "severity",
11778
+ # "status",
11779
+ # "cloud.account.uid",
11780
+ # "resources.uid",
11781
+ # ],
11782
+ # },
11783
+ # },
11784
+ # })
11785
+ #
11786
+ # resp.to_h outputs the following:
11787
+ # {
11788
+ # export_job_id: "a1b2c3d4e5f6",
11789
+ # }
11790
+ #
11791
+ # @example Example: Example – Starting an OCSF JSON export scoped to an organizational unit
11792
+ #
11793
+ # # The following example, run by a delegated administrator, starts an export of the last 30 days of findings for a specific
11794
+ # # organizational unit (OU) in OCSF JSON format.
11795
+ #
11796
+ # resp = client.start_export_job_v2({
11797
+ # destination: {
11798
+ # s3: {
11799
+ # bucket_arn: "arn:aws:s3:::amzn-s3-demo-bucket",
11800
+ # kms_key_arn: "arn:aws:kms:aa-example-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
11801
+ # },
11802
+ # },
11803
+ # output_configuration: {
11804
+ # findings: {
11805
+ # filters: {
11806
+ # composite_filters: [
11807
+ # {
11808
+ # date_filters: [
11809
+ # {
11810
+ # field_name: "finding_info.last_seen_time_dt",
11811
+ # filter: {
11812
+ # date_range: {
11813
+ # comparison: "WITHIN",
11814
+ # unit: "DAYS",
11815
+ # value: 30,
11816
+ # },
11817
+ # },
11818
+ # },
11819
+ # ],
11820
+ # operator: "AND",
11821
+ # },
11822
+ # ],
11823
+ # composite_operator: "AND",
11824
+ # },
11825
+ # format: "OCSF_JSON",
11826
+ # },
11827
+ # },
11828
+ # scopes: {
11829
+ # aws_organizations: [
11830
+ # {
11831
+ # organizational_unit_id: "ou-1234-a1b2c3d4",
11832
+ # },
11833
+ # ],
11834
+ # },
11835
+ # })
11836
+ #
11837
+ # resp.to_h outputs the following:
11838
+ # {
11839
+ # export_job_id: "f6e5d4c3b2a1",
11840
+ # }
11841
+ #
11842
+ # @example Request syntax with placeholder values
11843
+ #
11844
+ # resp = client.start_export_job_v2({
11845
+ # name: "ExportName",
11846
+ # destination: { # required
11847
+ # s3: {
11848
+ # bucket_arn: "NonEmptyString", # required
11849
+ # kms_key_arn: "NonEmptyString", # required
11850
+ # object_prefix: "S3ObjectPrefix",
11851
+ # },
11852
+ # },
11853
+ # output_configuration: { # required
11854
+ # findings: {
11855
+ # format: "CSV", # required, accepts CSV, OCSF_JSON
11856
+ # filters: {
11857
+ # composite_filters: [
11858
+ # {
11859
+ # string_filters: [
11860
+ # {
11861
+ # field_name: "metadata.uid", # accepts metadata.uid, activity_name, cloud.account.uid, cloud.provider, cloud.region, compliance.assessments.category, compliance.assessments.name, compliance.control, compliance.status, compliance.standards, finding_info.desc, finding_info.src_url, finding_info.title, finding_info.types, finding_info.uid, finding_info.related_events.traits.category, finding_info.related_events.uid, finding_info.related_events.product.uid, finding_info.related_events.title, metadata.product.name, metadata.product.uid, metadata.product.vendor_name, remediation.desc, remediation.references, resources.cloud_partition, resources.name, resources.owner.account.uid, resources.owner.org.uid, resources.owner.account.name, resources.provider, resources.region, resources.type, resources.uid, severity, status, comment, vulnerabilities.fix_coverage, class_name, databucket.encryption_details.algorithm, databucket.encryption_details.key_uid, databucket.file.data_classifications.classifier_details.type, evidences.actor.user.account.uid, evidences.api.operation, evidences.api.response.error_message, evidences.api.service.name, evidences.connection_info.direction, evidences.connection_info.protocol_name, evidences.dst_endpoint.autonomous_system.name, evidences.dst_endpoint.location.city, evidences.dst_endpoint.location.country, evidences.src_endpoint.autonomous_system.name, evidences.src_endpoint.hostname, evidences.src_endpoint.location.city, evidences.src_endpoint.location.country, finding_info.analytic.name, malware.name, malware_scan_info.uid, malware.severity, resources.cloud_function.layers.uid_alt, resources.cloud_function.runtime, resources.cloud_function.user.uid, resources.device.encryption_details.key_uid, resources.device.image.uid, resources.image.architecture, resources.image.registry_uid, resources.image.repository_name, resources.image.uid, resources.subnet_info.uid, resources.vpc_uid, vulnerabilities.affected_code.file.path, vulnerabilities.affected_packages.name, vulnerabilities.cve.epss.score, vulnerabilities.cve.uid, vulnerabilities.related_vulnerabilities, cloud.account.name, vendor_attributes.severity
11862
+ # filter: {
11863
+ # value: "NonEmptyString",
11864
+ # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS, CONTAINS_WORD
11865
+ # },
11866
+ # },
11867
+ # ],
11868
+ # date_filters: [
11869
+ # {
11870
+ # field_name: "finding_info.created_time_dt", # accepts finding_info.created_time_dt, finding_info.first_seen_time_dt, finding_info.last_seen_time_dt, finding_info.modified_time_dt, resources.image.created_time_dt, resources.image.last_used_time_dt, resources.modified_time_dt
11871
+ # filter: {
11872
+ # start: "NonEmptyString",
11873
+ # end: "NonEmptyString",
11874
+ # date_range: {
11875
+ # value: 1,
11876
+ # unit: "DAYS", # accepts DAYS
11877
+ # comparison: "WITHIN", # accepts WITHIN, OLDER_THAN
11878
+ # },
11879
+ # },
11880
+ # },
11881
+ # ],
11882
+ # boolean_filters: [
11883
+ # {
11884
+ # field_name: "compliance.assessments.meets_criteria", # accepts compliance.assessments.meets_criteria, vulnerabilities.is_exploit_available, vulnerabilities.is_fix_available
11885
+ # filter: {
11886
+ # value: false,
11887
+ # },
11888
+ # },
11889
+ # ],
11890
+ # number_filters: [
11891
+ # {
11892
+ # field_name: "activity_id", # accepts activity_id, compliance.status_id, confidence_score, severity_id, status_id, finding_info.related_events_count, evidences.api.response.code, evidences.dst_endpoint.autonomous_system.number, evidences.dst_endpoint.port, evidences.src_endpoint.autonomous_system.number, evidences.src_endpoint.port, resources.image.in_use_count, vulnerabilities.cve.cvss.base_score, vendor_attributes.severity_id
11893
+ # filter: {
11894
+ # gte: 1.0,
11895
+ # lte: 1.0,
11896
+ # eq: 1.0,
11897
+ # gt: 1.0,
11898
+ # lt: 1.0,
11899
+ # },
11900
+ # },
11901
+ # ],
11902
+ # map_filters: [
11903
+ # {
11904
+ # field_name: "resources.tags", # accepts resources.tags, compliance.control_parameters, databucket.tags, finding_info.tags
11905
+ # filter: {
11906
+ # key: "NonEmptyString",
11907
+ # value: "NonEmptyString",
11908
+ # comparison: "EQUALS", # accepts EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS
11909
+ # },
11910
+ # },
11911
+ # ],
11912
+ # ip_filters: [
11913
+ # {
11914
+ # field_name: "evidences.dst_endpoint.ip", # accepts evidences.dst_endpoint.ip, evidences.src_endpoint.ip
11915
+ # filter: {
11916
+ # cidr: "NonEmptyString",
11917
+ # },
11918
+ # },
11919
+ # ],
11920
+ # nested_composite_filters: {
11921
+ # # recursive CompositeFilterList
11922
+ # },
11923
+ # operator: "AND", # accepts AND, OR
11924
+ # },
11925
+ # ],
11926
+ # composite_operator: "AND", # accepts AND, OR
11927
+ # },
11928
+ # selected_fields: ["metadata.uid"], # accepts metadata.uid, activity_name, cloud.account.name, cloud.account.uid, cloud.provider, cloud.region, compliance.assessments.category, compliance.assessments.name, compliance.control, compliance.status, compliance.standards, finding_info.desc, finding_info.src_url, finding_info.title, finding_info.types, finding_info.uid, finding_info.related_events.traits.category, finding_info.related_events.uid, finding_info.related_events.product.uid, finding_info.related_events.title, metadata.product.feature.uid, metadata.product.name, metadata.product.uid, metadata.product.vendor_name, remediation.desc, remediation.references, resources.cloud_partition, resources.name, resources.owner.account.uid, resources.owner.org.uid, resources.owner.account.name, resources.provider, resources.region, resources.type, resources.uid, severity, status, comment, vulnerabilities.fix_coverage, class_name, databucket.encryption_details.algorithm, databucket.encryption_details.key_uid, databucket.file.data_classifications.classifier_details.type, evidences.actor.user.account.uid, evidences.api.operation, evidences.api.response.error_message, evidences.api.service.name, evidences.connection_info.direction, evidences.connection_info.protocol_name, evidences.dst_endpoint.autonomous_system.name, evidences.dst_endpoint.location.city, evidences.dst_endpoint.location.country, evidences.src_endpoint.autonomous_system.name, evidences.src_endpoint.hostname, evidences.src_endpoint.location.city, evidences.src_endpoint.location.country, finding_info.analytic.name, malware.name, malware_scan_info.uid, malware.severity, resources.cloud_function.layers.uid_alt, resources.cloud_function.runtime, resources.cloud_function.user.uid, resources.device.encryption_details.key_uid, resources.device.image.uid, resources.image.architecture, resources.image.registry_uid, resources.image.repository_name, resources.image.uid, resources.subnet_info.uid, resources.vpc_uid, vulnerabilities.affected_code.file.path, vulnerabilities.affected_packages.name, vulnerabilities.cve.cvss.vendor_name, vulnerabilities.cve.cvss.version, vulnerabilities.cve.epss.score, vulnerabilities.cve.uid, vulnerabilities.related_vulnerabilities, vendor_attributes.severity, activity_id, compliance.status_id, confidence_score, severity_id, status_id, finding_info.related_events_count, evidences.api.response.code, evidences.dst_endpoint.autonomous_system.number, evidences.dst_endpoint.port, evidences.src_endpoint.autonomous_system.number, evidences.src_endpoint.port, resources.image.in_use_count, vulnerabilities.cve.cvss.base_score, vendor_attributes.severity_id, finding_info.created_time_dt, finding_info.first_seen_time_dt, finding_info.last_seen_time_dt, finding_info.modified_time_dt, resources.image.created_time_dt, resources.image.last_used_time_dt, resources.modified_time_dt, compliance.assessments.meets_criteria, vulnerabilities.is_exploit_available, vulnerabilities.is_fix_available, resources.tags, compliance.control_parameters, databucket.tags, finding_info.tags, evidences.dst_endpoint.ip, evidences.src_endpoint.ip
11929
+ # },
11930
+ # },
11931
+ # scopes: {
11932
+ # aws_organizations: [
11933
+ # {
11934
+ # organization_id: "NonEmptyString",
11935
+ # organizational_unit_id: "NonEmptyString",
11936
+ # },
11937
+ # ],
11938
+ # },
11939
+ # client_token: "ClientToken",
11940
+ # })
11941
+ #
11942
+ # @example Response structure
11943
+ #
11944
+ # resp.export_job_id #=> String
11945
+ #
11946
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StartExportJobV2 AWS API Documentation
11947
+ #
11948
+ # @overload start_export_job_v2(params = {})
11949
+ # @param [Hash] params ({})
11950
+ def start_export_job_v2(params = {}, options = {})
11951
+ req = build_request(:start_export_job_v2, params)
11952
+ req.send_request(options)
11953
+ end
11954
+
11260
11955
  # Adds one or more tags to a resource.
11261
11956
  #
11262
11957
  # @option params [required, String] :resource_arn
@@ -13835,7 +14530,7 @@ module Aws::SecurityHub
13835
14530
  tracer: tracer
13836
14531
  )
13837
14532
  context[:gem_name] = 'aws-sdk-securityhub'
13838
- context[:gem_version] = '1.166.0'
14533
+ context[:gem_version] = '1.167.0'
13839
14534
  Seahorse::Client::Request.new(handlers, context)
13840
14535
  end
13841
14536