aws-sdk-accessanalyzer 1.65.0 → 1.67.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3ff3f6bceaf3418b3e54c4ea0d99ede89cc928cd0893b394e36754282a2192b
4
- data.tar.gz: 0b058cdb0c604cd3fbf886753fbb2e0f2b6baaab60841bfca3b8bb20876fdf88
3
+ metadata.gz: 287cd222a200e87c59b5aae2d6f1e97921f0549b314ea327c9a9d74bc0c87116
4
+ data.tar.gz: 1b76d71d63257681f2ab5bb5d8711ecc1657d877a9d70c198061368503d77943
5
5
  SHA512:
6
- metadata.gz: 83e03b02eacead1f8189b7d20f6ba96cea831e6aeb8940e8bffb2054be060f2fa1e764623443793d320f013df2fd20f03580d421b65081759b5db9bdf9adb43d
7
- data.tar.gz: 9ae70c95401884fae23af2cac48bf25e7bfc6a59daa12ee7250ed7c7ed880bb237cf09a483125682ee5abd478eb50f45bcdc0e6a945b4dfe8f86acdcb086296c
6
+ metadata.gz: b95c704a848c2538f83a2a8eaa858b31f8147af352fecd3bb57f60559dc96383cf2c87dc341fc17abd91848ae687e3661fd9d76e2194d4ccc25f1377c0361b50
7
+ data.tar.gz: b9fe7060212a94dd553092694ba6f9ea933fc0464a5469b9868b6c4bf9bc45bd84888c4b2354294309aee5d40a2b16b66ef8fcb35dd65a6fc144e42447f43da9
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.67.0 (2025-02-13)
5
+ ------------------
6
+
7
+ * Feature - This release introduces the getFindingsStatistics API, enabling users to retrieve aggregated finding statistics for IAM Access Analyzer's external access and unused access analysis features. Updated service API and documentation.
8
+
9
+ 1.66.0 (2025-02-06)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.65.0 (2025-01-15)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.65.0
1
+ 1.67.0
@@ -1747,6 +1747,58 @@ module Aws::AccessAnalyzer
1747
1747
  req.send_request(options)
1748
1748
  end
1749
1749
 
1750
+ # Retrieves a list of aggregated finding statistics for an external
1751
+ # access or unused access analyzer.
1752
+ #
1753
+ # @option params [required, String] :analyzer_arn
1754
+ # The [ARN of the analyzer][1] used to generate the statistics.
1755
+ #
1756
+ #
1757
+ #
1758
+ # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources
1759
+ #
1760
+ # @return [Types::GetFindingsStatisticsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1761
+ #
1762
+ # * {Types::GetFindingsStatisticsResponse#findings_statistics #findings_statistics} => Array<Types::FindingsStatistics>
1763
+ # * {Types::GetFindingsStatisticsResponse#last_updated_at #last_updated_at} => Time
1764
+ #
1765
+ # @example Request syntax with placeholder values
1766
+ #
1767
+ # resp = client.get_findings_statistics({
1768
+ # analyzer_arn: "AnalyzerArn", # required
1769
+ # })
1770
+ #
1771
+ # @example Response structure
1772
+ #
1773
+ # resp.findings_statistics #=> Array
1774
+ # resp.findings_statistics[0].external_access_findings_statistics.resource_type_statistics #=> Hash
1775
+ # resp.findings_statistics[0].external_access_findings_statistics.resource_type_statistics["ResourceType"].total_active_public #=> Integer
1776
+ # resp.findings_statistics[0].external_access_findings_statistics.resource_type_statistics["ResourceType"].total_active_cross_account #=> Integer
1777
+ # resp.findings_statistics[0].external_access_findings_statistics.total_active_findings #=> Integer
1778
+ # resp.findings_statistics[0].external_access_findings_statistics.total_archived_findings #=> Integer
1779
+ # resp.findings_statistics[0].external_access_findings_statistics.total_resolved_findings #=> Integer
1780
+ # resp.findings_statistics[0].unused_access_findings_statistics.unused_access_type_statistics #=> Array
1781
+ # resp.findings_statistics[0].unused_access_findings_statistics.unused_access_type_statistics[0].unused_access_type #=> String
1782
+ # resp.findings_statistics[0].unused_access_findings_statistics.unused_access_type_statistics[0].total #=> Integer
1783
+ # resp.findings_statistics[0].unused_access_findings_statistics.top_accounts #=> Array
1784
+ # resp.findings_statistics[0].unused_access_findings_statistics.top_accounts[0].account #=> String
1785
+ # resp.findings_statistics[0].unused_access_findings_statistics.top_accounts[0].number_of_active_findings #=> Integer
1786
+ # resp.findings_statistics[0].unused_access_findings_statistics.top_accounts[0].details #=> Hash
1787
+ # resp.findings_statistics[0].unused_access_findings_statistics.top_accounts[0].details["String"] #=> Integer
1788
+ # resp.findings_statistics[0].unused_access_findings_statistics.total_active_findings #=> Integer
1789
+ # resp.findings_statistics[0].unused_access_findings_statistics.total_archived_findings #=> Integer
1790
+ # resp.findings_statistics[0].unused_access_findings_statistics.total_resolved_findings #=> Integer
1791
+ # resp.last_updated_at #=> Time
1792
+ #
1793
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingsStatistics AWS API Documentation
1794
+ #
1795
+ # @overload get_findings_statistics(params = {})
1796
+ # @param [Hash] params ({})
1797
+ def get_findings_statistics(params = {}, options = {})
1798
+ req = build_request(:get_findings_statistics, params)
1799
+ req.send_request(options)
1800
+ end
1801
+
1750
1802
  # Retrieves the policy that was generated using `StartPolicyGeneration`.
1751
1803
  #
1752
1804
  # @option params [required, String] :job_id
@@ -2774,7 +2826,7 @@ module Aws::AccessAnalyzer
2774
2826
  tracer: tracer
2775
2827
  )
2776
2828
  context[:gem_name] = 'aws-sdk-accessanalyzer'
2777
- context[:gem_version] = '1.65.0'
2829
+ context[:gem_version] = '1.67.0'
2778
2830
  Seahorse::Client::Request.new(handlers, context)
2779
2831
  end
2780
2832
 
@@ -33,6 +33,7 @@ module Aws::AccessAnalyzer
33
33
  AccessPreviewSummary = Shapes::StructureShape.new(name: 'AccessPreviewSummary')
34
34
  AccessPreviewsList = Shapes::ListShape.new(name: 'AccessPreviewsList')
35
35
  AccessResourcesList = Shapes::ListShape.new(name: 'AccessResourcesList')
36
+ AccountAggregations = Shapes::ListShape.new(name: 'AccountAggregations')
36
37
  AccountIdsList = Shapes::ListShape.new(name: 'AccountIdsList')
37
38
  AclCanonicalId = Shapes::StringShape.new(name: 'AclCanonicalId')
38
39
  AclGrantee = Shapes::UnionShape.new(name: 'AclGrantee')
@@ -98,8 +99,11 @@ module Aws::AccessAnalyzer
98
99
  EfsFileSystemConfiguration = Shapes::StructureShape.new(name: 'EfsFileSystemConfiguration')
99
100
  EfsFileSystemPolicy = Shapes::StringShape.new(name: 'EfsFileSystemPolicy')
100
101
  ExternalAccessDetails = Shapes::StructureShape.new(name: 'ExternalAccessDetails')
102
+ ExternalAccessFindingsStatistics = Shapes::StructureShape.new(name: 'ExternalAccessFindingsStatistics')
101
103
  FilterCriteriaMap = Shapes::MapShape.new(name: 'FilterCriteriaMap')
102
104
  Finding = Shapes::StructureShape.new(name: 'Finding')
105
+ FindingAggregationAccountDetails = Shapes::StructureShape.new(name: 'FindingAggregationAccountDetails')
106
+ FindingAggregationAccountDetailsMap = Shapes::MapShape.new(name: 'FindingAggregationAccountDetailsMap')
103
107
  FindingChangeType = Shapes::StringShape.new(name: 'FindingChangeType')
104
108
  FindingDetails = Shapes::UnionShape.new(name: 'FindingDetails')
105
109
  FindingDetailsList = Shapes::ListShape.new(name: 'FindingDetailsList')
@@ -116,6 +120,8 @@ module Aws::AccessAnalyzer
116
120
  FindingType = Shapes::StringShape.new(name: 'FindingType')
117
121
  FindingsList = Shapes::ListShape.new(name: 'FindingsList')
118
122
  FindingsListV2 = Shapes::ListShape.new(name: 'FindingsListV2')
123
+ FindingsStatistics = Shapes::UnionShape.new(name: 'FindingsStatistics')
124
+ FindingsStatisticsList = Shapes::ListShape.new(name: 'FindingsStatisticsList')
119
125
  GenerateFindingRecommendationRequest = Shapes::StructureShape.new(name: 'GenerateFindingRecommendationRequest')
120
126
  GenerateFindingRecommendationRequestIdString = Shapes::StringShape.new(name: 'GenerateFindingRecommendationRequestIdString')
121
127
  GeneratedPolicy = Shapes::StructureShape.new(name: 'GeneratedPolicy')
@@ -138,6 +144,8 @@ module Aws::AccessAnalyzer
138
144
  GetFindingResponse = Shapes::StructureShape.new(name: 'GetFindingResponse')
139
145
  GetFindingV2Request = Shapes::StructureShape.new(name: 'GetFindingV2Request')
140
146
  GetFindingV2Response = Shapes::StructureShape.new(name: 'GetFindingV2Response')
147
+ GetFindingsStatisticsRequest = Shapes::StructureShape.new(name: 'GetFindingsStatisticsRequest')
148
+ GetFindingsStatisticsResponse = Shapes::StructureShape.new(name: 'GetFindingsStatisticsResponse')
141
149
  GetGeneratedPolicyRequest = Shapes::StructureShape.new(name: 'GetGeneratedPolicyRequest')
142
150
  GetGeneratedPolicyResponse = Shapes::StructureShape.new(name: 'GetGeneratedPolicyResponse')
143
151
  GranteePrincipal = Shapes::StringShape.new(name: 'GranteePrincipal')
@@ -232,6 +240,8 @@ module Aws::AccessAnalyzer
232
240
  ResourceControlPolicyRestriction = Shapes::StringShape.new(name: 'ResourceControlPolicyRestriction')
233
241
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
234
242
  ResourceType = Shapes::StringShape.new(name: 'ResourceType')
243
+ ResourceTypeDetails = Shapes::StructureShape.new(name: 'ResourceTypeDetails')
244
+ ResourceTypeStatisticsMap = Shapes::MapShape.new(name: 'ResourceTypeStatisticsMap')
235
245
  RetiringPrincipal = Shapes::StringShape.new(name: 'RetiringPrincipal')
236
246
  RoleArn = Shapes::StringShape.new(name: 'RoleArn')
237
247
  S3AccessPointConfiguration = Shapes::StructureShape.new(name: 'S3AccessPointConfiguration')
@@ -278,6 +288,9 @@ module Aws::AccessAnalyzer
278
288
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
279
289
  UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse')
280
290
  UnusedAccessConfiguration = Shapes::StructureShape.new(name: 'UnusedAccessConfiguration')
291
+ UnusedAccessFindingsStatistics = Shapes::StructureShape.new(name: 'UnusedAccessFindingsStatistics')
292
+ UnusedAccessTypeStatistics = Shapes::StructureShape.new(name: 'UnusedAccessTypeStatistics')
293
+ UnusedAccessTypeStatisticsList = Shapes::ListShape.new(name: 'UnusedAccessTypeStatisticsList')
281
294
  UnusedAction = Shapes::StructureShape.new(name: 'UnusedAction')
282
295
  UnusedActionList = Shapes::ListShape.new(name: 'UnusedActionList')
283
296
  UnusedIamRoleDetails = Shapes::StructureShape.new(name: 'UnusedIamRoleDetails')
@@ -354,6 +367,8 @@ module Aws::AccessAnalyzer
354
367
 
355
368
  AccessResourcesList.member = Shapes::ShapeRef.new(shape: Resource)
356
369
 
370
+ AccountAggregations.member = Shapes::ShapeRef.new(shape: FindingAggregationAccountDetails)
371
+
357
372
  AccountIdsList.member = Shapes::ShapeRef.new(shape: String)
358
373
 
359
374
  AclGrantee.add_member(:id, Shapes::ShapeRef.new(shape: AclCanonicalId, location_name: "id"))
@@ -587,6 +602,12 @@ module Aws::AccessAnalyzer
587
602
  ExternalAccessDetails.add_member(:resource_control_policy_restriction, Shapes::ShapeRef.new(shape: ResourceControlPolicyRestriction, location_name: "resourceControlPolicyRestriction"))
588
603
  ExternalAccessDetails.struct_class = Types::ExternalAccessDetails
589
604
 
605
+ ExternalAccessFindingsStatistics.add_member(:resource_type_statistics, Shapes::ShapeRef.new(shape: ResourceTypeStatisticsMap, location_name: "resourceTypeStatistics"))
606
+ ExternalAccessFindingsStatistics.add_member(:total_active_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalActiveFindings"))
607
+ ExternalAccessFindingsStatistics.add_member(:total_archived_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalArchivedFindings"))
608
+ ExternalAccessFindingsStatistics.add_member(:total_resolved_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalResolvedFindings"))
609
+ ExternalAccessFindingsStatistics.struct_class = Types::ExternalAccessFindingsStatistics
610
+
590
611
  FilterCriteriaMap.key = Shapes::ShapeRef.new(shape: String)
591
612
  FilterCriteriaMap.value = Shapes::ShapeRef.new(shape: Criterion)
592
613
 
@@ -607,6 +628,14 @@ module Aws::AccessAnalyzer
607
628
  Finding.add_member(:resource_control_policy_restriction, Shapes::ShapeRef.new(shape: ResourceControlPolicyRestriction, location_name: "resourceControlPolicyRestriction"))
608
629
  Finding.struct_class = Types::Finding
609
630
 
631
+ FindingAggregationAccountDetails.add_member(:account, Shapes::ShapeRef.new(shape: String, location_name: "account"))
632
+ FindingAggregationAccountDetails.add_member(:number_of_active_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "numberOfActiveFindings"))
633
+ FindingAggregationAccountDetails.add_member(:details, Shapes::ShapeRef.new(shape: FindingAggregationAccountDetailsMap, location_name: "details"))
634
+ FindingAggregationAccountDetails.struct_class = Types::FindingAggregationAccountDetails
635
+
636
+ FindingAggregationAccountDetailsMap.key = Shapes::ShapeRef.new(shape: String)
637
+ FindingAggregationAccountDetailsMap.value = Shapes::ShapeRef.new(shape: Integer)
638
+
610
639
  FindingDetails.add_member(:external_access_details, Shapes::ShapeRef.new(shape: ExternalAccessDetails, location_name: "externalAccessDetails"))
611
640
  FindingDetails.add_member(:unused_permission_details, Shapes::ShapeRef.new(shape: UnusedPermissionDetails, location_name: "unusedPermissionDetails"))
612
641
  FindingDetails.add_member(:unused_iam_user_access_key_details, Shapes::ShapeRef.new(shape: UnusedIamUserAccessKeyDetails, location_name: "unusedIamUserAccessKeyDetails"))
@@ -668,6 +697,16 @@ module Aws::AccessAnalyzer
668
697
 
669
698
  FindingsListV2.member = Shapes::ShapeRef.new(shape: FindingSummaryV2)
670
699
 
700
+ FindingsStatistics.add_member(:external_access_findings_statistics, Shapes::ShapeRef.new(shape: ExternalAccessFindingsStatistics, location_name: "externalAccessFindingsStatistics"))
701
+ FindingsStatistics.add_member(:unused_access_findings_statistics, Shapes::ShapeRef.new(shape: UnusedAccessFindingsStatistics, location_name: "unusedAccessFindingsStatistics"))
702
+ FindingsStatistics.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
703
+ FindingsStatistics.add_member_subclass(:external_access_findings_statistics, Types::FindingsStatistics::ExternalAccessFindingsStatistics)
704
+ FindingsStatistics.add_member_subclass(:unused_access_findings_statistics, Types::FindingsStatistics::UnusedAccessFindingsStatistics)
705
+ FindingsStatistics.add_member_subclass(:unknown, Types::FindingsStatistics::Unknown)
706
+ FindingsStatistics.struct_class = Types::FindingsStatistics
707
+
708
+ FindingsStatisticsList.member = Shapes::ShapeRef.new(shape: FindingsStatistics)
709
+
671
710
  GenerateFindingRecommendationRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn"))
672
711
  GenerateFindingRecommendationRequest.add_member(:id, Shapes::ShapeRef.new(shape: GenerateFindingRecommendationRequestIdString, required: true, location: "uri", location_name: "id"))
673
712
  GenerateFindingRecommendationRequest.struct_class = Types::GenerateFindingRecommendationRequest
@@ -756,6 +795,13 @@ module Aws::AccessAnalyzer
756
795
  GetFindingV2Response.add_member(:finding_type, Shapes::ShapeRef.new(shape: FindingType, location_name: "findingType"))
757
796
  GetFindingV2Response.struct_class = Types::GetFindingV2Response
758
797
 
798
+ GetFindingsStatisticsRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "analyzerArn"))
799
+ GetFindingsStatisticsRequest.struct_class = Types::GetFindingsStatisticsRequest
800
+
801
+ GetFindingsStatisticsResponse.add_member(:findings_statistics, Shapes::ShapeRef.new(shape: FindingsStatisticsList, location_name: "findingsStatistics"))
802
+ GetFindingsStatisticsResponse.add_member(:last_updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedAt"))
803
+ GetFindingsStatisticsResponse.struct_class = Types::GetFindingsStatisticsResponse
804
+
759
805
  GetGeneratedPolicyRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "jobId"))
760
806
  GetGeneratedPolicyRequest.add_member(:include_resource_placeholders, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeResourcePlaceholders"))
761
807
  GetGeneratedPolicyRequest.add_member(:include_service_level_template, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeServiceLevelTemplate"))
@@ -1008,6 +1054,13 @@ module Aws::AccessAnalyzer
1008
1054
  ResourceNotFoundException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType"))
1009
1055
  ResourceNotFoundException.struct_class = Types::ResourceNotFoundException
1010
1056
 
1057
+ ResourceTypeDetails.add_member(:total_active_public, Shapes::ShapeRef.new(shape: Integer, location_name: "totalActivePublic"))
1058
+ ResourceTypeDetails.add_member(:total_active_cross_account, Shapes::ShapeRef.new(shape: Integer, location_name: "totalActiveCrossAccount"))
1059
+ ResourceTypeDetails.struct_class = Types::ResourceTypeDetails
1060
+
1061
+ ResourceTypeStatisticsMap.key = Shapes::ShapeRef.new(shape: ResourceType)
1062
+ ResourceTypeStatisticsMap.value = Shapes::ShapeRef.new(shape: ResourceTypeDetails)
1063
+
1011
1064
  S3AccessPointConfiguration.add_member(:access_point_policy, Shapes::ShapeRef.new(shape: AccessPointPolicy, location_name: "accessPointPolicy"))
1012
1065
  S3AccessPointConfiguration.add_member(:public_access_block, Shapes::ShapeRef.new(shape: S3PublicAccessBlockConfiguration, location_name: "publicAccessBlock"))
1013
1066
  S3AccessPointConfiguration.add_member(:network_origin, Shapes::ShapeRef.new(shape: NetworkOriginConfiguration, location_name: "networkOrigin"))
@@ -1124,6 +1177,19 @@ module Aws::AccessAnalyzer
1124
1177
  UnusedAccessConfiguration.add_member(:analysis_rule, Shapes::ShapeRef.new(shape: AnalysisRule, location_name: "analysisRule"))
1125
1178
  UnusedAccessConfiguration.struct_class = Types::UnusedAccessConfiguration
1126
1179
 
1180
+ UnusedAccessFindingsStatistics.add_member(:unused_access_type_statistics, Shapes::ShapeRef.new(shape: UnusedAccessTypeStatisticsList, location_name: "unusedAccessTypeStatistics"))
1181
+ UnusedAccessFindingsStatistics.add_member(:top_accounts, Shapes::ShapeRef.new(shape: AccountAggregations, location_name: "topAccounts"))
1182
+ UnusedAccessFindingsStatistics.add_member(:total_active_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalActiveFindings"))
1183
+ UnusedAccessFindingsStatistics.add_member(:total_archived_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalArchivedFindings"))
1184
+ UnusedAccessFindingsStatistics.add_member(:total_resolved_findings, Shapes::ShapeRef.new(shape: Integer, location_name: "totalResolvedFindings"))
1185
+ UnusedAccessFindingsStatistics.struct_class = Types::UnusedAccessFindingsStatistics
1186
+
1187
+ UnusedAccessTypeStatistics.add_member(:unused_access_type, Shapes::ShapeRef.new(shape: String, location_name: "unusedAccessType"))
1188
+ UnusedAccessTypeStatistics.add_member(:total, Shapes::ShapeRef.new(shape: Integer, location_name: "total"))
1189
+ UnusedAccessTypeStatistics.struct_class = Types::UnusedAccessTypeStatistics
1190
+
1191
+ UnusedAccessTypeStatisticsList.member = Shapes::ShapeRef.new(shape: UnusedAccessTypeStatistics)
1192
+
1127
1193
  UnusedAction.add_member(:action, Shapes::ShapeRef.new(shape: String, required: true, location_name: "action"))
1128
1194
  UnusedAction.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1129
1195
  UnusedAction.struct_class = Types::UnusedAction
@@ -1479,6 +1545,19 @@ module Aws::AccessAnalyzer
1479
1545
  )
1480
1546
  end)
1481
1547
 
1548
+ api.add_operation(:get_findings_statistics, Seahorse::Model::Operation.new.tap do |o|
1549
+ o.name = "GetFindingsStatistics"
1550
+ o.http_method = "POST"
1551
+ o.http_request_uri = "/analyzer/findings/statistics"
1552
+ o.input = Shapes::ShapeRef.new(shape: GetFindingsStatisticsRequest)
1553
+ o.output = Shapes::ShapeRef.new(shape: GetFindingsStatisticsResponse)
1554
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1555
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1556
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1557
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1558
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1559
+ end)
1560
+
1482
1561
  api.add_operation(:get_generated_policy, Seahorse::Model::Operation.new.tap do |o|
1483
1562
  o.name = "GetGeneratedPolicy"
1484
1563
  o.http_method = "GET"
@@ -10,43 +10,39 @@
10
10
  module Aws::AccessAnalyzer
11
11
  class EndpointProvider
12
12
  def resolve_endpoint(parameters)
13
- region = parameters.region
14
- use_dual_stack = parameters.use_dual_stack
15
- use_fips = parameters.use_fips
16
- endpoint = parameters.endpoint
17
- if Aws::Endpoints::Matchers.set?(endpoint)
18
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
13
+ if Aws::Endpoints::Matchers.set?(parameters.endpoint)
14
+ if Aws::Endpoints::Matchers.boolean_equals?(parameters.use_fips, true)
19
15
  raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
20
16
  end
21
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
17
+ if Aws::Endpoints::Matchers.boolean_equals?(parameters.use_dual_stack, true)
22
18
  raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
23
19
  end
24
- return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
20
+ return Aws::Endpoints::Endpoint.new(url: parameters.endpoint, headers: {}, properties: {})
25
21
  end
26
- if Aws::Endpoints::Matchers.set?(region)
27
- if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
28
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
22
+ if Aws::Endpoints::Matchers.set?(parameters.region)
23
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(parameters.region))
24
+ if Aws::Endpoints::Matchers.boolean_equals?(parameters.use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(parameters.use_dual_stack, true)
29
25
  if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
30
- return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
26
+ return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{parameters.region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
31
27
  end
32
28
  raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
33
29
  end
34
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
30
+ if Aws::Endpoints::Matchers.boolean_equals?(parameters.use_fips, true)
35
31
  if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true)
36
32
  if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-us-gov")
37
- return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{region}.amazonaws.com", headers: {}, properties: {})
33
+ return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{parameters.region}.amazonaws.com", headers: {}, properties: {})
38
34
  end
39
- return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
35
+ return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{parameters.region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
40
36
  end
41
37
  raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
42
38
  end
43
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
39
+ if Aws::Endpoints::Matchers.boolean_equals?(parameters.use_dual_stack, true)
44
40
  if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
45
- return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
41
+ return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{parameters.region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
46
42
  end
47
43
  raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
48
44
  end
49
- return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
45
+ return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{parameters.region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
50
46
  end
51
47
  end
52
48
  raise ArgumentError, "Invalid Configuration: Missing Region"
@@ -1494,6 +1494,40 @@ module Aws::AccessAnalyzer
1494
1494
  include Aws::Structure
1495
1495
  end
1496
1496
 
1497
+ # Provides aggregate statistics about the findings for the specified
1498
+ # external access analyzer.
1499
+ #
1500
+ # @!attribute [rw] resource_type_statistics
1501
+ # The total number of active cross-account and public findings for
1502
+ # each resource type of the specified external access analyzer.
1503
+ # @return [Hash<String,Types::ResourceTypeDetails>]
1504
+ #
1505
+ # @!attribute [rw] total_active_findings
1506
+ # The number of active findings for the specified external access
1507
+ # analyzer.
1508
+ # @return [Integer]
1509
+ #
1510
+ # @!attribute [rw] total_archived_findings
1511
+ # The number of archived findings for the specified external access
1512
+ # analyzer.
1513
+ # @return [Integer]
1514
+ #
1515
+ # @!attribute [rw] total_resolved_findings
1516
+ # The number of resolved findings for the specified external access
1517
+ # analyzer.
1518
+ # @return [Integer]
1519
+ #
1520
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ExternalAccessFindingsStatistics AWS API Documentation
1521
+ #
1522
+ class ExternalAccessFindingsStatistics < Struct.new(
1523
+ :resource_type_statistics,
1524
+ :total_active_findings,
1525
+ :total_archived_findings,
1526
+ :total_resolved_findings)
1527
+ SENSITIVE = []
1528
+ include Aws::Structure
1529
+ end
1530
+
1497
1531
  # Contains information about a finding.
1498
1532
  #
1499
1533
  # @!attribute [rw] id
@@ -1585,6 +1619,34 @@ module Aws::AccessAnalyzer
1585
1619
  include Aws::Structure
1586
1620
  end
1587
1621
 
1622
+ # Contains information about the findings for an Amazon Web Services
1623
+ # account in an organization unused access analyzer.
1624
+ #
1625
+ # @!attribute [rw] account
1626
+ # The ID of the Amazon Web Services account for which unused access
1627
+ # finding details are provided.
1628
+ # @return [String]
1629
+ #
1630
+ # @!attribute [rw] number_of_active_findings
1631
+ # The number of active unused access findings for the specified Amazon
1632
+ # Web Services account.
1633
+ # @return [Integer]
1634
+ #
1635
+ # @!attribute [rw] details
1636
+ # Provides the number of active findings for each type of unused
1637
+ # access for the specified Amazon Web Services account.
1638
+ # @return [Hash<String,Integer>]
1639
+ #
1640
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/FindingAggregationAccountDetails AWS API Documentation
1641
+ #
1642
+ class FindingAggregationAccountDetails < Struct.new(
1643
+ :account,
1644
+ :number_of_active_findings,
1645
+ :details)
1646
+ SENSITIVE = []
1647
+ include Aws::Structure
1648
+ end
1649
+
1588
1650
  # Contains information about an external access or unused access
1589
1651
  # finding. Only one parameter can be used in a `FindingDetails` object.
1590
1652
  #
@@ -1832,6 +1894,35 @@ module Aws::AccessAnalyzer
1832
1894
  include Aws::Structure
1833
1895
  end
1834
1896
 
1897
+ # Contains information about the aggregate statistics for an external or
1898
+ # unused access analyzer. Only one parameter can be used in a
1899
+ # `FindingsStatistics` object.
1900
+ #
1901
+ # @note FindingsStatistics is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of FindingsStatistics corresponding to the set member.
1902
+ #
1903
+ # @!attribute [rw] external_access_findings_statistics
1904
+ # The aggregate statistics for an external access analyzer.
1905
+ # @return [Types::ExternalAccessFindingsStatistics]
1906
+ #
1907
+ # @!attribute [rw] unused_access_findings_statistics
1908
+ # The aggregate statistics for an unused access analyzer.
1909
+ # @return [Types::UnusedAccessFindingsStatistics]
1910
+ #
1911
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/FindingsStatistics AWS API Documentation
1912
+ #
1913
+ class FindingsStatistics < Struct.new(
1914
+ :external_access_findings_statistics,
1915
+ :unused_access_findings_statistics,
1916
+ :unknown)
1917
+ SENSITIVE = []
1918
+ include Aws::Structure
1919
+ include Aws::Structure::Union
1920
+
1921
+ class ExternalAccessFindingsStatistics < FindingsStatistics; end
1922
+ class UnusedAccessFindingsStatistics < FindingsStatistics; end
1923
+ class Unknown < FindingsStatistics; end
1924
+ end
1925
+
1835
1926
  # @!attribute [rw] analyzer_arn
1836
1927
  # The [ARN of the analyzer][1] used to generate the finding
1837
1928
  # recommendation.
@@ -2282,6 +2373,42 @@ module Aws::AccessAnalyzer
2282
2373
  include Aws::Structure
2283
2374
  end
2284
2375
 
2376
+ # @!attribute [rw] analyzer_arn
2377
+ # The [ARN of the analyzer][1] used to generate the statistics.
2378
+ #
2379
+ #
2380
+ #
2381
+ # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources
2382
+ # @return [String]
2383
+ #
2384
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingsStatisticsRequest AWS API Documentation
2385
+ #
2386
+ class GetFindingsStatisticsRequest < Struct.new(
2387
+ :analyzer_arn)
2388
+ SENSITIVE = []
2389
+ include Aws::Structure
2390
+ end
2391
+
2392
+ # @!attribute [rw] findings_statistics
2393
+ # A group of external access or unused access findings statistics.
2394
+ # @return [Array<Types::FindingsStatistics>]
2395
+ #
2396
+ # @!attribute [rw] last_updated_at
2397
+ # The time at which the retrieval of the findings statistics was last
2398
+ # updated. If the findings statistics have not been previously
2399
+ # retrieved for the specified analyzer, this field will not be
2400
+ # populated.
2401
+ # @return [Time]
2402
+ #
2403
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingsStatisticsResponse AWS API Documentation
2404
+ #
2405
+ class GetFindingsStatisticsResponse < Struct.new(
2406
+ :findings_statistics,
2407
+ :last_updated_at)
2408
+ SENSITIVE = []
2409
+ include Aws::Structure
2410
+ end
2411
+
2285
2412
  # @!attribute [rw] job_id
2286
2413
  # The `JobId` that is returned by the `StartPolicyGeneration`
2287
2414
  # operation. The `JobId` can be used with `GetGeneratedPolicy` to
@@ -3485,6 +3612,28 @@ module Aws::AccessAnalyzer
3485
3612
  include Aws::Structure
3486
3613
  end
3487
3614
 
3615
+ # Contains information about the total number of active cross-account
3616
+ # and public findings for a resource type of an external access
3617
+ # analyzer.
3618
+ #
3619
+ # @!attribute [rw] total_active_public
3620
+ # The total number of active public findings for the resource type.
3621
+ # @return [Integer]
3622
+ #
3623
+ # @!attribute [rw] total_active_cross_account
3624
+ # The total number of active cross-account findings for the resource
3625
+ # type.
3626
+ # @return [Integer]
3627
+ #
3628
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ResourceTypeDetails AWS API Documentation
3629
+ #
3630
+ class ResourceTypeDetails < Struct.new(
3631
+ :total_active_public,
3632
+ :total_active_cross_account)
3633
+ SENSITIVE = []
3634
+ include Aws::Structure
3635
+ end
3636
+
3488
3637
  # The configuration for an Amazon S3 access point or multi-region access
3489
3638
  # point for the bucket. You can propose up to 10 access points or
3490
3639
  # multi-region access points per bucket. If the proposed Amazon S3
@@ -4117,6 +4266,65 @@ module Aws::AccessAnalyzer
4117
4266
  include Aws::Structure
4118
4267
  end
4119
4268
 
4269
+ # Provides aggregate statistics about the findings for the specified
4270
+ # unused access analyzer.
4271
+ #
4272
+ # @!attribute [rw] unused_access_type_statistics
4273
+ # A list of details about the total number of findings for each type
4274
+ # of unused access for the analyzer.
4275
+ # @return [Array<Types::UnusedAccessTypeStatistics>]
4276
+ #
4277
+ # @!attribute [rw] top_accounts
4278
+ # A list of one to ten Amazon Web Services accounts that have the most
4279
+ # active findings for the unused access analyzer.
4280
+ # @return [Array<Types::FindingAggregationAccountDetails>]
4281
+ #
4282
+ # @!attribute [rw] total_active_findings
4283
+ # The total number of active findings for the unused access analyzer.
4284
+ # @return [Integer]
4285
+ #
4286
+ # @!attribute [rw] total_archived_findings
4287
+ # The total number of archived findings for the unused access
4288
+ # analyzer.
4289
+ # @return [Integer]
4290
+ #
4291
+ # @!attribute [rw] total_resolved_findings
4292
+ # The total number of resolved findings for the unused access
4293
+ # analyzer.
4294
+ # @return [Integer]
4295
+ #
4296
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedAccessFindingsStatistics AWS API Documentation
4297
+ #
4298
+ class UnusedAccessFindingsStatistics < Struct.new(
4299
+ :unused_access_type_statistics,
4300
+ :top_accounts,
4301
+ :total_active_findings,
4302
+ :total_archived_findings,
4303
+ :total_resolved_findings)
4304
+ SENSITIVE = []
4305
+ include Aws::Structure
4306
+ end
4307
+
4308
+ # Contains information about the total number of findings for a type of
4309
+ # unused access.
4310
+ #
4311
+ # @!attribute [rw] unused_access_type
4312
+ # The type of unused access.
4313
+ # @return [String]
4314
+ #
4315
+ # @!attribute [rw] total
4316
+ # The total number of findings for the specified unused access type.
4317
+ # @return [Integer]
4318
+ #
4319
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedAccessTypeStatistics AWS API Documentation
4320
+ #
4321
+ class UnusedAccessTypeStatistics < Struct.new(
4322
+ :unused_access_type,
4323
+ :total)
4324
+ SENSITIVE = []
4325
+ include Aws::Structure
4326
+ end
4327
+
4120
4328
  # Contains information about an unused access finding for an action. IAM
4121
4329
  # Access Analyzer charges for unused access analysis based on the number
4122
4330
  # of IAM roles and users analyzed per month. For more details on
@@ -54,7 +54,7 @@ module Aws::AccessAnalyzer
54
54
  autoload :EndpointProvider, 'aws-sdk-accessanalyzer/endpoint_provider'
55
55
  autoload :Endpoints, 'aws-sdk-accessanalyzer/endpoints'
56
56
 
57
- GEM_VERSION = '1.65.0'
57
+ GEM_VERSION = '1.67.0'
58
58
 
59
59
  end
60
60
 
data/sig/client.rbs CHANGED
@@ -414,6 +414,17 @@ module Aws
414
414
  ) -> _GetFindingV2ResponseSuccess
415
415
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetFindingV2ResponseSuccess
416
416
 
417
+ interface _GetFindingsStatisticsResponseSuccess
418
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetFindingsStatisticsResponse]
419
+ def findings_statistics: () -> ::Array[Types::FindingsStatistics]
420
+ def last_updated_at: () -> ::Time
421
+ end
422
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AccessAnalyzer/Client.html#get_findings_statistics-instance_method
423
+ def get_findings_statistics: (
424
+ analyzer_arn: ::String
425
+ ) -> _GetFindingsStatisticsResponseSuccess
426
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetFindingsStatisticsResponseSuccess
427
+
417
428
  interface _GetGeneratedPolicyResponseSuccess
418
429
  include ::Seahorse::Client::_ResponseSuccess[Types::GetGeneratedPolicyResponse]
419
430
  def job_details: () -> Types::JobDetails
data/sig/types.rbs CHANGED
@@ -364,6 +364,14 @@ module Aws::AccessAnalyzer
364
364
  SENSITIVE: []
365
365
  end
366
366
 
367
+ class ExternalAccessFindingsStatistics
368
+ attr_accessor resource_type_statistics: ::Hash[("AWS::S3::Bucket" | "AWS::IAM::Role" | "AWS::SQS::Queue" | "AWS::Lambda::Function" | "AWS::Lambda::LayerVersion" | "AWS::KMS::Key" | "AWS::SecretsManager::Secret" | "AWS::EFS::FileSystem" | "AWS::EC2::Snapshot" | "AWS::ECR::Repository" | "AWS::RDS::DBSnapshot" | "AWS::RDS::DBClusterSnapshot" | "AWS::SNS::Topic" | "AWS::S3Express::DirectoryBucket" | "AWS::DynamoDB::Table" | "AWS::DynamoDB::Stream" | "AWS::IAM::User"), Types::ResourceTypeDetails]
369
+ attr_accessor total_active_findings: ::Integer
370
+ attr_accessor total_archived_findings: ::Integer
371
+ attr_accessor total_resolved_findings: ::Integer
372
+ SENSITIVE: []
373
+ end
374
+
367
375
  class Finding
368
376
  attr_accessor id: ::String
369
377
  attr_accessor principal: ::Hash[::String, ::String]
@@ -383,6 +391,13 @@ module Aws::AccessAnalyzer
383
391
  SENSITIVE: []
384
392
  end
385
393
 
394
+ class FindingAggregationAccountDetails
395
+ attr_accessor account: ::String
396
+ attr_accessor number_of_active_findings: ::Integer
397
+ attr_accessor details: ::Hash[::String, ::Integer]
398
+ SENSITIVE: []
399
+ end
400
+
386
401
  class FindingDetails
387
402
  attr_accessor external_access_details: Types::ExternalAccessDetails
388
403
  attr_accessor unused_permission_details: Types::UnusedPermissionDetails
@@ -451,6 +466,20 @@ module Aws::AccessAnalyzer
451
466
  SENSITIVE: []
452
467
  end
453
468
 
469
+ class FindingsStatistics
470
+ attr_accessor external_access_findings_statistics: Types::ExternalAccessFindingsStatistics
471
+ attr_accessor unused_access_findings_statistics: Types::UnusedAccessFindingsStatistics
472
+ attr_accessor unknown: untyped
473
+ SENSITIVE: []
474
+
475
+ class ExternalAccessFindingsStatistics < FindingsStatistics
476
+ end
477
+ class UnusedAccessFindingsStatistics < FindingsStatistics
478
+ end
479
+ class Unknown < FindingsStatistics
480
+ end
481
+ end
482
+
454
483
  class GenerateFindingRecommendationRequest
455
484
  attr_accessor analyzer_arn: ::String
456
485
  attr_accessor id: ::String
@@ -573,6 +602,17 @@ module Aws::AccessAnalyzer
573
602
  SENSITIVE: []
574
603
  end
575
604
 
605
+ class GetFindingsStatisticsRequest
606
+ attr_accessor analyzer_arn: ::String
607
+ SENSITIVE: []
608
+ end
609
+
610
+ class GetFindingsStatisticsResponse
611
+ attr_accessor findings_statistics: ::Array[Types::FindingsStatistics]
612
+ attr_accessor last_updated_at: ::Time
613
+ SENSITIVE: []
614
+ end
615
+
576
616
  class GetGeneratedPolicyRequest
577
617
  attr_accessor job_id: ::String
578
618
  attr_accessor include_resource_placeholders: bool
@@ -894,6 +934,12 @@ module Aws::AccessAnalyzer
894
934
  SENSITIVE: []
895
935
  end
896
936
 
937
+ class ResourceTypeDetails
938
+ attr_accessor total_active_public: ::Integer
939
+ attr_accessor total_active_cross_account: ::Integer
940
+ SENSITIVE: []
941
+ end
942
+
897
943
  class S3AccessPointConfiguration
898
944
  attr_accessor access_point_policy: ::String
899
945
  attr_accessor public_access_block: Types::S3PublicAccessBlockConfiguration
@@ -1040,6 +1086,21 @@ module Aws::AccessAnalyzer
1040
1086
  SENSITIVE: []
1041
1087
  end
1042
1088
 
1089
+ class UnusedAccessFindingsStatistics
1090
+ attr_accessor unused_access_type_statistics: ::Array[Types::UnusedAccessTypeStatistics]
1091
+ attr_accessor top_accounts: ::Array[Types::FindingAggregationAccountDetails]
1092
+ attr_accessor total_active_findings: ::Integer
1093
+ attr_accessor total_archived_findings: ::Integer
1094
+ attr_accessor total_resolved_findings: ::Integer
1095
+ SENSITIVE: []
1096
+ end
1097
+
1098
+ class UnusedAccessTypeStatistics
1099
+ attr_accessor unused_access_type: ::String
1100
+ attr_accessor total: ::Integer
1101
+ SENSITIVE: []
1102
+ end
1103
+
1043
1104
  class UnusedAction
1044
1105
  attr_accessor action: ::String
1045
1106
  attr_accessor last_accessed: ::Time
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-accessanalyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.65.0
4
+ version: 1.67.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-15 00:00:00.000000000 Z
11
+ date: 2025-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core