aws-sdk-accessanalyzer 1.41.0 → 1.43.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.
@@ -13,6 +13,10 @@ module Aws::AccessAnalyzer
13
13
 
14
14
  include Seahorse::Model
15
15
 
16
+ Access = Shapes::StructureShape.new(name: 'Access')
17
+ AccessActionsList = Shapes::ListShape.new(name: 'AccessActionsList')
18
+ AccessCheckPolicyDocument = Shapes::StringShape.new(name: 'AccessCheckPolicyDocument')
19
+ AccessCheckPolicyType = Shapes::StringShape.new(name: 'AccessCheckPolicyType')
16
20
  AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
17
21
  AccessPointArn = Shapes::StringShape.new(name: 'AccessPointArn')
18
22
  AccessPointPolicy = Shapes::StringShape.new(name: 'AccessPointPolicy')
@@ -30,11 +34,13 @@ module Aws::AccessAnalyzer
30
34
  AclGrantee = Shapes::UnionShape.new(name: 'AclGrantee')
31
35
  AclPermission = Shapes::StringShape.new(name: 'AclPermission')
32
36
  AclUri = Shapes::StringShape.new(name: 'AclUri')
37
+ Action = Shapes::StringShape.new(name: 'Action')
33
38
  ActionList = Shapes::ListShape.new(name: 'ActionList')
34
39
  AnalyzedResource = Shapes::StructureShape.new(name: 'AnalyzedResource')
35
40
  AnalyzedResourceSummary = Shapes::StructureShape.new(name: 'AnalyzedResourceSummary')
36
41
  AnalyzedResourcesList = Shapes::ListShape.new(name: 'AnalyzedResourcesList')
37
42
  AnalyzerArn = Shapes::StringShape.new(name: 'AnalyzerArn')
43
+ AnalyzerConfiguration = Shapes::UnionShape.new(name: 'AnalyzerConfiguration')
38
44
  AnalyzerStatus = Shapes::StringShape.new(name: 'AnalyzerStatus')
39
45
  AnalyzerSummary = Shapes::StructureShape.new(name: 'AnalyzerSummary')
40
46
  AnalyzersList = Shapes::ListShape.new(name: 'AnalyzersList')
@@ -44,6 +50,13 @@ module Aws::AccessAnalyzer
44
50
  Boolean = Shapes::BooleanShape.new(name: 'Boolean')
45
51
  CancelPolicyGenerationRequest = Shapes::StructureShape.new(name: 'CancelPolicyGenerationRequest')
46
52
  CancelPolicyGenerationResponse = Shapes::StructureShape.new(name: 'CancelPolicyGenerationResponse')
53
+ CheckAccessNotGrantedRequest = Shapes::StructureShape.new(name: 'CheckAccessNotGrantedRequest')
54
+ CheckAccessNotGrantedRequestAccessList = Shapes::ListShape.new(name: 'CheckAccessNotGrantedRequestAccessList')
55
+ CheckAccessNotGrantedResponse = Shapes::StructureShape.new(name: 'CheckAccessNotGrantedResponse')
56
+ CheckAccessNotGrantedResult = Shapes::StringShape.new(name: 'CheckAccessNotGrantedResult')
57
+ CheckNoNewAccessRequest = Shapes::StructureShape.new(name: 'CheckNoNewAccessRequest')
58
+ CheckNoNewAccessResponse = Shapes::StructureShape.new(name: 'CheckNoNewAccessResponse')
59
+ CheckNoNewAccessResult = Shapes::StringShape.new(name: 'CheckNoNewAccessResult')
47
60
  CloudTrailArn = Shapes::StringShape.new(name: 'CloudTrailArn')
48
61
  CloudTrailDetails = Shapes::StructureShape.new(name: 'CloudTrailDetails')
49
62
  CloudTrailProperties = Shapes::StructureShape.new(name: 'CloudTrailProperties')
@@ -70,9 +83,12 @@ module Aws::AccessAnalyzer
70
83
  EcrRepositoryPolicy = Shapes::StringShape.new(name: 'EcrRepositoryPolicy')
71
84
  EfsFileSystemConfiguration = Shapes::StructureShape.new(name: 'EfsFileSystemConfiguration')
72
85
  EfsFileSystemPolicy = Shapes::StringShape.new(name: 'EfsFileSystemPolicy')
86
+ ExternalAccessDetails = Shapes::StructureShape.new(name: 'ExternalAccessDetails')
73
87
  FilterCriteriaMap = Shapes::MapShape.new(name: 'FilterCriteriaMap')
74
88
  Finding = Shapes::StructureShape.new(name: 'Finding')
75
89
  FindingChangeType = Shapes::StringShape.new(name: 'FindingChangeType')
90
+ FindingDetails = Shapes::UnionShape.new(name: 'FindingDetails')
91
+ FindingDetailsList = Shapes::ListShape.new(name: 'FindingDetailsList')
76
92
  FindingId = Shapes::StringShape.new(name: 'FindingId')
77
93
  FindingIdList = Shapes::ListShape.new(name: 'FindingIdList')
78
94
  FindingSource = Shapes::StructureShape.new(name: 'FindingSource')
@@ -82,7 +98,10 @@ module Aws::AccessAnalyzer
82
98
  FindingStatus = Shapes::StringShape.new(name: 'FindingStatus')
83
99
  FindingStatusUpdate = Shapes::StringShape.new(name: 'FindingStatusUpdate')
84
100
  FindingSummary = Shapes::StructureShape.new(name: 'FindingSummary')
101
+ FindingSummaryV2 = Shapes::StructureShape.new(name: 'FindingSummaryV2')
102
+ FindingType = Shapes::StringShape.new(name: 'FindingType')
85
103
  FindingsList = Shapes::ListShape.new(name: 'FindingsList')
104
+ FindingsListV2 = Shapes::ListShape.new(name: 'FindingsListV2')
86
105
  GeneratedPolicy = Shapes::StructureShape.new(name: 'GeneratedPolicy')
87
106
  GeneratedPolicyList = Shapes::ListShape.new(name: 'GeneratedPolicyList')
88
107
  GeneratedPolicyProperties = Shapes::StructureShape.new(name: 'GeneratedPolicyProperties')
@@ -97,6 +116,8 @@ module Aws::AccessAnalyzer
97
116
  GetArchiveRuleResponse = Shapes::StructureShape.new(name: 'GetArchiveRuleResponse')
98
117
  GetFindingRequest = Shapes::StructureShape.new(name: 'GetFindingRequest')
99
118
  GetFindingResponse = Shapes::StructureShape.new(name: 'GetFindingResponse')
119
+ GetFindingV2Request = Shapes::StructureShape.new(name: 'GetFindingV2Request')
120
+ GetFindingV2Response = Shapes::StructureShape.new(name: 'GetFindingV2Response')
100
121
  GetGeneratedPolicyRequest = Shapes::StructureShape.new(name: 'GetGeneratedPolicyRequest')
101
122
  GetGeneratedPolicyResponse = Shapes::StructureShape.new(name: 'GetGeneratedPolicyResponse')
102
123
  GranteePrincipal = Shapes::StringShape.new(name: 'GranteePrincipal')
@@ -107,6 +128,7 @@ module Aws::AccessAnalyzer
107
128
  Integer = Shapes::IntegerShape.new(name: 'Integer')
108
129
  InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException')
109
130
  InternetConfiguration = Shapes::StructureShape.new(name: 'InternetConfiguration')
131
+ InvalidParameterException = Shapes::StructureShape.new(name: 'InvalidParameterException')
110
132
  IssueCode = Shapes::StringShape.new(name: 'IssueCode')
111
133
  IssuingAccount = Shapes::StringShape.new(name: 'IssuingAccount')
112
134
  JobDetails = Shapes::StructureShape.new(name: 'JobDetails')
@@ -138,6 +160,8 @@ module Aws::AccessAnalyzer
138
160
  ListArchiveRulesResponse = Shapes::StructureShape.new(name: 'ListArchiveRulesResponse')
139
161
  ListFindingsRequest = Shapes::StructureShape.new(name: 'ListFindingsRequest')
140
162
  ListFindingsResponse = Shapes::StructureShape.new(name: 'ListFindingsResponse')
163
+ ListFindingsV2Request = Shapes::StructureShape.new(name: 'ListFindingsV2Request')
164
+ ListFindingsV2Response = Shapes::StructureShape.new(name: 'ListFindingsV2Response')
141
165
  ListPolicyGenerationsRequest = Shapes::StructureShape.new(name: 'ListPolicyGenerationsRequest')
142
166
  ListPolicyGenerationsRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListPolicyGenerationsRequestMaxResultsInteger')
143
167
  ListPolicyGenerationsResponse = Shapes::StructureShape.new(name: 'ListPolicyGenerationsResponse')
@@ -175,6 +199,8 @@ module Aws::AccessAnalyzer
175
199
  RdsDbSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbSnapshotConfiguration')
176
200
  RdsDbSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbSnapshotKmsKeyId')
177
201
  ReasonCode = Shapes::StringShape.new(name: 'ReasonCode')
202
+ ReasonSummary = Shapes::StructureShape.new(name: 'ReasonSummary')
203
+ ReasonSummaryList = Shapes::ListShape.new(name: 'ReasonSummaryList')
178
204
  RegionList = Shapes::ListShape.new(name: 'RegionList')
179
205
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
180
206
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
@@ -217,8 +243,16 @@ module Aws::AccessAnalyzer
217
243
  TrailProperties = Shapes::StructureShape.new(name: 'TrailProperties')
218
244
  TrailPropertiesList = Shapes::ListShape.new(name: 'TrailPropertiesList')
219
245
  Type = Shapes::StringShape.new(name: 'Type')
246
+ UnprocessableEntityException = Shapes::StructureShape.new(name: 'UnprocessableEntityException')
220
247
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
221
248
  UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse')
249
+ UnusedAccessConfiguration = Shapes::StructureShape.new(name: 'UnusedAccessConfiguration')
250
+ UnusedAction = Shapes::StructureShape.new(name: 'UnusedAction')
251
+ UnusedActionList = Shapes::ListShape.new(name: 'UnusedActionList')
252
+ UnusedIamRoleDetails = Shapes::StructureShape.new(name: 'UnusedIamRoleDetails')
253
+ UnusedIamUserAccessKeyDetails = Shapes::StructureShape.new(name: 'UnusedIamUserAccessKeyDetails')
254
+ UnusedIamUserPasswordDetails = Shapes::StructureShape.new(name: 'UnusedIamUserPasswordDetails')
255
+ UnusedPermissionDetails = Shapes::StructureShape.new(name: 'UnusedPermissionDetails')
222
256
  UpdateArchiveRuleRequest = Shapes::StructureShape.new(name: 'UpdateArchiveRuleRequest')
223
257
  UpdateFindingsRequest = Shapes::StructureShape.new(name: 'UpdateFindingsRequest')
224
258
  ValidatePolicyFinding = Shapes::StructureShape.new(name: 'ValidatePolicyFinding')
@@ -235,6 +269,11 @@ module Aws::AccessAnalyzer
235
269
  VpcConfiguration = Shapes::StructureShape.new(name: 'VpcConfiguration')
236
270
  VpcId = Shapes::StringShape.new(name: 'VpcId')
237
271
 
272
+ Access.add_member(:actions, Shapes::ShapeRef.new(shape: AccessActionsList, required: true, location_name: "actions"))
273
+ Access.struct_class = Types::Access
274
+
275
+ AccessActionsList.member = Shapes::ShapeRef.new(shape: Action)
276
+
238
277
  AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
239
278
  AccessDeniedException.struct_class = Types::AccessDeniedException
240
279
 
@@ -307,6 +346,12 @@ module Aws::AccessAnalyzer
307
346
 
308
347
  AnalyzedResourcesList.member = Shapes::ShapeRef.new(shape: AnalyzedResourceSummary)
309
348
 
349
+ AnalyzerConfiguration.add_member(:unused_access, Shapes::ShapeRef.new(shape: UnusedAccessConfiguration, location_name: "unusedAccess"))
350
+ AnalyzerConfiguration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
351
+ AnalyzerConfiguration.add_member_subclass(:unused_access, Types::AnalyzerConfiguration::UnusedAccess)
352
+ AnalyzerConfiguration.add_member_subclass(:unknown, Types::AnalyzerConfiguration::Unknown)
353
+ AnalyzerConfiguration.struct_class = Types::AnalyzerConfiguration
354
+
310
355
  AnalyzerSummary.add_member(:arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "arn"))
311
356
  AnalyzerSummary.add_member(:name, Shapes::ShapeRef.new(shape: Name, required: true, location_name: "name"))
312
357
  AnalyzerSummary.add_member(:type, Shapes::ShapeRef.new(shape: Type, required: true, location_name: "type"))
@@ -316,6 +361,7 @@ module Aws::AccessAnalyzer
316
361
  AnalyzerSummary.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags"))
317
362
  AnalyzerSummary.add_member(:status, Shapes::ShapeRef.new(shape: AnalyzerStatus, required: true, location_name: "status"))
318
363
  AnalyzerSummary.add_member(:status_reason, Shapes::ShapeRef.new(shape: StatusReason, location_name: "statusReason"))
364
+ AnalyzerSummary.add_member(:configuration, Shapes::ShapeRef.new(shape: AnalyzerConfiguration, location_name: "configuration"))
319
365
  AnalyzerSummary.struct_class = Types::AnalyzerSummary
320
366
 
321
367
  AnalyzersList.member = Shapes::ShapeRef.new(shape: AnalyzerSummary)
@@ -338,6 +384,28 @@ module Aws::AccessAnalyzer
338
384
 
339
385
  CancelPolicyGenerationResponse.struct_class = Types::CancelPolicyGenerationResponse
340
386
 
387
+ CheckAccessNotGrantedRequest.add_member(:policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "policyDocument"))
388
+ CheckAccessNotGrantedRequest.add_member(:access, Shapes::ShapeRef.new(shape: CheckAccessNotGrantedRequestAccessList, required: true, location_name: "access"))
389
+ CheckAccessNotGrantedRequest.add_member(:policy_type, Shapes::ShapeRef.new(shape: AccessCheckPolicyType, required: true, location_name: "policyType"))
390
+ CheckAccessNotGrantedRequest.struct_class = Types::CheckAccessNotGrantedRequest
391
+
392
+ CheckAccessNotGrantedRequestAccessList.member = Shapes::ShapeRef.new(shape: Access)
393
+
394
+ CheckAccessNotGrantedResponse.add_member(:result, Shapes::ShapeRef.new(shape: CheckAccessNotGrantedResult, location_name: "result"))
395
+ CheckAccessNotGrantedResponse.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
396
+ CheckAccessNotGrantedResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons"))
397
+ CheckAccessNotGrantedResponse.struct_class = Types::CheckAccessNotGrantedResponse
398
+
399
+ CheckNoNewAccessRequest.add_member(:new_policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "newPolicyDocument"))
400
+ CheckNoNewAccessRequest.add_member(:existing_policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "existingPolicyDocument"))
401
+ CheckNoNewAccessRequest.add_member(:policy_type, Shapes::ShapeRef.new(shape: AccessCheckPolicyType, required: true, location_name: "policyType"))
402
+ CheckNoNewAccessRequest.struct_class = Types::CheckNoNewAccessRequest
403
+
404
+ CheckNoNewAccessResponse.add_member(:result, Shapes::ShapeRef.new(shape: CheckNoNewAccessResult, location_name: "result"))
405
+ CheckNoNewAccessResponse.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
406
+ CheckNoNewAccessResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons"))
407
+ CheckNoNewAccessResponse.struct_class = Types::CheckNoNewAccessResponse
408
+
341
409
  CloudTrailDetails.add_member(:trails, Shapes::ShapeRef.new(shape: TrailList, required: true, location_name: "trails"))
342
410
  CloudTrailDetails.add_member(:access_role, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "accessRole"))
343
411
  CloudTrailDetails.add_member(:start_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startTime"))
@@ -399,6 +467,7 @@ module Aws::AccessAnalyzer
399
467
  CreateAnalyzerRequest.add_member(:archive_rules, Shapes::ShapeRef.new(shape: InlineArchiveRulesList, location_name: "archiveRules"))
400
468
  CreateAnalyzerRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags"))
401
469
  CreateAnalyzerRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: String, location_name: "clientToken", metadata: {"idempotencyToken"=>true}))
470
+ CreateAnalyzerRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: AnalyzerConfiguration, location_name: "configuration"))
402
471
  CreateAnalyzerRequest.struct_class = Types::CreateAnalyzerRequest
403
472
 
404
473
  CreateAnalyzerResponse.add_member(:arn, Shapes::ShapeRef.new(shape: AnalyzerArn, location_name: "arn"))
@@ -440,6 +509,13 @@ module Aws::AccessAnalyzer
440
509
  EfsFileSystemConfiguration.add_member(:file_system_policy, Shapes::ShapeRef.new(shape: EfsFileSystemPolicy, location_name: "fileSystemPolicy"))
441
510
  EfsFileSystemConfiguration.struct_class = Types::EfsFileSystemConfiguration
442
511
 
512
+ ExternalAccessDetails.add_member(:action, Shapes::ShapeRef.new(shape: ActionList, location_name: "action"))
513
+ ExternalAccessDetails.add_member(:condition, Shapes::ShapeRef.new(shape: ConditionKeyMap, required: true, location_name: "condition"))
514
+ ExternalAccessDetails.add_member(:is_public, Shapes::ShapeRef.new(shape: Boolean, location_name: "isPublic"))
515
+ ExternalAccessDetails.add_member(:principal, Shapes::ShapeRef.new(shape: PrincipalMap, location_name: "principal"))
516
+ ExternalAccessDetails.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources"))
517
+ ExternalAccessDetails.struct_class = Types::ExternalAccessDetails
518
+
443
519
  FilterCriteriaMap.key = Shapes::ShapeRef.new(shape: String)
444
520
  FilterCriteriaMap.value = Shapes::ShapeRef.new(shape: Criterion)
445
521
 
@@ -459,6 +535,22 @@ module Aws::AccessAnalyzer
459
535
  Finding.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources"))
460
536
  Finding.struct_class = Types::Finding
461
537
 
538
+ FindingDetails.add_member(:external_access_details, Shapes::ShapeRef.new(shape: ExternalAccessDetails, location_name: "externalAccessDetails"))
539
+ FindingDetails.add_member(:unused_permission_details, Shapes::ShapeRef.new(shape: UnusedPermissionDetails, location_name: "unusedPermissionDetails"))
540
+ FindingDetails.add_member(:unused_iam_user_access_key_details, Shapes::ShapeRef.new(shape: UnusedIamUserAccessKeyDetails, location_name: "unusedIamUserAccessKeyDetails"))
541
+ FindingDetails.add_member(:unused_iam_role_details, Shapes::ShapeRef.new(shape: UnusedIamRoleDetails, location_name: "unusedIamRoleDetails"))
542
+ FindingDetails.add_member(:unused_iam_user_password_details, Shapes::ShapeRef.new(shape: UnusedIamUserPasswordDetails, location_name: "unusedIamUserPasswordDetails"))
543
+ FindingDetails.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
544
+ FindingDetails.add_member_subclass(:external_access_details, Types::FindingDetails::ExternalAccessDetails)
545
+ FindingDetails.add_member_subclass(:unused_permission_details, Types::FindingDetails::UnusedPermissionDetails)
546
+ FindingDetails.add_member_subclass(:unused_iam_user_access_key_details, Types::FindingDetails::UnusedIamUserAccessKeyDetails)
547
+ FindingDetails.add_member_subclass(:unused_iam_role_details, Types::FindingDetails::UnusedIamRoleDetails)
548
+ FindingDetails.add_member_subclass(:unused_iam_user_password_details, Types::FindingDetails::UnusedIamUserPasswordDetails)
549
+ FindingDetails.add_member_subclass(:unknown, Types::FindingDetails::Unknown)
550
+ FindingDetails.struct_class = Types::FindingDetails
551
+
552
+ FindingDetailsList.member = Shapes::ShapeRef.new(shape: FindingDetails)
553
+
462
554
  FindingIdList.member = Shapes::ShapeRef.new(shape: FindingId)
463
555
 
464
556
  FindingSource.add_member(:type, Shapes::ShapeRef.new(shape: FindingSourceType, required: true, location_name: "type"))
@@ -487,8 +579,22 @@ module Aws::AccessAnalyzer
487
579
  FindingSummary.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources"))
488
580
  FindingSummary.struct_class = Types::FindingSummary
489
581
 
582
+ FindingSummaryV2.add_member(:analyzed_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "analyzedAt"))
583
+ FindingSummaryV2.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt"))
584
+ FindingSummaryV2.add_member(:error, Shapes::ShapeRef.new(shape: String, location_name: "error"))
585
+ FindingSummaryV2.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location_name: "id"))
586
+ FindingSummaryV2.add_member(:resource, Shapes::ShapeRef.new(shape: String, location_name: "resource"))
587
+ FindingSummaryV2.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "resourceType"))
588
+ FindingSummaryV2.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceOwnerAccount"))
589
+ FindingSummaryV2.add_member(:status, Shapes::ShapeRef.new(shape: FindingStatus, required: true, location_name: "status"))
590
+ FindingSummaryV2.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "updatedAt"))
591
+ FindingSummaryV2.add_member(:finding_type, Shapes::ShapeRef.new(shape: FindingType, location_name: "findingType"))
592
+ FindingSummaryV2.struct_class = Types::FindingSummaryV2
593
+
490
594
  FindingsList.member = Shapes::ShapeRef.new(shape: FindingSummary)
491
595
 
596
+ FindingsListV2.member = Shapes::ShapeRef.new(shape: FindingSummaryV2)
597
+
492
598
  GeneratedPolicy.add_member(:policy, Shapes::ShapeRef.new(shape: String, required: true, location_name: "policy"))
493
599
  GeneratedPolicy.struct_class = Types::GeneratedPolicy
494
600
 
@@ -537,6 +643,26 @@ module Aws::AccessAnalyzer
537
643
  GetFindingResponse.add_member(:finding, Shapes::ShapeRef.new(shape: Finding, location_name: "finding"))
538
644
  GetFindingResponse.struct_class = Types::GetFindingResponse
539
645
 
646
+ GetFindingV2Request.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn"))
647
+ GetFindingV2Request.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location: "uri", location_name: "id"))
648
+ GetFindingV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: Integer, location: "querystring", location_name: "maxResults"))
649
+ GetFindingV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "nextToken"))
650
+ GetFindingV2Request.struct_class = Types::GetFindingV2Request
651
+
652
+ GetFindingV2Response.add_member(:analyzed_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "analyzedAt"))
653
+ GetFindingV2Response.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt"))
654
+ GetFindingV2Response.add_member(:error, Shapes::ShapeRef.new(shape: String, location_name: "error"))
655
+ GetFindingV2Response.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location_name: "id"))
656
+ GetFindingV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken"))
657
+ GetFindingV2Response.add_member(:resource, Shapes::ShapeRef.new(shape: String, location_name: "resource"))
658
+ GetFindingV2Response.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "resourceType"))
659
+ GetFindingV2Response.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceOwnerAccount"))
660
+ GetFindingV2Response.add_member(:status, Shapes::ShapeRef.new(shape: FindingStatus, required: true, location_name: "status"))
661
+ GetFindingV2Response.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "updatedAt"))
662
+ GetFindingV2Response.add_member(:finding_details, Shapes::ShapeRef.new(shape: FindingDetailsList, required: true, location_name: "findingDetails"))
663
+ GetFindingV2Response.add_member(:finding_type, Shapes::ShapeRef.new(shape: FindingType, location_name: "findingType"))
664
+ GetFindingV2Response.struct_class = Types::GetFindingV2Response
665
+
540
666
  GetGeneratedPolicyRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "jobId"))
541
667
  GetGeneratedPolicyRequest.add_member(:include_resource_placeholders, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeResourcePlaceholders"))
542
668
  GetGeneratedPolicyRequest.add_member(:include_service_level_template, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeServiceLevelTemplate"))
@@ -561,6 +687,9 @@ module Aws::AccessAnalyzer
561
687
 
562
688
  InternetConfiguration.struct_class = Types::InternetConfiguration
563
689
 
690
+ InvalidParameterException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
691
+ InvalidParameterException.struct_class = Types::InvalidParameterException
692
+
564
693
  JobDetails.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location_name: "jobId"))
565
694
  JobDetails.add_member(:status, Shapes::ShapeRef.new(shape: JobStatus, required: true, location_name: "status"))
566
695
  JobDetails.add_member(:started_on, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startedOn"))
@@ -656,6 +785,17 @@ module Aws::AccessAnalyzer
656
785
  ListFindingsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken"))
657
786
  ListFindingsResponse.struct_class = Types::ListFindingsResponse
658
787
 
788
+ ListFindingsV2Request.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "analyzerArn"))
789
+ ListFindingsV2Request.add_member(:filter, Shapes::ShapeRef.new(shape: FilterCriteriaMap, location_name: "filter"))
790
+ ListFindingsV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: Integer, location_name: "maxResults"))
791
+ ListFindingsV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken"))
792
+ ListFindingsV2Request.add_member(:sort, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "sort"))
793
+ ListFindingsV2Request.struct_class = Types::ListFindingsV2Request
794
+
795
+ ListFindingsV2Response.add_member(:findings, Shapes::ShapeRef.new(shape: FindingsListV2, required: true, location_name: "findings"))
796
+ ListFindingsV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken"))
797
+ ListFindingsV2Response.struct_class = Types::ListFindingsV2Response
798
+
659
799
  ListPolicyGenerationsRequest.add_member(:principal_arn, Shapes::ShapeRef.new(shape: PrincipalArn, location: "querystring", location_name: "principalArn"))
660
800
  ListPolicyGenerationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListPolicyGenerationsRequestMaxResultsInteger, location: "querystring", location_name: "maxResults"))
661
801
  ListPolicyGenerationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "nextToken"))
@@ -749,6 +889,13 @@ module Aws::AccessAnalyzer
749
889
  RdsDbSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbSnapshotKmsKeyId, location_name: "kmsKeyId"))
750
890
  RdsDbSnapshotConfiguration.struct_class = Types::RdsDbSnapshotConfiguration
751
891
 
892
+ ReasonSummary.add_member(:description, Shapes::ShapeRef.new(shape: String, location_name: "description"))
893
+ ReasonSummary.add_member(:statement_index, Shapes::ShapeRef.new(shape: Integer, location_name: "statementIndex"))
894
+ ReasonSummary.add_member(:statement_id, Shapes::ShapeRef.new(shape: String, location_name: "statementId"))
895
+ ReasonSummary.struct_class = Types::ReasonSummary
896
+
897
+ ReasonSummaryList.member = Shapes::ShapeRef.new(shape: ReasonSummary)
898
+
752
899
  RegionList.member = Shapes::ShapeRef.new(shape: String)
753
900
 
754
901
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
@@ -854,12 +1001,39 @@ module Aws::AccessAnalyzer
854
1001
 
855
1002
  TrailPropertiesList.member = Shapes::ShapeRef.new(shape: TrailProperties)
856
1003
 
1004
+ UnprocessableEntityException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
1005
+ UnprocessableEntityException.struct_class = Types::UnprocessableEntityException
1006
+
857
1007
  UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn"))
858
1008
  UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeys, required: true, location: "querystring", location_name: "tagKeys"))
859
1009
  UntagResourceRequest.struct_class = Types::UntagResourceRequest
860
1010
 
861
1011
  UntagResourceResponse.struct_class = Types::UntagResourceResponse
862
1012
 
1013
+ UnusedAccessConfiguration.add_member(:unused_access_age, Shapes::ShapeRef.new(shape: Integer, location_name: "unusedAccessAge"))
1014
+ UnusedAccessConfiguration.struct_class = Types::UnusedAccessConfiguration
1015
+
1016
+ UnusedAction.add_member(:action, Shapes::ShapeRef.new(shape: String, required: true, location_name: "action"))
1017
+ UnusedAction.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1018
+ UnusedAction.struct_class = Types::UnusedAction
1019
+
1020
+ UnusedActionList.member = Shapes::ShapeRef.new(shape: UnusedAction)
1021
+
1022
+ UnusedIamRoleDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1023
+ UnusedIamRoleDetails.struct_class = Types::UnusedIamRoleDetails
1024
+
1025
+ UnusedIamUserAccessKeyDetails.add_member(:access_key_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "accessKeyId"))
1026
+ UnusedIamUserAccessKeyDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1027
+ UnusedIamUserAccessKeyDetails.struct_class = Types::UnusedIamUserAccessKeyDetails
1028
+
1029
+ UnusedIamUserPasswordDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1030
+ UnusedIamUserPasswordDetails.struct_class = Types::UnusedIamUserPasswordDetails
1031
+
1032
+ UnusedPermissionDetails.add_member(:actions, Shapes::ShapeRef.new(shape: UnusedActionList, location_name: "actions"))
1033
+ UnusedPermissionDetails.add_member(:service_namespace, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceNamespace"))
1034
+ UnusedPermissionDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1035
+ UnusedPermissionDetails.struct_class = Types::UnusedPermissionDetails
1036
+
863
1037
  UpdateArchiveRuleRequest.add_member(:analyzer_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "analyzerName"))
864
1038
  UpdateArchiveRuleRequest.add_member(:rule_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "ruleName"))
865
1039
  UpdateArchiveRuleRequest.add_member(:filter, Shapes::ShapeRef.new(shape: FilterCriteriaMap, required: true, location_name: "filter"))
@@ -953,6 +1127,34 @@ module Aws::AccessAnalyzer
953
1127
  o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
954
1128
  end)
955
1129
 
1130
+ api.add_operation(:check_access_not_granted, Seahorse::Model::Operation.new.tap do |o|
1131
+ o.name = "CheckAccessNotGranted"
1132
+ o.http_method = "POST"
1133
+ o.http_request_uri = "/policy/check-access-not-granted"
1134
+ o.input = Shapes::ShapeRef.new(shape: CheckAccessNotGrantedRequest)
1135
+ o.output = Shapes::ShapeRef.new(shape: CheckAccessNotGrantedResponse)
1136
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1137
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1138
+ o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
1139
+ o.errors << Shapes::ShapeRef.new(shape: UnprocessableEntityException)
1140
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1141
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1142
+ end)
1143
+
1144
+ api.add_operation(:check_no_new_access, Seahorse::Model::Operation.new.tap do |o|
1145
+ o.name = "CheckNoNewAccess"
1146
+ o.http_method = "POST"
1147
+ o.http_request_uri = "/policy/check-no-new-access"
1148
+ o.input = Shapes::ShapeRef.new(shape: CheckNoNewAccessRequest)
1149
+ o.output = Shapes::ShapeRef.new(shape: CheckNoNewAccessResponse)
1150
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1151
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1152
+ o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
1153
+ o.errors << Shapes::ShapeRef.new(shape: UnprocessableEntityException)
1154
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1155
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1156
+ end)
1157
+
956
1158
  api.add_operation(:create_access_preview, Seahorse::Model::Operation.new.tap do |o|
957
1159
  o.name = "CreateAccessPreview"
958
1160
  o.http_method = "PUT"
@@ -1088,6 +1290,25 @@ module Aws::AccessAnalyzer
1088
1290
  o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1089
1291
  end)
1090
1292
 
1293
+ api.add_operation(:get_finding_v2, Seahorse::Model::Operation.new.tap do |o|
1294
+ o.name = "GetFindingV2"
1295
+ o.http_method = "GET"
1296
+ o.http_request_uri = "/findingv2/{id}"
1297
+ o.input = Shapes::ShapeRef.new(shape: GetFindingV2Request)
1298
+ o.output = Shapes::ShapeRef.new(shape: GetFindingV2Response)
1299
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1300
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1301
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1302
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1303
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1304
+ o[:pager] = Aws::Pager.new(
1305
+ limit_key: "max_results",
1306
+ tokens: {
1307
+ "next_token" => "next_token"
1308
+ }
1309
+ )
1310
+ end)
1311
+
1091
1312
  api.add_operation(:get_generated_policy, Seahorse::Model::Operation.new.tap do |o|
1092
1313
  o.name = "GetGeneratedPolicy"
1093
1314
  o.http_method = "GET"
@@ -1213,6 +1434,25 @@ module Aws::AccessAnalyzer
1213
1434
  )
1214
1435
  end)
1215
1436
 
1437
+ api.add_operation(:list_findings_v2, Seahorse::Model::Operation.new.tap do |o|
1438
+ o.name = "ListFindingsV2"
1439
+ o.http_method = "POST"
1440
+ o.http_request_uri = "/findingv2"
1441
+ o.input = Shapes::ShapeRef.new(shape: ListFindingsV2Request)
1442
+ o.output = Shapes::ShapeRef.new(shape: ListFindingsV2Response)
1443
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1444
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1445
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1446
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1447
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1448
+ o[:pager] = Aws::Pager.new(
1449
+ limit_key: "max_results",
1450
+ tokens: {
1451
+ "next_token" => "next_token"
1452
+ }
1453
+ )
1454
+ end)
1455
+
1216
1456
  api.add_operation(:list_policy_generations, Seahorse::Model::Operation.new.tap do |o|
1217
1457
  o.name = "ListPolicyGenerations"
1218
1458
  o.http_method = "GET"
@@ -32,8 +32,8 @@ module Aws::AccessAnalyzer
32
32
  raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
33
33
  end
34
34
  if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
35
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
36
- if Aws::Endpoints::Matchers.string_equals?("aws-us-gov", Aws::Endpoints::Matchers.attr(partition_result, "name"))
35
+ if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true)
36
+ if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-us-gov")
37
37
  return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{region}.amazonaws.com", headers: {}, properties: {})
38
38
  end
39
39
  return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
@@ -40,6 +40,34 @@ module Aws::AccessAnalyzer
40
40
  end
41
41
  end
42
42
 
43
+ class CheckAccessNotGranted
44
+ def self.build(context)
45
+ unless context.config.regional_endpoint
46
+ endpoint = context.config.endpoint.to_s
47
+ end
48
+ Aws::AccessAnalyzer::EndpointParameters.new(
49
+ region: context.config.region,
50
+ use_dual_stack: context.config.use_dualstack_endpoint,
51
+ use_fips: context.config.use_fips_endpoint,
52
+ endpoint: endpoint,
53
+ )
54
+ end
55
+ end
56
+
57
+ class CheckNoNewAccess
58
+ def self.build(context)
59
+ unless context.config.regional_endpoint
60
+ endpoint = context.config.endpoint.to_s
61
+ end
62
+ Aws::AccessAnalyzer::EndpointParameters.new(
63
+ region: context.config.region,
64
+ use_dual_stack: context.config.use_dualstack_endpoint,
65
+ use_fips: context.config.use_fips_endpoint,
66
+ endpoint: endpoint,
67
+ )
68
+ end
69
+ end
70
+
43
71
  class CreateAccessPreview
44
72
  def self.build(context)
45
73
  unless context.config.regional_endpoint
@@ -180,6 +208,20 @@ module Aws::AccessAnalyzer
180
208
  end
181
209
  end
182
210
 
211
+ class GetFindingV2
212
+ def self.build(context)
213
+ unless context.config.regional_endpoint
214
+ endpoint = context.config.endpoint.to_s
215
+ end
216
+ Aws::AccessAnalyzer::EndpointParameters.new(
217
+ region: context.config.region,
218
+ use_dual_stack: context.config.use_dualstack_endpoint,
219
+ use_fips: context.config.use_fips_endpoint,
220
+ endpoint: endpoint,
221
+ )
222
+ end
223
+ end
224
+
183
225
  class GetGeneratedPolicy
184
226
  def self.build(context)
185
227
  unless context.config.regional_endpoint
@@ -278,6 +320,20 @@ module Aws::AccessAnalyzer
278
320
  end
279
321
  end
280
322
 
323
+ class ListFindingsV2
324
+ def self.build(context)
325
+ unless context.config.regional_endpoint
326
+ endpoint = context.config.endpoint.to_s
327
+ end
328
+ Aws::AccessAnalyzer::EndpointParameters.new(
329
+ region: context.config.region,
330
+ use_dual_stack: context.config.use_dualstack_endpoint,
331
+ use_fips: context.config.use_fips_endpoint,
332
+ endpoint: endpoint,
333
+ )
334
+ end
335
+ end
336
+
281
337
  class ListPolicyGenerations
282
338
  def self.build(context)
283
339
  unless context.config.regional_endpoint
@@ -30,9 +30,11 @@ module Aws::AccessAnalyzer
30
30
  # * {AccessDeniedException}
31
31
  # * {ConflictException}
32
32
  # * {InternalServerException}
33
+ # * {InvalidParameterException}
33
34
  # * {ResourceNotFoundException}
34
35
  # * {ServiceQuotaExceededException}
35
36
  # * {ThrottlingException}
37
+ # * {UnprocessableEntityException}
36
38
  # * {ValidationException}
37
39
  #
38
40
  # Additionally, error classes are dynamically generated for service errors based on the error code
@@ -105,6 +107,21 @@ module Aws::AccessAnalyzer
105
107
  end
106
108
  end
107
109
 
110
+ class InvalidParameterException < ServiceError
111
+
112
+ # @param [Seahorse::Client::RequestContext] context
113
+ # @param [String] message
114
+ # @param [Aws::AccessAnalyzer::Types::InvalidParameterException] data
115
+ def initialize(context, message, data = Aws::EmptyStructure.new)
116
+ super(context, message, data)
117
+ end
118
+
119
+ # @return [String]
120
+ def message
121
+ @message || @data[:message]
122
+ end
123
+ end
124
+
108
125
  class ResourceNotFoundException < ServiceError
109
126
 
110
127
  # @param [Seahorse::Client::RequestContext] context
@@ -183,6 +200,25 @@ module Aws::AccessAnalyzer
183
200
  end
184
201
  end
185
202
 
203
+ class UnprocessableEntityException < ServiceError
204
+
205
+ # @param [Seahorse::Client::RequestContext] context
206
+ # @param [String] message
207
+ # @param [Aws::AccessAnalyzer::Types::UnprocessableEntityException] data
208
+ def initialize(context, message, data = Aws::EmptyStructure.new)
209
+ super(context, message, data)
210
+ end
211
+
212
+ # @return [String]
213
+ def message
214
+ @message || @data[:message]
215
+ end
216
+
217
+ def retryable?
218
+ true
219
+ end
220
+ end
221
+
186
222
  class ValidationException < ServiceError
187
223
 
188
224
  # @param [Seahorse::Client::RequestContext] context
@@ -60,6 +60,10 @@ module Aws::AccessAnalyzer
60
60
  Aws::AccessAnalyzer::Endpoints::ApplyArchiveRule.build(context)
61
61
  when :cancel_policy_generation
62
62
  Aws::AccessAnalyzer::Endpoints::CancelPolicyGeneration.build(context)
63
+ when :check_access_not_granted
64
+ Aws::AccessAnalyzer::Endpoints::CheckAccessNotGranted.build(context)
65
+ when :check_no_new_access
66
+ Aws::AccessAnalyzer::Endpoints::CheckNoNewAccess.build(context)
63
67
  when :create_access_preview
64
68
  Aws::AccessAnalyzer::Endpoints::CreateAccessPreview.build(context)
65
69
  when :create_analyzer
@@ -80,6 +84,8 @@ module Aws::AccessAnalyzer
80
84
  Aws::AccessAnalyzer::Endpoints::GetArchiveRule.build(context)
81
85
  when :get_finding
82
86
  Aws::AccessAnalyzer::Endpoints::GetFinding.build(context)
87
+ when :get_finding_v2
88
+ Aws::AccessAnalyzer::Endpoints::GetFindingV2.build(context)
83
89
  when :get_generated_policy
84
90
  Aws::AccessAnalyzer::Endpoints::GetGeneratedPolicy.build(context)
85
91
  when :list_access_preview_findings
@@ -94,6 +100,8 @@ module Aws::AccessAnalyzer
94
100
  Aws::AccessAnalyzer::Endpoints::ListArchiveRules.build(context)
95
101
  when :list_findings
96
102
  Aws::AccessAnalyzer::Endpoints::ListFindings.build(context)
103
+ when :list_findings_v2
104
+ Aws::AccessAnalyzer::Endpoints::ListFindingsV2.build(context)
97
105
  when :list_policy_generations
98
106
  Aws::AccessAnalyzer::Endpoints::ListPolicyGenerations.build(context)
99
107
  when :list_tags_for_resource