aws-sdk-accessanalyzer 1.30.0 → 1.31.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: 5b6a98531fa5ff3c515cf04c3de3b59622b464386914805f24df4805be0e0a63
4
- data.tar.gz: 181800d363950abd288279a26764e257b088d778cf24829c35e641cd4bf6e58b
3
+ metadata.gz: c975d66f577ce2ad5bebaf1b00380846b72066244108e80f33548c03ec58248a
4
+ data.tar.gz: 8b6f85c2313f8c08ffa0782f440e5dd6f9f4a0f2fdd5dada1dba29c8b0703f32
5
5
  SHA512:
6
- metadata.gz: c76bc0c96995f063c9e23b8cfb55c847e6703adc18c09710faba97677593b9aef5da3799443101d580dd72b80d60a201bf57c97cd604be2bfa6ed883f89d25c6
7
- data.tar.gz: 816a8aff96899c012361e807647d6a449a56c00cca396dc2df6bdea96f020d358ff38db18d5fa80ce9d403ac3da28b4a5465362f405e33f7eb8d07b6766ca880
6
+ metadata.gz: 7c8e59bcfbdacf5b3cb94b2cb446a46e450b25734ef5bf1ada917f8708520cc4f41b2f31d0591b098d387b95a542413028d0ab421fad3adf37143eddad99a84e
7
+ data.tar.gz: 1b447ef46dcde07395364e873d1caeb06fe1e34e802d4ae467031332e7cde99895311b1431882688bf8e44a363443546cdf9f0b2d29b97483cca2f38577a7cfb
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.31.0 (2022-10-25)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for six new resource types in IAM Access Analyzer to help you easily identify public and cross-account access to your AWS resources. Updated service API, documentation, and paginators.
8
+
4
9
  1.30.0 (2022-10-03)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.30.0
1
+ 1.31.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:accessanalyzer)
@@ -79,8 +79,9 @@ module Aws::AccessAnalyzer
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::AccessAnalyzer::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::AccessAnalyzer
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::AccessAnalyzer
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::AccessAnalyzer::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::AccessAnalyzer::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -446,9 +463,20 @@ module Aws::AccessAnalyzer
446
463
  # analyzer_arn: "AnalyzerArn", # required
447
464
  # configurations: { # required
448
465
  # "ConfigurationsMapKey" => {
466
+ # ebs_snapshot: {
467
+ # user_ids: ["EbsUserId"],
468
+ # groups: ["EbsGroup"],
469
+ # kms_key_id: "EbsSnapshotDataEncryptionKeyId",
470
+ # },
471
+ # ecr_repository: {
472
+ # repository_policy: "EcrRepositoryPolicy",
473
+ # },
449
474
  # iam_role: {
450
475
  # trust_policy: "IamTrustPolicy",
451
476
  # },
477
+ # efs_file_system: {
478
+ # file_system_policy: "EfsFileSystemPolicy",
479
+ # },
452
480
  # kms_key: {
453
481
  # key_policies: {
454
482
  # "PolicyName" => "KmsKeyPolicy",
@@ -470,6 +498,22 @@ module Aws::AccessAnalyzer
470
498
  # },
471
499
  # ],
472
500
  # },
501
+ # rds_db_cluster_snapshot: {
502
+ # attributes: {
503
+ # "RdsDbClusterSnapshotAttributeName" => {
504
+ # account_ids: ["RdsDbClusterSnapshotAccountId"],
505
+ # },
506
+ # },
507
+ # kms_key_id: "RdsDbClusterSnapshotKmsKeyId",
508
+ # },
509
+ # rds_db_snapshot: {
510
+ # attributes: {
511
+ # "RdsDbSnapshotAttributeName" => {
512
+ # account_ids: ["RdsDbSnapshotAccountId"],
513
+ # },
514
+ # },
515
+ # kms_key_id: "RdsDbSnapshotKmsKeyId",
516
+ # },
473
517
  # secrets_manager_secret: {
474
518
  # kms_key_id: "SecretsManagerSecretKmsId",
475
519
  # secret_policy: "SecretsManagerSecretPolicy",
@@ -506,6 +550,9 @@ module Aws::AccessAnalyzer
506
550
  # },
507
551
  # },
508
552
  # },
553
+ # sns_topic: {
554
+ # topic_policy: "SnsTopicPolicy",
555
+ # },
509
556
  # sqs_queue: {
510
557
  # queue_policy: "SqsQueuePolicy",
511
558
  # },
@@ -741,7 +788,14 @@ module Aws::AccessAnalyzer
741
788
  # resp.access_preview.id #=> String
742
789
  # resp.access_preview.analyzer_arn #=> String
743
790
  # resp.access_preview.configurations #=> Hash
791
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.user_ids #=> Array
792
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.user_ids[0] #=> String
793
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.groups #=> Array
794
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.groups[0] #=> String
795
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.kms_key_id #=> String
796
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ecr_repository.repository_policy #=> String
744
797
  # resp.access_preview.configurations["ConfigurationsMapKey"].iam_role.trust_policy #=> String
798
+ # resp.access_preview.configurations["ConfigurationsMapKey"].efs_file_system.file_system_policy #=> String
745
799
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.key_policies #=> Hash
746
800
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.key_policies["PolicyName"] #=> String
747
801
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants #=> Array
@@ -754,6 +808,14 @@ module Aws::AccessAnalyzer
754
808
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].constraints.encryption_context_subset #=> Hash
755
809
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].constraints.encryption_context_subset["KmsConstraintsKey"] #=> String
756
810
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].issuing_account #=> String
811
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes #=> Hash
812
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes["RdsDbClusterSnapshotAttributeName"].account_ids #=> Array
813
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes["RdsDbClusterSnapshotAttributeName"].account_ids[0] #=> String
814
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.kms_key_id #=> String
815
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes #=> Hash
816
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes["RdsDbSnapshotAttributeName"].account_ids #=> Array
817
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes["RdsDbSnapshotAttributeName"].account_ids[0] #=> String
818
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.kms_key_id #=> String
757
819
  # resp.access_preview.configurations["ConfigurationsMapKey"].secrets_manager_secret.kms_key_id #=> String
758
820
  # resp.access_preview.configurations["ConfigurationsMapKey"].secrets_manager_secret.secret_policy #=> String
759
821
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.bucket_policy #=> String
@@ -768,6 +830,7 @@ module Aws::AccessAnalyzer
768
830
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].public_access_block.ignore_public_acls #=> Boolean
769
831
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].public_access_block.restrict_public_buckets #=> Boolean
770
832
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].network_origin.vpc_configuration.vpc_id #=> String
833
+ # resp.access_preview.configurations["ConfigurationsMapKey"].sns_topic.topic_policy #=> String
771
834
  # resp.access_preview.configurations["ConfigurationsMapKey"].sqs_queue.queue_policy #=> String
772
835
  # resp.access_preview.created_at #=> Time
773
836
  # resp.access_preview.status #=> String, one of "COMPLETED", "CREATING", "FAILED"
@@ -808,7 +871,7 @@ module Aws::AccessAnalyzer
808
871
  # @example Response structure
809
872
  #
810
873
  # resp.resource.resource_arn #=> String
811
- # resp.resource.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
874
+ # resp.resource.resource_type #=> String, one of "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"
812
875
  # resp.resource.created_at #=> Time
813
876
  # resp.resource.analyzed_at #=> Time
814
877
  # resp.resource.updated_at #=> Time
@@ -948,7 +1011,7 @@ module Aws::AccessAnalyzer
948
1011
  # resp.finding.action[0] #=> String
949
1012
  # resp.finding.resource #=> String
950
1013
  # resp.finding.is_public #=> Boolean
951
- # resp.finding.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1014
+ # resp.finding.resource_type #=> String, one of "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"
952
1015
  # resp.finding.condition #=> Hash
953
1016
  # resp.finding.condition["String"] #=> String
954
1017
  # resp.finding.created_at #=> Time
@@ -1097,7 +1160,7 @@ module Aws::AccessAnalyzer
1097
1160
  # resp.findings[0].condition["String"] #=> String
1098
1161
  # resp.findings[0].resource #=> String
1099
1162
  # resp.findings[0].is_public #=> Boolean
1100
- # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1163
+ # resp.findings[0].resource_type #=> String, one of "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"
1101
1164
  # resp.findings[0].created_at #=> Time
1102
1165
  # resp.findings[0].change_type #=> String, one of "CHANGED", "NEW", "UNCHANGED"
1103
1166
  # resp.findings[0].status #=> String, one of "ACTIVE", "ARCHIVED", "RESOLVED"
@@ -1197,7 +1260,7 @@ module Aws::AccessAnalyzer
1197
1260
  #
1198
1261
  # resp = client.list_analyzed_resources({
1199
1262
  # analyzer_arn: "AnalyzerArn", # required
1200
- # resource_type: "AWS::S3::Bucket", # accepts AWS::S3::Bucket, AWS::IAM::Role, AWS::SQS::Queue, AWS::Lambda::Function, AWS::Lambda::LayerVersion, AWS::KMS::Key, AWS::SecretsManager::Secret
1263
+ # resource_type: "AWS::S3::Bucket", # accepts 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
1201
1264
  # next_token: "Token",
1202
1265
  # max_results: 1,
1203
1266
  # })
@@ -1207,7 +1270,7 @@ module Aws::AccessAnalyzer
1207
1270
  # resp.analyzed_resources #=> Array
1208
1271
  # resp.analyzed_resources[0].resource_arn #=> String
1209
1272
  # resp.analyzed_resources[0].resource_owner_account #=> String
1210
- # resp.analyzed_resources[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1273
+ # resp.analyzed_resources[0].resource_type #=> String, one of "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"
1211
1274
  # resp.next_token #=> String
1212
1275
  #
1213
1276
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListAnalyzedResources AWS API Documentation
@@ -1386,7 +1449,7 @@ module Aws::AccessAnalyzer
1386
1449
  # resp.findings[0].action[0] #=> String
1387
1450
  # resp.findings[0].resource #=> String
1388
1451
  # resp.findings[0].is_public #=> Boolean
1389
- # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1452
+ # resp.findings[0].resource_type #=> String, one of "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"
1390
1453
  # resp.findings[0].condition #=> Hash
1391
1454
  # resp.findings[0].condition["String"] #=> String
1392
1455
  # resp.findings[0].created_at #=> Time
@@ -1561,6 +1624,11 @@ module Aws::AccessAnalyzer
1561
1624
  # @option params [required, String] :resource_arn
1562
1625
  # The ARN of the resource to scan.
1563
1626
  #
1627
+ # @option params [String] :resource_owner_account
1628
+ # The Amazon Web Services account ID that owns the resource. For most
1629
+ # Amazon Web Services resources, the owning account is the account in
1630
+ # which the resource was created.
1631
+ #
1564
1632
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1565
1633
  #
1566
1634
  # @example Request syntax with placeholder values
@@ -1568,6 +1636,7 @@ module Aws::AccessAnalyzer
1568
1636
  # resp = client.start_resource_scan({
1569
1637
  # analyzer_arn: "AnalyzerArn", # required
1570
1638
  # resource_arn: "ResourceArn", # required
1639
+ # resource_owner_account: "String",
1571
1640
  # })
1572
1641
  #
1573
1642
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/StartResourceScan AWS API Documentation
@@ -1830,7 +1899,7 @@ module Aws::AccessAnalyzer
1830
1899
  params: params,
1831
1900
  config: config)
1832
1901
  context[:gem_name] = 'aws-sdk-accessanalyzer'
1833
- context[:gem_version] = '1.30.0'
1902
+ context[:gem_version] = '1.31.0'
1834
1903
  Seahorse::Client::Request.new(handlers, context)
1835
1904
  end
1836
1905
 
@@ -60,6 +60,16 @@ module Aws::AccessAnalyzer
60
60
  Criterion = Shapes::StructureShape.new(name: 'Criterion')
61
61
  DeleteAnalyzerRequest = Shapes::StructureShape.new(name: 'DeleteAnalyzerRequest')
62
62
  DeleteArchiveRuleRequest = Shapes::StructureShape.new(name: 'DeleteArchiveRuleRequest')
63
+ EbsGroup = Shapes::StringShape.new(name: 'EbsGroup')
64
+ EbsGroupList = Shapes::ListShape.new(name: 'EbsGroupList')
65
+ EbsSnapshotConfiguration = Shapes::StructureShape.new(name: 'EbsSnapshotConfiguration')
66
+ EbsSnapshotDataEncryptionKeyId = Shapes::StringShape.new(name: 'EbsSnapshotDataEncryptionKeyId')
67
+ EbsUserId = Shapes::StringShape.new(name: 'EbsUserId')
68
+ EbsUserIdList = Shapes::ListShape.new(name: 'EbsUserIdList')
69
+ EcrRepositoryConfiguration = Shapes::StructureShape.new(name: 'EcrRepositoryConfiguration')
70
+ EcrRepositoryPolicy = Shapes::StringShape.new(name: 'EcrRepositoryPolicy')
71
+ EfsFileSystemConfiguration = Shapes::StructureShape.new(name: 'EfsFileSystemConfiguration')
72
+ EfsFileSystemPolicy = Shapes::StringShape.new(name: 'EfsFileSystemPolicy')
63
73
  FilterCriteriaMap = Shapes::MapShape.new(name: 'FilterCriteriaMap')
64
74
  Finding = Shapes::StructureShape.new(name: 'Finding')
65
75
  FindingChangeType = Shapes::StringShape.new(name: 'FindingChangeType')
@@ -150,6 +160,20 @@ module Aws::AccessAnalyzer
150
160
  Position = Shapes::StructureShape.new(name: 'Position')
151
161
  PrincipalArn = Shapes::StringShape.new(name: 'PrincipalArn')
152
162
  PrincipalMap = Shapes::MapShape.new(name: 'PrincipalMap')
163
+ RdsDbClusterSnapshotAccountId = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotAccountId')
164
+ RdsDbClusterSnapshotAccountIdsList = Shapes::ListShape.new(name: 'RdsDbClusterSnapshotAccountIdsList')
165
+ RdsDbClusterSnapshotAttributeName = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotAttributeName')
166
+ RdsDbClusterSnapshotAttributeValue = Shapes::UnionShape.new(name: 'RdsDbClusterSnapshotAttributeValue')
167
+ RdsDbClusterSnapshotAttributesMap = Shapes::MapShape.new(name: 'RdsDbClusterSnapshotAttributesMap')
168
+ RdsDbClusterSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbClusterSnapshotConfiguration')
169
+ RdsDbClusterSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotKmsKeyId')
170
+ RdsDbSnapshotAccountId = Shapes::StringShape.new(name: 'RdsDbSnapshotAccountId')
171
+ RdsDbSnapshotAccountIdsList = Shapes::ListShape.new(name: 'RdsDbSnapshotAccountIdsList')
172
+ RdsDbSnapshotAttributeName = Shapes::StringShape.new(name: 'RdsDbSnapshotAttributeName')
173
+ RdsDbSnapshotAttributeValue = Shapes::UnionShape.new(name: 'RdsDbSnapshotAttributeValue')
174
+ RdsDbSnapshotAttributesMap = Shapes::MapShape.new(name: 'RdsDbSnapshotAttributesMap')
175
+ RdsDbSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbSnapshotConfiguration')
176
+ RdsDbSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbSnapshotKmsKeyId')
153
177
  ReasonCode = Shapes::StringShape.new(name: 'ReasonCode')
154
178
  RegionList = Shapes::ListShape.new(name: 'RegionList')
155
179
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
@@ -169,6 +193,8 @@ module Aws::AccessAnalyzer
169
193
  SecretsManagerSecretPolicy = Shapes::StringShape.new(name: 'SecretsManagerSecretPolicy')
170
194
  ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
171
195
  SharedViaList = Shapes::ListShape.new(name: 'SharedViaList')
196
+ SnsTopicConfiguration = Shapes::StructureShape.new(name: 'SnsTopicConfiguration')
197
+ SnsTopicPolicy = Shapes::StringShape.new(name: 'SnsTopicPolicy')
172
198
  SortCriteria = Shapes::StructureShape.new(name: 'SortCriteria')
173
199
  Span = Shapes::StructureShape.new(name: 'Span')
174
200
  SqsQueueConfiguration = Shapes::StructureShape.new(name: 'SqsQueueConfiguration')
@@ -326,16 +352,28 @@ module Aws::AccessAnalyzer
326
352
  ConditionKeyMap.key = Shapes::ShapeRef.new(shape: String)
327
353
  ConditionKeyMap.value = Shapes::ShapeRef.new(shape: String)
328
354
 
355
+ Configuration.add_member(:ebs_snapshot, Shapes::ShapeRef.new(shape: EbsSnapshotConfiguration, location_name: "ebsSnapshot"))
356
+ Configuration.add_member(:ecr_repository, Shapes::ShapeRef.new(shape: EcrRepositoryConfiguration, location_name: "ecrRepository"))
329
357
  Configuration.add_member(:iam_role, Shapes::ShapeRef.new(shape: IamRoleConfiguration, location_name: "iamRole"))
358
+ Configuration.add_member(:efs_file_system, Shapes::ShapeRef.new(shape: EfsFileSystemConfiguration, location_name: "efsFileSystem"))
330
359
  Configuration.add_member(:kms_key, Shapes::ShapeRef.new(shape: KmsKeyConfiguration, location_name: "kmsKey"))
360
+ Configuration.add_member(:rds_db_cluster_snapshot, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotConfiguration, location_name: "rdsDbClusterSnapshot"))
361
+ Configuration.add_member(:rds_db_snapshot, Shapes::ShapeRef.new(shape: RdsDbSnapshotConfiguration, location_name: "rdsDbSnapshot"))
331
362
  Configuration.add_member(:secrets_manager_secret, Shapes::ShapeRef.new(shape: SecretsManagerSecretConfiguration, location_name: "secretsManagerSecret"))
332
363
  Configuration.add_member(:s3_bucket, Shapes::ShapeRef.new(shape: S3BucketConfiguration, location_name: "s3Bucket"))
364
+ Configuration.add_member(:sns_topic, Shapes::ShapeRef.new(shape: SnsTopicConfiguration, location_name: "snsTopic"))
333
365
  Configuration.add_member(:sqs_queue, Shapes::ShapeRef.new(shape: SqsQueueConfiguration, location_name: "sqsQueue"))
334
366
  Configuration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
367
+ Configuration.add_member_subclass(:ebs_snapshot, Types::Configuration::EbsSnapshot)
368
+ Configuration.add_member_subclass(:ecr_repository, Types::Configuration::EcrRepository)
335
369
  Configuration.add_member_subclass(:iam_role, Types::Configuration::IamRole)
370
+ Configuration.add_member_subclass(:efs_file_system, Types::Configuration::EfsFileSystem)
336
371
  Configuration.add_member_subclass(:kms_key, Types::Configuration::KmsKey)
372
+ Configuration.add_member_subclass(:rds_db_cluster_snapshot, Types::Configuration::RdsDbClusterSnapshot)
373
+ Configuration.add_member_subclass(:rds_db_snapshot, Types::Configuration::RdsDbSnapshot)
337
374
  Configuration.add_member_subclass(:secrets_manager_secret, Types::Configuration::SecretsManagerSecret)
338
375
  Configuration.add_member_subclass(:s3_bucket, Types::Configuration::S3Bucket)
376
+ Configuration.add_member_subclass(:sns_topic, Types::Configuration::SnsTopic)
339
377
  Configuration.add_member_subclass(:sqs_queue, Types::Configuration::SqsQueue)
340
378
  Configuration.add_member_subclass(:unknown, Types::Configuration::Unknown)
341
379
  Configuration.struct_class = Types::Configuration
@@ -387,6 +425,21 @@ module Aws::AccessAnalyzer
387
425
  DeleteArchiveRuleRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true}))
388
426
  DeleteArchiveRuleRequest.struct_class = Types::DeleteArchiveRuleRequest
389
427
 
428
+ EbsGroupList.member = Shapes::ShapeRef.new(shape: EbsGroup)
429
+
430
+ EbsSnapshotConfiguration.add_member(:user_ids, Shapes::ShapeRef.new(shape: EbsUserIdList, location_name: "userIds"))
431
+ EbsSnapshotConfiguration.add_member(:groups, Shapes::ShapeRef.new(shape: EbsGroupList, location_name: "groups"))
432
+ EbsSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: EbsSnapshotDataEncryptionKeyId, location_name: "kmsKeyId"))
433
+ EbsSnapshotConfiguration.struct_class = Types::EbsSnapshotConfiguration
434
+
435
+ EbsUserIdList.member = Shapes::ShapeRef.new(shape: EbsUserId)
436
+
437
+ EcrRepositoryConfiguration.add_member(:repository_policy, Shapes::ShapeRef.new(shape: EcrRepositoryPolicy, location_name: "repositoryPolicy"))
438
+ EcrRepositoryConfiguration.struct_class = Types::EcrRepositoryConfiguration
439
+
440
+ EfsFileSystemConfiguration.add_member(:file_system_policy, Shapes::ShapeRef.new(shape: EfsFileSystemPolicy, location_name: "fileSystemPolicy"))
441
+ EfsFileSystemConfiguration.struct_class = Types::EfsFileSystemConfiguration
442
+
390
443
  FilterCriteriaMap.key = Shapes::ShapeRef.new(shape: String)
391
444
  FilterCriteriaMap.value = Shapes::ShapeRef.new(shape: Criterion)
392
445
 
@@ -631,7 +684,7 @@ module Aws::AccessAnalyzer
631
684
  NetworkOriginConfiguration.add_member_subclass(:unknown, Types::NetworkOriginConfiguration::Unknown)
632
685
  NetworkOriginConfiguration.struct_class = Types::NetworkOriginConfiguration
633
686
 
634
- PathElement.add_member(:index, Shapes::ShapeRef.new(shape: Integer, location_name: "index"))
687
+ PathElement.add_member(:index, Shapes::ShapeRef.new(shape: Integer, location_name: "index", metadata: {"box"=>true}))
635
688
  PathElement.add_member(:key, Shapes::ShapeRef.new(shape: String, location_name: "key"))
636
689
  PathElement.add_member(:substring, Shapes::ShapeRef.new(shape: Substring, location_name: "substring"))
637
690
  PathElement.add_member(:value, Shapes::ShapeRef.new(shape: String, location_name: "value"))
@@ -665,6 +718,36 @@ module Aws::AccessAnalyzer
665
718
  PrincipalMap.key = Shapes::ShapeRef.new(shape: String)
666
719
  PrincipalMap.value = Shapes::ShapeRef.new(shape: String)
667
720
 
721
+ RdsDbClusterSnapshotAccountIdsList.member = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAccountId)
722
+
723
+ RdsDbClusterSnapshotAttributeValue.add_member(:account_ids, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAccountIdsList, location_name: "accountIds"))
724
+ RdsDbClusterSnapshotAttributeValue.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
725
+ RdsDbClusterSnapshotAttributeValue.add_member_subclass(:account_ids, Types::RdsDbClusterSnapshotAttributeValue::AccountIds)
726
+ RdsDbClusterSnapshotAttributeValue.add_member_subclass(:unknown, Types::RdsDbClusterSnapshotAttributeValue::Unknown)
727
+ RdsDbClusterSnapshotAttributeValue.struct_class = Types::RdsDbClusterSnapshotAttributeValue
728
+
729
+ RdsDbClusterSnapshotAttributesMap.key = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributeName)
730
+ RdsDbClusterSnapshotAttributesMap.value = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributeValue)
731
+
732
+ RdsDbClusterSnapshotConfiguration.add_member(:attributes, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributesMap, location_name: "attributes"))
733
+ RdsDbClusterSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotKmsKeyId, location_name: "kmsKeyId"))
734
+ RdsDbClusterSnapshotConfiguration.struct_class = Types::RdsDbClusterSnapshotConfiguration
735
+
736
+ RdsDbSnapshotAccountIdsList.member = Shapes::ShapeRef.new(shape: RdsDbSnapshotAccountId)
737
+
738
+ RdsDbSnapshotAttributeValue.add_member(:account_ids, Shapes::ShapeRef.new(shape: RdsDbSnapshotAccountIdsList, location_name: "accountIds"))
739
+ RdsDbSnapshotAttributeValue.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
740
+ RdsDbSnapshotAttributeValue.add_member_subclass(:account_ids, Types::RdsDbSnapshotAttributeValue::AccountIds)
741
+ RdsDbSnapshotAttributeValue.add_member_subclass(:unknown, Types::RdsDbSnapshotAttributeValue::Unknown)
742
+ RdsDbSnapshotAttributeValue.struct_class = Types::RdsDbSnapshotAttributeValue
743
+
744
+ RdsDbSnapshotAttributesMap.key = Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributeName)
745
+ RdsDbSnapshotAttributesMap.value = Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributeValue)
746
+
747
+ RdsDbSnapshotConfiguration.add_member(:attributes, Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributesMap, location_name: "attributes"))
748
+ RdsDbSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbSnapshotKmsKeyId, location_name: "kmsKeyId"))
749
+ RdsDbSnapshotConfiguration.struct_class = Types::RdsDbSnapshotConfiguration
750
+
668
751
  RegionList.member = Shapes::ShapeRef.new(shape: String)
669
752
 
670
753
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
@@ -707,6 +790,9 @@ module Aws::AccessAnalyzer
707
790
 
708
791
  SharedViaList.member = Shapes::ShapeRef.new(shape: String)
709
792
 
793
+ SnsTopicConfiguration.add_member(:topic_policy, Shapes::ShapeRef.new(shape: SnsTopicPolicy, location_name: "topicPolicy"))
794
+ SnsTopicConfiguration.struct_class = Types::SnsTopicConfiguration
795
+
710
796
  SortCriteria.add_member(:attribute_name, Shapes::ShapeRef.new(shape: String, location_name: "attributeName"))
711
797
  SortCriteria.add_member(:order_by, Shapes::ShapeRef.new(shape: OrderBy, location_name: "orderBy"))
712
798
  SortCriteria.struct_class = Types::SortCriteria
@@ -728,6 +814,7 @@ module Aws::AccessAnalyzer
728
814
 
729
815
  StartResourceScanRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "analyzerArn"))
730
816
  StartResourceScanRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "resourceArn"))
817
+ StartResourceScanRequest.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, location_name: "resourceOwnerAccount"))
731
818
  StartResourceScanRequest.struct_class = Types::StartResourceScanRequest
732
819
 
733
820
  StatusReason.add_member(:code, Shapes::ShapeRef.new(shape: ReasonCode, required: true, location_name: "code"))
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::AccessAnalyzer
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::AccessAnalyzer
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
+ dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
+ cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
+ dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
+ ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
+ ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
+ ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
+ aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
+ OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
+ UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
+ dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
+ UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
+ dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
+ ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
+ IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
+ aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
+ bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
+ ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
+ Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
+ cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
+ aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
+ cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
+ InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
+ UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
+ SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
+ eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
+ InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
+ LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
+ b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
+ RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
+ ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
+ ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
+ dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
+ In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
+ YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
+ YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
+ cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
+ dCI6eyJ1cmwiOiJodHRwczovL2FjY2Vzcy1hbmFseXplci1maXBzLntSZWdp
77
+ b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
78
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
79
+ XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3Rh
80
+ Y2sgYXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBz
81
+ dXBwb3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRp
82
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6
83
+ IlVzZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
84
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
85
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
86
+ c3VsdCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVs
87
+ ZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
88
+ eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9h
89
+ Y2Nlc3MtYW5hbHl6ZXItZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
90
+ I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0
91
+ eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
92
+ OiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90
93
+ IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
94
+ IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
95
+ dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
96
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
97
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
98
+ c3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUi
99
+ LCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
100
+ Imh0dHBzOi8vYWNjZXNzLWFuYWx5emVyLntSZWdpb259LntQYXJ0aXRpb25S
101
+ ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
102
+ ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
103
+ IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
104
+ YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
105
+ ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
106
+ Imh0dHBzOi8vYWNjZXNzLWFuYWx5emVyLntSZWdpb259LntQYXJ0aXRpb25S
107
+ ZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
108
+ fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
109
+
110
+ JSON
111
+ end
112
+ end