From c79b24a59e2b58f8a51a9141f2e77a6958697ccd Mon Sep 17 00:00:00 2001 From: AWS SDK for Ruby Date: Mon, 27 Nov 2023 03:46:06 +0000 Subject: [PATCH] Updated API models and rebuilt service gems. --- README.md | 6 + apis/accessanalyzer/2019-11-01/api-2.json | 397 +++- apis/accessanalyzer/2019-11-01/docs-2.json | 272 ++- .../2019-11-01/endpoint-rule-set-1.json | 44 +- .../2019-11-01/paginators-1.json | 12 + apis/amp/2020-08-01/api-2.json | 408 +++- apis/amp/2020-08-01/docs-2.json | 244 ++ apis/amp/2020-08-01/endpoint-rule-set-1.json | 40 +- apis/amp/2020-08-01/paginators-1.json | 6 + apis/amp/2020-08-01/waiters-2.json | 33 + apis/bcm-data-exports/2023-11-26/api-2.json | 778 +++++++ apis/bcm-data-exports/2023-11-26/docs-2.json | 514 +++++ .../2023-11-26/endpoint-rule-set-1.json | 338 +++ .../2023-11-26/endpoint-tests-1.json | 149 ++ .../2023-11-26/examples-1.json | 5 + .../2023-11-26/paginators-1.json | 22 + apis/cloudtrail/2013-11-01/api-2.json | 129 +- apis/cloudtrail/2013-11-01/docs-2.json | 61 +- .../2019-12-01/api-2.json | 944 +++++++- .../2019-12-01/docs-2.json | 609 ++++- .../2019-12-01/paginators-1.json | 10 + apis/compute-optimizer/2019-11-01/api-2.json | 318 ++- apis/compute-optimizer/2019-11-01/docs-2.json | 249 +- .../2019-11-01/endpoint-rule-set-1.json | 40 +- apis/config/2014-11-12/api-2.json | 55 +- apis/config/2014-11-12/docs-2.json | 77 +- apis/controltower/2018-05-10/api-2.json | 333 +++ apis/controltower/2018-05-10/docs-2.json | 215 +- .../2018-05-10/endpoint-tests-1.json | 11 - .../controltower/2018-05-10/paginators-1.json | 6 + .../2022-07-26/api-2.json | 936 ++++++++ .../2022-07-26/docs-2.json | 796 +++++++ .../2022-07-26/endpoint-rule-set-1.json | 350 +++ .../2022-07-26/endpoint-tests-1.json | 314 +++ .../2022-07-26/examples-1.json | 5 + .../2022-07-26/paginators-1.json | 22 + apis/detective/2018-10-26/api-2.json | 427 ++++ apis/detective/2018-10-26/docs-2.json | 360 +++ .../2018-10-26/endpoint-rule-set-1.json | 40 +- apis/ecs/2014-11-13/api-2.json | 13 +- apis/ecs/2014-11-13/docs-2.json | 14 +- apis/eks-auth/2023-11-26/api-2.json | 229 ++ apis/eks-auth/2023-11-26/docs-2.json | 130 ++ .../2023-11-26/endpoint-rule-set-1.json | 247 ++ .../eks-auth/2023-11-26/endpoint-tests-1.json | 119 + apis/eks-auth/2023-11-26/examples-1.json | 5 + apis/eks-auth/2023-11-26/paginators-1.json | 4 + apis/eks-auth/2023-11-26/smoke.json | 6 + apis/eks-auth/2023-11-26/waiters-2.json | 5 + apis/eks/2017-11-01/api-2.json | 259 +++ apis/eks/2017-11-01/docs-2.json | 187 +- apis/eks/2017-11-01/paginators-1.json | 12 + apis/elasticfilesystem/2015-02-01/api-2.json | 27 +- apis/elasticfilesystem/2015-02-01/docs-2.json | 59 +- .../2015-02-01/endpoint-rule-set-1.json | 40 +- .../2015-02-01/paginators-1.json | 21 +- .../2015-12-01/api-2.json | 623 ++++- .../2015-12-01/docs-2.json | 423 +++- .../2015-12-01/endpoint-rule-set-1.json | 44 +- .../2015-12-01/paginators-1.json | 15 + apis/freetier/2023-09-07/api-2.json | 175 ++ apis/freetier/2023-09-07/docs-2.json | 133 ++ .../2023-09-07/endpoint-rule-set-1.json | 392 ++++ .../freetier/2023-09-07/endpoint-tests-1.json | 170 ++ apis/freetier/2023-09-07/examples-1.json | 5 + apis/freetier/2023-09-07/paginators-1.json | 10 + apis/fsx/2018-03-01/api-2.json | 243 +- apis/fsx/2018-03-01/docs-2.json | 183 +- apis/guardduty/2017-11-28/api-2.json | 137 +- apis/guardduty/2017-11-28/docs-2.json | 50 +- apis/iotfleetwise/2021-06-17/api-2.json | 249 +- apis/iotfleetwise/2021-06-17/docs-2.json | 166 +- .../2021-06-17/endpoint-rule-set-1.json | 40 +- apis/lakeformation/2017-03-31/api-2.json | 152 ++ apis/lakeformation/2017-03-31/docs-2.json | 99 +- .../2017-03-31/endpoint-rule-set-1.json | 40 +- apis/logs/2014-03-28/api-2.json | 451 +++- apis/logs/2014-03-28/docs-2.json | 364 ++- apis/logs/2014-03-28/paginators-1.json | 12 + apis/managedblockchain/2018-09-24/api-2.json | 27 +- apis/managedblockchain/2018-09-24/docs-2.json | 18 +- .../2018-09-24/endpoint-rule-set-1.json | 40 +- apis/models.lex.v2/2020-08-07/api-2.json | 364 ++- apis/models.lex.v2/2020-08-07/docs-2.json | 203 +- .../2020-08-07/paginators-1.json | 5 + apis/personalize-events/2018-03-22/api-2.json | 122 +- .../personalize-events/2018-03-22/docs-2.json | 96 +- .../2018-03-22/endpoint-rule-set-1.json | 40 +- .../personalize-runtime/2018-05-22/api-2.json | 83 +- .../2018-05-22/docs-2.json | 78 +- .../2018-05-22/endpoint-rule-set-1.json | 40 +- apis/personalize/2018-05-22/api-2.json | 41 +- apis/personalize/2018-05-22/docs-2.json | 57 +- .../2018-05-22/endpoint-rule-set-1.json | 40 +- apis/quicksight/2018-04-01/api-2.json | 177 +- apis/quicksight/2018-04-01/docs-2.json | 85 + apis/redshift/2012-12-01/api-2.json | 10 +- apis/redshift/2012-12-01/docs-2.json | 4 + apis/repostspace/2022-05-13/api-2.json | 766 +++++++ apis/repostspace/2022-05-13/docs-2.json | 413 ++++ .../2022-05-13/endpoint-rule-set-1.json | 350 +++ .../2022-05-13/endpoint-tests-1.json | 314 +++ apis/repostspace/2022-05-13/examples-1.json | 5 + apis/repostspace/2022-05-13/paginators-1.json | 10 + apis/runtime.lex.v2/2020-08-07/api-2.json | 12 +- apis/runtime.lex.v2/2020-08-07/docs-2.json | 32 +- .../2020-08-07/endpoint-rule-set-1.json | 40 +- apis/s3/2006-03-01/api-2.json | 15 + apis/s3/2006-03-01/docs-2.json | 2 +- apis/s3/2006-03-01/endpoint-rule-set-1.json | 10 + apis/s3/2006-03-01/endpoint-tests-1.json | 39 + apis/s3/2006-03-01/examples-1.json | 284 +-- apis/s3control/2018-08-20/api-2.json | 1113 ++++++++- apis/s3control/2018-08-20/docs-2.json | 510 ++++- apis/s3control/2018-08-20/paginators-1.json | 15 + apis/secretsmanager/2017-10-17/api-2.json | 81 + apis/secretsmanager/2017-10-17/docs-2.json | 72 +- .../2017-10-17/paginators-1.json | 5 + apis/securityhub/2018-10-26/api-2.json | 256 ++- apis/securityhub/2018-10-26/docs-2.json | 214 +- .../2018-10-26/endpoint-rule-set-1.json | 40 +- apis/securityhub/2018-10-26/examples-1.json | 95 +- apis/states/2016-11-23/api-2.json | 108 +- apis/states/2016-11-23/docs-2.json | 130 +- apis/transcribe/2017-10-26/api-2.json | 76 +- apis/transcribe/2017-10-26/docs-2.json | 7 + .../2017-10-26/endpoint-rule-set-1.json | 48 +- .../2023-08-22/api-2.json | 1140 ++++++++++ .../2023-08-22/docs-2.json | 692 ++++++ .../2023-08-22/endpoint-rule-set-1.json | 350 +++ .../2023-08-22/endpoint-tests-1.json | 314 +++ .../2023-08-22/examples-1.json | 5 + .../2023-08-22/paginators-1.json | 22 + apis/workspaces/2015-04-08/api-2.json | 41 +- apis/workspaces/2015-04-08/docs-2.json | 30 + gems/aws-partitions/CHANGELOG.md | 15 + gems/aws-partitions/VERSION | 2 +- gems/aws-partitions/lib/aws-partitions.rb | 6 + gems/aws-partitions/partitions.json | 109 +- gems/aws-sdk-accessanalyzer/CHANGELOG.md | 5 + gems/aws-sdk-accessanalyzer/VERSION | 2 +- .../lib/aws-sdk-accessanalyzer.rb | 2 +- .../lib/aws-sdk-accessanalyzer/client.rb | 328 ++- .../lib/aws-sdk-accessanalyzer/client_api.rb | 240 ++ .../endpoint_provider.rb | 4 +- .../lib/aws-sdk-accessanalyzer/endpoints.rb | 56 + .../lib/aws-sdk-accessanalyzer/errors.rb | 36 + .../plugins/endpoints.rb | 8 + .../lib/aws-sdk-accessanalyzer/types.rb | 699 +++++- gems/aws-sdk-bcmdataexports/CHANGELOG.md | 8 + gems/aws-sdk-bcmdataexports/LICENSE.txt | 202 ++ gems/aws-sdk-bcmdataexports/VERSION | 1 + .../aws-sdk-bcmdataexports.gemspec | 32 + gems/aws-sdk-bcmdataexports/features/env.rb | 18 + .../features/step_definitions.rb | 8 + .../lib/aws-sdk-bcmdataexports.rb | 57 + .../lib/aws-sdk-bcmdataexports/client.rb | 1003 ++++++++ .../lib/aws-sdk-bcmdataexports/client_api.rb | 490 ++++ .../aws-sdk-bcmdataexports/customizations.rb | 0 .../endpoint_parameters.rb | 54 + .../endpoint_provider.rb | 56 + .../lib/aws-sdk-bcmdataexports/endpoints.rb | 172 ++ .../lib/aws-sdk-bcmdataexports/errors.rb | 168 ++ .../plugins/endpoints.rb | 92 + .../lib/aws-sdk-bcmdataexports/resource.rb | 26 + .../lib/aws-sdk-bcmdataexports/types.rb | 919 ++++++++ .../spec/endpoint_provider_spec.rb | 170 ++ .../spec/spec_helper.rb | 18 + gems/aws-sdk-cloudtrail/CHANGELOG.md | 5 + gems/aws-sdk-cloudtrail/VERSION | 2 +- .../lib/aws-sdk-cloudtrail.rb | 2 +- .../lib/aws-sdk-cloudtrail/client.rb | 118 +- .../lib/aws-sdk-cloudtrail/client_api.rb | 82 + .../lib/aws-sdk-cloudtrail/endpoints.rb | 28 + .../lib/aws-sdk-cloudtrail/errors.rb | 33 + .../aws-sdk-cloudtrail/plugins/endpoints.rb | 4 + .../lib/aws-sdk-cloudtrail/types.rb | 145 +- gems/aws-sdk-cloudwatchlogs/CHANGELOG.md | 5 + gems/aws-sdk-cloudwatchlogs/VERSION | 2 +- .../lib/aws-sdk-cloudwatchlogs.rb | 2 +- .../lib/aws-sdk-cloudwatchlogs/client.rb | 505 ++++- .../lib/aws-sdk-cloudwatchlogs/client_api.rb | 271 +++ .../lib/aws-sdk-cloudwatchlogs/endpoints.rb | 98 + .../plugins/endpoints.rb | 14 + .../lib/aws-sdk-cloudwatchlogs/types.rb | 735 +++++- gems/aws-sdk-codestarconnections/CHANGELOG.md | 5 + gems/aws-sdk-codestarconnections/VERSION | 2 +- .../lib/aws-sdk-codestarconnections.rb | 2 +- .../lib/aws-sdk-codestarconnections/client.rb | 736 +++++- .../aws-sdk-codestarconnections/client_api.rb | 564 +++++ .../aws-sdk-codestarconnections/endpoints.rb | 210 ++ .../lib/aws-sdk-codestarconnections/errors.rb | 192 ++ .../plugins/endpoints.rb | 30 + .../lib/aws-sdk-codestarconnections/types.rb | 1259 +++++++++- gems/aws-sdk-computeoptimizer/CHANGELOG.md | 5 + gems/aws-sdk-computeoptimizer/VERSION | 2 +- .../lib/aws-sdk-computeoptimizer.rb | 2 +- .../lib/aws-sdk-computeoptimizer/client.rb | 161 +- .../aws-sdk-computeoptimizer/client_api.rb | 147 ++ .../endpoint_provider.rb | 2 +- .../lib/aws-sdk-computeoptimizer/types.rb | 753 +++++- gems/aws-sdk-configservice/CHANGELOG.md | 5 + gems/aws-sdk-configservice/VERSION | 2 +- .../lib/aws-sdk-configservice.rb | 2 +- .../lib/aws-sdk-configservice/client.rb | 26 +- .../lib/aws-sdk-configservice/client_api.rb | 26 + .../lib/aws-sdk-configservice/types.rb | 375 ++- gems/aws-sdk-controltower/CHANGELOG.md | 5 + gems/aws-sdk-controltower/VERSION | 2 +- .../lib/aws-sdk-controltower.rb | 4 +- .../lib/aws-sdk-controltower/client.rb | 312 ++- .../lib/aws-sdk-controltower/client_api.rb | 198 ++ .../lib/aws-sdk-controltower/endpoints.rb | 98 + .../aws-sdk-controltower/plugins/endpoints.rb | 14 + .../lib/aws-sdk-controltower/types.rb | 407 +++- .../spec/endpoint_provider_spec.rb | 13 - gems/aws-sdk-costoptimizationhub/CHANGELOG.md | 8 + gems/aws-sdk-costoptimizationhub/LICENSE.txt | 202 ++ gems/aws-sdk-costoptimizationhub/VERSION | 1 + .../aws-sdk-costoptimizationhub.gemspec | 32 + .../features/env.rb | 18 + .../features/step_definitions.rb | 8 + .../lib/aws-sdk-costoptimizationhub.rb | 57 + .../lib/aws-sdk-costoptimizationhub/client.rb | 1222 ++++++++++ .../aws-sdk-costoptimizationhub/client_api.rb | 685 ++++++ .../customizations.rb | 0 .../endpoint_parameters.rb | 66 + .../endpoint_provider.rb | 54 + .../aws-sdk-costoptimizationhub/endpoints.rb | 114 + .../lib/aws-sdk-costoptimizationhub/errors.rb | 133 ++ .../plugins/endpoints.rb | 82 + .../aws-sdk-costoptimizationhub/resource.rb | 26 + .../lib/aws-sdk-costoptimizationhub/types.rb | 2019 +++++++++++++++++ .../spec/endpoint_provider_spec.rb | 361 +++ .../spec/spec_helper.rb | 18 + gems/aws-sdk-detective/CHANGELOG.md | 5 + gems/aws-sdk-detective/VERSION | 2 +- .../lib/aws-sdk-detective.rb | 2 +- .../lib/aws-sdk-detective/client.rb | 291 ++- .../lib/aws-sdk-detective/client_api.rb | 258 +++ .../aws-sdk-detective/endpoint_provider.rb | 2 +- .../lib/aws-sdk-detective/endpoints.rb | 70 + .../aws-sdk-detective/plugins/endpoints.rb | 10 + .../lib/aws-sdk-detective/types.rb | 708 ++++++ gems/aws-sdk-ecs/CHANGELOG.md | 5 + gems/aws-sdk-ecs/VERSION | 2 +- gems/aws-sdk-ecs/lib/aws-sdk-ecs.rb | 2 +- gems/aws-sdk-ecs/lib/aws-sdk-ecs/client.rb | 46 +- .../aws-sdk-ecs/lib/aws-sdk-ecs/client_api.rb | 2 + gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb | 29 +- gems/aws-sdk-efs/CHANGELOG.md | 5 + gems/aws-sdk-efs/VERSION | 2 +- gems/aws-sdk-efs/lib/aws-sdk-efs.rb | 2 +- gems/aws-sdk-efs/lib/aws-sdk-efs/client.rb | 216 +- .../aws-sdk-efs/lib/aws-sdk-efs/client_api.rb | 15 + .../lib/aws-sdk-efs/endpoint_provider.rb | 2 +- gems/aws-sdk-efs/lib/aws-sdk-efs/types.rb | 191 +- gems/aws-sdk-eks/CHANGELOG.md | 5 + gems/aws-sdk-eks/VERSION | 2 +- gems/aws-sdk-eks/lib/aws-sdk-eks.rb | 2 +- gems/aws-sdk-eks/lib/aws-sdk-eks/client.rb | 401 +++- .../aws-sdk-eks/lib/aws-sdk-eks/client_api.rb | 153 ++ gems/aws-sdk-eks/lib/aws-sdk-eks/endpoints.rb | 70 + .../lib/aws-sdk-eks/plugins/endpoints.rb | 10 + gems/aws-sdk-eks/lib/aws-sdk-eks/types.rb | 507 ++++- gems/aws-sdk-eksauth/CHANGELOG.md | 8 + gems/aws-sdk-eksauth/LICENSE.txt | 202 ++ gems/aws-sdk-eksauth/VERSION | 1 + gems/aws-sdk-eksauth/aws-sdk-eksauth.gemspec | 32 + gems/aws-sdk-eksauth/features/env.rb | 18 + gems/aws-sdk-eksauth/features/smoke.feature | 11 + .../features/smoke_step_definitions.rb | 35 + .../features/step_definitions.rb | 8 + gems/aws-sdk-eksauth/lib/aws-sdk-eksauth.rb | 58 + .../lib/aws-sdk-eksauth/client.rb | 478 ++++ .../lib/aws-sdk-eksauth/client_api.rb | 129 ++ .../lib/aws-sdk-eksauth/customizations.rb | 0 .../aws-sdk-eksauth/endpoint_parameters.rb | 54 + .../lib/aws-sdk-eksauth/endpoint_provider.rb | 47 + .../lib/aws-sdk-eksauth/endpoints.rb | 29 + .../lib/aws-sdk-eksauth/errors.rb | 182 ++ .../lib/aws-sdk-eksauth/plugins/endpoints.rb | 70 + .../lib/aws-sdk-eksauth/resource.rb | 26 + .../lib/aws-sdk-eksauth/types.rb | 310 +++ .../lib/aws-sdk-eksauth/waiters.rb | 15 + .../spec/endpoint_provider_spec.rb | 156 ++ gems/aws-sdk-eksauth/spec/spec_helper.rb | 18 + .../CHANGELOG.md | 5 + gems/aws-sdk-elasticloadbalancingv2/VERSION | 2 +- .../lib/aws-sdk-elasticloadbalancingv2.rb | 2 +- .../aws-sdk-elasticloadbalancingv2/client.rb | 441 +++- .../client_api.rb | 355 +++ .../endpoint_provider.rb | 4 +- .../endpoints.rb | 140 ++ .../aws-sdk-elasticloadbalancingv2/errors.rb | 121 + .../plugins/endpoints.rb | 20 + .../aws-sdk-elasticloadbalancingv2/types.rb | 652 +++++- gems/aws-sdk-freetier/CHANGELOG.md | 8 + gems/aws-sdk-freetier/LICENSE.txt | 202 ++ gems/aws-sdk-freetier/VERSION | 1 + .../aws-sdk-freetier/aws-sdk-freetier.gemspec | 32 + gems/aws-sdk-freetier/features/env.rb | 18 + .../features/step_definitions.rb | 8 + gems/aws-sdk-freetier/lib/aws-sdk-freetier.rb | 57 + .../lib/aws-sdk-freetier/client.rb | 509 +++++ .../lib/aws-sdk-freetier/client_api.rb | 123 + .../lib/aws-sdk-freetier/customizations.rb | 0 .../aws-sdk-freetier/endpoint_parameters.rb | 54 + .../lib/aws-sdk-freetier/endpoint_provider.rb | 62 + .../lib/aws-sdk-freetier/endpoints.rb | 29 + .../lib/aws-sdk-freetier/errors.rb | 86 + .../lib/aws-sdk-freetier/plugins/endpoints.rb | 70 + .../lib/aws-sdk-freetier/resource.rb | 26 + .../lib/aws-sdk-freetier/types.rb | 268 +++ .../spec/endpoint_provider_spec.rb | 184 ++ gems/aws-sdk-freetier/spec/spec_helper.rb | 18 + gems/aws-sdk-fsx/CHANGELOG.md | 5 + gems/aws-sdk-fsx/VERSION | 2 +- gems/aws-sdk-fsx/lib/aws-sdk-fsx.rb | 2 +- gems/aws-sdk-fsx/lib/aws-sdk-fsx/client.rb | 769 ++++++- .../aws-sdk-fsx/lib/aws-sdk-fsx/client_api.rb | 111 +- gems/aws-sdk-fsx/lib/aws-sdk-fsx/endpoints.rb | 42 + .../lib/aws-sdk-fsx/plugins/endpoints.rb | 6 + gems/aws-sdk-fsx/lib/aws-sdk-fsx/types.rb | 579 ++++- gems/aws-sdk-guardduty/CHANGELOG.md | 5 + gems/aws-sdk-guardduty/VERSION | 2 +- .../lib/aws-sdk-guardduty.rb | 2 +- .../lib/aws-sdk-guardduty/client.rb | 57 +- .../lib/aws-sdk-guardduty/client_api.rb | 33 + .../lib/aws-sdk-guardduty/types.rb | 167 +- gems/aws-sdk-iotfleetwise/CHANGELOG.md | 5 + gems/aws-sdk-iotfleetwise/VERSION | 2 +- .../lib/aws-sdk-iotfleetwise.rb | 2 +- .../lib/aws-sdk-iotfleetwise/client.rb | 276 ++- .../lib/aws-sdk-iotfleetwise/client_api.rb | 102 +- .../aws-sdk-iotfleetwise/endpoint_provider.rb | 2 +- .../lib/aws-sdk-iotfleetwise/types.rb | 344 ++- gems/aws-sdk-lakeformation/CHANGELOG.md | 5 + gems/aws-sdk-lakeformation/VERSION | 2 +- .../lib/aws-sdk-lakeformation.rb | 2 +- .../lib/aws-sdk-lakeformation/client.rb | 152 +- .../lib/aws-sdk-lakeformation/client_api.rb | 105 + .../endpoint_provider.rb | 2 +- .../lib/aws-sdk-lakeformation/endpoints.rb | 56 + .../plugins/endpoints.rb | 8 + .../lib/aws-sdk-lakeformation/types.rb | 168 +- gems/aws-sdk-lexmodelsv2/CHANGELOG.md | 5 + gems/aws-sdk-lexmodelsv2/VERSION | 2 +- .../lib/aws-sdk-lexmodelsv2.rb | 2 +- .../lib/aws-sdk-lexmodelsv2/client.rb | 345 ++- .../lib/aws-sdk-lexmodelsv2/client_api.rb | 194 ++ .../lib/aws-sdk-lexmodelsv2/endpoints.rb | 56 + .../aws-sdk-lexmodelsv2/plugins/endpoints.rb | 8 + .../lib/aws-sdk-lexmodelsv2/types.rb | 568 ++++- gems/aws-sdk-lexruntimev2/CHANGELOG.md | 5 + gems/aws-sdk-lexruntimev2/VERSION | 2 +- .../lib/aws-sdk-lexruntimev2.rb | 2 +- .../lib/aws-sdk-lexruntimev2/async_client.rb | 3 +- .../lib/aws-sdk-lexruntimev2/client.rb | 4 +- .../lib/aws-sdk-lexruntimev2/client_api.rb | 2 + .../aws-sdk-lexruntimev2/endpoint_provider.rb | 2 +- .../lib/aws-sdk-lexruntimev2/types.rb | 92 +- gems/aws-sdk-managedblockchain/CHANGELOG.md | 5 + gems/aws-sdk-managedblockchain/VERSION | 2 +- .../lib/aws-sdk-managedblockchain.rb | 2 +- .../lib/aws-sdk-managedblockchain/client.rb | 40 +- .../aws-sdk-managedblockchain/client_api.rb | 6 + .../endpoint_provider.rb | 2 +- .../lib/aws-sdk-managedblockchain/types.rb | 69 +- gems/aws-sdk-personalize/CHANGELOG.md | 5 + gems/aws-sdk-personalize/VERSION | 2 +- .../lib/aws-sdk-personalize.rb | 2 +- .../lib/aws-sdk-personalize/client.rb | 158 +- .../lib/aws-sdk-personalize/client_api.rb | 17 + .../aws-sdk-personalize/endpoint_provider.rb | 2 +- .../lib/aws-sdk-personalize/types.rb | 173 +- gems/aws-sdk-personalizeevents/CHANGELOG.md | 5 + gems/aws-sdk-personalizeevents/VERSION | 2 +- .../lib/aws-sdk-personalizeevents.rb | 4 +- .../lib/aws-sdk-personalizeevents/client.rb | 110 +- .../aws-sdk-personalizeevents/client_api.rb | 61 + .../endpoint_provider.rb | 2 +- .../aws-sdk-personalizeevents/endpoints.rb | 28 + .../plugins/endpoints.rb | 4 + .../lib/aws-sdk-personalizeevents/types.rb | 224 +- gems/aws-sdk-personalizeruntime/CHANGELOG.md | 5 + gems/aws-sdk-personalizeruntime/VERSION | 2 +- .../lib/aws-sdk-personalizeruntime.rb | 4 +- .../lib/aws-sdk-personalizeruntime/client.rb | 139 +- .../aws-sdk-personalizeruntime/client_api.rb | 49 + .../endpoint_provider.rb | 2 +- .../aws-sdk-personalizeruntime/endpoints.rb | 14 + .../plugins/endpoints.rb | 2 + .../lib/aws-sdk-personalizeruntime/types.rb | 164 +- gems/aws-sdk-prometheusservice/CHANGELOG.md | 5 + gems/aws-sdk-prometheusservice/VERSION | 2 +- .../lib/aws-sdk-prometheusservice.rb | 2 +- .../lib/aws-sdk-prometheusservice/client.rb | 250 +- .../aws-sdk-prometheusservice/client_api.rb | 216 ++ .../endpoint_provider.rb | 2 +- .../aws-sdk-prometheusservice/endpoints.rb | 70 + .../plugins/endpoints.rb | 10 + .../lib/aws-sdk-prometheusservice/types.rb | 474 ++++ .../lib/aws-sdk-prometheusservice/waiters.rb | 91 + gems/aws-sdk-quicksight/CHANGELOG.md | 5 + gems/aws-sdk-quicksight/VERSION | 2 +- .../lib/aws-sdk-quicksight.rb | 2 +- .../lib/aws-sdk-quicksight/client.rb | 159 +- .../lib/aws-sdk-quicksight/client_api.rb | 91 + .../lib/aws-sdk-quicksight/endpoints.rb | 42 + .../aws-sdk-quicksight/plugins/endpoints.rb | 6 + .../lib/aws-sdk-quicksight/types.rb | 177 +- gems/aws-sdk-redshift/CHANGELOG.md | 5 + gems/aws-sdk-redshift/VERSION | 2 +- gems/aws-sdk-redshift/lib/aws-sdk-redshift.rb | 2 +- .../lib/aws-sdk-redshift/client.rb | 26 +- .../lib/aws-sdk-redshift/client_api.rb | 4 + .../lib/aws-sdk-redshift/types.rb | 28 +- gems/aws-sdk-repostspace/CHANGELOG.md | 8 + gems/aws-sdk-repostspace/LICENSE.txt | 202 ++ gems/aws-sdk-repostspace/VERSION | 1 + .../aws-sdk-repostspace.gemspec | 32 + gems/aws-sdk-repostspace/features/env.rb | 18 + .../features/step_definitions.rb | 8 + .../lib/aws-sdk-repostspace.rb | 57 + .../lib/aws-sdk-repostspace/client.rb | 848 +++++++ .../lib/aws-sdk-repostspace/client_api.rb | 405 ++++ .../lib/aws-sdk-repostspace/customizations.rb | 0 .../endpoint_parameters.rb | 66 + .../aws-sdk-repostspace/endpoint_provider.rb | 54 + .../lib/aws-sdk-repostspace/endpoints.rb | 170 ++ .../lib/aws-sdk-repostspace/errors.rb | 232 ++ .../aws-sdk-repostspace/plugins/endpoints.rb | 90 + .../lib/aws-sdk-repostspace/resource.rb | 26 + .../lib/aws-sdk-repostspace/types.rb | 678 ++++++ .../spec/endpoint_provider_spec.rb | 361 +++ gems/aws-sdk-repostspace/spec/spec_helper.rb | 18 + gems/aws-sdk-resources/CHANGELOG.md | 15 + gems/aws-sdk-resources/VERSION | 2 +- .../aws-sdk-resources.gemspec | 6 + .../lib/aws-sdk-resources.rb | 6 + gems/aws-sdk-s3/CHANGELOG.md | 5 + gems/aws-sdk-s3/VERSION | 2 +- gems/aws-sdk-s3/lib/aws-sdk-s3.rb | 2 +- gems/aws-sdk-s3/lib/aws-sdk-s3/client.rb | 270 +-- gems/aws-sdk-s3/lib/aws-sdk-s3/client_api.rb | 30 +- .../lib/aws-sdk-s3/endpoint_parameters.rb | 16 + .../lib/aws-sdk-s3/endpoint_provider.rb | 2 + gems/aws-sdk-s3/lib/aws-sdk-s3/endpoints.rb | 194 ++ .../aws-sdk-s3/spec/endpoint_provider_spec.rb | 31 + gems/aws-sdk-s3control/CHANGELOG.md | 5 + gems/aws-sdk-s3control/VERSION | 2 +- .../lib/aws-sdk-s3control.rb | 4 +- .../lib/aws-sdk-s3control/client.rb | 1417 +++++++++++- .../lib/aws-sdk-s3control/client_api.rb | 559 +++++ .../lib/aws-sdk-s3control/endpoints.rb | 400 ++++ .../aws-sdk-s3control/plugins/endpoints.rb | 40 + .../lib/aws-sdk-s3control/types.rb | 1439 +++++++++++- gems/aws-sdk-secretsmanager/CHANGELOG.md | 5 + gems/aws-sdk-secretsmanager/VERSION | 2 +- .../lib/aws-sdk-secretsmanager.rb | 4 +- .../lib/aws-sdk-secretsmanager/client.rb | 106 +- .../lib/aws-sdk-secretsmanager/client_api.rb | 60 + .../lib/aws-sdk-secretsmanager/endpoints.rb | 14 + .../plugins/endpoints.rb | 2 + .../lib/aws-sdk-secretsmanager/types.rb | 149 +- gems/aws-sdk-securityhub/CHANGELOG.md | 5 + gems/aws-sdk-securityhub/VERSION | 2 +- .../lib/aws-sdk-securityhub.rb | 2 +- .../lib/aws-sdk-securityhub/client.rb | 464 +++- .../lib/aws-sdk-securityhub/client_api.rb | 183 ++ .../aws-sdk-securityhub/endpoint_provider.rb | 2 +- .../lib/aws-sdk-securityhub/endpoints.rb | 28 + .../lib/aws-sdk-securityhub/errors.rb | 21 + .../aws-sdk-securityhub/plugins/endpoints.rb | 4 + .../lib/aws-sdk-securityhub/types.rb | 598 ++++- gems/aws-sdk-states/CHANGELOG.md | 5 + gems/aws-sdk-states/VERSION | 2 +- gems/aws-sdk-states/lib/aws-sdk-states.rb | 2 +- .../lib/aws-sdk-states/client.rb | 175 +- .../lib/aws-sdk-states/client_api.rb | 71 + .../lib/aws-sdk-states/endpoints.rb | 14 + .../lib/aws-sdk-states/plugins/endpoints.rb | 2 + .../lib/aws-sdk-states/types.rb | 285 ++- gems/aws-sdk-transcribeservice/CHANGELOG.md | 5 + gems/aws-sdk-transcribeservice/VERSION | 2 +- .../lib/aws-sdk-transcribeservice.rb | 2 +- .../lib/aws-sdk-transcribeservice/client.rb | 81 +- .../aws-sdk-transcribeservice/client_api.rb | 5 + .../endpoint_provider.rb | 6 +- .../lib/aws-sdk-transcribeservice/types.rb | 35 +- gems/aws-sdk-workspaces/CHANGELOG.md | 5 + gems/aws-sdk-workspaces/VERSION | 2 +- .../lib/aws-sdk-workspaces.rb | 2 +- .../lib/aws-sdk-workspaces/client.rb | 24 +- .../lib/aws-sdk-workspaces/client_api.rb | 21 +- .../lib/aws-sdk-workspaces/types.rb | 74 +- .../aws-sdk-workspacesthinclient/CHANGELOG.md | 8 + gems/aws-sdk-workspacesthinclient/LICENSE.txt | 202 ++ gems/aws-sdk-workspacesthinclient/VERSION | 1 + .../aws-sdk-workspacesthinclient.gemspec | 32 + .../features/env.rb | 18 + .../features/step_definitions.rb | 8 + .../lib/aws-sdk-workspacesthinclient.rb | 57 + .../aws-sdk-workspacesthinclient/client.rb | 1268 +++++++++++ .../client_api.rb | 699 ++++++ .../customizations.rb | 0 .../endpoint_parameters.rb | 66 + .../endpoint_provider.rb | 54 + .../aws-sdk-workspacesthinclient/endpoints.rb | 240 ++ .../aws-sdk-workspacesthinclient/errors.rb | 241 ++ .../plugins/endpoints.rb | 100 + .../aws-sdk-workspacesthinclient/resource.rb | 26 + .../lib/aws-sdk-workspacesthinclient/types.rb | 1440 ++++++++++++ .../spec/endpoint_provider_spec.rb | 361 +++ .../spec/spec_helper.rb | 18 + services.json | 18 + 517 files changed, 70589 insertions(+), 2185 deletions(-) create mode 100644 apis/bcm-data-exports/2023-11-26/api-2.json create mode 100644 apis/bcm-data-exports/2023-11-26/docs-2.json create mode 100644 apis/bcm-data-exports/2023-11-26/endpoint-rule-set-1.json create mode 100644 apis/bcm-data-exports/2023-11-26/endpoint-tests-1.json create mode 100644 apis/bcm-data-exports/2023-11-26/examples-1.json create mode 100644 apis/bcm-data-exports/2023-11-26/paginators-1.json create mode 100644 apis/cost-optimization-hub/2022-07-26/api-2.json create mode 100644 apis/cost-optimization-hub/2022-07-26/docs-2.json create mode 100644 apis/cost-optimization-hub/2022-07-26/endpoint-rule-set-1.json create mode 100644 apis/cost-optimization-hub/2022-07-26/endpoint-tests-1.json create mode 100644 apis/cost-optimization-hub/2022-07-26/examples-1.json create mode 100644 apis/cost-optimization-hub/2022-07-26/paginators-1.json create mode 100644 apis/eks-auth/2023-11-26/api-2.json create mode 100644 apis/eks-auth/2023-11-26/docs-2.json create mode 100644 apis/eks-auth/2023-11-26/endpoint-rule-set-1.json create mode 100644 apis/eks-auth/2023-11-26/endpoint-tests-1.json create mode 100644 apis/eks-auth/2023-11-26/examples-1.json create mode 100644 apis/eks-auth/2023-11-26/paginators-1.json create mode 100644 apis/eks-auth/2023-11-26/smoke.json create mode 100644 apis/eks-auth/2023-11-26/waiters-2.json create mode 100644 apis/freetier/2023-09-07/api-2.json create mode 100644 apis/freetier/2023-09-07/docs-2.json create mode 100644 apis/freetier/2023-09-07/endpoint-rule-set-1.json create mode 100644 apis/freetier/2023-09-07/endpoint-tests-1.json create mode 100644 apis/freetier/2023-09-07/examples-1.json create mode 100644 apis/freetier/2023-09-07/paginators-1.json create mode 100644 apis/repostspace/2022-05-13/api-2.json create mode 100644 apis/repostspace/2022-05-13/docs-2.json create mode 100644 apis/repostspace/2022-05-13/endpoint-rule-set-1.json create mode 100644 apis/repostspace/2022-05-13/endpoint-tests-1.json create mode 100644 apis/repostspace/2022-05-13/examples-1.json create mode 100644 apis/repostspace/2022-05-13/paginators-1.json create mode 100644 apis/workspaces-thin-client/2023-08-22/api-2.json create mode 100644 apis/workspaces-thin-client/2023-08-22/docs-2.json create mode 100644 apis/workspaces-thin-client/2023-08-22/endpoint-rule-set-1.json create mode 100644 apis/workspaces-thin-client/2023-08-22/endpoint-tests-1.json create mode 100644 apis/workspaces-thin-client/2023-08-22/examples-1.json create mode 100644 apis/workspaces-thin-client/2023-08-22/paginators-1.json create mode 100644 gems/aws-sdk-bcmdataexports/CHANGELOG.md create mode 100644 gems/aws-sdk-bcmdataexports/LICENSE.txt create mode 100644 gems/aws-sdk-bcmdataexports/VERSION create mode 100644 gems/aws-sdk-bcmdataexports/aws-sdk-bcmdataexports.gemspec create mode 100644 gems/aws-sdk-bcmdataexports/features/env.rb create mode 100644 gems/aws-sdk-bcmdataexports/features/step_definitions.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client_api.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/customizations.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_parameters.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_provider.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoints.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/errors.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/plugins/endpoints.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/resource.rb create mode 100644 gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/types.rb create mode 100644 gems/aws-sdk-bcmdataexports/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-bcmdataexports/spec/spec_helper.rb create mode 100644 gems/aws-sdk-costoptimizationhub/CHANGELOG.md create mode 100644 gems/aws-sdk-costoptimizationhub/LICENSE.txt create mode 100644 gems/aws-sdk-costoptimizationhub/VERSION create mode 100644 gems/aws-sdk-costoptimizationhub/aws-sdk-costoptimizationhub.gemspec create mode 100644 gems/aws-sdk-costoptimizationhub/features/env.rb create mode 100644 gems/aws-sdk-costoptimizationhub/features/step_definitions.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client_api.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/customizations.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_parameters.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_provider.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoints.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/errors.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/plugins/endpoints.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/resource.rb create mode 100644 gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/types.rb create mode 100644 gems/aws-sdk-costoptimizationhub/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-costoptimizationhub/spec/spec_helper.rb create mode 100644 gems/aws-sdk-eksauth/CHANGELOG.md create mode 100644 gems/aws-sdk-eksauth/LICENSE.txt create mode 100644 gems/aws-sdk-eksauth/VERSION create mode 100644 gems/aws-sdk-eksauth/aws-sdk-eksauth.gemspec create mode 100644 gems/aws-sdk-eksauth/features/env.rb create mode 100644 gems/aws-sdk-eksauth/features/smoke.feature create mode 100644 gems/aws-sdk-eksauth/features/smoke_step_definitions.rb create mode 100644 gems/aws-sdk-eksauth/features/step_definitions.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client_api.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/customizations.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_parameters.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_provider.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoints.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/errors.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/plugins/endpoints.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/resource.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/types.rb create mode 100644 gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/waiters.rb create mode 100644 gems/aws-sdk-eksauth/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-eksauth/spec/spec_helper.rb create mode 100644 gems/aws-sdk-freetier/CHANGELOG.md create mode 100644 gems/aws-sdk-freetier/LICENSE.txt create mode 100644 gems/aws-sdk-freetier/VERSION create mode 100644 gems/aws-sdk-freetier/aws-sdk-freetier.gemspec create mode 100644 gems/aws-sdk-freetier/features/env.rb create mode 100644 gems/aws-sdk-freetier/features/step_definitions.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/client.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/client_api.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/customizations.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_parameters.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_provider.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoints.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/errors.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/plugins/endpoints.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/resource.rb create mode 100644 gems/aws-sdk-freetier/lib/aws-sdk-freetier/types.rb create mode 100644 gems/aws-sdk-freetier/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-freetier/spec/spec_helper.rb create mode 100644 gems/aws-sdk-repostspace/CHANGELOG.md create mode 100644 gems/aws-sdk-repostspace/LICENSE.txt create mode 100644 gems/aws-sdk-repostspace/VERSION create mode 100644 gems/aws-sdk-repostspace/aws-sdk-repostspace.gemspec create mode 100644 gems/aws-sdk-repostspace/features/env.rb create mode 100644 gems/aws-sdk-repostspace/features/step_definitions.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client_api.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/customizations.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_parameters.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_provider.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoints.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/errors.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/plugins/endpoints.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/resource.rb create mode 100644 gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/types.rb create mode 100644 gems/aws-sdk-repostspace/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-repostspace/spec/spec_helper.rb create mode 100644 gems/aws-sdk-workspacesthinclient/CHANGELOG.md create mode 100644 gems/aws-sdk-workspacesthinclient/LICENSE.txt create mode 100644 gems/aws-sdk-workspacesthinclient/VERSION create mode 100644 gems/aws-sdk-workspacesthinclient/aws-sdk-workspacesthinclient.gemspec create mode 100644 gems/aws-sdk-workspacesthinclient/features/env.rb create mode 100644 gems/aws-sdk-workspacesthinclient/features/step_definitions.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client_api.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/customizations.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_parameters.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_provider.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoints.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/errors.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/plugins/endpoints.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/resource.rb create mode 100644 gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/types.rb create mode 100644 gems/aws-sdk-workspacesthinclient/spec/endpoint_provider_spec.rb create mode 100644 gems/aws-sdk-workspacesthinclient/spec/spec_helper.rb diff --git a/README.md b/README.md index da5ec3278ce..a4414309dc4 100644 --- a/README.md +++ b/README.md @@ -339,6 +339,7 @@ RubyGems.org page under "LINKS" section. | AWS Backup Gateway | Aws::BackupGateway | aws-sdk-backupgateway | 2021-01-01 | | AWS Backup Storage | Aws::BackupStorage | aws-sdk-backupstorage | 2018-04-10 | | AWS Batch | Aws::Batch | aws-sdk-batch | 2016-08-10 | +| AWS Billing and Cost Management Data Exports | Aws::BCMDataExports | aws-sdk-bcmdataexports | 2023-11-26 | | AWS Budgets | Aws::Budgets | aws-sdk-budgets | 2016-10-20 | | AWS Certificate Manager | Aws::ACM | aws-sdk-acm | 2015-12-08 | | AWS Certificate Manager Private Certificate Authority | Aws::ACMPCA | aws-sdk-acmpca | 2017-08-22 | @@ -381,6 +382,7 @@ RubyGems.org page under "LINKS" section. | AWS Elemental MediaStore Data Plane | Aws::MediaStoreData | aws-sdk-mediastoredata | 2017-09-01 | | AWS EntityResolution | Aws::EntityResolution | aws-sdk-entityresolution | 2018-05-10 | | AWS Fault Injection Simulator | Aws::FIS | aws-sdk-fis | 2020-12-01 | +| AWS Free Tier | Aws::FreeTier | aws-sdk-freetier | 2023-09-07 | | AWS Global Accelerator | Aws::GlobalAccelerator | aws-sdk-globalaccelerator | 2018-08-08 | | AWS Glue | Aws::Glue | aws-sdk-glue | 2017-03-31 | | AWS Glue DataBrew | Aws::GlueDataBrew | aws-sdk-gluedatabrew | 2017-07-25 | @@ -476,6 +478,7 @@ RubyGems.org page under "LINKS" section. | AWS WAFV2 | Aws::WAFV2 | aws-sdk-wafv2 | 2019-07-29 | | AWS Well-Architected Tool | Aws::WellArchitected | aws-sdk-wellarchitected | 2020-03-31 | | AWS X-Ray | Aws::XRay | aws-sdk-xray | 2016-04-12 | +| AWS re:Post Private | Aws::Repostspace | aws-sdk-repostspace | 2022-05-13 | | AWSBillingConductor | Aws::BillingConductor | aws-sdk-billingconductor | 2021-07-30 | | AWSKendraFrontendService | Aws::Kendra | aws-sdk-kendra | 2019-02-03 | | AWSMainframeModernization | Aws::MainframeModernization | aws-sdk-mainframemodernization | 2021-04-28 | @@ -535,6 +538,7 @@ RubyGems.org page under "LINKS" section. | Amazon DynamoDB Streams | Aws::DynamoDBStreams | aws-sdk-dynamodbstreams | 2012-08-10 | | Amazon EC2 Container Registry | Aws::ECR | aws-sdk-ecr | 2015-09-21 | | Amazon EC2 Container Service | Aws::ECS | aws-sdk-ecs | 2014-11-13 | +| Amazon EKS Auth | Aws::EKSAuth | aws-sdk-eksauth | 2023-11-26 | | Amazon EMR | Aws::EMR | aws-sdk-emr | 2009-03-31 | | Amazon EMR Containers | Aws::EMRContainers | aws-sdk-emrcontainers | 2020-10-01 | | Amazon ElastiCache | Aws::ElastiCache | aws-sdk-elasticache | 2015-02-02 | @@ -644,6 +648,7 @@ RubyGems.org page under "LINKS" section. | Amazon WorkMail | Aws::WorkMail | aws-sdk-workmail | 2017-10-01 | | Amazon WorkMail Message Flow | Aws::WorkMailMessageFlow | aws-sdk-workmailmessageflow | 2019-05-01 | | Amazon WorkSpaces | Aws::WorkSpaces | aws-sdk-workspaces | 2015-04-08 | +| Amazon WorkSpaces Thin Client | Aws::WorkSpacesThinClient | aws-sdk-workspacesthinclient | 2023-08-22 | | Amazon WorkSpaces Web | Aws::WorkSpacesWeb | aws-sdk-workspacesweb | 2020-07-08 | | AmazonApiGatewayManagementApi | Aws::ApiGatewayManagementApi | aws-sdk-apigatewaymanagementapi | 2018-11-29 | | AmazonApiGatewayV2 | Aws::ApiGatewayV2 | aws-sdk-apigatewayv2 | 2018-11-29 | @@ -660,6 +665,7 @@ RubyGems.org page under "LINKS" section. | CloudWatch Observability Access Manager | Aws::OAM | aws-sdk-oam | 2022-06-10 | | CloudWatch RUM | Aws::CloudWatchRUM | aws-sdk-cloudwatchrum | 2018-05-10 | | CodeArtifact | Aws::CodeArtifact | aws-sdk-codeartifact | 2018-09-22 | +| Cost Optimization Hub | Aws::CostOptimizationHub | aws-sdk-costoptimizationhub | 2022-07-26 | | EC2 Image Builder | Aws::Imagebuilder | aws-sdk-imagebuilder | 2019-12-02 | | EMR Serverless | Aws::EMRServerless | aws-sdk-emrserverless | 2021-07-13 | | Elastic Disaster Recovery Service | Aws::Drs | aws-sdk-drs | 2020-02-26 | diff --git a/apis/accessanalyzer/2019-11-01/api-2.json b/apis/accessanalyzer/2019-11-01/api-2.json index d93cff67b32..4718258a0f7 100644 --- a/apis/accessanalyzer/2019-11-01/api-2.json +++ b/apis/accessanalyzer/2019-11-01/api-2.json @@ -46,6 +46,42 @@ ], "idempotent":true }, + "CheckAccessNotGranted":{ + "name":"CheckAccessNotGranted", + "http":{ + "method":"POST", + "requestUri":"/policy/check-access-not-granted", + "responseCode":200 + }, + "input":{"shape":"CheckAccessNotGrantedRequest"}, + "output":{"shape":"CheckAccessNotGrantedResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidParameterException"}, + {"shape":"UnprocessableEntityException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, + "CheckNoNewAccess":{ + "name":"CheckNoNewAccess", + "http":{ + "method":"POST", + "requestUri":"/policy/check-no-new-access", + "responseCode":200 + }, + "input":{"shape":"CheckNoNewAccessRequest"}, + "output":{"shape":"CheckNoNewAccessResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidParameterException"}, + {"shape":"UnprocessableEntityException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "CreateAccessPreview":{ "name":"CreateAccessPreview", "http":{ @@ -223,6 +259,23 @@ {"shape":"AccessDeniedException"} ] }, + "GetFindingV2":{ + "name":"GetFindingV2", + "http":{ + "method":"GET", + "requestUri":"/findingv2/{id}", + "responseCode":200 + }, + "input":{"shape":"GetFindingV2Request"}, + "output":{"shape":"GetFindingV2Response"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "GetGeneratedPolicy":{ "name":"GetGeneratedPolicy", "http":{ @@ -340,6 +393,23 @@ {"shape":"AccessDeniedException"} ] }, + "ListFindingsV2":{ + "name":"ListFindingsV2", + "http":{ + "method":"POST", + "requestUri":"/findingv2", + "responseCode":200 + }, + "input":{"shape":"ListFindingsV2Request"}, + "output":{"shape":"ListFindingsV2Response"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "ListPolicyGenerations":{ "name":"ListPolicyGenerations", "http":{ @@ -496,6 +566,30 @@ } }, "shapes":{ + "Access":{ + "type":"structure", + "required":["actions"], + "members":{ + "actions":{"shape":"AccessActionsList"} + } + }, + "AccessActionsList":{ + "type":"list", + "member":{"shape":"Action"}, + "max":100, + "min":0 + }, + "AccessCheckPolicyDocument":{ + "type":"string", + "sensitive":true + }, + "AccessCheckPolicyType":{ + "type":"string", + "enum":[ + "IDENTITY_POLICY", + "RESOURCE_POLICY" + ] + }, "AccessDeniedException":{ "type":"structure", "required":["message"], @@ -630,6 +724,7 @@ ] }, "AclUri":{"type":"string"}, + "Action":{"type":"string"}, "ActionList":{ "type":"list", "member":{"shape":"String"} @@ -680,6 +775,13 @@ "type":"string", "pattern":"[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:analyzer/.{1,255}" }, + "AnalyzerConfiguration":{ + "type":"structure", + "members":{ + "unusedAccess":{"shape":"UnusedAccessConfiguration"} + }, + "union":true + }, "AnalyzerStatus":{ "type":"string", "enum":[ @@ -707,7 +809,8 @@ "lastResourceAnalyzedAt":{"shape":"Timestamp"}, "tags":{"shape":"TagsMap"}, "status":{"shape":"AnalyzerStatus"}, - "statusReason":{"shape":"StatusReason"} + "statusReason":{"shape":"StatusReason"}, + "configuration":{"shape":"AnalyzerConfiguration"} } }, "AnalyzersList":{ @@ -768,6 +871,68 @@ "members":{ } }, + "CheckAccessNotGrantedRequest":{ + "type":"structure", + "required":[ + "policyDocument", + "access", + "policyType" + ], + "members":{ + "policyDocument":{"shape":"AccessCheckPolicyDocument"}, + "access":{"shape":"CheckAccessNotGrantedRequestAccessList"}, + "policyType":{"shape":"AccessCheckPolicyType"} + } + }, + "CheckAccessNotGrantedRequestAccessList":{ + "type":"list", + "member":{"shape":"Access"}, + "max":1, + "min":0 + }, + "CheckAccessNotGrantedResponse":{ + "type":"structure", + "members":{ + "result":{"shape":"CheckAccessNotGrantedResult"}, + "message":{"shape":"String"}, + "reasons":{"shape":"ReasonSummaryList"} + } + }, + "CheckAccessNotGrantedResult":{ + "type":"string", + "enum":[ + "PASS", + "FAIL" + ] + }, + "CheckNoNewAccessRequest":{ + "type":"structure", + "required":[ + "newPolicyDocument", + "existingPolicyDocument", + "policyType" + ], + "members":{ + "newPolicyDocument":{"shape":"AccessCheckPolicyDocument"}, + "existingPolicyDocument":{"shape":"AccessCheckPolicyDocument"}, + "policyType":{"shape":"AccessCheckPolicyType"} + } + }, + "CheckNoNewAccessResponse":{ + "type":"structure", + "members":{ + "result":{"shape":"CheckNoNewAccessResult"}, + "message":{"shape":"String"}, + "reasons":{"shape":"ReasonSummaryList"} + } + }, + "CheckNoNewAccessResult":{ + "type":"string", + "enum":[ + "PASS", + "FAIL" + ] + }, "CloudTrailArn":{ "type":"string", "pattern":"arn:[^:]*:cloudtrail:[^:]*:[^:]*:trail/.{1,576}" @@ -881,7 +1046,8 @@ "clientToken":{ "shape":"String", "idempotencyToken":true - } + }, + "configuration":{"shape":"AnalyzerConfiguration"} } }, "CreateAnalyzerResponse":{ @@ -995,6 +1161,17 @@ } }, "EfsFileSystemPolicy":{"type":"string"}, + "ExternalAccessDetails":{ + "type":"structure", + "required":["condition"], + "members":{ + "action":{"shape":"ActionList"}, + "condition":{"shape":"ConditionKeyMap"}, + "isPublic":{"shape":"Boolean"}, + "principal":{"shape":"PrincipalMap"}, + "sources":{"shape":"FindingSourceList"} + } + }, "FilterCriteriaMap":{ "type":"map", "key":{"shape":"String"}, @@ -1037,6 +1214,21 @@ "UNCHANGED" ] }, + "FindingDetails":{ + "type":"structure", + "members":{ + "externalAccessDetails":{"shape":"ExternalAccessDetails"}, + "unusedPermissionDetails":{"shape":"UnusedPermissionDetails"}, + "unusedIamUserAccessKeyDetails":{"shape":"UnusedIamUserAccessKeyDetails"}, + "unusedIamRoleDetails":{"shape":"UnusedIamRoleDetails"}, + "unusedIamUserPasswordDetails":{"shape":"UnusedIamUserPasswordDetails"} + }, + "union":true + }, + "FindingDetailsList":{ + "type":"list", + "member":{"shape":"FindingDetails"} + }, "FindingId":{"type":"string"}, "FindingIdList":{ "type":"list", @@ -1114,10 +1306,48 @@ "sources":{"shape":"FindingSourceList"} } }, + "FindingSummaryV2":{ + "type":"structure", + "required":[ + "analyzedAt", + "createdAt", + "id", + "resourceType", + "resourceOwnerAccount", + "status", + "updatedAt" + ], + "members":{ + "analyzedAt":{"shape":"Timestamp"}, + "createdAt":{"shape":"Timestamp"}, + "error":{"shape":"String"}, + "id":{"shape":"FindingId"}, + "resource":{"shape":"String"}, + "resourceType":{"shape":"ResourceType"}, + "resourceOwnerAccount":{"shape":"String"}, + "status":{"shape":"FindingStatus"}, + "updatedAt":{"shape":"Timestamp"}, + "findingType":{"shape":"FindingType"} + } + }, + "FindingType":{ + "type":"string", + "enum":[ + "ExternalAccess", + "UnusedIAMRole", + "UnusedIAMUserAccessKey", + "UnusedIAMUserPassword", + "UnusedPermission" + ] + }, "FindingsList":{ "type":"list", "member":{"shape":"FindingSummary"} }, + "FindingsListV2":{ + "type":"list", + "member":{"shape":"FindingSummaryV2"} + }, "GeneratedPolicy":{ "type":"structure", "required":["policy"], @@ -1266,6 +1496,62 @@ "finding":{"shape":"Finding"} } }, + "GetFindingV2Request":{ + "type":"structure", + "required":[ + "analyzerArn", + "id" + ], + "members":{ + "analyzerArn":{ + "shape":"AnalyzerArn", + "location":"querystring", + "locationName":"analyzerArn" + }, + "id":{ + "shape":"FindingId", + "location":"uri", + "locationName":"id" + }, + "maxResults":{ + "shape":"Integer", + "location":"querystring", + "locationName":"maxResults" + }, + "nextToken":{ + "shape":"Token", + "location":"querystring", + "locationName":"nextToken" + } + } + }, + "GetFindingV2Response":{ + "type":"structure", + "required":[ + "analyzedAt", + "createdAt", + "id", + "resourceType", + "resourceOwnerAccount", + "status", + "updatedAt", + "findingDetails" + ], + "members":{ + "analyzedAt":{"shape":"Timestamp"}, + "createdAt":{"shape":"Timestamp"}, + "error":{"shape":"String"}, + "id":{"shape":"FindingId"}, + "nextToken":{"shape":"Token"}, + "resource":{"shape":"String"}, + "resourceType":{"shape":"ResourceType"}, + "resourceOwnerAccount":{"shape":"String"}, + "status":{"shape":"FindingStatus"}, + "updatedAt":{"shape":"Timestamp"}, + "findingDetails":{"shape":"FindingDetailsList"}, + "findingType":{"shape":"FindingType"} + } + }, "GetGeneratedPolicyRequest":{ "type":"structure", "required":["jobId"], @@ -1346,6 +1632,18 @@ "members":{ } }, + "InvalidParameterException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "IssueCode":{"type":"string"}, "IssuingAccount":{"type":"string"}, "JobDetails":{ @@ -1612,6 +1910,25 @@ "nextToken":{"shape":"Token"} } }, + "ListFindingsV2Request":{ + "type":"structure", + "required":["analyzerArn"], + "members":{ + "analyzerArn":{"shape":"AnalyzerArn"}, + "filter":{"shape":"FilterCriteriaMap"}, + "maxResults":{"shape":"Integer"}, + "nextToken":{"shape":"Token"}, + "sort":{"shape":"SortCriteria"} + } + }, + "ListFindingsV2Response":{ + "type":"structure", + "required":["findings"], + "members":{ + "findings":{"shape":"FindingsListV2"}, + "nextToken":{"shape":"Token"} + } + }, "ListPolicyGenerationsRequest":{ "type":"structure", "members":{ @@ -1847,6 +2164,18 @@ "SERVICE_LINKED_ROLE_CREATION_FAILED" ] }, + "ReasonSummary":{ + "type":"structure", + "members":{ + "description":{"shape":"String"}, + "statementIndex":{"shape":"Integer"}, + "statementId":{"shape":"String"} + } + }, + "ReasonSummaryList":{ + "type":"list", + "member":{"shape":"ReasonSummary"} + }, "RegionList":{ "type":"list", "member":{"shape":"String"} @@ -2144,9 +2473,24 @@ "type":"string", "enum":[ "ACCOUNT", - "ORGANIZATION" + "ORGANIZATION", + "ACCOUNT_UNUSED_ACCESS", + "ORGANIZATION_UNUSED_ACCESS" ] }, + "UnprocessableEntityException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":422, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":false} + }, "UntagResourceRequest":{ "type":"structure", "required":[ @@ -2171,6 +2515,53 @@ "members":{ } }, + "UnusedAccessConfiguration":{ + "type":"structure", + "members":{ + "unusedAccessAge":{"shape":"Integer"} + } + }, + "UnusedAction":{ + "type":"structure", + "required":["action"], + "members":{ + "action":{"shape":"String"}, + "lastAccessed":{"shape":"Timestamp"} + } + }, + "UnusedActionList":{ + "type":"list", + "member":{"shape":"UnusedAction"} + }, + "UnusedIamRoleDetails":{ + "type":"structure", + "members":{ + "lastAccessed":{"shape":"Timestamp"} + } + }, + "UnusedIamUserAccessKeyDetails":{ + "type":"structure", + "required":["accessKeyId"], + "members":{ + "accessKeyId":{"shape":"String"}, + "lastAccessed":{"shape":"Timestamp"} + } + }, + "UnusedIamUserPasswordDetails":{ + "type":"structure", + "members":{ + "lastAccessed":{"shape":"Timestamp"} + } + }, + "UnusedPermissionDetails":{ + "type":"structure", + "required":["serviceNamespace"], + "members":{ + "actions":{"shape":"UnusedActionList"}, + "serviceNamespace":{"shape":"String"}, + "lastAccessed":{"shape":"Timestamp"} + } + }, "UpdateArchiveRuleRequest":{ "type":"structure", "required":[ diff --git a/apis/accessanalyzer/2019-11-01/docs-2.json b/apis/accessanalyzer/2019-11-01/docs-2.json index 44ba5f48e72..a1ca221a437 100644 --- a/apis/accessanalyzer/2019-11-01/docs-2.json +++ b/apis/accessanalyzer/2019-11-01/docs-2.json @@ -1,9 +1,11 @@ { "version": "2.0", - "service": "

Identity and Access Management Access Analyzer helps identify potential resource-access risks by enabling you to identify any policies that grant access to an external principal. It does this by using logic-based reasoning to analyze resource-based policies in your Amazon Web Services environment. An external principal can be another Amazon Web Services account, a root user, an IAM user or role, a federated user, an Amazon Web Services service, or an anonymous user. You can also use IAM Access Analyzer to preview and validate public and cross-account access to your resources before deploying permissions changes. This guide describes the Identity and Access Management Access Analyzer operations that you can call programmatically. For general information about IAM Access Analyzer, see Identity and Access Management Access Analyzer in the IAM User Guide.

To start using IAM Access Analyzer, you first need to create an analyzer.

", + "service": "

Identity and Access Management Access Analyzer helps you to set, verify, and refine your IAM policies by providing a suite of capabilities. Its features include findings for external and unused access, basic and custom policy checks for validating policies, and policy generation to generate fine-grained policies. To start using IAM Access Analyzer to identify external or unused access, you first need to create an analyzer.

External access analyzers help identify potential risks of accessing resources by enabling you to identify any resource policies that grant access to an external principal. It does this by using logic-based reasoning to analyze resource-based policies in your Amazon Web Services environment. An external principal can be another Amazon Web Services account, a root user, an IAM user or role, a federated user, an Amazon Web Services service, or an anonymous user. You can also use IAM Access Analyzer to preview public and cross-account access to your resources before deploying permissions changes.

Unused access analyzers help identify potential identity access risks by enabling you to identify unused IAM roles, unused access keys, unused console passwords, and IAM principals with unused service and action-level permissions.

Beyond findings, IAM Access Analyzer provides basic and custom policy checks to validate IAM policies before deploying permissions changes. You can use policy generation to refine permissions by attaching a policy generated using access activity logged in CloudTrail logs.

This guide describes the IAM Access Analyzer operations that you can call programmatically. For general information about IAM Access Analyzer, see Identity and Access Management Access Analyzer in the IAM User Guide.

", "operations": { "ApplyArchiveRule": "

Retroactively applies the archive rule to existing findings that meet the archive rule criteria.

", "CancelPolicyGeneration": "

Cancels the requested policy generation.

", + "CheckAccessNotGranted": "

Checks whether the specified access isn't allowed by a policy.

", + "CheckNoNewAccess": "

Checks whether new access is allowed for an updated policy when compared to the existing policy.

You can find examples for reference policies and learn how to set up and run a custom policy check for new access in the IAM Access Analyzer custom policy checks samples repository on GitHub. The reference policies in this repository are meant to be passed to the existingPolicyDocument request parameter.

", "CreateAccessPreview": "

Creates an access preview that allows you to preview IAM Access Analyzer findings for your resource before deploying resource permissions.

", "CreateAnalyzer": "

Creates an analyzer for your account.

", "CreateArchiveRule": "

Creates an archive rule for the specified analyzer. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.

To learn about filter keys that you can use to create an archive rule, see IAM Access Analyzer filter keys in the IAM User Guide.

", @@ -14,6 +16,7 @@ "GetAnalyzer": "

Retrieves information about the specified analyzer.

", "GetArchiveRule": "

Retrieves information about an archive rule.

To learn about filter keys that you can use to create an archive rule, see IAM Access Analyzer filter keys in the IAM User Guide.

", "GetFinding": "

Retrieves information about the specified finding.

", + "GetFindingV2": "

Retrieves information about the specified finding.

", "GetGeneratedPolicy": "

Retrieves the policy that was generated using StartPolicyGeneration.

", "ListAccessPreviewFindings": "

Retrieves a list of access preview findings generated by the specified access preview.

", "ListAccessPreviews": "

Retrieves a list of access previews for the specified analyzer.

", @@ -21,6 +24,7 @@ "ListAnalyzers": "

Retrieves a list of analyzers.

", "ListArchiveRules": "

Retrieves a list of archive rules created for the specified analyzer.

", "ListFindings": "

Retrieves a list of findings generated by the specified analyzer.

To learn about filter keys that you can use to retrieve a list of findings, see IAM Access Analyzer filter keys in the IAM User Guide.

", + "ListFindingsV2": "

Retrieves a list of findings generated by the specified analyzer.

To learn about filter keys that you can use to retrieve a list of findings, see IAM Access Analyzer filter keys in the IAM User Guide.

", "ListPolicyGenerations": "

Lists all of the policy generations requested in the last seven days.

", "ListTagsForResource": "

Retrieves a list of tags applied to the specified resource.

", "StartPolicyGeneration": "

Starts the policy generation request.

", @@ -32,6 +36,33 @@ "ValidatePolicy": "

Requests the validation of a policy and returns a list of findings. The findings help you identify issues and provide actionable recommendations to resolve the issue and enable you to author functional policies that meet security best practices.

" }, "shapes": { + "Access": { + "base": "

Contains information about actions that define permissions to check against a policy.

", + "refs": { + "CheckAccessNotGrantedRequestAccessList$member": null + } + }, + "AccessActionsList": { + "base": null, + "refs": { + "Access$actions": "

A list of actions for the access permissions.

" + } + }, + "AccessCheckPolicyDocument": { + "base": null, + "refs": { + "CheckAccessNotGrantedRequest$policyDocument": "

The JSON policy document to use as the content for the policy.

", + "CheckNoNewAccessRequest$newPolicyDocument": "

The JSON policy document to use as the content for the updated policy.

", + "CheckNoNewAccessRequest$existingPolicyDocument": "

The JSON policy document to use as the content for the existing policy.

" + } + }, + "AccessCheckPolicyType": { + "base": null, + "refs": { + "CheckAccessNotGrantedRequest$policyType": "

The type of policy. Identity policies grant permissions to IAM principals. Identity policies include managed and inline policies for IAM roles, users, and groups.

Resource policies grant permissions on Amazon Web Services resources. Resource policies include trust policies for IAM roles and bucket policies for Amazon S3 buckets. You can provide a generic input such as identity policy or resource policy or a specific input such as managed policy or Amazon S3 bucket policy.

", + "CheckNoNewAccessRequest$policyType": "

The type of policy to compare. Identity policies grant permissions to IAM principals. Identity policies include managed and inline policies for IAM roles, users, and groups.

Resource policies grant permissions on Amazon Web Services resources. Resource policies include trust policies for IAM roles and bucket policies for Amazon S3 buckets. You can provide a generic input such as identity policy or resource policy or a specific input such as managed policy or Amazon S3 bucket policy.

" + } + }, "AccessDeniedException": { "base": "

You do not have sufficient access to perform this action.

", "refs": { @@ -139,11 +170,18 @@ "AclGrantee$uri": "

Used for granting permissions to a predefined group.

" } }, + "Action": { + "base": null, + "refs": { + "AccessActionsList$member": null + } + }, "ActionList": { "base": null, "refs": { "AccessPreviewFinding$action": "

The action in the analyzed policy statement that an external principal has permission to perform.

", "AnalyzedResource$actions": "

The actions that an external principal is granted permission to use by the policy that generated the finding.

", + "ExternalAccessDetails$action": "

The action in the analyzed policy statement that an external principal has permission to use.

", "Finding$action": "

The action in the analyzed policy statement that an external principal has permission to use.

", "FindingSummary$action": "

The action in the analyzed policy statement that an external principal has permission to use.

" } @@ -178,14 +216,23 @@ "GetAccessPreviewRequest$analyzerArn": "

The ARN of the analyzer used to generate the access preview.

", "GetAnalyzedResourceRequest$analyzerArn": "

The ARN of the analyzer to retrieve information from.

", "GetFindingRequest$analyzerArn": "

The ARN of the analyzer that generated the finding.

", + "GetFindingV2Request$analyzerArn": "

The ARN of the analyzer that generated the finding.

", "ListAccessPreviewFindingsRequest$analyzerArn": "

The ARN of the analyzer used to generate the access.

", "ListAccessPreviewsRequest$analyzerArn": "

The ARN of the analyzer used to generate the access preview.

", "ListAnalyzedResourcesRequest$analyzerArn": "

The ARN of the analyzer to retrieve a list of analyzed resources from.

", "ListFindingsRequest$analyzerArn": "

The ARN of the analyzer to retrieve findings from.

", + "ListFindingsV2Request$analyzerArn": "

The ARN of the analyzer to retrieve findings from.

", "StartResourceScanRequest$analyzerArn": "

The ARN of the analyzer to use to scan the policies applied to the specified resource.

", "UpdateFindingsRequest$analyzerArn": "

The ARN of the analyzer that generated the findings to update.

" } }, + "AnalyzerConfiguration": { + "base": "

Contains information about the configuration of an unused access analyzer for an Amazon Web Services organization or account.

", + "refs": { + "AnalyzerSummary$configuration": "

Specifies whether the analyzer is an external access or unused access analyzer.

", + "CreateAnalyzerRequest$configuration": "

Specifies the configuration of the analyzer. If the analyzer is an unused access analyzer, the specified scope of unused access is used for the configuration. If the analyzer is an external access analyzer, this field is not used.

" + } + }, "AnalyzerStatus": { "base": null, "refs": { @@ -229,6 +276,7 @@ "AccessPreviewFinding$isPublic": "

Indicates whether the policy that generated the finding allows public access to the resource.

", "AnalyzedResource$isPublic": "

Indicates whether the policy that generated the finding grants public access to the resource.

", "Criterion$exists": "

An \"exists\" operator to match for the filter used to create the rule.

", + "ExternalAccessDetails$isPublic": "

Specifies whether the external access finding is public.

", "Finding$isPublic": "

Indicates whether the policy that generated the finding allows public access to the resource.

", "FindingSummary$isPublic": "

Indicates whether the finding reports a resource that has a policy that allows public access.

", "GeneratedPolicyProperties$isComplete": "

This value is set to true if the generated policy contains all possible actions for a service that IAM Access Analyzer identified from the CloudTrail trail that you specified, and false otherwise.

", @@ -250,6 +298,44 @@ "refs": { } }, + "CheckAccessNotGrantedRequest": { + "base": null, + "refs": { + } + }, + "CheckAccessNotGrantedRequestAccessList": { + "base": null, + "refs": { + "CheckAccessNotGrantedRequest$access": "

An access object containing the permissions that shouldn't be granted by the specified policy.

" + } + }, + "CheckAccessNotGrantedResponse": { + "base": null, + "refs": { + } + }, + "CheckAccessNotGrantedResult": { + "base": null, + "refs": { + "CheckAccessNotGrantedResponse$result": "

The result of the check for whether the access is allowed. If the result is PASS, the specified policy doesn't allow any of the specified permissions in the access object. If the result is FAIL, the specified policy might allow some or all of the permissions in the access object.

" + } + }, + "CheckNoNewAccessRequest": { + "base": null, + "refs": { + } + }, + "CheckNoNewAccessResponse": { + "base": null, + "refs": { + } + }, + "CheckNoNewAccessResult": { + "base": null, + "refs": { + "CheckNoNewAccessResponse$result": "

The result of the check for new access. If the result is PASS, no new access is allowed by the updated policy. If the result is FAIL, the updated policy might allow new access.

" + } + }, "CloudTrailArn": { "base": null, "refs": { @@ -273,6 +359,7 @@ "base": null, "refs": { "AccessPreviewFinding$condition": "

The condition in the analyzed policy statement that resulted in a finding.

", + "ExternalAccessDetails$condition": "

The condition in the analyzed policy statement that resulted in an external access finding.

", "Finding$condition": "

The condition in the analyzed policy statement that resulted in a finding.

", "FindingSummary$condition": "

The condition in the analyzed policy statement that resulted in a finding.

" } @@ -402,6 +489,12 @@ "EfsFileSystemConfiguration$fileSystemPolicy": "

The JSON policy definition to apply to the Amazon EFS file system. For more information on the elements that make up a file system policy, see Amazon EFS Resource-based policies.

" } }, + "ExternalAccessDetails": { + "base": "

Contains information about an external access finding.

", + "refs": { + "FindingDetails$externalAccessDetails": "

The details for an external access analyzer finding.

" + } + }, "FilterCriteriaMap": { "base": null, "refs": { @@ -410,6 +503,7 @@ "InlineArchiveRule$filter": "

The condition and values for a criterion.

", "ListAccessPreviewFindingsRequest$filter": "

Criteria to filter the returned findings.

", "ListFindingsRequest$filter": "

A filter to match for the findings to return.

", + "ListFindingsV2Request$filter": "

A filter to match for the findings to return.

", "UpdateArchiveRuleRequest$filter": "

A filter to match for the rules to update. Only rules that match the filter are updated.

" } }, @@ -425,6 +519,18 @@ "AccessPreviewFinding$changeType": "

Provides context on how the access preview finding compares to existing access identified in IAM Access Analyzer.

For example, a Changed finding with preview status Resolved and existing status Active indicates the existing Active finding would become Resolved as a result of the proposed permissions change.

" } }, + "FindingDetails": { + "base": "

Contains information about an external access or unused access finding. Only one parameter can be used in a FindingDetails object.

", + "refs": { + "FindingDetailsList$member": null + } + }, + "FindingDetailsList": { + "base": null, + "refs": { + "GetFindingV2Response$findingDetails": "

A localized message that explains the finding and provides guidance on how to address it.

" + } + }, "FindingId": { "base": null, "refs": { @@ -432,7 +538,10 @@ "Finding$id": "

The ID of the finding.

", "FindingIdList$member": null, "FindingSummary$id": "

The ID of the finding.

", - "GetFindingRequest$id": "

The ID of the finding to retrieve.

" + "FindingSummaryV2$id": "

The ID of the finding.

", + "GetFindingRequest$id": "

The ID of the finding to retrieve.

", + "GetFindingV2Request$id": "

The ID of the finding to retrieve.

", + "GetFindingV2Response$id": "

The ID of the finding to retrieve.

" } }, "FindingIdList": { @@ -457,6 +566,7 @@ "base": null, "refs": { "AccessPreviewFinding$sources": "

The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.

", + "ExternalAccessDetails$sources": "

The sources of the external access finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.

", "Finding$sources": "

The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.

", "FindingSummary$sources": "

The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.

" } @@ -474,7 +584,9 @@ "AccessPreviewFinding$status": "

The preview status of the finding. This is what the status of the finding would be after permissions deployment. For example, a Changed finding with preview status Resolved and existing status Active indicates the existing Active finding would become Resolved as a result of the proposed permissions change.

", "AnalyzedResource$status": "

The current status of the finding generated from the analyzed resource.

", "Finding$status": "

The current status of the finding.

", - "FindingSummary$status": "

The status of the finding.

" + "FindingSummary$status": "

The status of the finding.

", + "FindingSummaryV2$status": "

The status of the finding.

", + "GetFindingV2Response$status": "

The status of the finding.

" } }, "FindingStatusUpdate": { @@ -489,12 +601,31 @@ "FindingsList$member": null } }, + "FindingSummaryV2": { + "base": "

Contains information about a finding.

", + "refs": { + "FindingsListV2$member": null + } + }, + "FindingType": { + "base": null, + "refs": { + "FindingSummaryV2$findingType": "

The type of the external access or unused access finding.

", + "GetFindingV2Response$findingType": "

The type of the finding. For external access analyzers, the type is ExternalAccess. For unused access analyzers, the type can be UnusedIAMRole, UnusedIAMUserAccessKey, UnusedIAMUserPassword, or UnusedPermission.

" + } + }, "FindingsList": { "base": null, "refs": { "ListFindingsResponse$findings": "

A list of findings retrieved from the analyzer that match the filter criteria specified, if any.

" } }, + "FindingsListV2": { + "base": null, + "refs": { + "ListFindingsV2Response$findings": "

A list of findings retrieved from the analyzer that match the filter criteria specified, if any.

" + } + }, "GeneratedPolicy": { "base": "

Contains the text for the generated policy.

", "refs": { @@ -569,6 +700,16 @@ "refs": { } }, + "GetFindingV2Request": { + "base": null, + "refs": { + } + }, + "GetFindingV2Response": { + "base": null, + "refs": { + } + }, "GetGeneratedPolicyRequest": { "base": null, "refs": { @@ -612,6 +753,7 @@ "Integer": { "base": null, "refs": { + "GetFindingV2Request$maxResults": "

The maximum number of results to return in the response.

", "InternalServerException$retryAfterSeconds": "

The seconds to wait to retry.

", "ListAccessPreviewFindingsRequest$maxResults": "

The maximum number of results to return in the response.

", "ListAccessPreviewsRequest$maxResults": "

The maximum number of results to return in the response.

", @@ -619,13 +761,16 @@ "ListAnalyzersRequest$maxResults": "

The maximum number of results to return in the response.

", "ListArchiveRulesRequest$maxResults": "

The maximum number of results to return in the request.

", "ListFindingsRequest$maxResults": "

The maximum number of results to return in the response.

", + "ListFindingsV2Request$maxResults": "

The maximum number of results to return in the response.

", "PathElement$index": "

Refers to an index in a JSON array.

", "Position$line": "

The line of the position, starting from 1.

", "Position$column": "

The column of the position, starting from 0.

", "Position$offset": "

The offset within the policy that corresponds to the position, starting from 0.

", + "ReasonSummary$statementIndex": "

The index number of the reason statement.

", "Substring$start": "

The start index of the substring, starting from 0.

", "Substring$length": "

The length of the substring.

", "ThrottlingException$retryAfterSeconds": "

The seconds to wait to retry.

", + "UnusedAccessConfiguration$unusedAccessAge": "

The specified access age in days for which to generate findings for unused access. For example, if you specify 90 days, the analyzer will generate findings for IAM entities within the accounts of the selected organization for any access that hasn't been used in 90 or more days since the analyzer's last scan. You can choose a value between 1 and 180 days.

", "ValidatePolicyRequest$maxResults": "

The maximum number of results to return in the response.

" } }, @@ -640,6 +785,11 @@ "NetworkOriginConfiguration$internetConfiguration": "

The configuration for the Amazon S3 access point or multi-region access point with an Internet origin.

" } }, + "InvalidParameterException": { + "base": "

The specified parameter is invalid.

", + "refs": { + } + }, "IssueCode": { "base": null, "refs": { @@ -820,6 +970,16 @@ "refs": { } }, + "ListFindingsV2Request": { + "base": null, + "refs": { + } + }, + "ListFindingsV2Response": { + "base": null, + "refs": { + } + }, "ListPolicyGenerationsRequest": { "base": null, "refs": { @@ -942,7 +1102,7 @@ "PolicyType": { "base": null, "refs": { - "ValidatePolicyRequest$policyType": "

The type of policy to validate. Identity policies grant permissions to IAM principals. Identity policies include managed and inline policies for IAM roles, users, and groups. They also include service-control policies (SCPs) that are attached to an Amazon Web Services organization, organizational unit (OU), or an account.

Resource policies grant permissions on Amazon Web Services resources. Resource policies include trust policies for IAM roles and bucket policies for Amazon S3 buckets. You can provide a generic input such as identity policy or resource policy or a specific input such as managed policy or Amazon S3 bucket policy.

" + "ValidatePolicyRequest$policyType": "

The type of policy to validate. Identity policies grant permissions to IAM principals. Identity policies include managed and inline policies for IAM roles, users, and groups.

Resource policies grant permissions on Amazon Web Services resources. Resource policies include trust policies for IAM roles and bucket policies for Amazon S3 buckets. You can provide a generic input such as identity policy or resource policy or a specific input such as managed policy or Amazon S3 bucket policy.

Service control policies (SCPs) are a type of organization policy attached to an Amazon Web Services organization, organizational unit (OU), or an account.

" } }, "Position": { @@ -965,7 +1125,8 @@ "base": null, "refs": { "AccessPreviewFinding$principal": "

The external principal that has access to a resource within the zone of trust.

", - "Finding$principal": "

The external principal that access to a resource within the zone of trust.

", + "ExternalAccessDetails$principal": "

The external principal that has access to a resource within the zone of trust.

", + "Finding$principal": "

The external principal that has access to a resource within the zone of trust.

", "FindingSummary$principal": "

The external principal that has access to a resource within the zone of trust.

" } }, @@ -1059,6 +1220,19 @@ "StatusReason$code": "

The reason code for the current status of the analyzer.

" } }, + "ReasonSummary": { + "base": "

Contains information about the reasoning why a check for access passed or failed.

", + "refs": { + "ReasonSummaryList$member": null + } + }, + "ReasonSummaryList": { + "base": null, + "refs": { + "CheckAccessNotGrantedResponse$reasons": "

A description of the reasoning of the result.

", + "CheckNoNewAccessResponse$reasons": "

A description of the reasoning of the result.

" + } + }, "RegionList": { "base": null, "refs": { @@ -1089,6 +1263,8 @@ "AnalyzedResourceSummary$resourceType": "

The type of resource that was analyzed.

", "Finding$resourceType": "

The type of the resource identified in the finding.

", "FindingSummary$resourceType": "

The type of the resource that the external principal has access to.

", + "FindingSummaryV2$resourceType": "

The type of the resource that the external principal has access to.

", + "GetFindingV2Response$resourceType": "

The type of the resource identified in the finding.

", "ListAnalyzedResourcesRequest$resourceType": "

The type of resource.

" } }, @@ -1191,7 +1367,8 @@ "SortCriteria": { "base": "

The criteria used to sort.

", "refs": { - "ListFindingsRequest$sort": "

The sort order for the findings returned.

" + "ListFindingsRequest$sort": "

The sort order for the findings returned.

", + "ListFindingsV2Request$sort": null } }, "Span": { @@ -1246,6 +1423,8 @@ "AnalyzedResourceSummary$resourceOwnerAccount": "

The Amazon Web Services account ID that owns the resource.

", "AnalyzerSummary$lastResourceAnalyzed": "

The resource that was most recently analyzed by the analyzer.

", "ApplyArchiveRuleRequest$clientToken": "

A client token.

", + "CheckAccessNotGrantedResponse$message": "

The message indicating whether the specified access is allowed.

", + "CheckNoNewAccessResponse$message": "

The message indicating whether the updated policy allows new access.

", "ConditionKeyMap$key": null, "ConditionKeyMap$value": null, "ConflictException$message": null, @@ -1265,14 +1444,23 @@ "FindingSummary$resource": "

The resource that the external principal has access to.

", "FindingSummary$resourceOwnerAccount": "

The Amazon Web Services account ID that owns the resource.

", "FindingSummary$error": "

The error that resulted in an Error finding.

", + "FindingSummaryV2$error": "

The error that resulted in an Error finding.

", + "FindingSummaryV2$resource": "

The resource that the external principal has access to.

", + "FindingSummaryV2$resourceOwnerAccount": "

The Amazon Web Services account ID that owns the resource.

", "GeneratedPolicy$policy": "

The text to use as the content for the new policy. The policy is created using the CreatePolicy action.

", + "GetFindingV2Response$error": "

An error.

", + "GetFindingV2Response$resource": "

The resource that generated the finding.

", + "GetFindingV2Response$resourceOwnerAccount": "

Tye Amazon Web Services account ID that owns the resource.

", "InternalServerException$message": null, + "InvalidParameterException$message": null, "JobError$message": "

Specific information about the error. For example, which service quota was exceeded or which resource was not found.

", "ListTagsForResourceRequest$resourceArn": "

The ARN of the resource to retrieve tags from.

", "PathElement$key": "

Refers to a key in a JSON object.

", "PathElement$value": "

Refers to the value associated with a given key in a JSON object.

", "PrincipalMap$key": null, "PrincipalMap$value": null, + "ReasonSummary$description": "

A description of the reasoning of a result of checking for access.

", + "ReasonSummary$statementId": "

The identifier for the reason statement.

", "RegionList$member": null, "ResourceNotFoundException$message": null, "ResourceNotFoundException$resourceId": "

The ID of the resource.

", @@ -1289,7 +1477,11 @@ "TagsMap$key": null, "TagsMap$value": null, "ThrottlingException$message": null, + "UnprocessableEntityException$message": null, "UntagResourceRequest$resourceArn": "

The ARN of the resource to remove the tag from.

", + "UnusedAction$action": "

The action for which the unused access finding was generated.

", + "UnusedIamUserAccessKeyDetails$accessKeyId": "

The ID of the access key for which the unused access finding was generated.

", + "UnusedPermissionDetails$serviceNamespace": "

The namespace of the Amazon Web Services service that contains the unused actions.

", "UpdateArchiveRuleRequest$clientToken": "

A client token.

", "UpdateFindingsRequest$clientToken": "

A client token.

", "ValidatePolicyFinding$findingDetails": "

A localized message that explains the finding and provides guidance on how to address it.

", @@ -1325,7 +1517,7 @@ "base": null, "refs": { "AnalyzerSummary$tags": "

The tags added to the analyzer.

", - "CreateAnalyzerRequest$tags": "

The tags to apply to the analyzer.

", + "CreateAnalyzerRequest$tags": "

An array of key-value pairs to apply to the analyzer.

", "ListTagsForResourceResponse$tags": "

The tags that are applied to the specified resource.

", "TagResourceRequest$tags": "

The tags to add to the resource.

" } @@ -1358,15 +1550,28 @@ "FindingSummary$createdAt": "

The time at which the finding was created.

", "FindingSummary$analyzedAt": "

The time at which the resource-based policy that generated the finding was analyzed.

", "FindingSummary$updatedAt": "

The time at which the finding was most recently updated.

", + "FindingSummaryV2$analyzedAt": "

The time at which the resource-based policy or IAM entity that generated the finding was analyzed.

", + "FindingSummaryV2$createdAt": "

The time at which the finding was created.

", + "FindingSummaryV2$updatedAt": "

The time at which the finding was most recently updated.

", + "GetFindingV2Response$analyzedAt": "

The time at which the resource-based policy or IAM entity that generated the finding was analyzed.

", + "GetFindingV2Response$createdAt": "

The time at which the finding was created.

", + "GetFindingV2Response$updatedAt": "

The time at which the finding was updated.

", "JobDetails$startedOn": "

A timestamp of when the job was started.

", "JobDetails$completedOn": "

A timestamp of when the job was completed.

", "PolicyGeneration$startedOn": "

A timestamp of when the policy generation started.

", - "PolicyGeneration$completedOn": "

A timestamp of when the policy generation was completed.

" + "PolicyGeneration$completedOn": "

A timestamp of when the policy generation was completed.

", + "UnusedAction$lastAccessed": "

The time at which the action was last accessed.

", + "UnusedIamRoleDetails$lastAccessed": "

The time at which the role was last accessed.

", + "UnusedIamUserAccessKeyDetails$lastAccessed": "

The time at which the access key was last accessed.

", + "UnusedIamUserPasswordDetails$lastAccessed": "

The time at which the password was last accessed.

", + "UnusedPermissionDetails$lastAccessed": "

The time at which the permission last accessed.

" } }, "Token": { "base": null, "refs": { + "GetFindingV2Request$nextToken": "

A token used for pagination of results returned.

", + "GetFindingV2Response$nextToken": "

A token used for pagination of results returned.

", "ListAccessPreviewFindingsRequest$nextToken": "

A token used for pagination of results returned.

", "ListAccessPreviewFindingsResponse$nextToken": "

A token used for pagination of results returned.

", "ListAccessPreviewsRequest$nextToken": "

A token used for pagination of results returned.

", @@ -1379,6 +1584,8 @@ "ListArchiveRulesResponse$nextToken": "

A token used for pagination of results returned.

", "ListFindingsRequest$nextToken": "

A token used for pagination of results returned.

", "ListFindingsResponse$nextToken": "

A token used for pagination of results returned.

", + "ListFindingsV2Request$nextToken": "

A token used for pagination of results returned.

", + "ListFindingsV2Response$nextToken": "

A token used for pagination of results returned.

", "ListPolicyGenerationsRequest$nextToken": "

A token used for pagination of results returned.

", "ListPolicyGenerationsResponse$nextToken": "

A token used for pagination of results returned.

", "ValidatePolicyRequest$nextToken": "

A token used for pagination of results returned.

", @@ -1413,10 +1620,15 @@ "base": null, "refs": { "AnalyzerSummary$type": "

The type of analyzer, which corresponds to the zone of trust chosen for the analyzer.

", - "CreateAnalyzerRequest$type": "

The type of analyzer to create. Only ACCOUNT and ORGANIZATION analyzers are supported. You can create only one analyzer per account per Region. You can create up to 5 analyzers per organization per Region.

", + "CreateAnalyzerRequest$type": "

The type of analyzer to create. Only ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS, and ORGANIZTAION_UNUSED_ACCESS analyzers are supported. You can create only one analyzer per account per Region. You can create up to 5 analyzers per organization per Region.

", "ListAnalyzersRequest$type": "

The type of analyzer.

" } }, + "UnprocessableEntityException": { + "base": "

The specified entity could not be processed.

", + "refs": { + } + }, "UntagResourceRequest": { "base": "

Removes a tag from the specified resource.

", "refs": { @@ -1427,6 +1639,48 @@ "refs": { } }, + "UnusedAccessConfiguration": { + "base": "

Contains information about an unused access analyzer.

", + "refs": { + "AnalyzerConfiguration$unusedAccess": "

Specifies the configuration of an unused access analyzer for an Amazon Web Services organization or account. External access analyzers do not support any configuration.

" + } + }, + "UnusedAction": { + "base": "

Contains information about an unused access finding for an action. IAM Access Analyzer charges for unused access analysis based on the number of IAM roles and users analyzed per month. For more details on pricing, see IAM Access Analyzer pricing.

", + "refs": { + "UnusedActionList$member": null + } + }, + "UnusedActionList": { + "base": null, + "refs": { + "UnusedPermissionDetails$actions": "

A list of unused actions for which the unused access finding was generated.

" + } + }, + "UnusedIamRoleDetails": { + "base": "

Contains information about an unused access finding for an IAM role. IAM Access Analyzer charges for unused access analysis based on the number of IAM roles and users analyzed per month. For more details on pricing, see IAM Access Analyzer pricing.

", + "refs": { + "FindingDetails$unusedIamRoleDetails": "

The details for an unused access analyzer finding with an unused IAM role finding type.

" + } + }, + "UnusedIamUserAccessKeyDetails": { + "base": "

Contains information about an unused access finding for an IAM user access key. IAM Access Analyzer charges for unused access analysis based on the number of IAM roles and users analyzed per month. For more details on pricing, see IAM Access Analyzer pricing.

", + "refs": { + "FindingDetails$unusedIamUserAccessKeyDetails": "

The details for an unused access analyzer finding with an unused IAM user access key finding type.

" + } + }, + "UnusedIamUserPasswordDetails": { + "base": "

Contains information about an unused access finding for an IAM user password. IAM Access Analyzer charges for unused access analysis based on the number of IAM roles and users analyzed per month. For more details on pricing, see IAM Access Analyzer pricing.

", + "refs": { + "FindingDetails$unusedIamUserPasswordDetails": "

The details for an unused access analyzer finding with an unused IAM user password finding type.

" + } + }, + "UnusedPermissionDetails": { + "base": "

Contains information about an unused access finding for a permission. IAM Access Analyzer charges for unused access analysis based on the number of IAM roles and users analyzed per month. For more details on pricing, see IAM Access Analyzer pricing.

", + "refs": { + "FindingDetails$unusedPermissionDetails": "

The details for an unused access analyzer finding with an unused permission finding type.

" + } + }, "UpdateArchiveRuleRequest": { "base": "

Updates the specified archive rule.

", "refs": { diff --git a/apis/accessanalyzer/2019-11-01/endpoint-rule-set-1.json b/apis/accessanalyzer/2019-11-01/endpoint-rule-set-1.json index 40a509ec277..37e76c86e64 100644 --- a/apis/accessanalyzer/2019-11-01/endpoint-rule-set-1.json +++ b/apis/accessanalyzer/2019-11-01/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,18 +212,17 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "stringEquals", "argv": [ - "aws-us-gov", { "fn": "getAttr", "argv": [ @@ -236,7 +231,8 @@ }, "name" ] - } + }, + "aws-us-gov" ] } ], @@ -256,14 +252,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -277,7 +275,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -297,7 +294,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -308,14 +304,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -326,9 +324,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/accessanalyzer/2019-11-01/paginators-1.json b/apis/accessanalyzer/2019-11-01/paginators-1.json index d36eef63384..39c52df61be 100644 --- a/apis/accessanalyzer/2019-11-01/paginators-1.json +++ b/apis/accessanalyzer/2019-11-01/paginators-1.json @@ -1,5 +1,11 @@ { "pagination": { + "GetFindingV2": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "findingDetails" + }, "ListAccessPreviewFindings": { "input_token": "nextToken", "output_token": "nextToken", @@ -36,6 +42,12 @@ "limit_key": "maxResults", "result_key": "findings" }, + "ListFindingsV2": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "findings" + }, "ListPolicyGenerations": { "input_token": "nextToken", "output_token": "nextToken", diff --git a/apis/amp/2020-08-01/api-2.json b/apis/amp/2020-08-01/api-2.json index 98249eb97a5..e5fccbc62d3 100644 --- a/apis/amp/2020-08-01/api-2.json +++ b/apis/amp/2020-08-01/api-2.json @@ -69,6 +69,26 @@ ], "idempotent":true }, + "CreateScraper":{ + "name":"CreateScraper", + "http":{ + "method":"POST", + "requestUri":"/scrapers", + "responseCode":202 + }, + "input":{"shape":"CreateScraperRequest"}, + "output":{"shape":"CreateScraperResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ServiceQuotaExceededException"} + ], + "idempotent":true + }, "CreateWorkspace":{ "name":"CreateWorkspace", "http":{ @@ -141,6 +161,25 @@ ], "idempotent":true }, + "DeleteScraper":{ + "name":"DeleteScraper", + "http":{ + "method":"DELETE", + "requestUri":"/scrapers/{scraperId}", + "responseCode":202 + }, + "input":{"shape":"DeleteScraperRequest"}, + "output":{"shape":"DeleteScraperResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, "DeleteWorkspace":{ "name":"DeleteWorkspace", "http":{ @@ -209,6 +248,23 @@ {"shape":"InternalServerException"} ] }, + "DescribeScraper":{ + "name":"DescribeScraper", + "http":{ + "method":"GET", + "requestUri":"/scrapers/{scraperId}", + "responseCode":200 + }, + "input":{"shape":"DescribeScraperRequest"}, + "output":{"shape":"DescribeScraperResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"} + ] + }, "DescribeWorkspace":{ "name":"DescribeWorkspace", "http":{ @@ -226,6 +282,21 @@ {"shape":"InternalServerException"} ] }, + "GetDefaultScraperConfiguration":{ + "name":"GetDefaultScraperConfiguration", + "http":{ + "method":"GET", + "requestUri":"/scraperconfiguration", + "responseCode":200 + }, + "input":{"shape":"GetDefaultScraperConfigurationRequest"}, + "output":{"shape":"GetDefaultScraperConfigurationResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"} + ] + }, "ListRuleGroupsNamespaces":{ "name":"ListRuleGroupsNamespaces", "http":{ @@ -243,6 +314,22 @@ {"shape":"InternalServerException"} ] }, + "ListScrapers":{ + "name":"ListScrapers", + "http":{ + "method":"GET", + "requestUri":"/scrapers", + "responseCode":200 + }, + "input":{"shape":"ListScrapersRequest"}, + "output":{"shape":"ListScrapersResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -437,6 +524,18 @@ "UPDATE_FAILED" ] }, + "AmpConfiguration":{ + "type":"structure", + "required":["workspaceArn"], + "members":{ + "workspaceArn":{"shape":"WorkspaceArn"} + } + }, + "Blob":{"type":"blob"}, + "ClusterArn":{ + "type":"string", + "pattern":"arn:aws[-a-z]*:eks:[-a-z0-9]+:[0-9]{12}:cluster/.+" + }, "ConflictException":{ "type":"structure", "required":[ @@ -543,6 +642,39 @@ "tags":{"shape":"TagMap"} } }, + "CreateScraperRequest":{ + "type":"structure", + "required":[ + "scrapeConfiguration", + "source", + "destination" + ], + "members":{ + "alias":{"shape":"ScraperAlias"}, + "scrapeConfiguration":{"shape":"ScrapeConfiguration"}, + "source":{"shape":"Source"}, + "destination":{"shape":"Destination"}, + "clientToken":{ + "shape":"IdempotencyToken", + "idempotencyToken":true + }, + "tags":{"shape":"TagMap"} + } + }, + "CreateScraperResponse":{ + "type":"structure", + "required":[ + "scraperId", + "arn", + "status" + ], + "members":{ + "scraperId":{"shape":"ScraperId"}, + "arn":{"shape":"ScraperArn"}, + "status":{"shape":"ScraperStatus"}, + "tags":{"shape":"TagMap"} + } + }, "CreateWorkspaceRequest":{ "type":"structure", "members":{ @@ -627,6 +759,34 @@ } } }, + "DeleteScraperRequest":{ + "type":"structure", + "required":["scraperId"], + "members":{ + "scraperId":{ + "shape":"ScraperId", + "location":"uri", + "locationName":"scraperId" + }, + "clientToken":{ + "shape":"IdempotencyToken", + "idempotencyToken":true, + "location":"querystring", + "locationName":"clientToken" + } + } + }, + "DeleteScraperResponse":{ + "type":"structure", + "required":[ + "scraperId", + "status" + ], + "members":{ + "scraperId":{"shape":"ScraperId"}, + "status":{"shape":"ScraperStatus"} + } + }, "DeleteWorkspaceRequest":{ "type":"structure", "required":["workspaceId"], @@ -706,6 +866,24 @@ "ruleGroupsNamespace":{"shape":"RuleGroupsNamespaceDescription"} } }, + "DescribeScraperRequest":{ + "type":"structure", + "required":["scraperId"], + "members":{ + "scraperId":{ + "shape":"ScraperId", + "location":"uri", + "locationName":"scraperId" + } + } + }, + "DescribeScraperResponse":{ + "type":"structure", + "required":["scraper"], + "members":{ + "scraper":{"shape":"ScraperDescription"} + } + }, "DescribeWorkspaceRequest":{ "type":"structure", "required":["workspaceId"], @@ -724,6 +902,54 @@ "workspace":{"shape":"WorkspaceDescription"} } }, + "Destination":{ + "type":"structure", + "members":{ + "ampConfiguration":{"shape":"AmpConfiguration"} + }, + "union":true + }, + "EksConfiguration":{ + "type":"structure", + "required":[ + "clusterArn", + "subnetIds" + ], + "members":{ + "clusterArn":{"shape":"ClusterArn"}, + "securityGroupIds":{"shape":"SecurityGroupIds"}, + "subnetIds":{"shape":"SubnetIds"} + } + }, + "FilterKey":{ + "type":"string", + "max":256, + "min":1 + }, + "FilterValue":{ + "type":"string", + "max":256, + "min":1 + }, + "FilterValues":{ + "type":"list", + "member":{"shape":"FilterValue"}, + "max":20, + "min":1 + }, + "GetDefaultScraperConfigurationRequest":{ + "type":"structure", + "members":{ + } + }, + "GetDefaultScraperConfigurationResponse":{ + "type":"structure", + "required":["configuration"], + "members":{ + "configuration":{"shape":"Blob"} + } + }, + "IamRoleArn":{"type":"string"}, "IdempotencyToken":{ "type":"string", "max":64, @@ -790,6 +1016,39 @@ "nextToken":{"shape":"PaginationToken"} } }, + "ListScrapersRequest":{ + "type":"structure", + "members":{ + "filters":{ + "shape":"ScraperFilters", + "location":"querystring" + }, + "nextToken":{ + "shape":"PaginationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "maxResults":{ + "shape":"ListScrapersRequestMaxResultsInteger", + "location":"querystring", + "locationName":"maxResults" + } + } + }, + "ListScrapersRequestMaxResultsInteger":{ + "type":"integer", + "box":true, + "max":1000, + "min":1 + }, + "ListScrapersResponse":{ + "type":"structure", + "required":["scrapers"], + "members":{ + "scrapers":{"shape":"ScraperSummaryList"}, + "nextToken":{"shape":"PaginationToken"} + } + }, "ListTagsForResourceRequest":{ "type":"structure", "required":["resourceArn"], @@ -881,7 +1140,11 @@ "UPDATE_FAILED" ] }, - "PaginationToken":{"type":"string"}, + "PaginationToken":{ + "type":"string", + "max":1000, + "min":0 + }, "PutAlertManagerDefinitionRequest":{ "type":"structure", "required":[ @@ -1034,6 +1297,120 @@ "type":"list", "member":{"shape":"RuleGroupsNamespaceSummary"} }, + "ScrapeConfiguration":{ + "type":"structure", + "members":{ + "configurationBlob":{"shape":"Blob"} + }, + "union":true + }, + "ScraperAlias":{ + "type":"string", + "max":100, + "min":1, + "pattern":"[0-9A-Za-z][-.0-9A-Z_a-z]*" + }, + "ScraperArn":{"type":"string"}, + "ScraperDescription":{ + "type":"structure", + "required":[ + "scraperId", + "arn", + "roleArn", + "status", + "createdAt", + "lastModifiedAt", + "scrapeConfiguration", + "source", + "destination" + ], + "members":{ + "alias":{"shape":"ScraperAlias"}, + "scraperId":{"shape":"ScraperId"}, + "arn":{"shape":"ScraperArn"}, + "roleArn":{"shape":"IamRoleArn"}, + "status":{"shape":"ScraperStatus"}, + "createdAt":{"shape":"Timestamp"}, + "lastModifiedAt":{"shape":"Timestamp"}, + "tags":{"shape":"TagMap"}, + "statusReason":{"shape":"StatusReason"}, + "scrapeConfiguration":{"shape":"ScrapeConfiguration"}, + "source":{"shape":"Source"}, + "destination":{"shape":"Destination"} + } + }, + "ScraperFilters":{ + "type":"map", + "key":{"shape":"FilterKey"}, + "value":{"shape":"FilterValues"}, + "max":4, + "min":1 + }, + "ScraperId":{ + "type":"string", + "max":64, + "min":1, + "pattern":"[0-9A-Za-z][-.0-9A-Z_a-z]*" + }, + "ScraperStatus":{ + "type":"structure", + "required":["statusCode"], + "members":{ + "statusCode":{"shape":"ScraperStatusCode"} + } + }, + "ScraperStatusCode":{ + "type":"string", + "enum":[ + "CREATING", + "ACTIVE", + "DELETING", + "CREATION_FAILED", + "DELETION_FAILED" + ] + }, + "ScraperSummary":{ + "type":"structure", + "required":[ + "scraperId", + "arn", + "roleArn", + "status", + "createdAt", + "lastModifiedAt", + "source", + "destination" + ], + "members":{ + "alias":{"shape":"ScraperAlias"}, + "scraperId":{"shape":"ScraperId"}, + "arn":{"shape":"ScraperArn"}, + "roleArn":{"shape":"IamRoleArn"}, + "status":{"shape":"ScraperStatus"}, + "createdAt":{"shape":"Timestamp"}, + "lastModifiedAt":{"shape":"Timestamp"}, + "tags":{"shape":"TagMap"}, + "statusReason":{"shape":"StatusReason"}, + "source":{"shape":"Source"}, + "destination":{"shape":"Destination"} + } + }, + "ScraperSummaryList":{ + "type":"list", + "member":{"shape":"ScraperSummary"} + }, + "SecurityGroupId":{ + "type":"string", + "max":255, + "min":0, + "pattern":"sg-[0-9a-z]+" + }, + "SecurityGroupIds":{ + "type":"list", + "member":{"shape":"SecurityGroupId"}, + "max":5, + "min":1 + }, "ServiceQuotaExceededException":{ "type":"structure", "required":[ @@ -1056,7 +1433,31 @@ }, "exception":true }, + "Source":{ + "type":"structure", + "members":{ + "eksConfiguration":{"shape":"EksConfiguration"} + }, + "union":true + }, + "StatusReason":{ + "type":"string", + "max":256, + "min":1 + }, "String":{"type":"string"}, + "SubnetId":{ + "type":"string", + "max":255, + "min":0, + "pattern":"subnet-[0-9a-z]+" + }, + "SubnetIds":{ + "type":"list", + "member":{"shape":"SubnetId"}, + "max":5, + "min":1 + }, "TagKey":{ "type":"string", "max":128, @@ -1238,7 +1639,10 @@ "max":100, "min":1 }, - "WorkspaceArn":{"type":"string"}, + "WorkspaceArn":{ + "type":"string", + "pattern":"arn:aws[-a-z]*:aps:[-a-z0-9]+:[0-9]{12}:workspace/.+" + }, "WorkspaceDescription":{ "type":"structure", "required":[ diff --git a/apis/amp/2020-08-01/docs-2.json b/apis/amp/2020-08-01/docs-2.json index 18773496c01..46e6a96fece 100644 --- a/apis/amp/2020-08-01/docs-2.json +++ b/apis/amp/2020-08-01/docs-2.json @@ -5,16 +5,21 @@ "CreateAlertManagerDefinition": "

Create an alert manager definition.

", "CreateLoggingConfiguration": "

Create logging configuration.

", "CreateRuleGroupsNamespace": "

Create a rule group namespace.

", + "CreateScraper": "

Create a scraper.

", "CreateWorkspace": "

Creates a new AMP workspace.

", "DeleteAlertManagerDefinition": "

Deletes an alert manager definition.

", "DeleteLoggingConfiguration": "

Delete logging configuration.

", "DeleteRuleGroupsNamespace": "

Delete a rule groups namespace.

", + "DeleteScraper": "

Deletes a scraper.

", "DeleteWorkspace": "

Deletes an AMP workspace.

", "DescribeAlertManagerDefinition": "

Describes an alert manager definition.

", "DescribeLoggingConfiguration": "

Describes logging configuration.

", "DescribeRuleGroupsNamespace": "

Describe a rule groups namespace.

", + "DescribeScraper": "

Describe an existing scraper.

", "DescribeWorkspace": "

Describes an existing AMP workspace.

", + "GetDefaultScraperConfiguration": "

Gets a default configuration.

", "ListRuleGroupsNamespaces": "

Lists rule groups namespaces.

", + "ListScrapers": "

Lists all scrapers in a customer account, including scrapers being created or deleted. You may provide filters to return a more specific list of results.

", "ListTagsForResource": "

Lists the tags you have assigned to the resource.

", "ListWorkspaces": "

Lists all AMP workspaces, including workspaces being created or deleted.

", "PutAlertManagerDefinition": "

Update an alert manager definition.

", @@ -58,6 +63,25 @@ "AlertManagerDefinitionStatus$statusCode": "

Status code of this definition.

" } }, + "AmpConfiguration": { + "base": "

A representation of an AMP destination.

", + "refs": { + "Destination$ampConfiguration": "

A representation of an AMP destination.

" + } + }, + "Blob": { + "base": null, + "refs": { + "GetDefaultScraperConfigurationResponse$configuration": "

The default configuration.

", + "ScrapeConfiguration$configurationBlob": "

Binary data representing a Prometheus configuration file.

" + } + }, + "ClusterArn": { + "base": "

The ARN of an EKS cluster.

", + "refs": { + "EksConfiguration$clusterArn": "

The ARN of an EKS cluster.

" + } + }, "ConflictException": { "base": "

Updating or deleting a resource can cause an inconsistent state.

", "refs": { @@ -93,6 +117,16 @@ "refs": { } }, + "CreateScraperRequest": { + "base": "

Represents the input of a CreateScraper operation.

", + "refs": { + } + }, + "CreateScraperResponse": { + "base": "

Represents the output of a CreateScraper operation.

", + "refs": { + } + }, "CreateWorkspaceRequest": { "base": "

Represents the input of a CreateWorkspace operation.

", "refs": { @@ -118,6 +152,16 @@ "refs": { } }, + "DeleteScraperRequest": { + "base": "

Represents the input of a DeleteScraper operation.

", + "refs": { + } + }, + "DeleteScraperResponse": { + "base": "

Represents the output of a DeleteScraper operation.

", + "refs": { + } + }, "DeleteWorkspaceRequest": { "base": "

Represents the input of a DeleteWorkspace operation.

", "refs": { @@ -153,6 +197,16 @@ "refs": { } }, + "DescribeScraperRequest": { + "base": "

Represents the input of a DescribeScraper operation.

", + "refs": { + } + }, + "DescribeScraperResponse": { + "base": "

Represents the output of a DescribeScraper operation.

", + "refs": { + } + }, "DescribeWorkspaceRequest": { "base": "

Represents the input of a DescribeWorkspace operation.

", "refs": { @@ -163,16 +217,67 @@ "refs": { } }, + "Destination": { + "base": "

A representation of a destination that a scraper can produce metrics to.

", + "refs": { + "CreateScraperRequest$destination": "

The destination that the scraper will be producing metrics to.

", + "ScraperDescription$destination": "

The destination that the scraper is producing metrics to.

", + "ScraperSummary$destination": "

The destination that the scraper is producing metrics to.

" + } + }, + "EksConfiguration": { + "base": "

A representation of an EKS source.

", + "refs": { + "Source$eksConfiguration": "

A representation of an EKS source.

" + } + }, + "FilterKey": { + "base": "

The name of the key to filter by.

", + "refs": { + "ScraperFilters$key": "

The name of the key to filter by. Currently supported filter keys are 'status', 'sourceArn', 'destinationArn', and 'alias'.

" + } + }, + "FilterValue": { + "base": "

The value of a given key to filter by.

", + "refs": { + "FilterValues$member": null + } + }, + "FilterValues": { + "base": "

A list of scraper filter values.

", + "refs": { + "ScraperFilters$value": "

The values of the given key to filter by.

" + } + }, + "GetDefaultScraperConfigurationRequest": { + "base": "

Represents the input of a GetDefaultScraperConfiguration operation.

", + "refs": { + } + }, + "GetDefaultScraperConfigurationResponse": { + "base": "

Represents the output of a GetDefaultScraperConfiguration operation.

", + "refs": { + } + }, + "IamRoleArn": { + "base": "

An ARN identifying an IAM role used by the scraper.

", + "refs": { + "ScraperDescription$roleArn": "

The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to dsicover, collect, and produce metrics on your behalf.

", + "ScraperSummary$roleArn": "

The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to dsicover, collect, and produce metrics on your behalf.

" + } + }, "IdempotencyToken": { "base": "

An identifier used to ensure the idempotency of a write request.

", "refs": { "CreateAlertManagerDefinitionRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "CreateLoggingConfigurationRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "CreateRuleGroupsNamespaceRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", + "CreateScraperRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "CreateWorkspaceRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "DeleteAlertManagerDefinitionRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "DeleteLoggingConfigurationRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "DeleteRuleGroupsNamespaceRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", + "DeleteScraperRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "DeleteWorkspaceRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "PutAlertManagerDefinitionRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", "PutRuleGroupsNamespaceRequest$clientToken": "

Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.

", @@ -208,6 +313,22 @@ "refs": { } }, + "ListScrapersRequest": { + "base": "

Represents the input of a ListScrapers operation.

", + "refs": { + } + }, + "ListScrapersRequestMaxResultsInteger": { + "base": null, + "refs": { + "ListScrapersRequest$maxResults": "

Maximum results to return in response (default=100, maximum=1000).

" + } + }, + "ListScrapersResponse": { + "base": "

Represents the output of a ListScrapers operation.

", + "refs": { + } + }, "ListTagsForResourceRequest": { "base": null, "refs": { @@ -267,6 +388,8 @@ "refs": { "ListRuleGroupsNamespacesRequest$nextToken": "

Pagination token to request the next page in a paginated list. This token is obtained from the output of the previous ListRuleGroupsNamespaces request.

", "ListRuleGroupsNamespacesResponse$nextToken": "

Pagination token to use when requesting the next page in this list.

", + "ListScrapersRequest$nextToken": "

Pagination token to request the next page in a paginated list. This token is obtained from the output of the previous ListScrapers request.

", + "ListScrapersResponse$nextToken": "

Pagination token to use when requesting the next page in this list.

", "ListWorkspacesRequest$nextToken": "

Pagination token to request the next page in a paginated list. This token is obtained from the output of the previous ListWorkspaces request.

", "ListWorkspacesResponse$nextToken": "

Pagination token to use when requesting the next page in this list.

" } @@ -360,11 +483,111 @@ "ListRuleGroupsNamespacesResponse$ruleGroupsNamespaces": "

The list of the selected rule groups namespaces.

" } }, + "ScrapeConfiguration": { + "base": "

A representation of a Prometheus configuration file.

", + "refs": { + "CreateScraperRequest$scrapeConfiguration": "

The configuration used to create the scraper.

", + "ScraperDescription$scrapeConfiguration": "

The configuration used to create the scraper.

" + } + }, + "ScraperAlias": { + "base": "

A user-assigned scraper alias.

", + "refs": { + "CreateScraperRequest$alias": "

An optional user-assigned alias for this scraper. This alias is for user reference and does not need to be unique.

", + "ScraperDescription$alias": "

Alias of this scraper.

", + "ScraperSummary$alias": "

Alias of this scraper.

" + } + }, + "ScraperArn": { + "base": "

An ARN identifying a scrape configuration.

", + "refs": { + "CreateScraperResponse$arn": "

The ARN of the scraper that was just created.

", + "ScraperDescription$arn": "

The Amazon Resource Name (ARN) of this scraper.

", + "ScraperSummary$arn": "

The Amazon Resource Name (ARN) of this scraper.

" + } + }, + "ScraperDescription": { + "base": "

Represents the properties of a scraper.

", + "refs": { + "DescribeScraperResponse$scraper": "

The properties of the selected scrapers.

" + } + }, + "ScraperFilters": { + "base": "

A list of scraper filters.

", + "refs": { + "ListScrapersRequest$filters": "

A list of scraper filters.

" + } + }, + "ScraperId": { + "base": "

A scraper ID.

", + "refs": { + "CreateScraperResponse$scraperId": "

The generated ID of the scraper that was just created.

", + "DeleteScraperRequest$scraperId": "

The ID of the scraper to delete.

", + "DeleteScraperResponse$scraperId": "

The ID of the scraper that was deleted.

", + "DescribeScraperRequest$scraperId": "

The IDs of the scraper to describe.

", + "ScraperDescription$scraperId": "

Unique string identifying this scraper.

", + "ScraperSummary$scraperId": "

Unique string identifying this scraper.

" + } + }, + "ScraperStatus": { + "base": "

Represents the status of a scraper.

", + "refs": { + "CreateScraperResponse$status": "

The status of the scraper that was just created (usually CREATING).

", + "DeleteScraperResponse$status": "

The status of the scraper that is being deleted.

", + "ScraperDescription$status": "

The status of this scraper.

", + "ScraperSummary$status": "

The status of this scraper.

" + } + }, + "ScraperStatusCode": { + "base": "

State of a scraper.

", + "refs": { + "ScraperStatus$statusCode": "

Status code of this scraper.

" + } + }, + "ScraperSummary": { + "base": "

Represents a summary of the properties of a scraper.

", + "refs": { + "ScraperSummaryList$member": null + } + }, + "ScraperSummaryList": { + "base": "

A list of scraper summaries.

", + "refs": { + "ListScrapersResponse$scrapers": "

The list of scrapers, filtered down if a set of filters was provided in the request.

" + } + }, + "SecurityGroupId": { + "base": "

ID of a VPC security group.

", + "refs": { + "SecurityGroupIds$member": null + } + }, + "SecurityGroupIds": { + "base": "

A list of security group IDs specified for VPC configuration.

", + "refs": { + "EksConfiguration$securityGroupIds": "

A list of security group IDs specified for VPC configuration.

" + } + }, "ServiceQuotaExceededException": { "base": "

Request would cause a service quota to be exceeded.

", "refs": { } }, + "Source": { + "base": "

A representation of a source that a scraper can discover and collect metrics from.

", + "refs": { + "CreateScraperRequest$source": "

The source that the scraper will be discovering and collecting metrics from.

", + "ScraperDescription$source": "

The source that the scraper is discovering and collecting metrics from.

", + "ScraperSummary$source": "

The source that the scraper is discovering and collecting metrics from.

" + } + }, + "StatusReason": { + "base": "

The reason for failure if any.

", + "refs": { + "ScraperDescription$statusReason": "

The reason for failure if any.

", + "ScraperSummary$statusReason": "

The reason for failure if any.

" + } + }, "String": { "base": null, "refs": { @@ -395,6 +618,18 @@ "ValidationExceptionField$message": "

Message describing why the field failed validation.

" } }, + "SubnetId": { + "base": "

ID of a VPC subnet.

", + "refs": { + "SubnetIds$member": null + } + }, + "SubnetIds": { + "base": "

A list of subnet IDs specified for VPC configuration.

", + "refs": { + "EksConfiguration$subnetIds": "

A list of subnet IDs specified for VPC configuration.

" + } + }, "TagKey": { "base": null, "refs": { @@ -413,12 +648,16 @@ "refs": { "CreateRuleGroupsNamespaceRequest$tags": "

Optional, user-provided tags for this rule groups namespace.

", "CreateRuleGroupsNamespaceResponse$tags": "

The tags of this rule groups namespace.

", + "CreateScraperRequest$tags": "

Optional, user-provided tags for this scraper.

", + "CreateScraperResponse$tags": "

The tags of this scraper.

", "CreateWorkspaceRequest$tags": "

Optional, user-provided tags for this workspace.

", "CreateWorkspaceResponse$tags": "

The tags of this workspace.

", "ListTagsForResourceResponse$tags": null, "PutRuleGroupsNamespaceResponse$tags": "

The tags of this rule groups namespace.

", "RuleGroupsNamespaceDescription$tags": "

The tags of this rule groups namespace.

", "RuleGroupsNamespaceSummary$tags": "

The tags of this rule groups namespace.

", + "ScraperDescription$tags": "

The tags of this scraper.

", + "ScraperSummary$tags": "

The tags of this scraper.

", "TagResourceRequest$tags": null, "WorkspaceDescription$tags": "

The tags of this workspace.

", "WorkspaceSummary$tags": "

The tags of this workspace.

" @@ -456,6 +695,10 @@ "RuleGroupsNamespaceDescription$modifiedAt": "

The time when the rule groups namespace was modified.

", "RuleGroupsNamespaceSummary$createdAt": "

The time when the rule groups namespace was created.

", "RuleGroupsNamespaceSummary$modifiedAt": "

The time when the rule groups namespace was modified.

", + "ScraperDescription$createdAt": "

The time when the scraper was created.

", + "ScraperDescription$lastModifiedAt": "

The time when the scraper was last modified.

", + "ScraperSummary$createdAt": "

The time when the scraper was created.

", + "ScraperSummary$lastModifiedAt": "

The time when the scraper was last modified.

", "WorkspaceDescription$createdAt": "

The time when the workspace was created.

", "WorkspaceSummary$createdAt": "

The time when the workspace was created.

" } @@ -527,6 +770,7 @@ "WorkspaceArn": { "base": "

An ARN identifying a Workspace.

", "refs": { + "AmpConfiguration$workspaceArn": "

The ARN of an AMP workspace.

", "CreateWorkspaceResponse$arn": "

The ARN of the workspace that was just created.

", "WorkspaceDescription$arn": "

The Amazon Resource Name (ARN) of this workspace.

", "WorkspaceSummary$arn": "

The AmazonResourceName of this workspace.

" diff --git a/apis/amp/2020-08-01/endpoint-rule-set-1.json b/apis/amp/2020-08-01/endpoint-rule-set-1.json index 680cfa26fdb..669a33f162f 100644 --- a/apis/amp/2020-08-01/endpoint-rule-set-1.json +++ b/apis/amp/2020-08-01/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/amp/2020-08-01/paginators-1.json b/apis/amp/2020-08-01/paginators-1.json index da0d708baa1..e90e06b743e 100644 --- a/apis/amp/2020-08-01/paginators-1.json +++ b/apis/amp/2020-08-01/paginators-1.json @@ -6,6 +6,12 @@ "limit_key": "maxResults", "result_key": "ruleGroupsNamespaces" }, + "ListScrapers": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "scrapers" + }, "ListWorkspaces": { "input_token": "nextToken", "output_token": "nextToken", diff --git a/apis/amp/2020-08-01/waiters-2.json b/apis/amp/2020-08-01/waiters-2.json index db06c33b1d9..93d8cd640ad 100644 --- a/apis/amp/2020-08-01/waiters-2.json +++ b/apis/amp/2020-08-01/waiters-2.json @@ -1,6 +1,39 @@ { "version" : 2, "waiters" : { + "ScraperActive" : { + "description" : "Wait until a scraper reaches ACTIVE status", + "delay" : 2, + "maxAttempts" : 60, + "operation" : "DescribeScraper", + "acceptors" : [ { + "matcher" : "path", + "argument" : "scraper.status.statusCode", + "state" : "success", + "expected" : "ACTIVE" + }, { + "matcher" : "path", + "argument" : "scraper.status.statusCode", + "state" : "failure", + "expected" : "CREATION_FAILED" + } ] + }, + "ScraperDeleted" : { + "description" : "Wait until a scraper reaches DELETED status", + "delay" : 2, + "maxAttempts" : 60, + "operation" : "DescribeScraper", + "acceptors" : [ { + "matcher" : "error", + "state" : "success", + "expected" : "ResourceNotFoundException" + }, { + "matcher" : "path", + "argument" : "scraper.status.statusCode", + "state" : "failure", + "expected" : "DELETION_FAILED" + } ] + }, "WorkspaceActive" : { "description" : "Wait until a workspace reaches ACTIVE status", "delay" : 2, diff --git a/apis/bcm-data-exports/2023-11-26/api-2.json b/apis/bcm-data-exports/2023-11-26/api-2.json new file mode 100644 index 00000000000..aede0b80cfb --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/api-2.json @@ -0,0 +1,778 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-11-26", + "endpointPrefix":"bcm-data-exports", + "jsonVersion":"1.1", + "protocol":"json", + "serviceFullName":"AWS Billing and Cost Management Data Exports", + "serviceId":"BCM Data Exports", + "signatureVersion":"v4", + "signingName":"bcm-data-exports", + "targetPrefix":"AWSBillingAndCostManagementDataExports", + "uid":"bcm-data-exports-2023-11-26" + }, + "operations":{ + "CreateExport":{ + "name":"CreateExport", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateExportRequest"}, + "output":{"shape":"CreateExportResponse"}, + "errors":[ + {"shape":"ServiceQuotaExceededException"}, + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "DeleteExport":{ + "name":"DeleteExport", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteExportRequest"}, + "output":{"shape":"DeleteExportResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ], + "idempotent":true + }, + "GetExecution":{ + "name":"GetExecution", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetExecutionRequest"}, + "output":{"shape":"GetExecutionResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "GetExport":{ + "name":"GetExport", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetExportRequest"}, + "output":{"shape":"GetExportResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "GetTable":{ + "name":"GetTable", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetTableRequest"}, + "output":{"shape":"GetTableResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "ListExecutions":{ + "name":"ListExecutions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListExecutionsRequest"}, + "output":{"shape":"ListExecutionsResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "ListExports":{ + "name":"ListExports", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListExportsRequest"}, + "output":{"shape":"ListExportsResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "ListTables":{ + "name":"ListTables", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListTablesRequest"}, + "output":{"shape":"ListTablesResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "ListTagsForResource":{ + "name":"ListTagsForResource", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListTagsForResourceRequest"}, + "output":{"shape":"ListTagsForResourceResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "TagResource":{ + "name":"TagResource", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"TagResourceRequest"}, + "output":{"shape":"TagResourceResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "UntagResource":{ + "name":"UntagResource", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UntagResourceRequest"}, + "output":{"shape":"UntagResourceResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, + "UpdateExport":{ + "name":"UpdateExport", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateExportRequest"}, + "output":{"shape":"UpdateExportResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + } + }, + "shapes":{ + "Arn":{ + "type":"string", + "max":2048, + "min":20, + "pattern":"^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$" + }, + "Column":{ + "type":"structure", + "members":{ + "Description":{"shape":"GenericString"}, + "Name":{"shape":"GenericString"}, + "Type":{"shape":"GenericString"} + } + }, + "ColumnList":{ + "type":"list", + "member":{"shape":"Column"} + }, + "CompressionOption":{ + "type":"string", + "enum":[ + "GZIP", + "PARQUET" + ] + }, + "CreateExportRequest":{ + "type":"structure", + "required":["Export"], + "members":{ + "Export":{"shape":"Export"}, + "ResourceTags":{"shape":"ResourceTagList"} + } + }, + "CreateExportResponse":{ + "type":"structure", + "members":{ + "ExportArn":{"shape":"Arn"} + } + }, + "DataQuery":{ + "type":"structure", + "required":["QueryStatement"], + "members":{ + "QueryStatement":{"shape":"QueryStatement"}, + "TableConfigurations":{"shape":"TableConfigurations"} + } + }, + "DeleteExportRequest":{ + "type":"structure", + "required":["ExportArn"], + "members":{ + "ExportArn":{"shape":"Arn"} + } + }, + "DeleteExportResponse":{ + "type":"structure", + "members":{ + "ExportArn":{"shape":"Arn"} + } + }, + "DestinationConfigurations":{ + "type":"structure", + "required":["S3Destination"], + "members":{ + "S3Destination":{"shape":"S3Destination"} + } + }, + "ExecutionReference":{ + "type":"structure", + "required":[ + "ExecutionId", + "ExecutionStatus" + ], + "members":{ + "ExecutionId":{"shape":"GenericString"}, + "ExecutionStatus":{"shape":"ExecutionStatus"} + } + }, + "ExecutionReferenceList":{ + "type":"list", + "member":{"shape":"ExecutionReference"} + }, + "ExecutionStatus":{ + "type":"structure", + "members":{ + "CompletedAt":{"shape":"SyntheticTimestamp_date_time"}, + "CreatedAt":{"shape":"SyntheticTimestamp_date_time"}, + "LastUpdatedAt":{"shape":"SyntheticTimestamp_date_time"}, + "StatusCode":{"shape":"ExecutionStatusCode"}, + "StatusReason":{"shape":"ExecutionStatusReason"} + } + }, + "ExecutionStatusCode":{ + "type":"string", + "enum":[ + "INITIATION_IN_PROCESS", + "QUERY_QUEUED", + "QUERY_IN_PROCESS", + "QUERY_FAILURE", + "DELIVERY_IN_PROCESS", + "DELIVERY_SUCCESS", + "DELIVERY_FAILURE" + ] + }, + "ExecutionStatusReason":{ + "type":"string", + "enum":[ + "INSUFFICIENT_PERMISSION", + "BILL_OWNER_CHANGED", + "INTERNAL_FAILURE" + ] + }, + "Export":{ + "type":"structure", + "required":[ + "DataQuery", + "DestinationConfigurations", + "Name", + "RefreshCadence" + ], + "members":{ + "DataQuery":{"shape":"DataQuery"}, + "Description":{"shape":"GenericString"}, + "DestinationConfigurations":{"shape":"DestinationConfigurations"}, + "ExportArn":{"shape":"Arn"}, + "Name":{"shape":"ExportName"}, + "RefreshCadence":{"shape":"RefreshCadence"} + } + }, + "ExportName":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^[0-9A-Za-z!\\-_.*\\'()]+$" + }, + "ExportReference":{ + "type":"structure", + "required":[ + "ExportArn", + "ExportName", + "ExportStatus" + ], + "members":{ + "ExportArn":{"shape":"Arn"}, + "ExportName":{"shape":"ExportName"}, + "ExportStatus":{"shape":"ExportStatus"} + } + }, + "ExportReferenceList":{ + "type":"list", + "member":{"shape":"ExportReference"} + }, + "ExportStatus":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"SyntheticTimestamp_date_time"}, + "LastRefreshedAt":{"shape":"SyntheticTimestamp_date_time"}, + "LastUpdatedAt":{"shape":"SyntheticTimestamp_date_time"}, + "StatusCode":{"shape":"ExportStatusCode"}, + "StatusReason":{"shape":"ExecutionStatusReason"} + } + }, + "ExportStatusCode":{ + "type":"string", + "enum":[ + "HEALTHY", + "UNHEALTHY" + ] + }, + "FormatOption":{ + "type":"string", + "enum":[ + "TEXT_OR_CSV", + "PARQUET" + ] + }, + "FrequencyOption":{ + "type":"string", + "enum":["SYNCHRONOUS"] + }, + "GenericString":{ + "type":"string", + "max":1024, + "min":0, + "pattern":"^[\\S\\s]*$" + }, + "GenericStringList":{ + "type":"list", + "member":{"shape":"GenericString"} + }, + "GetExecutionRequest":{ + "type":"structure", + "required":[ + "ExecutionId", + "ExportArn" + ], + "members":{ + "ExecutionId":{"shape":"GenericString"}, + "ExportArn":{"shape":"Arn"} + } + }, + "GetExecutionResponse":{ + "type":"structure", + "members":{ + "ExecutionId":{"shape":"GenericString"}, + "ExecutionStatus":{"shape":"ExecutionStatus"}, + "Export":{"shape":"Export"} + } + }, + "GetExportRequest":{ + "type":"structure", + "required":["ExportArn"], + "members":{ + "ExportArn":{"shape":"Arn"} + } + }, + "GetExportResponse":{ + "type":"structure", + "members":{ + "Export":{"shape":"Export"}, + "ExportStatus":{"shape":"ExportStatus"} + } + }, + "GetTableRequest":{ + "type":"structure", + "required":["TableName"], + "members":{ + "TableName":{"shape":"TableName"}, + "TableProperties":{"shape":"TableProperties"} + } + }, + "GetTableResponse":{ + "type":"structure", + "members":{ + "Description":{"shape":"GenericString"}, + "Schema":{"shape":"ColumnList"}, + "TableName":{"shape":"TableName"}, + "TableProperties":{"shape":"TableProperties"} + } + }, + "InternalServerException":{ + "type":"structure", + "required":["Message"], + "members":{ + "Message":{"shape":"GenericString"} + }, + "exception":true, + "fault":true + }, + "ListExecutionsRequest":{ + "type":"structure", + "required":["ExportArn"], + "members":{ + "ExportArn":{"shape":"Arn"}, + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"NextPageToken"} + } + }, + "ListExecutionsResponse":{ + "type":"structure", + "members":{ + "Executions":{"shape":"ExecutionReferenceList"}, + "NextToken":{"shape":"NextPageToken"} + } + }, + "ListExportsRequest":{ + "type":"structure", + "members":{ + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"NextPageToken"} + } + }, + "ListExportsResponse":{ + "type":"structure", + "members":{ + "Exports":{"shape":"ExportReferenceList"}, + "NextToken":{"shape":"NextPageToken"} + } + }, + "ListTablesRequest":{ + "type":"structure", + "members":{ + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"NextPageToken"} + } + }, + "ListTablesResponse":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"NextPageToken"}, + "Tables":{"shape":"TableList"} + } + }, + "ListTagsForResourceRequest":{ + "type":"structure", + "required":["ResourceArn"], + "members":{ + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"NextPageToken"}, + "ResourceArn":{"shape":"Arn"} + } + }, + "ListTagsForResourceResponse":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"NextPageToken"}, + "ResourceTags":{"shape":"ResourceTagList"} + } + }, + "MaxResults":{ + "type":"integer", + "box":true, + "min":1 + }, + "NextPageToken":{ + "type":"string", + "max":8192, + "min":0, + "pattern":"^[\\S\\s]*$" + }, + "OverwriteOption":{ + "type":"string", + "enum":[ + "CREATE_NEW_REPORT", + "OVERWRITE_REPORT" + ] + }, + "QueryStatement":{ + "type":"string", + "max":36000, + "min":1, + "pattern":"^[\\S\\s]*$" + }, + "RefreshCadence":{ + "type":"structure", + "required":["Frequency"], + "members":{ + "Frequency":{"shape":"FrequencyOption"} + } + }, + "ResourceNotFoundException":{ + "type":"structure", + "required":[ + "Message", + "ResourceId", + "ResourceType" + ], + "members":{ + "Message":{"shape":"GenericString"}, + "ResourceId":{"shape":"GenericString"}, + "ResourceType":{"shape":"GenericString"} + }, + "exception":true + }, + "ResourceTag":{ + "type":"structure", + "required":[ + "Key", + "Value" + ], + "members":{ + "Key":{"shape":"ResourceTagKey"}, + "Value":{"shape":"ResourceTagValue"} + } + }, + "ResourceTagKey":{ + "type":"string", + "max":128, + "min":1 + }, + "ResourceTagKeyList":{ + "type":"list", + "member":{"shape":"ResourceTagKey"}, + "max":200, + "min":0 + }, + "ResourceTagList":{ + "type":"list", + "member":{"shape":"ResourceTag"}, + "max":200, + "min":0 + }, + "ResourceTagValue":{ + "type":"string", + "max":256, + "min":0 + }, + "S3Destination":{ + "type":"structure", + "required":[ + "S3Bucket", + "S3OutputConfigurations", + "S3Prefix", + "S3Region" + ], + "members":{ + "S3Bucket":{"shape":"GenericString"}, + "S3OutputConfigurations":{"shape":"S3OutputConfigurations"}, + "S3Prefix":{"shape":"GenericString"}, + "S3Region":{"shape":"GenericString"} + } + }, + "S3OutputConfigurations":{ + "type":"structure", + "required":[ + "Compression", + "Format", + "OutputType", + "Overwrite" + ], + "members":{ + "Compression":{"shape":"CompressionOption"}, + "Format":{"shape":"FormatOption"}, + "OutputType":{"shape":"S3OutputType"}, + "Overwrite":{"shape":"OverwriteOption"} + } + }, + "S3OutputType":{ + "type":"string", + "enum":["CUSTOM"] + }, + "ServiceQuotaExceededException":{ + "type":"structure", + "required":[ + "Message", + "QuotaCode", + "ServiceCode" + ], + "members":{ + "Message":{"shape":"GenericString"}, + "QuotaCode":{"shape":"GenericString"}, + "ResourceId":{"shape":"GenericString"}, + "ResourceType":{"shape":"GenericString"}, + "ServiceCode":{"shape":"GenericString"} + }, + "exception":true + }, + "SyntheticTimestamp_date_time":{ + "type":"timestamp", + "timestampFormat":"iso8601" + }, + "Table":{ + "type":"structure", + "members":{ + "Description":{"shape":"GenericString"}, + "TableName":{"shape":"TableName"}, + "TableProperties":{"shape":"TablePropertyDescriptionList"} + } + }, + "TableConfigurations":{ + "type":"map", + "key":{"shape":"TableName"}, + "value":{"shape":"TableProperties"} + }, + "TableList":{ + "type":"list", + "member":{"shape":"Table"} + }, + "TableName":{ + "type":"string", + "max":1024, + "min":0, + "pattern":"^[\\S\\s]*$" + }, + "TableProperties":{ + "type":"map", + "key":{"shape":"TableProperty"}, + "value":{"shape":"GenericString"} + }, + "TableProperty":{ + "type":"string", + "max":1024, + "min":0, + "pattern":"^[\\S\\s]*$" + }, + "TablePropertyDescription":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"GenericString"}, + "Description":{"shape":"GenericString"}, + "Name":{"shape":"GenericString"}, + "ValidValues":{"shape":"GenericStringList"} + } + }, + "TablePropertyDescriptionList":{ + "type":"list", + "member":{"shape":"TablePropertyDescription"} + }, + "TagResourceRequest":{ + "type":"structure", + "required":[ + "ResourceArn", + "ResourceTags" + ], + "members":{ + "ResourceArn":{"shape":"Arn"}, + "ResourceTags":{"shape":"ResourceTagList"} + } + }, + "TagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "ThrottlingException":{ + "type":"structure", + "required":["Message"], + "members":{ + "Message":{"shape":"GenericString"}, + "QuotaCode":{"shape":"GenericString"}, + "ServiceCode":{"shape":"GenericString"} + }, + "exception":true + }, + "UntagResourceRequest":{ + "type":"structure", + "required":[ + "ResourceArn", + "ResourceTagKeys" + ], + "members":{ + "ResourceArn":{"shape":"Arn"}, + "ResourceTagKeys":{"shape":"ResourceTagKeyList"} + } + }, + "UntagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "UpdateExportRequest":{ + "type":"structure", + "required":[ + "Export", + "ExportArn" + ], + "members":{ + "Export":{"shape":"Export"}, + "ExportArn":{"shape":"Arn"} + } + }, + "UpdateExportResponse":{ + "type":"structure", + "members":{ + "ExportArn":{"shape":"Arn"} + } + }, + "ValidationException":{ + "type":"structure", + "required":["Message"], + "members":{ + "Fields":{"shape":"ValidationExceptionFieldList"}, + "Message":{"shape":"GenericString"}, + "Reason":{"shape":"ValidationExceptionReason"} + }, + "exception":true + }, + "ValidationExceptionField":{ + "type":"structure", + "required":[ + "Message", + "Name" + ], + "members":{ + "Message":{"shape":"GenericString"}, + "Name":{"shape":"GenericString"} + } + }, + "ValidationExceptionFieldList":{ + "type":"list", + "member":{"shape":"ValidationExceptionField"} + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "unknownOperation", + "cannotParse", + "fieldValidationFailed", + "other" + ] + } + } +} diff --git a/apis/bcm-data-exports/2023-11-26/docs-2.json b/apis/bcm-data-exports/2023-11-26/docs-2.json new file mode 100644 index 00000000000..ee48c0f148e --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/docs-2.json @@ -0,0 +1,514 @@ +{ + "version": "2.0", + "service": "

You can use the Data Exports API to create customized exports from multiple Amazon Web Services cost management and billing datasets, such as cost and usage data and cost optimization recommendations.

The Data Exports API provides the following endpoint:

", + "operations": { + "CreateExport": "

Creates a data export and specifies the data query, the delivery preference, and any optional resource tags.

A DataQuery consists of both a QueryStatement and TableConfigurations.

The QueryStatement is an SQL statement. Data Exports only supports a limited subset of the SQL syntax. For more information on the SQL syntax that is supported, see Data query. To view the available tables and columns, see the Data Exports table dictionary.

The TableConfigurations is a collection of specified TableProperties for the table being queried in the QueryStatement. TableProperties are additional configurations you can provide to change the data and schema of a table. Each table can have different TableProperties. However, tables are not required to have any TableProperties. Each table property has a default value that it assumes if not specified. For more information on table configurations, see Data query. To view the table properties available for each table, see the Data Exports table dictionary or use the ListTables API to get a response of all tables and their available properties.

", + "DeleteExport": "

Deletes an existing data export.

", + "GetExecution": "

Exports data based on the source data update.

", + "GetExport": "

Views the definition of an existing data export.

", + "GetTable": "

Returns the metadata for the specified table and table properties. This includes the list of columns in the table schema, their data types, and column descriptions.

", + "ListExecutions": "

Lists the historical executions for the export.

", + "ListExports": "

Lists all data export definitions.

", + "ListTables": "

Lists all available tables in data exports.

", + "ListTagsForResource": "

List tags associated with an existing data export.

", + "TagResource": "

Adds tags for an existing data export definition.

", + "UntagResource": "

Deletes tags associated with an existing data export definition.

", + "UpdateExport": "

Updates an existing data export by overwriting all export parameters. All export parameters must be provided in the UpdateExport request.

" + }, + "shapes": { + "Arn": { + "base": null, + "refs": { + "CreateExportResponse$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "DeleteExportRequest$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "DeleteExportResponse$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "Export$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "ExportReference$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "GetExecutionRequest$ExportArn": "

The Amazon Resource Name (ARN) of the Export object that generated this specific execution.

", + "GetExportRequest$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "ListExecutionsRequest$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "ListTagsForResourceRequest$ResourceArn": "

The unique identifier for the resource.

", + "TagResourceRequest$ResourceArn": "

The unique identifier for the resource.

", + "UntagResourceRequest$ResourceArn": "

The unique identifier for the resource.

", + "UpdateExportRequest$ExportArn": "

The Amazon Resource Name (ARN) for this export.

", + "UpdateExportResponse$ExportArn": "

The Amazon Resource Name (ARN) for this export.

" + } + }, + "Column": { + "base": "

Includes basic information for a data column such as its description, name, and type.

", + "refs": { + "ColumnList$member": null + } + }, + "ColumnList": { + "base": null, + "refs": { + "GetTableResponse$Schema": "

The schema of the table.

" + } + }, + "CompressionOption": { + "base": null, + "refs": { + "S3OutputConfigurations$Compression": "

The compression type for the data export.

" + } + }, + "CreateExportRequest": { + "base": null, + "refs": { + } + }, + "CreateExportResponse": { + "base": null, + "refs": { + } + }, + "DataQuery": { + "base": "

The SQL query of column selections and row filters from the data table you want.

", + "refs": { + "Export$DataQuery": "

The data query for this specific data export.

" + } + }, + "DeleteExportRequest": { + "base": null, + "refs": { + } + }, + "DeleteExportResponse": { + "base": null, + "refs": { + } + }, + "DestinationConfigurations": { + "base": "

The destinations used for data exports.

", + "refs": { + "Export$DestinationConfigurations": "

The destination configuration for this specific data export.

" + } + }, + "ExecutionReference": { + "base": "

The reference for the data export update.

", + "refs": { + "ExecutionReferenceList$member": null + } + }, + "ExecutionReferenceList": { + "base": null, + "refs": { + "ListExecutionsResponse$Executions": "

The list of executions.

" + } + }, + "ExecutionStatus": { + "base": "

The status of the execution.

", + "refs": { + "ExecutionReference$ExecutionStatus": "

The status of this specific execution.

", + "GetExecutionResponse$ExecutionStatus": "

The status of this specific execution.

" + } + }, + "ExecutionStatusCode": { + "base": null, + "refs": { + "ExecutionStatus$StatusCode": "

The code for the status of the execution.

" + } + }, + "ExecutionStatusReason": { + "base": null, + "refs": { + "ExecutionStatus$StatusReason": "

The reason for the failed status.

", + "ExportStatus$StatusReason": "

The description for the status code.

" + } + }, + "Export": { + "base": "

The details that are available for an export.

", + "refs": { + "CreateExportRequest$Export": "

The details of the export, including data query, name, description, and destination configuration.

", + "GetExecutionResponse$Export": "

The export data for this specific execution. This export data is a snapshot from when the execution was generated. The data could be different from the current export data if the export was updated since the execution was generated.

", + "GetExportResponse$Export": "

The data for this specific export.

", + "UpdateExportRequest$Export": "

The name and query details for the export.

" + } + }, + "ExportName": { + "base": null, + "refs": { + "Export$Name": "

The name of this specific data export.

", + "ExportReference$ExportName": "

The name of this specific data export.

" + } + }, + "ExportReference": { + "base": "

The reference details for a given export.

", + "refs": { + "ExportReferenceList$member": null + } + }, + "ExportReferenceList": { + "base": null, + "refs": { + "ListExportsResponse$Exports": "

The details of the exports, including name and export status.

" + } + }, + "ExportStatus": { + "base": "

The status of the data export.

", + "refs": { + "ExportReference$ExportStatus": "

The status of this specific data export.

", + "GetExportResponse$ExportStatus": "

The status of this specific export.

" + } + }, + "ExportStatusCode": { + "base": null, + "refs": { + "ExportStatus$StatusCode": "

The status code for the request.

" + } + }, + "FormatOption": { + "base": null, + "refs": { + "S3OutputConfigurations$Format": "

The file format for the data export.

" + } + }, + "FrequencyOption": { + "base": null, + "refs": { + "RefreshCadence$Frequency": "

The frequency that data exports are updated. The export refreshes each time the source data updates, up to three times daily.

" + } + }, + "GenericString": { + "base": null, + "refs": { + "Column$Description": "

The description for a column.

", + "Column$Name": "

The column name.

", + "Column$Type": "

The kind of data a column stores.

", + "ExecutionReference$ExecutionId": "

The ID for this specific execution.

", + "Export$Description": "

The description for this specific data export.

", + "GenericStringList$member": null, + "GetExecutionRequest$ExecutionId": "

The ID for this specific execution.

", + "GetExecutionResponse$ExecutionId": "

The ID for this specific execution.

", + "GetTableResponse$Description": "

The table description.

", + "InternalServerException$Message": null, + "ResourceNotFoundException$Message": null, + "ResourceNotFoundException$ResourceId": "

The identifier of the resource that was not found.

", + "ResourceNotFoundException$ResourceType": "

The type of the resource that was not found.

", + "S3Destination$S3Bucket": "

The name of the Amazon S3 bucket used as the destination of a data export file.

", + "S3Destination$S3Prefix": "

The S3 path prefix you want prepended to the name of your data export.

", + "S3Destination$S3Region": "

The S3 bucket Region.

", + "ServiceQuotaExceededException$Message": null, + "ServiceQuotaExceededException$QuotaCode": "

The quota code that was exceeded.

", + "ServiceQuotaExceededException$ResourceId": "

The identifier of the resource that exceeded quota.

", + "ServiceQuotaExceededException$ResourceType": "

The type of the resource that exceeded quota.

", + "ServiceQuotaExceededException$ServiceCode": "

The service code that exceeded quota. It will always be “AWSBillingAndCostManagementDataExports”.

", + "Table$Description": "

The description for the table.

", + "TableProperties$value": null, + "TablePropertyDescription$DefaultValue": "

The default value for the table.

", + "TablePropertyDescription$Description": "

The description for the table.

", + "TablePropertyDescription$Name": "

The name of the table.

", + "ThrottlingException$Message": null, + "ThrottlingException$QuotaCode": "

The quota code that exceeded the throttling limit.

", + "ThrottlingException$ServiceCode": "

The service code that exceeded the throttling limit. It will always be “AWSBillingAndCostManagementDataExports”.

", + "ValidationException$Message": null, + "ValidationExceptionField$Message": "

A message with the reason for the validation exception error.

", + "ValidationExceptionField$Name": "

The field name where the invalid entry was detected.

" + } + }, + "GenericStringList": { + "base": null, + "refs": { + "TablePropertyDescription$ValidValues": "

The valid values for the table.

" + } + }, + "GetExecutionRequest": { + "base": null, + "refs": { + } + }, + "GetExecutionResponse": { + "base": null, + "refs": { + } + }, + "GetExportRequest": { + "base": null, + "refs": { + } + }, + "GetExportResponse": { + "base": null, + "refs": { + } + }, + "GetTableRequest": { + "base": null, + "refs": { + } + }, + "GetTableResponse": { + "base": null, + "refs": { + } + }, + "InternalServerException": { + "base": "

An error on the server occurred during the processing of your request. Try again later.

", + "refs": { + } + }, + "ListExecutionsRequest": { + "base": null, + "refs": { + } + }, + "ListExecutionsResponse": { + "base": null, + "refs": { + } + }, + "ListExportsRequest": { + "base": null, + "refs": { + } + }, + "ListExportsResponse": { + "base": null, + "refs": { + } + }, + "ListTablesRequest": { + "base": null, + "refs": { + } + }, + "ListTablesResponse": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceRequest": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceResponse": { + "base": null, + "refs": { + } + }, + "MaxResults": { + "base": null, + "refs": { + "ListExecutionsRequest$MaxResults": "

The maximum number of objects that are returned for the request.

", + "ListExportsRequest$MaxResults": "

The maximum number of objects that are returned for the request.

", + "ListTablesRequest$MaxResults": "

The maximum number of objects that are returned for the request.

", + "ListTagsForResourceRequest$MaxResults": "

The maximum number of objects that are returned for the request.

" + } + }, + "NextPageToken": { + "base": null, + "refs": { + "ListExecutionsRequest$NextToken": "

The token to retrieve the next set of results.

", + "ListExecutionsResponse$NextToken": "

The token to retrieve the next set of results.

", + "ListExportsRequest$NextToken": "

The token to retrieve the next set of results.

", + "ListExportsResponse$NextToken": "

The token to retrieve the next set of results.

", + "ListTablesRequest$NextToken": "

The token to retrieve the next set of results.

", + "ListTablesResponse$NextToken": "

The token to retrieve the next set of results.

", + "ListTagsForResourceRequest$NextToken": "

The token to retrieve the next set of results.

", + "ListTagsForResourceResponse$NextToken": "

The token to retrieve the next set of results.

" + } + }, + "OverwriteOption": { + "base": null, + "refs": { + "S3OutputConfigurations$Overwrite": "

The rule to follow when generating a version of the data export file. You have the choice to overwrite the previous version or to be delivered in addition to the previous versions. Overwriting exports can save on Amazon S3 storage costs. Creating new export versions allows you to track the changes in cost and usage data over time.

" + } + }, + "QueryStatement": { + "base": null, + "refs": { + "DataQuery$QueryStatement": "

The query statement.

" + } + }, + "RefreshCadence": { + "base": "

The cadence for Amazon Web Services to update the data export in your S3 bucket.

", + "refs": { + "Export$RefreshCadence": "

The cadence for Amazon Web Services to update the export in your S3 bucket.

" + } + }, + "ResourceNotFoundException": { + "base": "

The specified Amazon Resource Name (ARN) in the request doesn't exist.

", + "refs": { + } + }, + "ResourceTag": { + "base": "

The tag structure that contains a tag key and value.

", + "refs": { + "ResourceTagList$member": null + } + }, + "ResourceTagKey": { + "base": null, + "refs": { + "ResourceTag$Key": "

The key that's associated with the tag.

", + "ResourceTagKeyList$member": null + } + }, + "ResourceTagKeyList": { + "base": null, + "refs": { + "UntagResourceRequest$ResourceTagKeys": "

The tag keys that are associated with the resource ARN.

" + } + }, + "ResourceTagList": { + "base": null, + "refs": { + "CreateExportRequest$ResourceTags": "

An optional list of tags to associate with the specified export. Each tag consists of a key and a value, and each key must be unique for the resource.

", + "ListTagsForResourceResponse$ResourceTags": "

An optional list of tags to associate with the specified export. Each tag consists of a key and a value, and each key must be unique for the resource.

", + "TagResourceRequest$ResourceTags": "

The tags to associate with the resource. Each tag consists of a key and a value, and each key must be unique for the resource.

" + } + }, + "ResourceTagValue": { + "base": null, + "refs": { + "ResourceTag$Value": "

The value that's associated with the tag.

" + } + }, + "S3Destination": { + "base": "

Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a data exports file.

", + "refs": { + "DestinationConfigurations$S3Destination": "

An object that describes the destination of the data exports file.

" + } + }, + "S3OutputConfigurations": { + "base": "

The compression type, file format, and overwrite preference for the data export.

", + "refs": { + "S3Destination$S3OutputConfigurations": "

The output configuration for the data export.

" + } + }, + "S3OutputType": { + "base": null, + "refs": { + "S3OutputConfigurations$OutputType": "

The output type for the data export.

" + } + }, + "ServiceQuotaExceededException": { + "base": "

You've reached the limit on the number of resources you can create, or exceeded the size of an individual resource.

", + "refs": { + } + }, + "SyntheticTimestamp_date_time": { + "base": null, + "refs": { + "ExecutionStatus$CompletedAt": "

The time when the execution was completed.

", + "ExecutionStatus$CreatedAt": "

The time when the execution was created.

", + "ExecutionStatus$LastUpdatedAt": "

The time when the execution was last updated.

", + "ExportStatus$CreatedAt": "

The timestamp of when the export was created.

", + "ExportStatus$LastRefreshedAt": "

The timestamp of when the export was last generated.

", + "ExportStatus$LastUpdatedAt": "

The timestamp of when the export was updated.

" + } + }, + "Table": { + "base": "

The details for the data export table.

", + "refs": { + "TableList$member": null + } + }, + "TableConfigurations": { + "base": null, + "refs": { + "DataQuery$TableConfigurations": "

The table configuration.

" + } + }, + "TableList": { + "base": null, + "refs": { + "ListTablesResponse$Tables": "

The list of tables.

" + } + }, + "TableName": { + "base": null, + "refs": { + "GetTableRequest$TableName": "

The name of the table.

", + "GetTableResponse$TableName": "

The name of the table.

", + "Table$TableName": "

The name of the table.

", + "TableConfigurations$key": null + } + }, + "TableProperties": { + "base": null, + "refs": { + "GetTableRequest$TableProperties": "

TableProperties are additional configurations you can provide to change the data and schema of a table. Each table can have different TableProperties. Tables are not required to have any TableProperties. Each table property has a default value that it assumes if not specified.

", + "GetTableResponse$TableProperties": "

TableProperties are additional configurations you can provide to change the data and schema of a table. Each table can have different TableProperties. Tables are not required to have any TableProperties. Each table property has a default value that it assumes if not specified.

", + "TableConfigurations$value": null + } + }, + "TableProperty": { + "base": null, + "refs": { + "TableProperties$key": null + } + }, + "TablePropertyDescription": { + "base": "

The properties for the data export table.

", + "refs": { + "TablePropertyDescriptionList$member": null + } + }, + "TablePropertyDescriptionList": { + "base": null, + "refs": { + "Table$TableProperties": "

The properties for the table.

" + } + }, + "TagResourceRequest": { + "base": null, + "refs": { + } + }, + "TagResourceResponse": { + "base": null, + "refs": { + } + }, + "ThrottlingException": { + "base": "

The request was denied due to request throttling.

", + "refs": { + } + }, + "UntagResourceRequest": { + "base": null, + "refs": { + } + }, + "UntagResourceResponse": { + "base": null, + "refs": { + } + }, + "UpdateExportRequest": { + "base": null, + "refs": { + } + }, + "UpdateExportResponse": { + "base": null, + "refs": { + } + }, + "ValidationException": { + "base": "

The input fails to satisfy the constraints specified by an Amazon Web Services service.

", + "refs": { + } + }, + "ValidationExceptionField": { + "base": "

The input failed to meet the constraints specified by the Amazon Web Services service in a specified field.

", + "refs": { + "ValidationExceptionFieldList$member": null + } + }, + "ValidationExceptionFieldList": { + "base": null, + "refs": { + "ValidationException$Fields": "

The list of fields that are invalid.

" + } + }, + "ValidationExceptionReason": { + "base": null, + "refs": { + "ValidationException$Reason": "

The reason for the validation exception.

" + } + } + } +} diff --git a/apis/bcm-data-exports/2023-11-26/endpoint-rule-set-1.json b/apis/bcm-data-exports/2023-11-26/endpoint-rule-set-1.json new file mode 100644 index 00000000000..6900cef88cf --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/endpoint-rule-set-1.json @@ -0,0 +1,338 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] + }, + "aws" + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports-fips.{Region}.api.aws", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports.us-east-1.api.aws", + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "bcm-data-exports", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://bcm-data-exports.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ] +} \ No newline at end of file diff --git a/apis/bcm-data-exports/2023-11-26/endpoint-tests-1.json b/apis/bcm-data-exports/2023-11-26/endpoint-tests-1.json new file mode 100644 index 00000000000..a19159559cc --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/endpoint-tests-1.json @@ -0,0 +1,149 @@ +{ + "testCases": [ + { + "documentation": "For region aws-global with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "bcm-data-exports", + "signingRegion": "us-east-1" + } + ] + }, + "url": "https://bcm-data-exports.us-east-1.api.aws" + } + }, + "params": { + "Region": "aws-global", + "UseFIPS": false + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://bcm-data-exports-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "bcm-data-exports", + "signingRegion": "us-east-1" + } + ] + }, + "url": "https://bcm-data-exports.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://bcm-data-exports-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://bcm-data-exports.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://bcm-data-exports-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://bcm-data-exports.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/bcm-data-exports/2023-11-26/examples-1.json b/apis/bcm-data-exports/2023-11-26/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/bcm-data-exports/2023-11-26/paginators-1.json b/apis/bcm-data-exports/2023-11-26/paginators-1.json new file mode 100644 index 00000000000..3d03805cd9c --- /dev/null +++ b/apis/bcm-data-exports/2023-11-26/paginators-1.json @@ -0,0 +1,22 @@ +{ + "pagination": { + "ListExecutions": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Executions" + }, + "ListExports": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Exports" + }, + "ListTables": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Tables" + } + } +} diff --git a/apis/cloudtrail/2013-11-01/api-2.json b/apis/cloudtrail/2013-11-01/api-2.json index 556b88aeda8..d1865c09cbe 100644 --- a/apis/cloudtrail/2013-11-01/api-2.json +++ b/apis/cloudtrail/2013-11-01/api-2.json @@ -194,7 +194,9 @@ {"shape":"NotOrganizationMasterAccountException"}, {"shape":"NoManagementAccountSLRExistsException"}, {"shape":"ChannelExistsForEDSException"}, - {"shape":"InsufficientDependencyServiceAccessPermissionException"} + {"shape":"InsufficientDependencyServiceAccessPermissionException"}, + {"shape":"ConflictException"}, + {"shape":"EventDataStoreFederationEnabledException"} ] }, "DeleteResourcePolicy":{ @@ -297,6 +299,57 @@ ], "idempotent":true }, + "DisableFederation":{ + "name":"DisableFederation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisableFederationRequest"}, + "output":{"shape":"DisableFederationResponse"}, + "errors":[ + {"shape":"EventDataStoreARNInvalidException"}, + {"shape":"EventDataStoreNotFoundException"}, + {"shape":"InvalidParameterException"}, + {"shape":"InactiveEventDataStoreException"}, + {"shape":"OperationNotPermittedException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"CloudTrailAccessNotEnabledException"}, + {"shape":"InsufficientDependencyServiceAccessPermissionException"}, + {"shape":"NotOrganizationMasterAccountException"}, + {"shape":"NoManagementAccountSLRExistsException"}, + {"shape":"OrganizationsNotInUseException"}, + {"shape":"OrganizationNotInAllFeaturesModeException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"AccessDeniedException"} + ] + }, + "EnableFederation":{ + "name":"EnableFederation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnableFederationRequest"}, + "output":{"shape":"EnableFederationResponse"}, + "errors":[ + {"shape":"EventDataStoreARNInvalidException"}, + {"shape":"EventDataStoreNotFoundException"}, + {"shape":"InvalidParameterException"}, + {"shape":"InactiveEventDataStoreException"}, + {"shape":"OperationNotPermittedException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"CloudTrailAccessNotEnabledException"}, + {"shape":"InsufficientDependencyServiceAccessPermissionException"}, + {"shape":"NotOrganizationMasterAccountException"}, + {"shape":"NoManagementAccountSLRExistsException"}, + {"shape":"OrganizationsNotInUseException"}, + {"shape":"OrganizationNotInAllFeaturesModeException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"EventDataStoreFederationEnabledException"} + ] + }, "GetChannel":{ "name":"GetChannel", "http":{ @@ -1020,6 +1073,12 @@ } }, "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + }, + "exception":true + }, "AccountHasOngoingImportException":{ "type":"structure", "members":{ @@ -1211,6 +1270,12 @@ }, "exception":true }, + "ConcurrentModificationException":{ + "type":"structure", + "members":{ + }, + "exception":true + }, "ConflictException":{ "type":"structure", "members":{ @@ -1479,6 +1544,39 @@ "max":200, "min":1 }, + "DisableFederationRequest":{ + "type":"structure", + "required":["EventDataStore"], + "members":{ + "EventDataStore":{"shape":"EventDataStoreArn"} + } + }, + "DisableFederationResponse":{ + "type":"structure", + "members":{ + "EventDataStoreArn":{"shape":"EventDataStoreArn"}, + "FederationStatus":{"shape":"FederationStatus"} + } + }, + "EnableFederationRequest":{ + "type":"structure", + "required":[ + "EventDataStore", + "FederationRoleArn" + ], + "members":{ + "EventDataStore":{"shape":"EventDataStoreArn"}, + "FederationRoleArn":{"shape":"FederationRoleArn"} + } + }, + "EnableFederationResponse":{ + "type":"structure", + "members":{ + "EventDataStoreArn":{"shape":"EventDataStoreArn"}, + "FederationStatus":{"shape":"FederationStatus"}, + "FederationRoleArn":{"shape":"FederationRoleArn"} + } + }, "ErrorMessage":{ "type":"string", "max":1000, @@ -1568,6 +1666,12 @@ "min":3, "pattern":"^[a-zA-Z0-9._/\\-:]+$" }, + "EventDataStoreFederationEnabledException":{ + "type":"structure", + "members":{ + }, + "exception":true + }, "EventDataStoreHasOngoingImportException":{ "type":"structure", "members":{ @@ -1640,6 +1744,21 @@ "type":"list", "member":{"shape":"String"} }, + "FederationRoleArn":{ + "type":"string", + "max":125, + "min":3, + "pattern":"^[a-zA-Z0-9._/\\-:@=\\+,\\.]+$" + }, + "FederationStatus":{ + "type":"string", + "enum":[ + "ENABLING", + "ENABLED", + "DISABLING", + "DISABLED" + ] + }, "GetChannelRequest":{ "type":"structure", "required":["Channel"], @@ -1679,7 +1798,9 @@ "CreatedTimestamp":{"shape":"Date"}, "UpdatedTimestamp":{"shape":"Date"}, "KmsKeyId":{"shape":"EventDataStoreKmsKeyId"}, - "BillingMode":{"shape":"BillingMode"} + "BillingMode":{"shape":"BillingMode"}, + "FederationStatus":{"shape":"FederationStatus"}, + "FederationRoleArn":{"shape":"FederationRoleArn"} } }, "GetEventSelectorsRequest":{ @@ -3009,7 +3130,9 @@ "CreatedTimestamp":{"shape":"Date"}, "UpdatedTimestamp":{"shape":"Date"}, "KmsKeyId":{"shape":"EventDataStoreKmsKeyId"}, - "BillingMode":{"shape":"BillingMode"} + "BillingMode":{"shape":"BillingMode"}, + "FederationStatus":{"shape":"FederationStatus"}, + "FederationRoleArn":{"shape":"FederationRoleArn"} } }, "UpdateTrailRequest":{ diff --git a/apis/cloudtrail/2013-11-01/docs-2.json b/apis/cloudtrail/2013-11-01/docs-2.json index adb707f25de..270e85c4364 100644 --- a/apis/cloudtrail/2013-11-01/docs-2.json +++ b/apis/cloudtrail/2013-11-01/docs-2.json @@ -8,12 +8,14 @@ "CreateEventDataStore": "

Creates a new event data store.

", "CreateTrail": "

Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket.

", "DeleteChannel": "

Deletes a channel.

", - "DeleteEventDataStore": "

Disables the event data store specified by EventDataStore, which accepts an event data store ARN. After you run DeleteEventDataStore, the event data store enters a PENDING_DELETION state, and is automatically deleted after a wait period of seven days. TerminationProtectionEnabled must be set to False on the event data store; this operation cannot work if TerminationProtectionEnabled is True.

After you run DeleteEventDataStore on an event data store, you cannot run ListQueries, DescribeQuery, or GetQueryResults on queries that are using an event data store in a PENDING_DELETION state. An event data store in the PENDING_DELETION state does not incur costs.

", + "DeleteEventDataStore": "

Disables the event data store specified by EventDataStore, which accepts an event data store ARN. After you run DeleteEventDataStore, the event data store enters a PENDING_DELETION state, and is automatically deleted after a wait period of seven days. TerminationProtectionEnabled must be set to False on the event data store and the FederationStatus must be DISABLED. You cannot delete an event data store if TerminationProtectionEnabled is True or the FederationStatus is ENABLED.

After you run DeleteEventDataStore on an event data store, you cannot run ListQueries, DescribeQuery, or GetQueryResults on queries that are using an event data store in a PENDING_DELETION state. An event data store in the PENDING_DELETION state does not incur costs.

", "DeleteResourcePolicy": "

Deletes the resource-based policy attached to the CloudTrail channel.

", "DeleteTrail": "

Deletes a trail. This operation must be called from the Region in which the trail was created. DeleteTrail cannot be called on the shadow trails (replicated trails in other Regions) of a trail that is enabled in all Regions.

", "DeregisterOrganizationDelegatedAdmin": "

Removes CloudTrail delegated administrator permissions from a member account in an organization.

", "DescribeQuery": "

Returns metadata about a query, including query run time in milliseconds, number of events scanned and matched, and query status. If the query results were delivered to an S3 bucket, the response also provides the S3 URI and the delivery status.

You must specify either a QueryID or a QueryAlias. Specifying the QueryAlias parameter returns information about the last query run for the alias.

", "DescribeTrails": "

Retrieves settings for one or more trails associated with the current Region for your account.

", + "DisableFederation": "

Disables Lake query federation on the specified event data store. When you disable federation, CloudTrail removes the metadata associated with the federated event data store in the Glue Data Catalog and removes registration for the federation role ARN and event data store in Lake Formation. No CloudTrail Lake data is deleted when you disable federation.

", + "EnableFederation": "

Enables Lake query federation on the specified event data store. Federating an event data store lets you view the metadata associated with the event data store in the Glue Data Catalog and run SQL queries against your event data using Amazon Athena. The table metadata stored in the Glue Data Catalog lets the Athena query engine know how to find, read, and process the data that you want to query.

When you enable Lake query federation, CloudTrail creates a federated database named aws:cloudtrail (if the database doesn't already exist) and a federated table in the Glue Data Catalog. The event data store ID is used for the table name. CloudTrail registers the role ARN and event data store in Lake Formation, the service responsible for revoking or granting permissions to the federated resources in the Glue Data Catalog.

For more information about Lake query federation, see Federate an event data store.

", "GetChannel": "

Returns information about a specific channel.

", "GetEventDataStore": "

Returns information about an event data store specified as either an ARN or the ID portion of the ARN.

", "GetEventSelectors": "

Describes the settings for the event selectors that you configured for your trail. The information returned for your event selectors includes the following:

For more information about logging management and data events, see the following topics in the CloudTrail User Guide:

", @@ -50,6 +52,11 @@ "UpdateTrail": "

Updates trail settings that control what events you are logging, and how to handle log files. Changes to a trail do not require stopping the CloudTrail service. Use this action to designate an existing bucket for log delivery. If the existing bucket has previously been a target for CloudTrail log files, an IAM policy exists for the bucket. UpdateTrail must be called from the Region in which the trail was created; otherwise, an InvalidHomeRegionException is thrown.

" }, "shapes": { + "AccessDeniedException": { + "base": "

You do not have sufficient access to perform this action.

", + "refs": { + } + }, "AccountHasOngoingImportException": { "base": "

This exception is thrown when you start a new import and a previous import is still in progress.

", "refs": { @@ -279,6 +286,11 @@ "refs": { } }, + "ConcurrentModificationException": { + "base": "

You are trying to update a resource when another request is in progress. Allow sufficient wait time for the previous request to complete, then retry your request.

", + "refs": { + } + }, "ConflictException": { "base": "

This exception is thrown when the specified resource is not ready for an operation. This can occur when you try to run an operation on a resource before CloudTrail has time to fully load the resource, or because another operation is modifying the resource. If this exception occurs, wait a few minutes, and then try the operation again.

", "refs": { @@ -493,6 +505,26 @@ "UpdateChannelResponse$Destinations": "

The event data stores that log events arriving through the channel.

" } }, + "DisableFederationRequest": { + "base": null, + "refs": { + } + }, + "DisableFederationResponse": { + "base": null, + "refs": { + } + }, + "EnableFederationRequest": { + "base": null, + "refs": { + } + }, + "EnableFederationResponse": { + "base": null, + "refs": { + } + }, "ErrorMessage": { "base": null, "refs": { @@ -536,6 +568,10 @@ "CreateEventDataStoreResponse$EventDataStoreArn": "

The ARN of the event data store.

", "DeleteEventDataStoreRequest$EventDataStore": "

The ARN (or the ID suffix of the ARN) of the event data store to delete.

", "DescribeQueryRequest$EventDataStore": "

The ARN (or the ID suffix of the ARN) of an event data store on which the specified query was run.

", + "DisableFederationRequest$EventDataStore": "

The ARN (or ID suffix of the ARN) of the event data store for which you want to disable Lake query federation.

", + "DisableFederationResponse$EventDataStoreArn": "

The ARN of the event data store for which you disabled Lake query federation.

", + "EnableFederationRequest$EventDataStore": "

The ARN (or ID suffix of the ARN) of the event data store for which you want to enable Lake query federation.

", + "EnableFederationResponse$EventDataStoreArn": "

The ARN of the event data store for which you enabled Lake query federation.

", "EventDataStore$EventDataStoreArn": "

The ARN of the event data store.

", "GetEventDataStoreRequest$EventDataStore": "

The ARN (or ID suffix of the ARN) of the event data store about which you want information.

", "GetEventDataStoreResponse$EventDataStoreArn": "

The event data store Amazon Resource Number (ARN).

", @@ -558,6 +594,11 @@ "UpdateEventDataStoreResponse$EventDataStoreArn": "

The ARN of the event data store.

" } }, + "EventDataStoreFederationEnabledException": { + "base": "

You cannot delete the event data store because Lake query federation is enabled. To delete the event data store, run the DisableFederation operation to disable Lake query federation on the event data store.

", + "refs": { + } + }, "EventDataStoreHasOngoingImportException": { "base": "

This exception is thrown when you try to update or delete an event data store that currently has an import in progress.

", "refs": { @@ -643,6 +684,24 @@ "EventSelector$ExcludeManagementEventSources": "

An optional list of service event sources from which you do not want management events to be logged on your trail. In this release, the list can be empty (disables the filter), or it can filter out Key Management Service or Amazon RDS Data API events by containing kms.amazonaws.com or rdsdata.amazonaws.com. By default, ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data API events are logged to your trail. You can exclude management event sources only in Regions that support the event source.

" } }, + "FederationRoleArn": { + "base": null, + "refs": { + "EnableFederationRequest$FederationRoleArn": "

The ARN of the federation role to use for the event data store. Amazon Web Services services like Lake Formation use this federation role to access data for the federated event data store. The federation role must exist in your account and provide the required minimum permissions.

", + "EnableFederationResponse$FederationRoleArn": "

The ARN of the federation role.

", + "GetEventDataStoreResponse$FederationRoleArn": "

If Lake query federation is enabled, provides the ARN of the federation role used to access the resources for the federated event data store.

", + "UpdateEventDataStoreResponse$FederationRoleArn": "

If Lake query federation is enabled, provides the ARN of the federation role used to access the resources for the federated event data store.

" + } + }, + "FederationStatus": { + "base": null, + "refs": { + "DisableFederationResponse$FederationStatus": "

The federation status.

", + "EnableFederationResponse$FederationStatus": "

The federation status.

", + "GetEventDataStoreResponse$FederationStatus": "

Indicates the Lake query federation status. The status is ENABLED if Lake query federation is enabled, or DISABLED if Lake query federation is disabled. You cannot delete an event data store if the FederationStatus is ENABLED.

", + "UpdateEventDataStoreResponse$FederationStatus": "

Indicates the Lake query federation status. The status is ENABLED if Lake query federation is enabled, or DISABLED if Lake query federation is disabled. You cannot delete an event data store if the FederationStatus is ENABLED.

" + } + }, "GetChannelRequest": { "base": null, "refs": { diff --git a/apis/codestar-connections/2019-12-01/api-2.json b/apis/codestar-connections/2019-12-01/api-2.json index 4e25fd1a5f9..bfa5d449b5d 100644 --- a/apis/codestar-connections/2019-12-01/api-2.json +++ b/apis/codestar-connections/2019-12-01/api-2.json @@ -39,6 +39,42 @@ {"shape":"LimitExceededException"} ] }, + "CreateRepositoryLink":{ + "name":"CreateRepositoryLink", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateRepositoryLinkInput"}, + "output":{"shape":"CreateRepositoryLinkOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"ThrottlingException"} + ] + }, + "CreateSyncConfiguration":{ + "name":"CreateSyncConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateSyncConfigurationInput"}, + "output":{"shape":"CreateSyncConfigurationOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"ThrottlingException"} + ] + }, "DeleteConnection":{ "name":"DeleteConnection", "http":{ @@ -64,6 +100,42 @@ {"shape":"ResourceUnavailableException"} ] }, + "DeleteRepositoryLink":{ + "name":"DeleteRepositoryLink", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteRepositoryLinkInput"}, + "output":{"shape":"DeleteRepositoryLinkOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"SyncConfigurationStillExistsException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"UnsupportedProviderTypeException"} + ] + }, + "DeleteSyncConfiguration":{ + "name":"DeleteSyncConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteSyncConfigurationInput"}, + "output":{"shape":"DeleteSyncConfigurationOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"LimitExceededException"}, + {"shape":"ThrottlingException"} + ] + }, "GetConnection":{ "name":"GetConnection", "http":{ @@ -90,6 +162,87 @@ {"shape":"ResourceUnavailableException"} ] }, + "GetRepositoryLink":{ + "name":"GetRepositoryLink", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetRepositoryLinkInput"}, + "output":{"shape":"GetRepositoryLinkOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "GetRepositorySyncStatus":{ + "name":"GetRepositorySyncStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetRepositorySyncStatusInput"}, + "output":{"shape":"GetRepositorySyncStatusOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "GetResourceSyncStatus":{ + "name":"GetResourceSyncStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetResourceSyncStatusInput"}, + "output":{"shape":"GetResourceSyncStatusOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "GetSyncBlockerSummary":{ + "name":"GetSyncBlockerSummary", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetSyncBlockerSummaryInput"}, + "output":{"shape":"GetSyncBlockerSummaryOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "GetSyncConfiguration":{ + "name":"GetSyncConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetSyncConfigurationInput"}, + "output":{"shape":"GetSyncConfigurationOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, "ListConnections":{ "name":"ListConnections", "http":{ @@ -111,6 +264,55 @@ "input":{"shape":"ListHostsInput"}, "output":{"shape":"ListHostsOutput"} }, + "ListRepositoryLinks":{ + "name":"ListRepositoryLinks", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListRepositoryLinksInput"}, + "output":{"shape":"ListRepositoryLinksOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "ListRepositorySyncDefinitions":{ + "name":"ListRepositorySyncDefinitions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListRepositorySyncDefinitionsInput"}, + "output":{"shape":"ListRepositorySyncDefinitionsOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "ListSyncConfigurations":{ + "name":"ListSyncConfigurations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListSyncConfigurationsInput"}, + "output":{"shape":"ListSyncConfigurationsOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -162,9 +364,70 @@ {"shape":"ResourceUnavailableException"}, {"shape":"UnsupportedOperationException"} ] + }, + "UpdateRepositoryLink":{ + "name":"UpdateRepositoryLink", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateRepositoryLinkInput"}, + "output":{"shape":"UpdateRepositoryLinkOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConditionalCheckFailedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"UpdateOutOfSyncException"} + ] + }, + "UpdateSyncBlocker":{ + "name":"UpdateSyncBlocker", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateSyncBlockerInput"}, + "output":{"shape":"UpdateSyncBlockerOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"RetryLatestCommitFailedException"}, + {"shape":"SyncBlockerDoesNotExistException"}, + {"shape":"ThrottlingException"} + ] + }, + "UpdateSyncConfiguration":{ + "name":"UpdateSyncConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateSyncConfigurationInput"}, + "output":{"shape":"UpdateSyncConfigurationOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"UpdateOutOfSyncException"} + ] } }, "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "AccountId":{ "type":"string", "max":12, @@ -177,6 +440,37 @@ "min":1, "pattern":"arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+" }, + "BlockerStatus":{ + "type":"string", + "enum":[ + "ACTIVE", + "RESOLVED" + ] + }, + "BlockerType":{ + "type":"string", + "enum":["AUTOMATED"] + }, + "BranchName":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^.*$" + }, + "ConcurrentModificationException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "ConditionalCheckFailedException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "ConflictException":{ "type":"structure", "members":{ @@ -259,6 +553,55 @@ "Tags":{"shape":"TagList"} } }, + "CreateRepositoryLinkInput":{ + "type":"structure", + "required":[ + "ConnectionArn", + "OwnerId", + "RepositoryName" + ], + "members":{ + "ConnectionArn":{"shape":"ConnectionArn"}, + "OwnerId":{"shape":"OwnerId"}, + "RepositoryName":{"shape":"RepositoryName"}, + "EncryptionKeyArn":{"shape":"KmsKeyArn"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateRepositoryLinkOutput":{ + "type":"structure", + "required":["RepositoryLinkInfo"], + "members":{ + "RepositoryLinkInfo":{"shape":"RepositoryLinkInfo"} + } + }, + "CreateSyncConfigurationInput":{ + "type":"structure", + "required":[ + "Branch", + "ConfigFile", + "RepositoryLinkId", + "ResourceName", + "RoleArn", + "SyncType" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "ConfigFile":{"shape":"DeploymentFilePath"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "ResourceName":{"shape":"ResourceName"}, + "RoleArn":{"shape":"IamRoleArn"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "CreateSyncConfigurationOutput":{ + "type":"structure", + "required":["SyncConfiguration"], + "members":{ + "SyncConfiguration":{"shape":"SyncConfiguration"} + } + }, + "CreatedReason":{"type":"string"}, "DeleteConnectionInput":{ "type":"structure", "required":["ConnectionArn"], @@ -283,10 +626,42 @@ "members":{ } }, + "DeleteRepositoryLinkInput":{ + "type":"structure", + "required":["RepositoryLinkId"], + "members":{ + "RepositoryLinkId":{"shape":"RepositoryLinkId"} + } + }, + "DeleteRepositoryLinkOutput":{ + "type":"structure", + "members":{ + } + }, + "DeleteSyncConfigurationInput":{ + "type":"structure", + "required":[ + "SyncType", + "ResourceName" + ], + "members":{ + "SyncType":{"shape":"SyncConfigurationType"}, + "ResourceName":{"shape":"ResourceName"} + } + }, + "DeleteSyncConfigurationOutput":{ + "type":"structure", + "members":{ + } + }, + "DeploymentFilePath":{"type":"string"}, + "Directory":{"type":"string"}, "ErrorMessage":{ "type":"string", "max":600 }, + "Event":{"type":"string"}, + "ExternalId":{"type":"string"}, "GetConnectionInput":{ "type":"structure", "required":["ConnectionArn"], @@ -317,6 +692,96 @@ "VpcConfiguration":{"shape":"VpcConfiguration"} } }, + "GetRepositoryLinkInput":{ + "type":"structure", + "required":["RepositoryLinkId"], + "members":{ + "RepositoryLinkId":{"shape":"RepositoryLinkId"} + } + }, + "GetRepositoryLinkOutput":{ + "type":"structure", + "required":["RepositoryLinkInfo"], + "members":{ + "RepositoryLinkInfo":{"shape":"RepositoryLinkInfo"} + } + }, + "GetRepositorySyncStatusInput":{ + "type":"structure", + "required":[ + "Branch", + "RepositoryLinkId", + "SyncType" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "GetRepositorySyncStatusOutput":{ + "type":"structure", + "required":["LatestSync"], + "members":{ + "LatestSync":{"shape":"RepositorySyncAttempt"} + } + }, + "GetResourceSyncStatusInput":{ + "type":"structure", + "required":[ + "ResourceName", + "SyncType" + ], + "members":{ + "ResourceName":{"shape":"ResourceName"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "GetResourceSyncStatusOutput":{ + "type":"structure", + "required":["LatestSync"], + "members":{ + "DesiredState":{"shape":"Revision"}, + "LatestSuccessfulSync":{"shape":"ResourceSyncAttempt"}, + "LatestSync":{"shape":"ResourceSyncAttempt"} + } + }, + "GetSyncBlockerSummaryInput":{ + "type":"structure", + "required":[ + "SyncType", + "ResourceName" + ], + "members":{ + "SyncType":{"shape":"SyncConfigurationType"}, + "ResourceName":{"shape":"ResourceName"} + } + }, + "GetSyncBlockerSummaryOutput":{ + "type":"structure", + "required":["SyncBlockerSummary"], + "members":{ + "SyncBlockerSummary":{"shape":"SyncBlockerSummary"} + } + }, + "GetSyncConfigurationInput":{ + "type":"structure", + "required":[ + "SyncType", + "ResourceName" + ], + "members":{ + "SyncType":{"shape":"SyncConfigurationType"}, + "ResourceName":{"shape":"ResourceName"} + } + }, + "GetSyncConfigurationOutput":{ + "type":"structure", + "required":["SyncConfiguration"], + "members":{ + "SyncConfiguration":{"shape":"SyncConfiguration"} + } + }, "Host":{ "type":"structure", "members":{ @@ -352,6 +817,41 @@ "pattern":".*" }, "HostStatusMessage":{"type":"string"}, + "IamRoleArn":{ + "type":"string", + "max":1024, + "min":1, + "pattern":"arn:aws(-[\\w]+)*:iam::\\d{12}:role/[a-zA-Z_0-9+=,.@\\-_/]+" + }, + "Id":{ + "type":"string", + "max":50, + "min":1 + }, + "InternalServerException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "InvalidInputException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "KmsKeyArn":{ + "type":"string", + "max":1024, + "min":1, + "pattern":"arn:aws(-[\\w]+)*:kms:[a-z\\-0-9]+:\\d{12}:key/[a-zA-Z0-9\\-]+" + }, + "LatestSyncBlockerList":{ + "type":"list", + "member":{"shape":"SyncBlocker"} + }, "LimitExceededException":{ "type":"structure", "members":{ @@ -389,6 +889,61 @@ "NextToken":{"shape":"NextToken"} } }, + "ListRepositoryLinksInput":{ + "type":"structure", + "members":{ + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"SharpNextToken"} + } + }, + "ListRepositoryLinksOutput":{ + "type":"structure", + "required":["RepositoryLinks"], + "members":{ + "RepositoryLinks":{"shape":"RepositoryLinkList"}, + "NextToken":{"shape":"SharpNextToken"} + } + }, + "ListRepositorySyncDefinitionsInput":{ + "type":"structure", + "required":[ + "RepositoryLinkId", + "SyncType" + ], + "members":{ + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "ListRepositorySyncDefinitionsOutput":{ + "type":"structure", + "required":["RepositorySyncDefinitions"], + "members":{ + "RepositorySyncDefinitions":{"shape":"RepositorySyncDefinitionList"}, + "NextToken":{"shape":"SharpNextToken"} + } + }, + "ListSyncConfigurationsInput":{ + "type":"structure", + "required":[ + "RepositoryLinkId", + "SyncType" + ], + "members":{ + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"SharpNextToken"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "ListSyncConfigurationsOutput":{ + "type":"structure", + "required":["SyncConfigurations"], + "members":{ + "SyncConfigurations":{"shape":"SyncConfigurationList"}, + "NextToken":{"shape":"SharpNextToken"} + } + }, "ListTagsForResourceInput":{ "type":"structure", "required":["ResourceArn"], @@ -411,8 +966,15 @@ "type":"string", "max":1024, "min":1, - "pattern":".*" + "pattern":"^.*$" + }, + "OwnerId":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^.*$" }, + "Parent":{"type":"string"}, "ProviderType":{ "type":"string", "enum":[ @@ -422,6 +984,122 @@ "GitLab" ] }, + "RepositoryLinkArn":{ + "type":"string", + "pattern":"^arn:aws(?:-[a-z]+)*:codestar-connections:[a-z\\-0-9]+:\\d{12}:repository-link\\/[a-zA-Z0-9\\-:/]+" + }, + "RepositoryLinkId":{ + "type":"string", + "pattern":"^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$" + }, + "RepositoryLinkInfo":{ + "type":"structure", + "required":[ + "ConnectionArn", + "OwnerId", + "ProviderType", + "RepositoryLinkArn", + "RepositoryLinkId", + "RepositoryName" + ], + "members":{ + "ConnectionArn":{"shape":"ConnectionArn"}, + "EncryptionKeyArn":{"shape":"KmsKeyArn"}, + "OwnerId":{"shape":"OwnerId"}, + "ProviderType":{"shape":"ProviderType"}, + "RepositoryLinkArn":{"shape":"RepositoryLinkArn"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "RepositoryName":{"shape":"RepositoryName"} + } + }, + "RepositoryLinkList":{ + "type":"list", + "member":{"shape":"RepositoryLinkInfo"} + }, + "RepositoryName":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^.*$" + }, + "RepositorySyncAttempt":{ + "type":"structure", + "required":[ + "StartedAt", + "Status", + "Events" + ], + "members":{ + "StartedAt":{"shape":"Timestamp"}, + "Status":{"shape":"RepositorySyncStatus"}, + "Events":{"shape":"RepositorySyncEventList"} + } + }, + "RepositorySyncDefinition":{ + "type":"structure", + "required":[ + "Branch", + "Directory", + "Parent", + "Target" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "Directory":{"shape":"Directory"}, + "Parent":{"shape":"Parent"}, + "Target":{"shape":"Target"} + } + }, + "RepositorySyncDefinitionList":{ + "type":"list", + "member":{"shape":"RepositorySyncDefinition"} + }, + "RepositorySyncEvent":{ + "type":"structure", + "required":[ + "Event", + "Time", + "Type" + ], + "members":{ + "Event":{"shape":"Event"}, + "ExternalId":{"shape":"ExternalId"}, + "Time":{"shape":"Timestamp"}, + "Type":{"shape":"Type"} + } + }, + "RepositorySyncEventList":{ + "type":"list", + "member":{"shape":"RepositorySyncEvent"} + }, + "RepositorySyncStatus":{ + "type":"string", + "enum":[ + "FAILED", + "INITIATED", + "IN_PROGRESS", + "SUCCEEDED", + "QUEUED" + ] + }, + "ResolvedReason":{ + "type":"string", + "max":250, + "min":1 + }, + "ResourceAlreadyExistsException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "ResourceName":{ + "type":"string", + "max":100, + "min":1, + "pattern":"^[0-9A-Za-z]+[0-9A-Za-z_\\\\-]*$" + }, "ResourceNotFoundException":{ "type":"structure", "members":{ @@ -429,6 +1107,52 @@ }, "exception":true }, + "ResourceSyncAttempt":{ + "type":"structure", + "required":[ + "Events", + "InitialRevision", + "StartedAt", + "Status", + "TargetRevision", + "Target" + ], + "members":{ + "Events":{"shape":"ResourceSyncEventList"}, + "InitialRevision":{"shape":"Revision"}, + "StartedAt":{"shape":"Timestamp"}, + "Status":{"shape":"ResourceSyncStatus"}, + "TargetRevision":{"shape":"Revision"}, + "Target":{"shape":"Target"} + } + }, + "ResourceSyncEvent":{ + "type":"structure", + "required":[ + "Event", + "Time", + "Type" + ], + "members":{ + "Event":{"shape":"Event"}, + "ExternalId":{"shape":"ExternalId"}, + "Time":{"shape":"Timestamp"}, + "Type":{"shape":"Type"} + } + }, + "ResourceSyncEventList":{ + "type":"list", + "member":{"shape":"ResourceSyncEvent"} + }, + "ResourceSyncStatus":{ + "type":"string", + "enum":[ + "FAILED", + "INITIATED", + "IN_PROGRESS", + "SUCCEEDED" + ] + }, "ResourceUnavailableException":{ "type":"structure", "members":{ @@ -436,6 +1160,37 @@ }, "exception":true }, + "RetryLatestCommitFailedException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "Revision":{ + "type":"structure", + "required":[ + "Branch", + "Directory", + "OwnerId", + "RepositoryName", + "ProviderType", + "Sha" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "Directory":{"shape":"Directory"}, + "OwnerId":{"shape":"OwnerId"}, + "RepositoryName":{"shape":"RepositoryName"}, + "ProviderType":{"shape":"ProviderType"}, + "Sha":{"shape":"SHA"} + } + }, + "SHA":{ + "type":"string", + "max":255, + "min":1 + }, "SecurityGroupId":{ "type":"string", "max":20, @@ -448,6 +1203,12 @@ "max":10, "min":1 }, + "SharpNextToken":{ + "type":"string", + "max":2048, + "min":1, + "pattern":"^.*$" + }, "SubnetId":{ "type":"string", "max":24, @@ -460,6 +1221,98 @@ "max":10, "min":1 }, + "SyncBlocker":{ + "type":"structure", + "required":[ + "Id", + "Type", + "Status", + "CreatedReason", + "CreatedAt" + ], + "members":{ + "Id":{"shape":"Id"}, + "Type":{"shape":"BlockerType"}, + "Status":{"shape":"BlockerStatus"}, + "CreatedReason":{"shape":"CreatedReason"}, + "CreatedAt":{"shape":"Timestamp"}, + "Contexts":{"shape":"SyncBlockerContextList"}, + "ResolvedReason":{"shape":"ResolvedReason"}, + "ResolvedAt":{"shape":"Timestamp"} + } + }, + "SyncBlockerContext":{ + "type":"structure", + "required":[ + "Key", + "Value" + ], + "members":{ + "Key":{"shape":"SyncBlockerContextKey"}, + "Value":{"shape":"SyncBlockerContextValue"} + } + }, + "SyncBlockerContextKey":{"type":"string"}, + "SyncBlockerContextList":{ + "type":"list", + "member":{"shape":"SyncBlockerContext"} + }, + "SyncBlockerContextValue":{"type":"string"}, + "SyncBlockerDoesNotExistException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "SyncBlockerSummary":{ + "type":"structure", + "required":["ResourceName"], + "members":{ + "ResourceName":{"shape":"ResourceName"}, + "ParentResourceName":{"shape":"ResourceName"}, + "LatestBlockers":{"shape":"LatestSyncBlockerList"} + } + }, + "SyncConfiguration":{ + "type":"structure", + "required":[ + "Branch", + "OwnerId", + "ProviderType", + "RepositoryLinkId", + "RepositoryName", + "ResourceName", + "RoleArn", + "SyncType" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "ConfigFile":{"shape":"DeploymentFilePath"}, + "OwnerId":{"shape":"OwnerId"}, + "ProviderType":{"shape":"ProviderType"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "RepositoryName":{"shape":"RepositoryName"}, + "ResourceName":{"shape":"ResourceName"}, + "RoleArn":{"shape":"IamRoleArn"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "SyncConfigurationList":{ + "type":"list", + "member":{"shape":"SyncConfiguration"} + }, + "SyncConfigurationStillExistsException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "SyncConfigurationType":{ + "type":"string", + "enum":["CFN_STACK_SYNC"] + }, "Tag":{ "type":"structure", "required":[ @@ -511,12 +1364,22 @@ "min":0, "pattern":".*" }, + "Target":{"type":"string"}, + "ThrottlingException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "Timestamp":{"type":"timestamp"}, "TlsCertificate":{ "type":"string", "max":16384, "min":1, "pattern":"[\\s\\S]*" }, + "Type":{"type":"string"}, "UnsupportedOperationException":{ "type":"structure", "members":{ @@ -524,6 +1387,13 @@ }, "exception":true }, + "UnsupportedProviderTypeException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "UntagResourceInput":{ "type":"structure", "required":[ @@ -554,6 +1424,78 @@ "members":{ } }, + "UpdateOutOfSyncException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "UpdateRepositoryLinkInput":{ + "type":"structure", + "required":["RepositoryLinkId"], + "members":{ + "ConnectionArn":{"shape":"ConnectionArn"}, + "EncryptionKeyArn":{"shape":"KmsKeyArn"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"} + } + }, + "UpdateRepositoryLinkOutput":{ + "type":"structure", + "required":["RepositoryLinkInfo"], + "members":{ + "RepositoryLinkInfo":{"shape":"RepositoryLinkInfo"} + } + }, + "UpdateSyncBlockerInput":{ + "type":"structure", + "required":[ + "Id", + "SyncType", + "ResourceName", + "ResolvedReason" + ], + "members":{ + "Id":{"shape":"Id"}, + "SyncType":{"shape":"SyncConfigurationType"}, + "ResourceName":{"shape":"ResourceName"}, + "ResolvedReason":{"shape":"ResolvedReason"} + } + }, + "UpdateSyncBlockerOutput":{ + "type":"structure", + "required":[ + "ResourceName", + "SyncBlocker" + ], + "members":{ + "ResourceName":{"shape":"ResourceName"}, + "ParentResourceName":{"shape":"ResourceName"}, + "SyncBlocker":{"shape":"SyncBlocker"} + } + }, + "UpdateSyncConfigurationInput":{ + "type":"structure", + "required":[ + "ResourceName", + "SyncType" + ], + "members":{ + "Branch":{"shape":"BranchName"}, + "ConfigFile":{"shape":"DeploymentFilePath"}, + "RepositoryLinkId":{"shape":"RepositoryLinkId"}, + "ResourceName":{"shape":"ResourceName"}, + "RoleArn":{"shape":"IamRoleArn"}, + "SyncType":{"shape":"SyncConfigurationType"} + } + }, + "UpdateSyncConfigurationOutput":{ + "type":"structure", + "required":["SyncConfiguration"], + "members":{ + "SyncConfiguration":{"shape":"SyncConfiguration"} + } + }, "Url":{ "type":"string", "max":512, diff --git a/apis/codestar-connections/2019-12-01/docs-2.json b/apis/codestar-connections/2019-12-01/docs-2.json index 152d14b8a3d..c4298deb9b1 100644 --- a/apis/codestar-connections/2019-12-01/docs-2.json +++ b/apis/codestar-connections/2019-12-01/docs-2.json @@ -4,18 +4,38 @@ "operations": { "CreateConnection": "

Creates a connection that can then be given to other Amazon Web Services services like CodePipeline so that it can access third-party code repositories. The connection is in pending status until the third-party connection handshake is completed from the console.

", "CreateHost": "

Creates a resource that represents the infrastructure where a third-party provider is installed. The host is used when you create connections to an installed third-party provider type, such as GitHub Enterprise Server. You create one host for all connections to that provider.

A host created through the CLI or the SDK is in `PENDING` status by default. You can make its status `AVAILABLE` by setting up the host in the console.

", + "CreateRepositoryLink": "

Creates a link to a specified external Git repository. A repository link allows Git sync to monitor and sync changes to files in a specified Git repository.

", + "CreateSyncConfiguration": "

Creates a sync configuration which allows Amazon Web Services to sync content from a Git repository to update a specified Amazon Web Services resource. Parameters for the sync configuration are determined by the sync type.

", "DeleteConnection": "

The connection to be deleted.

", "DeleteHost": "

The host to be deleted. Before you delete a host, all connections associated to the host must be deleted.

A host cannot be deleted if it is in the VPC_CONFIG_INITIALIZING or VPC_CONFIG_DELETING state.

", + "DeleteRepositoryLink": "

Deletes the association between your connection and a specified external Git repository.

", + "DeleteSyncConfiguration": "

Deletes the sync configuration for a specified repository and connection.

", "GetConnection": "

Returns the connection ARN and details such as status, owner, and provider type.

", "GetHost": "

Returns the host ARN and details such as status, provider type, endpoint, and, if applicable, the VPC configuration.

", + "GetRepositoryLink": "

Returns details about a repository link. A repository link allows Git sync to monitor and sync changes from files in a specified Git repository.

", + "GetRepositorySyncStatus": "

Returns details about the sync status for a repository. A repository sync uses Git sync to push and pull changes from your remote repository.

", + "GetResourceSyncStatus": "

Returns the status of the sync with the Git repository for a specific Amazon Web Services resource.

", + "GetSyncBlockerSummary": "

Returns a list of the most recent sync blockers.

", + "GetSyncConfiguration": "

Returns details about a sync configuration, including the sync type and resource name. A sync configuration allows the configuration to sync (push and pull) changes from the remote repository for a specified branch in a Git repository.

", "ListConnections": "

Lists the connections associated with your account.

", "ListHosts": "

Lists the hosts associated with your account.

", + "ListRepositoryLinks": "

Lists the repository links created for connections in your account.

", + "ListRepositorySyncDefinitions": "

Lists the repository sync definitions for repository links in your account.

", + "ListSyncConfigurations": "

Returns a list of sync configurations for a specified repository.

", "ListTagsForResource": "

Gets the set of key-value pairs (metadata) that are used to manage the resource.

", "TagResource": "

Adds to or modifies the tags of the given resource. Tags are metadata that can be used to manage a resource.

", "UntagResource": "

Removes tags from an Amazon Web Services resource.

", - "UpdateHost": "

Updates a specified host with the provided configurations.

" + "UpdateHost": "

Updates a specified host with the provided configurations.

", + "UpdateRepositoryLink": "

Updates the association between your connection and a specified external Git repository. A repository link allows Git sync to monitor and sync changes to files in a specified Git repository.

", + "UpdateSyncBlocker": "

Allows you to update the status of a sync blocker, resolving the blocker and allowing syncing to continue.

", + "UpdateSyncConfiguration": "

Updates the sync configuration for your connection and a specified external Git repository.

" }, "shapes": { + "AccessDeniedException": { + "base": "

You do not have sufficient access to perform this action.

", + "refs": { + } + }, "AccountId": { "base": null, "refs": { @@ -30,6 +50,39 @@ "UntagResourceInput$ResourceArn": "

The Amazon Resource Name (ARN) of the resource to remove tags from.

" } }, + "BlockerStatus": { + "base": null, + "refs": { + "SyncBlocker$Status": "

The status for a specific sync blocker.

" + } + }, + "BlockerType": { + "base": null, + "refs": { + "SyncBlocker$Type": "

The sync blocker type.

" + } + }, + "BranchName": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$Branch": "

The branch in the repository from which changes will be synced.

", + "GetRepositorySyncStatusInput$Branch": "

The branch of the repository link for the requested repository sync status.

", + "RepositorySyncDefinition$Branch": "

The branch specified for a repository sync definition.

", + "Revision$Branch": "

The branch name for a specific revision.

", + "SyncConfiguration$Branch": "

The branch associated with a specific sync configuration.

", + "UpdateSyncConfigurationInput$Branch": "

The branch for the sync configuration to be updated.

" + } + }, + "ConcurrentModificationException": { + "base": "

Exception thrown as a result of concurrent modification to an application. For example, two individuals attempting to edit the same application at the same time.

", + "refs": { + } + }, + "ConditionalCheckFailedException": { + "base": "

The conditional check failed. Try again later.

", + "refs": { + } + }, "ConflictException": { "base": "

Two conflicting operations have been made on the same resource.

", "refs": { @@ -47,8 +100,11 @@ "refs": { "Connection$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection. The ARN is used as the connection reference when the connection is shared between Amazon Web Services.

The ARN is never reused if the connection is deleted.

", "CreateConnectionOutput$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection to be created. The ARN is used as the connection reference when the connection is shared between Amazon Web Services services.

The ARN is never reused if the connection is deleted.

", + "CreateRepositoryLinkInput$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection to be associated with the repository link.

", "DeleteConnectionInput$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection to be deleted.

The ARN is never reused if the connection is deleted.

", - "GetConnectionInput$ConnectionArn": "

The Amazon Resource Name (ARN) of a connection.

" + "GetConnectionInput$ConnectionArn": "

The Amazon Resource Name (ARN) of a connection.

", + "RepositoryLinkInfo$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection associated with the repository link.

", + "UpdateRepositoryLinkInput$ConnectionArn": "

The Amazon Resource Name (ARN) of the connection for the repository link to be updated. The updated connection ARN must have the same providerType (such as GitHub) as the original connection ARN for the repo link.

" } }, "ConnectionList": { @@ -90,6 +146,32 @@ "refs": { } }, + "CreateRepositoryLinkInput": { + "base": null, + "refs": { + } + }, + "CreateRepositoryLinkOutput": { + "base": null, + "refs": { + } + }, + "CreateSyncConfigurationInput": { + "base": null, + "refs": { + } + }, + "CreateSyncConfigurationOutput": { + "base": null, + "refs": { + } + }, + "CreatedReason": { + "base": null, + "refs": { + "SyncBlocker$CreatedReason": "

The provided reason for a specific sync blocker.

" + } + }, "DeleteConnectionInput": { "base": null, "refs": { @@ -110,14 +192,75 @@ "refs": { } }, + "DeleteRepositoryLinkInput": { + "base": null, + "refs": { + } + }, + "DeleteRepositoryLinkOutput": { + "base": null, + "refs": { + } + }, + "DeleteSyncConfigurationInput": { + "base": null, + "refs": { + } + }, + "DeleteSyncConfigurationOutput": { + "base": null, + "refs": { + } + }, + "DeploymentFilePath": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$ConfigFile": "

The file name of the configuration file that manages syncing between the connection and the repository. This configuration file is stored in the repository.

", + "SyncConfiguration$ConfigFile": "

The file path to the configuration file associated with a specific sync configuration. The path should point to an actual file in the sync configurations linked repository.

", + "UpdateSyncConfigurationInput$ConfigFile": "

The configuration file for the sync configuration to be updated.

" + } + }, + "Directory": { + "base": null, + "refs": { + "RepositorySyncDefinition$Directory": "

The configuration file for a repository sync definition. This value comes from creating or updating the config-file field of a sync-configuration.

", + "Revision$Directory": "

The directory, if any, for a specific revision.

" + } + }, "ErrorMessage": { "base": null, "refs": { + "AccessDeniedException$Message": null, + "ConcurrentModificationException$Message": null, + "ConditionalCheckFailedException$Message": null, "ConflictException$Message": null, + "InternalServerException$Message": null, + "InvalidInputException$Message": null, "LimitExceededException$Message": null, + "ResourceAlreadyExistsException$Message": null, "ResourceNotFoundException$Message": null, "ResourceUnavailableException$Message": null, - "UnsupportedOperationException$Message": null + "RetryLatestCommitFailedException$Message": null, + "SyncBlockerDoesNotExistException$Message": null, + "SyncConfigurationStillExistsException$Message": null, + "ThrottlingException$Message": null, + "UnsupportedOperationException$Message": null, + "UnsupportedProviderTypeException$Message": null, + "UpdateOutOfSyncException$Message": null + } + }, + "Event": { + "base": null, + "refs": { + "RepositorySyncEvent$Event": "

A description of a repository sync event.

", + "ResourceSyncEvent$Event": "

The event for a resource sync event.

" + } + }, + "ExternalId": { + "base": null, + "refs": { + "RepositorySyncEvent$ExternalId": "

The ID for a repository sync event.

", + "ResourceSyncEvent$ExternalId": "

The ID for a resource sync event.

" } }, "GetConnectionInput": { @@ -140,6 +283,56 @@ "refs": { } }, + "GetRepositoryLinkInput": { + "base": null, + "refs": { + } + }, + "GetRepositoryLinkOutput": { + "base": null, + "refs": { + } + }, + "GetRepositorySyncStatusInput": { + "base": null, + "refs": { + } + }, + "GetRepositorySyncStatusOutput": { + "base": null, + "refs": { + } + }, + "GetResourceSyncStatusInput": { + "base": null, + "refs": { + } + }, + "GetResourceSyncStatusOutput": { + "base": null, + "refs": { + } + }, + "GetSyncBlockerSummaryInput": { + "base": null, + "refs": { + } + }, + "GetSyncBlockerSummaryOutput": { + "base": null, + "refs": { + } + }, + "GetSyncConfigurationInput": { + "base": null, + "refs": { + } + }, + "GetSyncConfigurationOutput": { + "base": null, + "refs": { + } + }, "Host": { "base": "

A resource that represents the infrastructure where a third-party provider is installed. The host is used when you create connections to an installed third-party provider type, such as GitHub Enterprise Server. You create one host for all connections to that provider.

A host created through the CLI or the SDK is in `PENDING` status by default. You can make its status `AVAILABLE` by setting up the host in the console.

", "refs": { @@ -186,6 +379,45 @@ "Host$StatusMessage": "

The status description for the host.

" } }, + "IamRoleArn": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$RoleArn": "

The ARN of the IAM role that grants permission for Amazon Web Services to use Git sync to update a given Amazon Web Services resource on your behalf.

", + "SyncConfiguration$RoleArn": "

The Amazon Resource Name (ARN) of the IAM role associated with a specific sync configuration.

", + "UpdateSyncConfigurationInput$RoleArn": "

The ARN of the IAM role for the sync configuration to be updated.

" + } + }, + "Id": { + "base": null, + "refs": { + "SyncBlocker$Id": "

The ID for a specific sync blocker.

", + "UpdateSyncBlockerInput$Id": "

The ID of the sync blocker to be updated.

" + } + }, + "InternalServerException": { + "base": "

Received an internal server exception. Try again later.

", + "refs": { + } + }, + "InvalidInputException": { + "base": "

The input is not valid. Verify that the action is typed correctly.

", + "refs": { + } + }, + "KmsKeyArn": { + "base": null, + "refs": { + "CreateRepositoryLinkInput$EncryptionKeyArn": "

The Amazon Resource Name (ARN) encryption key for the repository to be associated with the repository link.

", + "RepositoryLinkInfo$EncryptionKeyArn": "

The Amazon Resource Name (ARN) of the encryption key for the repository associated with the repository link.

", + "UpdateRepositoryLinkInput$EncryptionKeyArn": "

The Amazon Resource Name (ARN) of the encryption key for the repository link to be updated.

" + } + }, + "LatestSyncBlockerList": { + "base": null, + "refs": { + "SyncBlockerSummary$LatestBlockers": "

The latest events for a sync blocker summary.

" + } + }, "LimitExceededException": { "base": "

Exceeded the maximum limit for connections.

", "refs": { @@ -211,6 +443,36 @@ "refs": { } }, + "ListRepositoryLinksInput": { + "base": null, + "refs": { + } + }, + "ListRepositoryLinksOutput": { + "base": null, + "refs": { + } + }, + "ListRepositorySyncDefinitionsInput": { + "base": null, + "refs": { + } + }, + "ListRepositorySyncDefinitionsOutput": { + "base": null, + "refs": { + } + }, + "ListSyncConfigurationsInput": { + "base": null, + "refs": { + } + }, + "ListSyncConfigurationsOutput": { + "base": null, + "refs": { + } + }, "ListTagsForResourceInput": { "base": null, "refs": { @@ -225,7 +487,9 @@ "base": null, "refs": { "ListConnectionsInput$MaxResults": "

The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value.

", - "ListHostsInput$MaxResults": "

The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value.

" + "ListHostsInput$MaxResults": "

The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value.

", + "ListRepositoryLinksInput$MaxResults": "

A non-zero, non-negative integer used to limit the number of returned results.

", + "ListSyncConfigurationsInput$MaxResults": "

A non-zero, non-negative integer used to limit the number of returned results.

" } }, "NextToken": { @@ -237,6 +501,21 @@ "ListHostsOutput$NextToken": "

A token that can be used in the next ListHosts call. To view all items in the list, continue to call this operation with each subsequent token until no more nextToken values are returned.

" } }, + "OwnerId": { + "base": null, + "refs": { + "CreateRepositoryLinkInput$OwnerId": "

The owner ID for the repository associated with a specific sync configuration, such as the owner ID in GitHub.

", + "RepositoryLinkInfo$OwnerId": "

The owner ID for the repository associated with the repository link, such as the owner ID in GitHub.

", + "Revision$OwnerId": "

The owner ID for a specific revision, such as the GitHub owner ID for a GitHub repository.

", + "SyncConfiguration$OwnerId": "

The owner ID for the repository associated with a specific sync configuration, such as the owner ID in GitHub.

" + } + }, + "Parent": { + "base": null, + "refs": { + "RepositorySyncDefinition$Parent": "

The parent resource specified for a repository sync definition.

" + } + }, "ProviderType": { "base": null, "refs": { @@ -245,7 +524,120 @@ "CreateHostInput$ProviderType": "

The name of the installed provider to be associated with your connection. The host resource represents the infrastructure where your provider type is installed. The valid provider type is GitHub Enterprise Server.

", "GetHostOutput$ProviderType": "

The provider type of the requested host, such as GitHub Enterprise Server.

", "Host$ProviderType": "

The name of the installed provider to be associated with your connection. The host resource represents the infrastructure where your provider type is installed. The valid provider type is GitHub Enterprise Server.

", - "ListConnectionsInput$ProviderTypeFilter": "

Filters the list of connections to those associated with a specified provider, such as Bitbucket.

" + "ListConnectionsInput$ProviderTypeFilter": "

Filters the list of connections to those associated with a specified provider, such as Bitbucket.

", + "RepositoryLinkInfo$ProviderType": "

The provider type for the connection, such as GitHub, associated with the repository link.

", + "Revision$ProviderType": "

The provider type for a revision, such as GitHub.

", + "SyncConfiguration$ProviderType": "

The connection provider type associated with a specific sync configuration, such as GitHub.

" + } + }, + "RepositoryLinkArn": { + "base": null, + "refs": { + "RepositoryLinkInfo$RepositoryLinkArn": "

The Amazon Resource Name (ARN) of the repository link.

" + } + }, + "RepositoryLinkId": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$RepositoryLinkId": "

The ID of the repository link created for the connection. A repository link allows Git sync to monitor and sync changes to files in a specified Git repository.

", + "DeleteRepositoryLinkInput$RepositoryLinkId": "

The ID of the repository link to be deleted.

", + "GetRepositoryLinkInput$RepositoryLinkId": "

The ID of the repository link to get.

", + "GetRepositorySyncStatusInput$RepositoryLinkId": "

The repository link ID for the requested repository sync status.

", + "ListRepositorySyncDefinitionsInput$RepositoryLinkId": "

The ID of the repository link for the sync definition for which you want to retrieve information.

", + "ListSyncConfigurationsInput$RepositoryLinkId": "

The ID of the repository link for the requested list of sync configurations.

", + "RepositoryLinkInfo$RepositoryLinkId": "

The ID of the repository link.

", + "SyncConfiguration$RepositoryLinkId": "

The ID of the repository link associated with a specific sync configuration.

", + "UpdateRepositoryLinkInput$RepositoryLinkId": "

The ID of the repository link to be updated.

", + "UpdateSyncConfigurationInput$RepositoryLinkId": "

The ID of the repository link for the sync configuration to be updated.

" + } + }, + "RepositoryLinkInfo": { + "base": "

Information about the repository link resource, such as the repository link ARN, the associated connection ARN, encryption key ARN, and owner ID.

", + "refs": { + "CreateRepositoryLinkOutput$RepositoryLinkInfo": "

The returned information about the created repository link.

", + "GetRepositoryLinkOutput$RepositoryLinkInfo": "

The information returned for a specified repository link.

", + "RepositoryLinkList$member": null, + "UpdateRepositoryLinkOutput$RepositoryLinkInfo": "

Information about the repository link to be updated.

" + } + }, + "RepositoryLinkList": { + "base": null, + "refs": { + "ListRepositoryLinksOutput$RepositoryLinks": "

Lists the repository links called by the list repository links operation.

" + } + }, + "RepositoryName": { + "base": null, + "refs": { + "CreateRepositoryLinkInput$RepositoryName": "

The name of the repository to be associated with the repository link.

", + "RepositoryLinkInfo$RepositoryName": "

The name of the repository associated with the repository link.

", + "Revision$RepositoryName": "

The repository name for a specific revision.

", + "SyncConfiguration$RepositoryName": "

The name of the repository associated with a specific sync configuration.

" + } + }, + "RepositorySyncAttempt": { + "base": "

Information about a repository sync attempt for a repository with a sync configuration.

", + "refs": { + "GetRepositorySyncStatusOutput$LatestSync": "

The status of the latest sync returned for a specified repository and branch.

" + } + }, + "RepositorySyncDefinition": { + "base": "

The definition for a repository with a sync configuration.

", + "refs": { + "RepositorySyncDefinitionList$member": null + } + }, + "RepositorySyncDefinitionList": { + "base": null, + "refs": { + "ListRepositorySyncDefinitionsOutput$RepositorySyncDefinitions": "

The list of repository sync definitions returned by the request. A RepositorySyncDefinition is a mapping from a repository branch to all the Amazon Web Services resources that are being synced from that branch.

" + } + }, + "RepositorySyncEvent": { + "base": "

Information about a repository sync event.

", + "refs": { + "RepositorySyncEventList$member": null + } + }, + "RepositorySyncEventList": { + "base": null, + "refs": { + "RepositorySyncAttempt$Events": "

The events associated with a specific sync attempt.

" + } + }, + "RepositorySyncStatus": { + "base": null, + "refs": { + "RepositorySyncAttempt$Status": "

The status of a specific sync attempt. The following are valid statuses:

" + } + }, + "ResolvedReason": { + "base": null, + "refs": { + "SyncBlocker$ResolvedReason": "

The resolved reason for a specific sync blocker.

", + "UpdateSyncBlockerInput$ResolvedReason": "

The reason for resolving the sync blocker.

" + } + }, + "ResourceAlreadyExistsException": { + "base": "

Unable to create resource. Resource already exists.

", + "refs": { + } + }, + "ResourceName": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$ResourceName": "

The name of the Amazon Web Services resource (for example, a CloudFormation stack in the case of CFN_STACK_SYNC) that will be synchronized from the linked repository.

", + "DeleteSyncConfigurationInput$ResourceName": "

The name of the Amazon Web Services resource associated with the sync configuration to be deleted.

", + "GetResourceSyncStatusInput$ResourceName": "

The name of the Amazon Web Services resource for the sync status with the Git repository.

", + "GetSyncBlockerSummaryInput$ResourceName": "

The name of the Amazon Web Services resource currently blocked from automatically being synced from a Git repository.

", + "GetSyncConfigurationInput$ResourceName": "

The name of the Amazon Web Services resource for the sync configuration for which you want to retrieve information.

", + "SyncBlockerSummary$ResourceName": "

The resource name for sync blocker summary.

", + "SyncBlockerSummary$ParentResourceName": "

The parent resource name for a sync blocker summary.

", + "SyncConfiguration$ResourceName": "

The name of the connection resource associated with a specific sync configuration.

", + "UpdateSyncBlockerInput$ResourceName": "

The name of the resource for the sync blocker to be updated.

", + "UpdateSyncBlockerOutput$ResourceName": "

The resource name for the sync blocker.

", + "UpdateSyncBlockerOutput$ParentResourceName": "

The parent resource name for the sync blocker.

", + "UpdateSyncConfigurationInput$ResourceName": "

The name of the Amazon Web Services resource for the sync configuration to be updated.

" } }, "ResourceNotFoundException": { @@ -253,11 +645,55 @@ "refs": { } }, + "ResourceSyncAttempt": { + "base": "

Information about a resource sync attempt.

", + "refs": { + "GetResourceSyncStatusOutput$LatestSuccessfulSync": "

The latest successful sync for the sync status with the Git repository.

", + "GetResourceSyncStatusOutput$LatestSync": "

The latest sync for the sync status with the Git repository, whether successful or not.

" + } + }, + "ResourceSyncEvent": { + "base": "

Information about a resource sync event for the resource associated with a sync configuration.

", + "refs": { + "ResourceSyncEventList$member": null + } + }, + "ResourceSyncEventList": { + "base": null, + "refs": { + "ResourceSyncAttempt$Events": "

The events related to a resource sync attempt.

" + } + }, + "ResourceSyncStatus": { + "base": null, + "refs": { + "ResourceSyncAttempt$Status": "

The status for a resource sync attempt. The follow are valid statuses:

" + } + }, "ResourceUnavailableException": { "base": "

Resource not found. Verify the ARN for the host resource and try again.

", "refs": { } }, + "RetryLatestCommitFailedException": { + "base": "

Retrying the latest commit failed. Try again later.

", + "refs": { + } + }, + "Revision": { + "base": "

Information about the revision for a specific sync event, such as the branch, owner ID, and name of the repository.

", + "refs": { + "GetResourceSyncStatusOutput$DesiredState": "

The desired state of the Amazon Web Services resource for the sync status with the Git repository.

", + "ResourceSyncAttempt$InitialRevision": "

The current state of the resource as defined in the resource's config-file in the linked repository.

", + "ResourceSyncAttempt$TargetRevision": "

The desired state of the resource as defined in the resource's config-file in the linked repository. Git sync attempts to update the resource to this state.

" + } + }, + "SHA": { + "base": null, + "refs": { + "Revision$Sha": "

The SHA, such as the commit ID, for a specific revision.

" + } + }, "SecurityGroupId": { "base": null, "refs": { @@ -270,6 +706,16 @@ "VpcConfiguration$SecurityGroupIds": "

The ID of the security group or security groups associated with the Amazon VPC connected to the infrastructure where your provider type is installed.

" } }, + "SharpNextToken": { + "base": null, + "refs": { + "ListRepositoryLinksInput$NextToken": "

An enumeration token that, when provided in a request, returns the next batch of the results.

", + "ListRepositoryLinksOutput$NextToken": "

An enumeration token that allows the operation to batch the results of the operation.

", + "ListRepositorySyncDefinitionsOutput$NextToken": "

An enumeration token that, when provided in a request, returns the next batch of the results.

", + "ListSyncConfigurationsInput$NextToken": "

An enumeration token that allows the operation to batch the results of the operation.

", + "ListSyncConfigurationsOutput$NextToken": "

An enumeration token that allows the operation to batch the next results of the operation.

" + } + }, "SubnetId": { "base": null, "refs": { @@ -282,6 +728,84 @@ "VpcConfiguration$SubnetIds": "

The ID of the subnet or subnets associated with the Amazon VPC connected to the infrastructure where your provider type is installed.

" } }, + "SyncBlocker": { + "base": "

Information about a blocker for a sync event.

", + "refs": { + "LatestSyncBlockerList$member": null, + "UpdateSyncBlockerOutput$SyncBlocker": "

Information about the sync blocker to be updated.

" + } + }, + "SyncBlockerContext": { + "base": "

The context for a specific sync blocker.

", + "refs": { + "SyncBlockerContextList$member": null + } + }, + "SyncBlockerContextKey": { + "base": null, + "refs": { + "SyncBlockerContext$Key": "

The key provided for a context key-value pair for a specific sync blocker.

" + } + }, + "SyncBlockerContextList": { + "base": null, + "refs": { + "SyncBlocker$Contexts": "

The contexts for a specific sync blocker.

" + } + }, + "SyncBlockerContextValue": { + "base": null, + "refs": { + "SyncBlockerContext$Value": "

The value provided for a context key-value pair for a specific sync blocker.

" + } + }, + "SyncBlockerDoesNotExistException": { + "base": "

Unable to continue. The sync blocker does not exist.

", + "refs": { + } + }, + "SyncBlockerSummary": { + "base": "

A summary for sync blockers.

", + "refs": { + "GetSyncBlockerSummaryOutput$SyncBlockerSummary": "

The list of sync blockers for a specified resource.

" + } + }, + "SyncConfiguration": { + "base": "

Information, such as repository, branch, provider, and resource names for a specific sync configuration.

", + "refs": { + "CreateSyncConfigurationOutput$SyncConfiguration": "

The created sync configuration for the connection. A sync configuration allows Amazon Web Services to sync content from a Git repository to update a specified Amazon Web Services resource.

", + "GetSyncConfigurationOutput$SyncConfiguration": "

The details about the sync configuration for which you want to retrieve information.

", + "SyncConfigurationList$member": null, + "UpdateSyncConfigurationOutput$SyncConfiguration": "

The information returned for the sync configuration to be updated.

" + } + }, + "SyncConfigurationList": { + "base": null, + "refs": { + "ListSyncConfigurationsOutput$SyncConfigurations": "

The list of repository sync definitions returned by the request.

" + } + }, + "SyncConfigurationStillExistsException": { + "base": "

Unable to continue. The sync blocker still exists.

", + "refs": { + } + }, + "SyncConfigurationType": { + "base": null, + "refs": { + "CreateSyncConfigurationInput$SyncType": "

The type of sync configuration.

", + "DeleteSyncConfigurationInput$SyncType": "

The type of sync configuration to be deleted.

", + "GetRepositorySyncStatusInput$SyncType": "

The sync type of the requested sync status.

", + "GetResourceSyncStatusInput$SyncType": "

The sync type for the sync status with the Git repository.

", + "GetSyncBlockerSummaryInput$SyncType": "

The sync type for the sync blocker summary.

", + "GetSyncConfigurationInput$SyncType": "

The sync type for the sync configuration for which you want to retrieve information.

", + "ListRepositorySyncDefinitionsInput$SyncType": "

The sync type of the repository link for the the sync definition for which you want to retrieve information.

", + "ListSyncConfigurationsInput$SyncType": "

The sync type for the requested list of sync configurations.

", + "SyncConfiguration$SyncType": "

The type of sync for a specific sync configuration.

", + "UpdateSyncBlockerInput$SyncType": "

The sync type of the sync blocker to be updated.

", + "UpdateSyncConfigurationInput$SyncType": "

The sync type for the sync configuration to be updated.

" + } + }, "Tag": { "base": "

A tag is a key-value pair that is used to manage the resource.

This tag is available for use by Amazon Web Services services that support tags.

", "refs": { @@ -306,8 +830,9 @@ "refs": { "CreateConnectionInput$Tags": "

The key-value pair to use when tagging the resource.

", "CreateConnectionOutput$Tags": "

Specifies the tags applied to the resource.

", - "CreateHostInput$Tags": null, - "CreateHostOutput$Tags": null, + "CreateHostInput$Tags": "

Tags for the host to be created.

", + "CreateHostOutput$Tags": "

Tags for the created host.

", + "CreateRepositoryLinkInput$Tags": "

The tags for the repository to be associated with the repository link.

", "ListTagsForResourceOutput$Tags": "

A list of tag key and value pairs associated with the specified resource.

", "TagResourceInput$Tags": "

The tags you want to modify or add to the resource.

" } @@ -328,17 +853,52 @@ "Tag$Value": "

The tag's value.

" } }, + "Target": { + "base": null, + "refs": { + "RepositorySyncDefinition$Target": "

The target resource specified for a repository sync definition. In some cases, such as CFN_STACK_SYNC, the parent and target resource are the same.

", + "ResourceSyncAttempt$Target": "

The name of the Amazon Web Services resource that is attempted to be synchronized.

" + } + }, + "ThrottlingException": { + "base": "

The request was denied due to request throttling.

", + "refs": { + } + }, + "Timestamp": { + "base": null, + "refs": { + "RepositorySyncAttempt$StartedAt": "

The start time of a specific sync attempt.

", + "RepositorySyncEvent$Time": "

The time that a repository sync event occurred.

", + "ResourceSyncAttempt$StartedAt": "

The start time for a resource sync attempt.

", + "ResourceSyncEvent$Time": "

The time that a resource sync event occurred.

", + "SyncBlocker$CreatedAt": "

The creation time for a specific sync blocker.

", + "SyncBlocker$ResolvedAt": "

The time that a specific sync blocker was resolved.

" + } + }, "TlsCertificate": { "base": null, "refs": { "VpcConfiguration$TlsCertificate": "

The value of the Transport Layer Security (TLS) certificate associated with the infrastructure where your provider type is installed.

" } }, + "Type": { + "base": null, + "refs": { + "RepositorySyncEvent$Type": "

The event type for a repository sync event.

", + "ResourceSyncEvent$Type": "

The type of resource sync event.

" + } + }, "UnsupportedOperationException": { "base": "

The operation is not supported. Check the connection status and try again.

", "refs": { } }, + "UnsupportedProviderTypeException": { + "base": "

The specified provider type is not supported for connections.

", + "refs": { + } + }, "UntagResourceInput": { "base": null, "refs": { @@ -359,6 +919,41 @@ "refs": { } }, + "UpdateOutOfSyncException": { + "base": "

The update is out of sync. Try syncing again.

", + "refs": { + } + }, + "UpdateRepositoryLinkInput": { + "base": null, + "refs": { + } + }, + "UpdateRepositoryLinkOutput": { + "base": null, + "refs": { + } + }, + "UpdateSyncBlockerInput": { + "base": null, + "refs": { + } + }, + "UpdateSyncBlockerOutput": { + "base": null, + "refs": { + } + }, + "UpdateSyncConfigurationInput": { + "base": null, + "refs": { + } + }, + "UpdateSyncConfigurationOutput": { + "base": null, + "refs": { + } + }, "Url": { "base": null, "refs": { diff --git a/apis/codestar-connections/2019-12-01/paginators-1.json b/apis/codestar-connections/2019-12-01/paginators-1.json index 1b3698862ca..11686affe88 100644 --- a/apis/codestar-connections/2019-12-01/paginators-1.json +++ b/apis/codestar-connections/2019-12-01/paginators-1.json @@ -9,6 +9,16 @@ "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults" + }, + "ListRepositoryLinks": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListSyncConfigurations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" } } } diff --git a/apis/compute-optimizer/2019-11-01/api-2.json b/apis/compute-optimizer/2019-11-01/api-2.json index 89dce5617ac..80a5986d267 100644 --- a/apis/compute-optimizer/2019-11-01/api-2.json +++ b/apis/compute-optimizer/2019-11-01/api-2.json @@ -492,6 +492,13 @@ "instanceType":{"shape":"InstanceType"} } }, + "AutoScalingGroupEstimatedMonthlySavings":{ + "type":"structure", + "members":{ + "currency":{"shape":"Currency"}, + "value":{"shape":"Value"} + } + }, "AutoScalingGroupName":{"type":"string"}, "AutoScalingGroupRecommendation":{ "type":"structure", @@ -520,7 +527,8 @@ "rank":{"shape":"Rank"}, "savingsOpportunity":{"shape":"SavingsOpportunity"}, "migrationEffort":{"shape":"MigrationEffort"}, - "instanceGpuInfo":{"shape":"GpuInfo"} + "instanceGpuInfo":{"shape":"GpuInfo"}, + "savingsOpportunityAfterDiscounts":{"shape":"AutoScalingGroupSavingsOpportunityAfterDiscounts"} } }, "AutoScalingGroupRecommendationOptions":{ @@ -531,6 +539,13 @@ "type":"list", "member":{"shape":"AutoScalingGroupRecommendation"} }, + "AutoScalingGroupSavingsOpportunityAfterDiscounts":{ + "type":"structure", + "members":{ + "savingsOpportunityPercentage":{"shape":"SavingsOpportunityPercentage"}, + "estimatedMonthlySavings":{"shape":"AutoScalingGroupEstimatedMonthlySavings"} + } + }, "Code":{"type":"string"}, "ContainerConfiguration":{ "type":"structure", @@ -596,6 +611,33 @@ "veryLow":{"shape":"VeryLow"} } }, + "CustomizableMetricHeadroom":{ + "type":"string", + "enum":[ + "PERCENT_30", + "PERCENT_20", + "PERCENT_0" + ] + }, + "CustomizableMetricName":{ + "type":"string", + "enum":["CpuUtilization"] + }, + "CustomizableMetricParameters":{ + "type":"structure", + "members":{ + "threshold":{"shape":"CustomizableMetricThreshold"}, + "headroom":{"shape":"CustomizableMetricHeadroom"} + } + }, + "CustomizableMetricThreshold":{ + "type":"string", + "enum":[ + "P90", + "P95", + "P99_5" + ] + }, "DeleteRecommendationPreferencesRequest":{ "type":"structure", "required":[ @@ -633,6 +675,19 @@ "DestinationBucket":{"type":"string"}, "DestinationKey":{"type":"string"}, "DestinationKeyPrefix":{"type":"string"}, + "EBSEffectiveRecommendationPreferences":{ + "type":"structure", + "members":{ + "savingsEstimationMode":{"shape":"EBSSavingsEstimationMode"} + } + }, + "EBSEstimatedMonthlySavings":{ + "type":"structure", + "members":{ + "currency":{"shape":"Currency"}, + "value":{"shape":"Value"} + } + }, "EBSFilter":{ "type":"structure", "members":{ @@ -664,6 +719,27 @@ "VolumeWriteBytesPerSecond" ] }, + "EBSSavingsEstimationMode":{ + "type":"structure", + "members":{ + "source":{"shape":"EBSSavingsEstimationModeSource"} + } + }, + "EBSSavingsEstimationModeSource":{ + "type":"string", + "enum":[ + "PublicPricing", + "CostExplorerRightsizing", + "CostOptimizationHub" + ] + }, + "EBSSavingsOpportunityAfterDiscounts":{ + "type":"structure", + "members":{ + "savingsOpportunityPercentage":{"shape":"SavingsOpportunityPercentage"}, + "estimatedMonthlySavings":{"shape":"EBSEstimatedMonthlySavings"} + } + }, "EBSUtilizationMetric":{ "type":"structure", "members":{ @@ -676,6 +752,40 @@ "type":"list", "member":{"shape":"EBSUtilizationMetric"} }, + "ECSEffectiveRecommendationPreferences":{ + "type":"structure", + "members":{ + "savingsEstimationMode":{"shape":"ECSSavingsEstimationMode"} + } + }, + "ECSEstimatedMonthlySavings":{ + "type":"structure", + "members":{ + "currency":{"shape":"Currency"}, + "value":{"shape":"Value"} + } + }, + "ECSSavingsEstimationMode":{ + "type":"structure", + "members":{ + "source":{"shape":"ECSSavingsEstimationModeSource"} + } + }, + "ECSSavingsEstimationModeSource":{ + "type":"string", + "enum":[ + "PublicPricing", + "CostExplorerRightsizing", + "CostOptimizationHub" + ] + }, + "ECSSavingsOpportunityAfterDiscounts":{ + "type":"structure", + "members":{ + "savingsOpportunityPercentage":{"shape":"SavingsOpportunityPercentage"}, + "estimatedMonthlySavings":{"shape":"ECSEstimatedMonthlySavings"} + } + }, "ECSServiceLaunchType":{ "type":"string", "enum":[ @@ -737,7 +847,8 @@ "findingReasonCodes":{"shape":"ECSServiceRecommendationFindingReasonCodes"}, "serviceRecommendationOptions":{"shape":"ECSServiceRecommendationOptions"}, "currentPerformanceRisk":{"shape":"CurrentPerformanceRisk"}, - "tags":{"shape":"Tags"} + "tags":{"shape":"Tags"}, + "effectiveRecommendationPreferences":{"shape":"ECSEffectiveRecommendationPreferences"} } }, "ECSServiceRecommendationFilter":{ @@ -786,7 +897,8 @@ "cpu":{"shape":"NullableCpu"}, "savingsOpportunity":{"shape":"SavingsOpportunity"}, "projectedUtilizationMetrics":{"shape":"ECSServiceProjectedUtilizationMetrics"}, - "containerRecommendations":{"shape":"ContainerRecommendations"} + "containerRecommendations":{"shape":"ContainerRecommendations"}, + "savingsOpportunityAfterDiscounts":{"shape":"ECSSavingsOpportunityAfterDiscounts"} } }, "ECSServiceRecommendationOptions":{ @@ -821,13 +933,30 @@ "type":"list", "member":{"shape":"ECSServiceUtilizationMetric"} }, + "EffectivePreferredResource":{ + "type":"structure", + "members":{ + "name":{"shape":"PreferredResourceName"}, + "includeList":{"shape":"PreferredResourceValues"}, + "effectiveIncludeList":{"shape":"PreferredResourceValues"}, + "excludeList":{"shape":"PreferredResourceValues"} + } + }, + "EffectivePreferredResources":{ + "type":"list", + "member":{"shape":"EffectivePreferredResource"} + }, "EffectiveRecommendationPreferences":{ "type":"structure", "members":{ "cpuVendorArchitectures":{"shape":"CpuVendorArchitectures"}, "enhancedInfrastructureMetrics":{"shape":"EnhancedInfrastructureMetrics"}, "inferredWorkloadTypes":{"shape":"InferredWorkloadTypesPreference"}, - "externalMetricsPreference":{"shape":"ExternalMetricsPreference"} + "externalMetricsPreference":{"shape":"ExternalMetricsPreference"}, + "lookBackPeriod":{"shape":"LookBackPeriodPreference"}, + "utilizationPreferences":{"shape":"UtilizationPreferences"}, + "preferredResources":{"shape":"EffectivePreferredResources"}, + "savingsEstimationMode":{"shape":"InstanceSavingsEstimationMode"} } }, "EnhancedInfrastructureMetrics":{ @@ -1044,7 +1173,13 @@ "UtilizationMetricsGpuPercentageMaximum", "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", - "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum" + "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", + "EffectiveRecommendationPreferencesSavingsEstimationMode", + "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", + "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", + "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts", + "EffectiveRecommendationPreferencesPreferredResources", + "EffectiveRecommendationPreferencesLookBackPeriod" ] }, "ExportableAutoScalingGroupFields":{ @@ -1077,7 +1212,11 @@ "RecommendationOptionsContainerRecommendations", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", - "Tags" + "Tags", + "EffectiveRecommendationPreferencesSavingsEstimationMode", + "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", + "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", + "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ] }, "ExportableECSServiceFields":{ @@ -1150,7 +1289,14 @@ "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", - "Idle" + "Idle", + "EffectiveRecommendationPreferencesPreferredResources", + "EffectiveRecommendationPreferencesLookBackPeriod", + "EffectiveRecommendationPreferencesUtilizationPreferences", + "EffectiveRecommendationPreferencesSavingsEstimationMode", + "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", + "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", + "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ] }, "ExportableInstanceFields":{ @@ -1186,7 +1332,11 @@ "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", - "Tags" + "Tags", + "EffectiveRecommendationPreferencesSavingsEstimationMode", + "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", + "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", + "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ] }, "ExportableLambdaFunctionFields":{ @@ -1256,7 +1406,11 @@ "RecommendationOptionsEstimatedMonthlySavingsValue", "RootVolume", "Tags", - "CurrentConfigurationRootVolume" + "CurrentConfigurationRootVolume", + "EffectiveRecommendationPreferencesSavingsEstimationMode", + "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", + "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", + "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ] }, "ExportableVolumeFields":{ @@ -1485,7 +1639,10 @@ "type":"structure", "members":{ "enhancedInfrastructureMetrics":{"shape":"EnhancedInfrastructureMetrics"}, - "externalMetricsPreference":{"shape":"ExternalMetricsPreference"} + "externalMetricsPreference":{"shape":"ExternalMetricsPreference"}, + "lookBackPeriod":{"shape":"LookBackPeriodPreference"}, + "utilizationPreferences":{"shape":"UtilizationPreferences"}, + "preferredResources":{"shape":"EffectivePreferredResources"} } }, "GetEnrollmentStatusRequest":{ @@ -1660,6 +1817,13 @@ "type":"list", "member":{"shape":"InstanceArn"} }, + "InstanceEstimatedMonthlySavings":{ + "type":"structure", + "members":{ + "currency":{"shape":"Currency"}, + "value":{"shape":"Value"} + } + }, "InstanceIdle":{ "type":"string", "enum":[ @@ -1731,13 +1895,35 @@ "rank":{"shape":"Rank"}, "savingsOpportunity":{"shape":"SavingsOpportunity"}, "migrationEffort":{"shape":"MigrationEffort"}, - "instanceGpuInfo":{"shape":"GpuInfo"} + "instanceGpuInfo":{"shape":"GpuInfo"}, + "savingsOpportunityAfterDiscounts":{"shape":"InstanceSavingsOpportunityAfterDiscounts"} } }, "InstanceRecommendations":{ "type":"list", "member":{"shape":"InstanceRecommendation"} }, + "InstanceSavingsEstimationMode":{ + "type":"structure", + "members":{ + "source":{"shape":"InstanceSavingsEstimationModeSource"} + } + }, + "InstanceSavingsEstimationModeSource":{ + "type":"string", + "enum":[ + "PublicPricing", + "CostExplorerRightsizing", + "CostOptimizationHub" + ] + }, + "InstanceSavingsOpportunityAfterDiscounts":{ + "type":"structure", + "members":{ + "savingsOpportunityPercentage":{"shape":"SavingsOpportunityPercentage"}, + "estimatedMonthlySavings":{"shape":"InstanceEstimatedMonthlySavings"} + } + }, "InstanceState":{ "type":"string", "enum":[ @@ -1798,6 +1984,19 @@ "Failed" ] }, + "LambdaEffectiveRecommendationPreferences":{ + "type":"structure", + "members":{ + "savingsEstimationMode":{"shape":"LambdaSavingsEstimationMode"} + } + }, + "LambdaEstimatedMonthlySavings":{ + "type":"structure", + "members":{ + "currency":{"shape":"Currency"}, + "value":{"shape":"Value"} + } + }, "LambdaFunctionMemoryMetricName":{ "type":"string", "enum":["Duration"] @@ -1828,7 +2027,8 @@ "rank":{"shape":"Rank"}, "memorySize":{"shape":"MemorySize"}, "projectedUtilizationMetrics":{"shape":"LambdaFunctionMemoryProjectedMetrics"}, - "savingsOpportunity":{"shape":"SavingsOpportunity"} + "savingsOpportunity":{"shape":"SavingsOpportunity"}, + "savingsOpportunityAfterDiscounts":{"shape":"LambdaSavingsOpportunityAfterDiscounts"} } }, "LambdaFunctionMemoryRecommendationOptions":{ @@ -1864,7 +2064,8 @@ "findingReasonCodes":{"shape":"LambdaFunctionRecommendationFindingReasonCodes"}, "memorySizeRecommendationOptions":{"shape":"LambdaFunctionMemoryRecommendationOptions"}, "currentPerformanceRisk":{"shape":"CurrentPerformanceRisk"}, - "tags":{"shape":"Tags"} + "tags":{"shape":"Tags"}, + "effectiveRecommendationPreferences":{"shape":"LambdaEffectiveRecommendationPreferences"} } }, "LambdaFunctionRecommendationFilter":{ @@ -1922,6 +2123,27 @@ "type":"list", "member":{"shape":"LambdaFunctionUtilizationMetric"} }, + "LambdaSavingsEstimationMode":{ + "type":"structure", + "members":{ + "source":{"shape":"LambdaSavingsEstimationModeSource"} + } + }, + "LambdaSavingsEstimationModeSource":{ + "type":"string", + "enum":[ + "PublicPricing", + "CostExplorerRightsizing", + "CostOptimizationHub" + ] + }, + "LambdaSavingsOpportunityAfterDiscounts":{ + "type":"structure", + "members":{ + "savingsOpportunityPercentage":{"shape":"SavingsOpportunityPercentage"}, + "estimatedMonthlySavings":{"shape":"LambdaEstimatedMonthlySavings"} + } + }, "LastRefreshTimestamp":{"type":"timestamp"}, "LastUpdatedTimestamp":{"type":"timestamp"}, "LicenseConfiguration":{ @@ -2039,6 +2261,14 @@ "synthetic":true }, "LookBackPeriodInDays":{"type":"double"}, + "LookBackPeriodPreference":{ + "type":"string", + "enum":[ + "DAYS_14", + "DAYS_32", + "DAYS_93" + ] + }, "Low":{"type":"long"}, "LowerBoundValue":{"type":"double"}, "MaxResults":{ @@ -2164,6 +2394,27 @@ "type":"list", "member":{"shape":"PlatformDifference"} }, + "PreferredResource":{ + "type":"structure", + "members":{ + "name":{"shape":"PreferredResourceName"}, + "includeList":{"shape":"PreferredResourceValues"}, + "excludeList":{"shape":"PreferredResourceValues"} + } + }, + "PreferredResourceName":{ + "type":"string", + "enum":["Ec2InstanceTypes"] + }, + "PreferredResourceValue":{"type":"string"}, + "PreferredResourceValues":{ + "type":"list", + "member":{"shape":"PreferredResourceValue"} + }, + "PreferredResources":{ + "type":"list", + "member":{"shape":"PreferredResource"} + }, "ProjectedMetric":{ "type":"structure", "members":{ @@ -2188,7 +2439,11 @@ "scope":{"shape":"Scope"}, "enhancedInfrastructureMetrics":{"shape":"EnhancedInfrastructureMetrics"}, "inferredWorkloadTypes":{"shape":"InferredWorkloadTypesPreference"}, - "externalMetricsPreference":{"shape":"ExternalMetricsPreference"} + "externalMetricsPreference":{"shape":"ExternalMetricsPreference"}, + "lookBackPeriod":{"shape":"LookBackPeriodPreference"}, + "utilizationPreferences":{"shape":"UtilizationPreferences"}, + "preferredResources":{"shape":"PreferredResources"}, + "savingsEstimationMode":{"shape":"SavingsEstimationMode"} } }, "PutRecommendationPreferencesResponse":{ @@ -2233,7 +2488,10 @@ "enum":[ "EnhancedInfrastructureMetrics", "InferredWorkloadTypes", - "ExternalMetricsPreference" + "ExternalMetricsPreference", + "LookBackPeriodPreference", + "PreferredResources", + "UtilizationPreferences" ] }, "RecommendationPreferenceNames":{ @@ -2253,7 +2511,11 @@ "resourceType":{"shape":"ResourceType"}, "enhancedInfrastructureMetrics":{"shape":"EnhancedInfrastructureMetrics"}, "inferredWorkloadTypes":{"shape":"InferredWorkloadTypesPreference"}, - "externalMetricsPreference":{"shape":"ExternalMetricsPreference"} + "externalMetricsPreference":{"shape":"ExternalMetricsPreference"}, + "lookBackPeriod":{"shape":"LookBackPeriodPreference"}, + "utilizationPreferences":{"shape":"UtilizationPreferences"}, + "preferredResources":{"shape":"EffectivePreferredResources"}, + "savingsEstimationMode":{"shape":"SavingsEstimationMode"} } }, "RecommendationPreferencesDetails":{ @@ -2352,6 +2614,13 @@ "keyPrefix":{"shape":"DestinationKeyPrefix"} } }, + "SavingsEstimationMode":{ + "type":"string", + "enum":[ + "AfterDiscounts", + "BeforeDiscounts" + ] + }, "SavingsOpportunity":{ "type":"structure", "members":{ @@ -2478,6 +2747,17 @@ "type":"list", "member":{"shape":"UtilizationMetric"} }, + "UtilizationPreference":{ + "type":"structure", + "members":{ + "metricName":{"shape":"CustomizableMetricName"}, + "metricParameters":{"shape":"CustomizableMetricParameters"} + } + }, + "UtilizationPreferences":{ + "type":"list", + "member":{"shape":"UtilizationPreference"} + }, "Value":{"type":"double"}, "VeryLow":{"type":"long"}, "VolumeArn":{"type":"string"}, @@ -2513,7 +2793,8 @@ "volumeRecommendationOptions":{"shape":"VolumeRecommendationOptions"}, "lastRefreshTimestamp":{"shape":"LastRefreshTimestamp"}, "currentPerformanceRisk":{"shape":"CurrentPerformanceRisk"}, - "tags":{"shape":"Tags"} + "tags":{"shape":"Tags"}, + "effectiveRecommendationPreferences":{"shape":"EBSEffectiveRecommendationPreferences"} } }, "VolumeRecommendationOption":{ @@ -2522,7 +2803,8 @@ "configuration":{"shape":"VolumeConfiguration"}, "performanceRisk":{"shape":"PerformanceRisk"}, "rank":{"shape":"Rank"}, - "savingsOpportunity":{"shape":"SavingsOpportunity"} + "savingsOpportunity":{"shape":"SavingsOpportunity"}, + "savingsOpportunityAfterDiscounts":{"shape":"EBSSavingsOpportunityAfterDiscounts"} } }, "VolumeRecommendationOptions":{ diff --git a/apis/compute-optimizer/2019-11-01/docs-2.json b/apis/compute-optimizer/2019-11-01/docs-2.json index 5aae4cc54e9..c56007a3779 100644 --- a/apis/compute-optimizer/2019-11-01/docs-2.json +++ b/apis/compute-optimizer/2019-11-01/docs-2.json @@ -102,6 +102,12 @@ "AutoScalingGroupRecommendationOption$configuration": "

An array of objects that describe an Auto Scaling group configuration.

" } }, + "AutoScalingGroupEstimatedMonthlySavings": { + "base": "

An object that describes the estimated monthly savings possible by adopting Compute Optimizer’s Auto Scaling group recommendations. This is based on the Savings Plans and Reserved Instances discounts.

", + "refs": { + "AutoScalingGroupSavingsOpportunityAfterDiscounts$estimatedMonthlySavings": "

An object that describes the estimated monthly savings possible by adopting Compute Optimizer’s Auto Scaling group recommendations. This is based on the Savings Plans and Reserved Instances pricing discounts.

" + } + }, "AutoScalingGroupName": { "base": null, "refs": { @@ -132,6 +138,12 @@ "GetAutoScalingGroupRecommendationsResponse$autoScalingGroupRecommendations": "

An array of objects that describe Auto Scaling group recommendations.

" } }, + "AutoScalingGroupSavingsOpportunityAfterDiscounts": { + "base": "

Describes the savings opportunity for Auto Scaling group recommendations after applying the Savings Plans and Reserved Instances discounts.

Savings opportunity represents the estimated monthly savings you can achieve by implementing Compute Optimizer recommendations.

", + "refs": { + "AutoScalingGroupRecommendationOption$savingsOpportunityAfterDiscounts": "

An object that describes the savings opportunity for the Auto Scaling group recommendation option that includes Savings Plans and Reserved Instances discounts. Savings opportunity includes the estimated monthly savings and percentage.

" + } + }, "Code": { "base": null, "refs": { @@ -197,7 +209,12 @@ "Currency": { "base": null, "refs": { - "EstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

" + "AutoScalingGroupEstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

", + "EBSEstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

", + "ECSEstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

", + "EstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

", + "InstanceEstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

", + "LambdaEstimatedMonthlySavings$currency": "

The currency of the estimated monthly savings.

" } }, "CurrentInstanceType": { @@ -222,6 +239,30 @@ "RecommendationSummary$currentPerformanceRiskRatings": "

An object that describes the performance risk ratings for a given resource type.

" } }, + "CustomizableMetricHeadroom": { + "base": null, + "refs": { + "CustomizableMetricParameters$headroom": "

The headroom threshold value in percentage used for the specified metric parameter.

" + } + }, + "CustomizableMetricName": { + "base": null, + "refs": { + "UtilizationPreference$metricName": "

The name of the resource utilization metric name to customize.

Compute Optimizer only supports CpuUtilization.

" + } + }, + "CustomizableMetricParameters": { + "base": "

Defines the various metric parameters that can be customized, such as threshold and headroom.

", + "refs": { + "UtilizationPreference$metricParameters": "

The parameters to set when customizing the resource utilization thresholds.

" + } + }, + "CustomizableMetricThreshold": { + "base": null, + "refs": { + "CustomizableMetricParameters$threshold": "

The threshold value used for the specified metric parameter.

" + } + }, "DeleteRecommendationPreferencesRequest": { "base": null, "refs": { @@ -267,6 +308,18 @@ "S3DestinationConfig$keyPrefix": "

The Amazon S3 bucket prefix for an export job.

" } }, + "EBSEffectiveRecommendationPreferences": { + "base": "

Describes the effective recommendation preferences for Amazon EBS volumes.

", + "refs": { + "VolumeRecommendation$effectiveRecommendationPreferences": "

Describes the effective recommendation preferences for Amazon EBS volume.

" + } + }, + "EBSEstimatedMonthlySavings": { + "base": "

An object that describes the estimated monthly savings possible by adopting Compute Optimizer’s Amazon EBS volume recommendations. This includes any applicable discounts.

", + "refs": { + "EBSSavingsOpportunityAfterDiscounts$estimatedMonthlySavings": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer’s Amazon EBS volume recommendations. This saving includes any applicable discounts.

" + } + }, "EBSFilter": { "base": "

Describes a filter that returns a more specific list of Amazon Elastic Block Store (Amazon EBS) volume recommendations. Use this filter with the GetEBSVolumeRecommendations action.

You can use LambdaFunctionRecommendationFilter with the GetLambdaFunctionRecommendations action, JobFilter with the DescribeRecommendationExportJobs action, and Filter with the GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations actions.

", "refs": { @@ -298,6 +351,24 @@ "EBSUtilizationMetric$name": "

The name of the utilization metric.

The following utilization metrics are available:

" } }, + "EBSSavingsEstimationMode": { + "base": "

Describes the savings estimation mode used for calculating savings opportunity for Amazon EBS volumes.

", + "refs": { + "EBSEffectiveRecommendationPreferences$savingsEstimationMode": "

Describes the savings estimation mode preference applied for calculating savings opportunity for Amazon EBS volumes.

" + } + }, + "EBSSavingsEstimationModeSource": { + "base": null, + "refs": { + "EBSSavingsEstimationMode$source": "

Describes the source for calculating the savings opportunity for Amazon EBS volumes.

" + } + }, + "EBSSavingsOpportunityAfterDiscounts": { + "base": "

Describes the savings opportunity for Amazon EBS volume recommendations after applying specific discounts.

", + "refs": { + "VolumeRecommendationOption$savingsOpportunityAfterDiscounts": "

An object that describes the savings opportunity for the Amazon EBS volume recommendation option with specific discounts. Savings opportunity includes the estimated monthly savings and percentage.

" + } + }, "EBSUtilizationMetric": { "base": "

Describes a utilization metric of an Amazon Elastic Block Store (Amazon EBS) volume.

Compare the utilization metric data of your resource against its projected utilization metric data to determine the performance difference between your current resource and the recommended option.

", "refs": { @@ -310,6 +381,36 @@ "VolumeRecommendation$utilizationMetrics": "

An array of objects that describe the utilization metrics of the volume.

" } }, + "ECSEffectiveRecommendationPreferences": { + "base": "

Describes the effective recommendation preferences for Amazon ECS services.

", + "refs": { + "ECSServiceRecommendation$effectiveRecommendationPreferences": "

Describes the effective recommendation preferences for Amazon ECS services.

" + } + }, + "ECSEstimatedMonthlySavings": { + "base": "

Describes the estimated monthly savings possible for Amazon ECS services by adopting Compute Optimizer recommendations. This is based on Amazon ECS service pricing after applying Savings Plans discounts.

", + "refs": { + "ECSSavingsOpportunityAfterDiscounts$estimatedMonthlySavings": "

The estimated monthly savings possible by adopting Compute Optimizer’s Amazon ECS service recommendations. This includes any applicable Savings Plans discounts.

" + } + }, + "ECSSavingsEstimationMode": { + "base": "

Describes the savings estimation mode used for calculating savings opportunity for Amazon ECS services.

", + "refs": { + "ECSEffectiveRecommendationPreferences$savingsEstimationMode": "

Describes the savings estimation mode preference applied for calculating savings opportunity for Amazon ECS services.

" + } + }, + "ECSSavingsEstimationModeSource": { + "base": null, + "refs": { + "ECSSavingsEstimationMode$source": "

Describes the source for calculating the savings opportunity for Amazon ECS services.

" + } + }, + "ECSSavingsOpportunityAfterDiscounts": { + "base": "

Describes the savings opportunity for Amazon ECS service recommendations after applying Savings Plans discounts.

Savings opportunity represents the estimated monthly savings after applying Savings Plans discounts. You can achieve this by implementing a given Compute Optimizer recommendation.

", + "refs": { + "ECSServiceRecommendationOption$savingsOpportunityAfterDiscounts": "

Describes the savings opportunity for Amazon ECS service recommendations or for the recommendation option.

Savings opportunity represents the estimated monthly savings after applying Savings Plans discounts. You can achieve this by implementing a given Compute Optimizer recommendation.

" + } + }, "ECSServiceLaunchType": { "base": null, "refs": { @@ -440,6 +541,20 @@ "ECSServiceRecommendation$utilizationMetrics": "

An array of objects that describe the utilization metrics of the Amazon ECS service.

" } }, + "EffectivePreferredResource": { + "base": "

Describes the effective preferred resources that Compute Optimizer considers as rightsizing recommendation candidates.

Compute Optimizer only supports Amazon EC2 instance types.

", + "refs": { + "EffectivePreferredResources$member": null + } + }, + "EffectivePreferredResources": { + "base": null, + "refs": { + "EffectiveRecommendationPreferences$preferredResources": "

The resource type values that are considered as candidates when generating rightsizing recommendations.

", + "GetEffectiveRecommendationPreferencesResponse$preferredResources": "

The resource type values that are considered as candidates when generating rightsizing recommendations. This object resolves any wildcard expressions and returns the effective list of candidate resource type values. It also considers all applicable preferences that you set at the resource, account, and organization level.

To validate that the preference is applied to your last generated set of recommendations, review the effectiveRecommendationPreferences value in the response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations actions.

", + "RecommendationPreferencesDetail$preferredResources": "

The preference to control which resource type values are considered when generating rightsizing recommendations. This object resolves any wildcard expressions and returns the effective list of candidate resource type values. If the preference isn’t set, this object is null.

" + } + }, "EffectiveRecommendationPreferences": { "base": "

Describes the effective recommendation preferences for a resource.

", "refs": { @@ -1006,6 +1121,12 @@ "GetEC2InstanceRecommendationsRequest$instanceArns": "

The Amazon Resource Name (ARN) of the instances for which to return recommendations.

" } }, + "InstanceEstimatedMonthlySavings": { + "base": "

An object that describes the estimated monthly savings possible by adopting Compute Optimizer’s Amazon EC2 instance recommendations. This is based on the Savings Plans and Reserved Instances pricing discounts.

", + "refs": { + "InstanceSavingsOpportunityAfterDiscounts$estimatedMonthlySavings": "

An object that describes the estimated monthly savings possible by adopting Compute Optimizer’s Amazon EC2 instance recommendations. This is based on pricing after applying the Savings Plans and Reserved Instances discounts.

" + } + }, "InstanceIdle": { "base": null, "refs": { @@ -1048,6 +1169,24 @@ "GetEC2InstanceRecommendationsResponse$instanceRecommendations": "

An array of objects that describe instance recommendations.

" } }, + "InstanceSavingsEstimationMode": { + "base": "

Describes the savings estimation mode used for calculating savings opportunity for Amazon EC2 instances.

", + "refs": { + "EffectiveRecommendationPreferences$savingsEstimationMode": "

Describes the savings estimation mode applied for calculating savings opportunity for a resource.

" + } + }, + "InstanceSavingsEstimationModeSource": { + "base": null, + "refs": { + "InstanceSavingsEstimationMode$source": "

Describes the source for calculating the savings opportunity for Amazon EC2 instances.

" + } + }, + "InstanceSavingsOpportunityAfterDiscounts": { + "base": "

Describes the savings opportunity for instance recommendations after applying the Savings Plans and Reserved Instances discounts.

Savings opportunity after discounts represents the estimated monthly savings you can achieve by implementing Compute Optimizer recommendations.

", + "refs": { + "InstanceRecommendationOption$savingsOpportunityAfterDiscounts": "

An object that describes the savings opportunity for the instance recommendation option that includes Savings Plans and Reserved Instances discounts. Savings opportunity includes the estimated monthly savings and percentage.

" + } + }, "InstanceState": { "base": null, "refs": { @@ -1115,6 +1254,18 @@ "RecommendationExportJob$status": "

The status of the export job.

" } }, + "LambdaEffectiveRecommendationPreferences": { + "base": "

Describes the effective recommendation preferences for Lambda functions.

", + "refs": { + "LambdaFunctionRecommendation$effectiveRecommendationPreferences": "

Describes the effective recommendation preferences for Lambda functions.

" + } + }, + "LambdaEstimatedMonthlySavings": { + "base": "

Describes the estimated monthly savings possible for Lambda functions by adopting Compute Optimizer recommendations. This is based on Lambda functions pricing after applying Savings Plans discounts.

", + "refs": { + "LambdaSavingsOpportunityAfterDiscounts$estimatedMonthlySavings": "

The estimated monthly savings possible by adopting Compute Optimizer’s Lambda function recommendations. This includes any applicable Savings Plans discounts.

" + } + }, "LambdaFunctionMemoryMetricName": { "base": null, "refs": { @@ -1224,6 +1375,24 @@ "LambdaFunctionRecommendation$utilizationMetrics": "

An array of objects that describe the utilization metrics of the function.

" } }, + "LambdaSavingsEstimationMode": { + "base": "

Describes the savings estimation used for calculating savings opportunity for Lambda functions.

", + "refs": { + "LambdaEffectiveRecommendationPreferences$savingsEstimationMode": "

Describes the savings estimation mode applied for calculating savings opportunity for Lambda functions.

" + } + }, + "LambdaSavingsEstimationModeSource": { + "base": null, + "refs": { + "LambdaSavingsEstimationMode$source": "

Describes the source for calculation of savings opportunity for Lambda functions.

" + } + }, + "LambdaSavingsOpportunityAfterDiscounts": { + "base": "

Describes the savings opportunity for Lambda functions recommendations after applying Savings Plans discounts.

Savings opportunity represents the estimated monthly savings after applying Savings Plans discounts. You can achieve this by implementing a given Compute Optimizer recommendation.

", + "refs": { + "LambdaFunctionMemoryRecommendationOption$savingsOpportunityAfterDiscounts": "

An object that describes the savings opportunity for the Lambda recommendation option which includes Saving Plans discounts. Savings opportunity includes the estimated monthly savings and percentage.

" + } + }, "LastRefreshTimestamp": { "base": null, "refs": { @@ -1352,6 +1521,15 @@ "VolumeRecommendation$lookBackPeriodInDays": "

The number of days for which utilization metrics were analyzed for the volume.

" } }, + "LookBackPeriodPreference": { + "base": null, + "refs": { + "EffectiveRecommendationPreferences$lookBackPeriod": "

The number of days the utilization metrics of the Amazon Web Services resource are analyzed.

", + "GetEffectiveRecommendationPreferencesResponse$lookBackPeriod": "

The number of days the utilization metrics of the Amazon Web Services resource are analyzed.

To validate that the preference is applied to your last generated set of recommendations, review the effectiveRecommendationPreferences value in the response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations actions.

", + "PutRecommendationPreferencesRequest$lookBackPeriod": "

The preference to control the number of days the utilization metrics of the Amazon Web Services resource are analyzed. When this preference isn't specified, we use the default value DAYS_14.

You can only set this preference for the Amazon EC2 instance and Auto Scaling group resource types.

", + "RecommendationPreferencesDetail$lookBackPeriod": "

The preference to control the number of days the utilization metrics of the Amazon Web Services resource are analyzed. If the preference isn’t set, this object is null.

" + } + }, "Low": { "base": null, "refs": { @@ -1606,6 +1784,41 @@ "InstanceRecommendationOption$platformDifferences": "

Describes the configuration differences between the current instance and the recommended instance type. You should consider the configuration differences before migrating your workloads from the current instance to the recommended instance type. The Change the instance type guide for Linux and Change the instance type guide for Windows provide general guidance for getting started with an instance migration.

Platform differences include:

" } }, + "PreferredResource": { + "base": "

The preference to control which resource type values are considered when generating rightsizing recommendations. You can specify this preference as a combination of include and exclude lists. You must specify either an includeList or excludeList. If the preference is an empty set of resource type values, an error occurs. For more information, see Rightsizing recommendation preferences in the Compute Optimizer User Guide.

", + "refs": { + "PreferredResources$member": null + } + }, + "PreferredResourceName": { + "base": null, + "refs": { + "EffectivePreferredResource$name": "

The name of the preferred resource list.

", + "PreferredResource$name": "

The type of preferred resource to customize.

Compute Optimizer only supports the customization of Ec2InstanceTypes.

" + } + }, + "PreferredResourceValue": { + "base": null, + "refs": { + "PreferredResourceValues$member": null + } + }, + "PreferredResourceValues": { + "base": null, + "refs": { + "EffectivePreferredResource$includeList": "

The list of preferred resource values that you want considered as rightsizing recommendation candidates.

", + "EffectivePreferredResource$effectiveIncludeList": "

The expanded version of your preferred resource's include list.

", + "EffectivePreferredResource$excludeList": "

The list of preferred resources values that you want excluded from rightsizing recommendation candidates.

", + "PreferredResource$includeList": "

The preferred resource type values to include in the recommendation candidates. You can specify the exact resource type value, such as m5.large, or use wild card expressions, such as m5. If this isn’t specified, all supported resources are included by default. You can specify up to 1000 values in this list.

", + "PreferredResource$excludeList": "

The preferred resource type values to exclude from the recommendation candidates. If this isn’t specified, all supported resources are included by default. You can specify up to 1000 values in this list.

" + } + }, + "PreferredResources": { + "base": null, + "refs": { + "PutRecommendationPreferencesRequest$preferredResources": "

The preference to control which resource type values are considered when generating rightsizing recommendations. You can specify this preference as a combination of include and exclude lists. You must specify either an includeList or excludeList. If the preference is an empty set of resource type values, an error occurs.

You can only set this preference for the Amazon EC2 instance and Auto Scaling group resource types.

" + } + }, "ProjectedMetric": { "base": "

Describes a projected utilization metric of a recommendation option, such as an Amazon EC2 instance. This represents the projected utilization of a recommendation option had you used that resource during the analyzed period.

Compare the utilization metric data of your resource against its projected utilization metric data to determine the performance difference between your current resource and the recommended option.

The Cpu, Memory, GPU, and GPU_MEMORY metrics are the only projected utilization metrics returned when you run the GetEC2RecommendationProjectedMetrics action. Additionally, these metrics are only returned for resources with the unified CloudWatch agent installed on them. For more information, see Enabling Memory Utilization with the CloudWatch Agent and Enabling NVIDIA GPU utilization with the CloudWatch Agent.

", "refs": { @@ -1823,6 +2036,13 @@ "ExportLicenseRecommendationsRequest$s3DestinationConfig": null } }, + "SavingsEstimationMode": { + "base": null, + "refs": { + "PutRecommendationPreferencesRequest$savingsEstimationMode": "

The status of the savings estimation mode preference to create or update.

Specify the AfterDiscounts status to activate the preference, or specify BeforeDiscounts to deactivate the preference.

Only the account manager or delegated administrator of your organization can activate this preference.

For more information, see Savings estimation mode in the Compute Optimizer User Guide.

", + "RecommendationPreferencesDetail$savingsEstimationMode": "

Describes the savings estimation mode used for calculating savings opportunity.

Only the account manager or delegated administrator of your organization can activate this preference.

" + } + }, "SavingsOpportunity": { "base": "

Describes the savings opportunity for recommendations of a given resource type or for the recommendation option of an individual resource.

Savings opportunity represents the estimated monthly savings you can achieve by implementing a given Compute Optimizer recommendation.

Savings opportunity data requires that you opt in to Cost Explorer, as well as activate Receive Amazon EC2 resource recommendations in the Cost Explorer preferences page. That creates a connection between Cost Explorer and Compute Optimizer. With this connection, Cost Explorer generates savings estimates considering the price of existing resources, the price of recommended resources, and historical usage data. Estimated monthly savings reflects the projected dollar savings associated with each of the recommendations generated. For more information, see Enabling Cost Explorer and Optimizing your cost with Rightsizing Recommendations in the Cost Management User Guide.

", "refs": { @@ -1838,6 +2058,11 @@ "SavingsOpportunityPercentage": { "base": null, "refs": { + "AutoScalingGroupSavingsOpportunityAfterDiscounts$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost after applying the Savings Plans and Reserved Instances discounts. This saving can be achieved by adopting Compute Optimizer’s Auto Scaling group recommendations.

", + "EBSSavingsOpportunityAfterDiscounts$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost after applying the specific discounts. This saving can be achieved by adopting Compute Optimizer’s Amazon EBS volume recommendations.

", + "ECSSavingsOpportunityAfterDiscounts$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer’s Amazon ECS service recommendations. This includes any applicable Savings Plans discounts.

", + "InstanceSavingsOpportunityAfterDiscounts$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost after applying the Savings Plans and Reserved Instances discounts. This saving can be achieved by adopting Compute Optimizer’s EC2 instance recommendations.

", + "LambdaSavingsOpportunityAfterDiscounts$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer’s Lambda function recommendations. This includes any applicable Savings Plans discounts.

", "SavingsOpportunity$savingsOpportunityPercentage": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer recommendations for a given resource.

" } }, @@ -2009,10 +2234,30 @@ "InstanceRecommendation$utilizationMetrics": "

An array of objects that describe the utilization metrics of the instance.

" } }, + "UtilizationPreference": { + "base": "

The preference to control the resource’s CPU utilization thresholds - threshold and headroom.

This preference is only available for the Amazon EC2 instance resource type.

", + "refs": { + "UtilizationPreferences$member": null + } + }, + "UtilizationPreferences": { + "base": null, + "refs": { + "EffectiveRecommendationPreferences$utilizationPreferences": "

The resource’s CPU utilization threshold preferences, such as threshold and headroom, that are used to generate rightsizing recommendations.

This preference is only available for the Amazon EC2 instance resource type.

", + "GetEffectiveRecommendationPreferencesResponse$utilizationPreferences": "

The resource’s CPU utilization threshold preferences, such as threshold and headroom, that were used to generate rightsizing recommendations. It considers all applicable preferences that you set at the resource, account, and organization level.

To validate that the preference is applied to your last generated set of recommendations, review the effectiveRecommendationPreferences value in the response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations actions.

", + "PutRecommendationPreferencesRequest$utilizationPreferences": "

The preference to control the resource’s CPU utilization thresholds - threshold and headroom. When this preference isn't specified, we use the following default values:

You can only set this preference for the Amazon EC2 instance resource type.

", + "RecommendationPreferencesDetail$utilizationPreferences": "

The preference to control the resource’s CPU utilization thresholds - threshold and headroom. If the preference isn’t set, this object is null.

This preference is only available for the Amazon EC2 instance resource type.

" + } + }, "Value": { "base": null, "refs": { - "EstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

" + "AutoScalingGroupEstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

", + "EBSEstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

", + "ECSEstimatedMonthlySavings$value": "

The value of the estimated monthly savings for Amazon ECS services.

", + "EstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

", + "InstanceEstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

", + "LambdaEstimatedMonthlySavings$value": "

The value of the estimated monthly savings.

" } }, "VeryLow": { diff --git a/apis/compute-optimizer/2019-11-01/endpoint-rule-set-1.json b/apis/compute-optimizer/2019-11-01/endpoint-rule-set-1.json index dfdfa862172..86716225fea 100644 --- a/apis/compute-optimizer/2019-11-01/endpoint-rule-set-1.json +++ b/apis/compute-optimizer/2019-11-01/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/config/2014-11-12/api-2.json b/apis/config/2014-11-12/api-2.json index e4196a0745a..923197cf037 100644 --- a/apis/config/2014-11-12/api-2.json +++ b/apis/config/2014-11-12/api-2.json @@ -983,6 +983,7 @@ "input":{"shape":"PutConfigurationRecorderRequest"}, "errors":[ {"shape":"MaxNumberOfConfigurationRecordersExceededException"}, + {"shape":"ValidationException"}, {"shape":"InvalidConfigurationRecorderNameException"}, {"shape":"InvalidRoleException"}, {"shape":"InvalidRecordingGroupException"} @@ -1518,7 +1519,9 @@ "availabilityZone":{"shape":"AvailabilityZone"}, "resourceCreationTime":{"shape":"ResourceCreationTime"}, "configuration":{"shape":"Configuration"}, - "supplementaryConfiguration":{"shape":"SupplementaryConfiguration"} + "supplementaryConfiguration":{"shape":"SupplementaryConfiguration"}, + "recordingFrequency":{"shape":"RecordingFrequency"}, + "configurationItemDeliveryTime":{"shape":"ConfigurationItemDeliveryTime"} } }, "BaseConfigurationItems":{ @@ -1826,10 +1829,13 @@ "relatedEvents":{"shape":"RelatedEventList"}, "relationships":{"shape":"RelationshipList"}, "configuration":{"shape":"Configuration"}, - "supplementaryConfiguration":{"shape":"SupplementaryConfiguration"} + "supplementaryConfiguration":{"shape":"SupplementaryConfiguration"}, + "recordingFrequency":{"shape":"RecordingFrequency"}, + "configurationItemDeliveryTime":{"shape":"ConfigurationItemDeliveryTime"} } }, "ConfigurationItemCaptureTime":{"type":"timestamp"}, + "ConfigurationItemDeliveryTime":{"type":"timestamp"}, "ConfigurationItemList":{ "type":"list", "member":{"shape":"ConfigurationItem"} @@ -1850,7 +1856,8 @@ "members":{ "name":{"shape":"RecorderName"}, "roleARN":{"shape":"String"}, - "recordingGroup":{"shape":"RecordingGroup"} + "recordingGroup":{"shape":"RecordingGroup"}, + "recordingMode":{"shape":"RecordingMode"} } }, "ConfigurationRecorderList":{ @@ -2740,6 +2747,11 @@ "NextToken":{"shape":"NextToken"} } }, + "Description":{ + "type":"string", + "max":256, + "min":1 + }, "DiscoveredResourceIdentifierList":{ "type":"list", "member":{"shape":"AggregateResourceIdentifier"} @@ -4320,6 +4332,13 @@ "Failure" ] }, + "RecordingFrequency":{ + "type":"string", + "enum":[ + "CONTINUOUS", + "DAILY" + ] + }, "RecordingGroup":{ "type":"structure", "members":{ @@ -4330,6 +4349,36 @@ "recordingStrategy":{"shape":"RecordingStrategy"} } }, + "RecordingMode":{ + "type":"structure", + "required":["recordingFrequency"], + "members":{ + "recordingFrequency":{"shape":"RecordingFrequency"}, + "recordingModeOverrides":{"shape":"RecordingModeOverrides"} + } + }, + "RecordingModeOverride":{ + "type":"structure", + "required":[ + "resourceTypes", + "recordingFrequency" + ], + "members":{ + "description":{"shape":"Description"}, + "resourceTypes":{"shape":"RecordingModeResourceTypesList"}, + "recordingFrequency":{"shape":"RecordingFrequency"} + } + }, + "RecordingModeOverrides":{ + "type":"list", + "member":{"shape":"RecordingModeOverride"}, + "max":1, + "min":0 + }, + "RecordingModeResourceTypesList":{ + "type":"list", + "member":{"shape":"ResourceType"} + }, "RecordingStrategy":{ "type":"structure", "members":{ diff --git a/apis/config/2014-11-12/docs-2.json b/apis/config/2014-11-12/docs-2.json index a69b882620b..19ae07a95ad 100644 --- a/apis/config/2014-11-12/docs-2.json +++ b/apis/config/2014-11-12/docs-2.json @@ -305,7 +305,7 @@ "AllSupported": { "base": null, "refs": { - "RecordingGroup$allSupported": "

Specifies whether Config records configuration changes for all supported regionally recorded resource types.

If you set this field to true, when Config adds support for a new regionally recorded resource type, Config starts recording resources of that type automatically.

If you set this field to true, you cannot enumerate specific resource types to record in the resourceTypes field of RecordingGroup, or to exclude in the resourceTypes field of ExclusionByResourceTypes.

Region Availability

Check Resource Coverage by Region Availability to see if a resource type is supported in the Amazon Web Services Region where you set up Config.

" + "RecordingGroup$allSupported": "

Specifies whether Config records configuration changes for all supported resource types, excluding the global IAM resource types.

If you set this field to true, when Config adds support for a new resource type, Config starts recording resources of that type automatically.

If you set this field to true, you cannot enumerate specific resource types to record in the resourceTypes field of RecordingGroup, or to exclude in the resourceTypes field of ExclusionByResourceTypes.

Region availability

Check Resource Coverage by Region Availability to see if a resource type is supported in the Amazon Web Services Region where you set up Config.

" } }, "AmazonResourceName": { @@ -366,7 +366,7 @@ } }, "BaseConfigurationItem": { - "base": "

The detailed configuration of a specified resource.

", + "base": "

The detailed configurations of a specified resource.

", "refs": { "BaseConfigurationItems$member": null } @@ -706,8 +706,15 @@ "ConfigurationItemCaptureTime": { "base": null, "refs": { - "BaseConfigurationItem$configurationItemCaptureTime": "

The time when the configuration recording was initiated.

", - "ConfigurationItem$configurationItemCaptureTime": "

The time when the configuration recording was initiated.

" + "BaseConfigurationItem$configurationItemCaptureTime": "

The time when the recording of configuration changes was initiated for the resource.

", + "ConfigurationItem$configurationItemCaptureTime": "

The time when the recording of configuration changes was initiated for the resource.

" + } + }, + "ConfigurationItemDeliveryTime": { + "base": null, + "refs": { + "BaseConfigurationItem$configurationItemDeliveryTime": "

The time when configuration changes for the resource were delivered.

", + "ConfigurationItem$configurationItemDeliveryTime": "

The time when configuration changes for the resource were delivered.

" } }, "ConfigurationItemList": { @@ -725,12 +732,12 @@ "ConfigurationItemStatus": { "base": null, "refs": { - "BaseConfigurationItem$configurationItemStatus": "

The configuration item status. The valid values are:

", - "ConfigurationItem$configurationItemStatus": "

The configuration item status. The valid values are:

" + "BaseConfigurationItem$configurationItemStatus": "

The configuration item status. Valid values include:

", + "ConfigurationItem$configurationItemStatus": "

The configuration item status. Valid values include:

" } }, "ConfigurationRecorder": { - "base": "

Records configuration changes to specified resource types. For more information about the configuration recorder, see Managing the Configuration Recorder in the Config Developer Guide.

", + "base": "

Records configuration changes to your specified resource types. For more information about the configuration recorder, see Managing the Configuration Recorder in the Config Developer Guide.

", "refs": { "ConfigurationRecorderList$member": null, "PutConfigurationRecorderRequest$ConfigurationRecorder": "

An object for the configuration recorder to record configuration changes for specified resource types.

" @@ -1479,6 +1486,12 @@ "refs": { } }, + "Description": { + "base": null, + "refs": { + "RecordingModeOverride$description": "

A description that you provide for the override.

" + } + }, "DiscoveredResourceIdentifierList": { "base": null, "refs": { @@ -1609,9 +1622,9 @@ } }, "ExclusionByResourceTypes": { - "base": "

Specifies whether the configuration recorder excludes certain resource types from being recorded. Use the resourceTypes field to enter a comma-separated list of resource types you want to exclude from recording.

By default, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

How to use

To use this option, you must set the useOnly field of RecordingStrategy to EXCLUSION_BY_RESOURCE_TYPES.

Config will then record configuration changes for all supported resource types, except the resource types that you specify to exclude from being recorded.

Globally recorded resources

Unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled. IAM users, groups, roles, and customer managed policies will be recorded automatically in all enabled Config Regions where Config was available before February 2022. This list does not include the following Regions:

", + "base": "

Specifies whether the configuration recorder excludes certain resource types from being recorded. Use the resourceTypes field to enter a comma-separated list of resource types you want to exclude from recording.

By default, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

How to use the exclusion recording strategy

To use this option, you must set the useOnly field of RecordingStrategy to EXCLUSION_BY_RESOURCE_TYPES.

Config will then record configuration changes for all supported resource types, except the resource types that you specify to exclude from being recorded.

Global resource types and the exclusion recording strategy

Unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.

IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. This list where you cannot record the global IAM resource types includes the following Regions:

", "refs": { - "RecordingGroup$exclusionByResourceTypes": "

An object that specifies how Config excludes resource types from being recorded by the configuration recorder.

To use this option, you must set the useOnly field of RecordingStrategy to EXCLUSION_BY_RESOURCE_TYPES.

" + "RecordingGroup$exclusionByResourceTypes": "

An object that specifies how Config excludes resource types from being recorded by the configuration recorder.

Required fields

To use this option, you must set the useOnly field of RecordingStrategy to EXCLUSION_BY_RESOURCE_TYPES.

" } }, "ExecutionControls": { @@ -1906,7 +1919,7 @@ "IncludeGlobalResourceTypes": { "base": null, "refs": { - "RecordingGroup$includeGlobalResourceTypes": "

A legacy field which only applies to the globally recorded IAM resource types: IAM users, groups, roles, and customer managed policies. If you select this option, these resource types will be recorded in all enabled Config regions where Config was available before February 2022. This list does not include the following Regions:

Aurora global clusters are automatically globally recorded

The AWS::RDS::GlobalCluster resource type will be recorded in all supported Config Regions where the configuration recorder is enabled, even if includeGlobalResourceTypes is not set to true. includeGlobalResourceTypes is a legacy field which only applies to IAM users, groups, roles, and customer managed policies.

If you do not want to record AWS::RDS::GlobalCluster in all enabled Regions, use one of the following recording strategies:

  1. Record all current and future resource types with exclusions (EXCLUSION_BY_RESOURCE_TYPES), or

  2. Record specific resource types (INCLUSION_BY_RESOURCE_TYPES).

For more information, see Selecting Which Resources are Recorded in the Config developer guide.

Required and optional fields

Before you set this field to true, set the allSupported field of RecordingGroup to true. Optionally, you can set the useOnly field of RecordingStrategy to ALL_SUPPORTED_RESOURCE_TYPES.

Overriding fields

If you set this field to false but list globally recorded IAM resource types in the resourceTypes field of RecordingGroup, Config will still record configuration changes for those specified resource types regardless of if you set the includeGlobalResourceTypes field to false.

If you do not want to record configuration changes to the globally recorded IAM resource types (IAM users, groups, roles, and customer managed policies), make sure to not list them in the resourceTypes field in addition to setting the includeGlobalResourceTypes field to false.

" + "RecordingGroup$includeGlobalResourceTypes": "

This option is a bundle which only applies to the global IAM resource types: IAM users, groups, roles, and customer managed policies. These global IAM resource types can only be recorded by Config in Regions where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. This list where you cannot record the global IAM resource types includes the following Regions:

Aurora global clusters are recorded in all enabled Regions

The AWS::RDS::GlobalCluster resource type will be recorded in all supported Config Regions where the configuration recorder is enabled, even if includeGlobalResourceTypes is not set to true. The includeGlobalResourceTypes option is a bundle which only applies to IAM users, groups, roles, and customer managed policies.

If you do not want to record AWS::RDS::GlobalCluster in all enabled Regions, use one of the following recording strategies:

  1. Record all current and future resource types with exclusions (EXCLUSION_BY_RESOURCE_TYPES), or

  2. Record specific resource types (INCLUSION_BY_RESOURCE_TYPES).

For more information, see Selecting Which Resources are Recorded in the Config developer guide.

Before you set this field to true, set the allSupported field of RecordingGroup to true. Optionally, you can set the useOnly field of RecordingStrategy to ALL_SUPPORTED_RESOURCE_TYPES.

Overriding fields

If you set this field to false but list global IAM resource types in the resourceTypes field of RecordingGroup, Config will still record configuration changes for those specified resource types regardless of if you set the includeGlobalResourceTypes field to false.

If you do not want to record configuration changes to the global IAM resource types (IAM users, groups, roles, and customer managed policies), make sure to not list them in the resourceTypes field in addition to setting the includeGlobalResourceTypes field to false.

" } }, "InsufficientDeliveryPolicyException": { @@ -2774,7 +2787,7 @@ "RecorderName": { "base": null, "refs": { - "ConfigurationRecorder$name": "

The name of the configuration recorder. Config automatically assigns the name of \"default\" when creating the configuration recorder.

You cannot change the name of the configuration recorder after it has been created. To change the configuration recorder name, you must delete it and create a new configuration recorder with a new name.

", + "ConfigurationRecorder$name": "

The name of the configuration recorder. Config automatically assigns the name of \"default\" when creating the configuration recorder.

You cannot change the name of the configuration recorder after it has been created. To change the configuration recorder name, you must delete it and create a new configuration recorder with a new name.

", "ConfigurationRecorderNameList$member": null, "DeleteConfigurationRecorderRequest$ConfigurationRecorderName": "

The name of the configuration recorder to be deleted. You can retrieve the name of your configuration recorder by using the DescribeConfigurationRecorders action.

", "StartConfigurationRecorderRequest$ConfigurationRecorderName": "

The name of the recorder object that records each configuration change made to the resources.

", @@ -2787,22 +2800,55 @@ "ConfigurationRecorderStatus$lastStatus": "

The status of the latest recording event processed by the recorder.

" } }, + "RecordingFrequency": { + "base": null, + "refs": { + "BaseConfigurationItem$recordingFrequency": "

The recording frequency that Config uses to record configuration changes for the resource.

", + "ConfigurationItem$recordingFrequency": "

The recording frequency that Config uses to record configuration changes for the resource.

", + "RecordingMode$recordingFrequency": "

The default recording frequency that Config uses to record configuration changes.

Daily recording is not supported for the following resource types:

For the allSupported (ALL_SUPPORTED_RESOURCE_TYPES) recording strategy, these resource types will be set to Continuous recording.

", + "RecordingModeOverride$recordingFrequency": "

The recording frequency that will be applied to all the resource types specified in the override.

Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.

" + } + }, "RecordingGroup": { - "base": "

Specifies which resource types Config records for configuration changes. By default, Config records configuration changes for all current and future supported resource types in the Amazon Web Services Region where you have enabled Config (excluding the globally recorded IAM resource types: IAM users, groups, roles, and customer managed policies).

In the recording group, you specify whether you want to record all supported current and future supported resource types or to include or exclude specific resources types. For a list of supported resource types, see Supported Resource Types in the Config developer guide.

If you don't want Config to record all current and future supported resource types, use one of the following recording strategies:

  1. Record all current and future resource types with exclusions (EXCLUSION_BY_RESOURCE_TYPES), or

  2. Record specific resource types (INCLUSION_BY_RESOURCE_TYPES).

Aurora global clusters are automatically globally recorded

The AWS::RDS::GlobalCluster resource type will be recorded in all supported Config Regions where the configuration recorder is enabled.

If you do not want to record AWS::RDS::GlobalCluster in all enabled Regions, use the EXCLUSION_BY_RESOURCE_TYPES or INCLUSION_BY_RESOURCE_TYPES recording strategy.

", + "base": "

Specifies which resource types Config records for configuration changes. By default, Config records configuration changes for all current and future supported resource types in the Amazon Web Services Region where you have enabled Config, excluding the global IAM resource types: IAM users, groups, roles, and customer managed policies.

In the recording group, you specify whether you want to record all supported current and future supported resource types or to include or exclude specific resources types. For a list of supported resource types, see Supported Resource Types in the Config developer guide.

If you don't want Config to record all current and future supported resource types (excluding the global IAM resource types), use one of the following recording strategies:

  1. Record all current and future resource types with exclusions (EXCLUSION_BY_RESOURCE_TYPES), or

  2. Record specific resource types (INCLUSION_BY_RESOURCE_TYPES).

If you use the recording strategy to Record all current and future resource types (ALL_SUPPORTED_RESOURCE_TYPES), you can use the flag includeGlobalResourceTypes to include the global IAM resource types in your recording.

Aurora global clusters are recorded in all enabled Regions

The AWS::RDS::GlobalCluster resource type will be recorded in all supported Config Regions where the configuration recorder is enabled.

If you do not want to record AWS::RDS::GlobalCluster in all enabled Regions, use the EXCLUSION_BY_RESOURCE_TYPES or INCLUSION_BY_RESOURCE_TYPES recording strategy.

", "refs": { "ConfigurationRecorder$recordingGroup": "

Specifies which resource types Config records for configuration changes.

High Number of Config Evaluations

You may notice increased activity in your account during your initial month recording with Config when compared to subsequent months. During the initial bootstrapping process, Config runs evaluations on all the resources in your account that you have selected for Config to record.

If you are running ephemeral workloads, you may see increased activity from Config as it records configuration changes associated with creating and deleting these temporary resources. An ephemeral workload is a temporary use of computing resources that are loaded and run when needed. Examples include Amazon Elastic Compute Cloud (Amazon EC2) Spot Instances, Amazon EMR jobs, and Auto Scaling. If you want to avoid the increased activity from running ephemeral workloads, you can run these types of workloads in a separate account with Config turned off to avoid increased configuration recording and rule evaluations.

" } }, + "RecordingMode": { + "base": "

Specifies the default recording frequency that Config uses to record configuration changes. Config supports Continuous recording and Daily recording.

Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.

You can also override the recording frequency for specific resource types.

", + "refs": { + "ConfigurationRecorder$recordingMode": "

Specifies the default recording frequency that Config uses to record configuration changes. Config supports Continuous recording and Daily recording.

Firewall Manager depends on continuous recording to monitor your resources. If you are using Firewall Manager, it is recommended that you set the recording frequency to Continuous.

You can also override the recording frequency for specific resource types.

" + } + }, + "RecordingModeOverride": { + "base": "

An object for you to specify your overrides for the recording mode.

", + "refs": { + "RecordingModeOverrides$member": null + } + }, + "RecordingModeOverrides": { + "base": null, + "refs": { + "RecordingMode$recordingModeOverrides": "

An array of recordingModeOverride objects for you to specify your overrides for the recording mode. The recordingModeOverride object in the recordingModeOverrides array consists of three fields: a description, the new recordingFrequency, and an array of resourceTypes to override.

" + } + }, + "RecordingModeResourceTypesList": { + "base": null, + "refs": { + "RecordingModeOverride$resourceTypes": "

A comma-separated list that specifies which resource types Config includes in the override.

Daily recording is not supported for the following resource types:

" + } + }, "RecordingStrategy": { "base": "

Specifies the recording strategy of the configuration recorder.

", "refs": { - "RecordingGroup$recordingStrategy": "

An object that specifies the recording strategy for the configuration recorder.

Required and optional fields

The recordingStrategy field is optional when you set the allSupported field of RecordingGroup to true.

The recordingStrategy field is optional when you list resource types in the resourceTypes field of RecordingGroup.

The recordingStrategy field is required if you list resource types to exclude from recording in the resourceTypes field of ExclusionByResourceTypes.

Overriding fields

If you choose EXCLUSION_BY_RESOURCE_TYPES for the recording strategy, the exclusionByResourceTypes field will override other properties in the request.

For example, even if you set includeGlobalResourceTypes to false, globally recorded IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the resourceTypes field of exclusionByResourceTypes.

Global resources types and the resource exclusion recording strategy

By default, if you choose the EXCLUSION_BY_RESOURCE_TYPES recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

In addition, unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled. IAM users, groups, roles, and customer managed policies will be recorded automatically in all enabled Config Regions where Config was available before February 2022. This list does not include the following Regions:

" + "RecordingGroup$recordingStrategy": "

An object that specifies the recording strategy for the configuration recorder.

Required and optional fields

The recordingStrategy field is optional when you set the allSupported field of RecordingGroup to true.

The recordingStrategy field is optional when you list resource types in the resourceTypes field of RecordingGroup.

The recordingStrategy field is required if you list resource types to exclude from recording in the resourceTypes field of ExclusionByResourceTypes.

Overriding fields

If you choose EXCLUSION_BY_RESOURCE_TYPES for the recording strategy, the exclusionByResourceTypes field will override other properties in the request.

For example, even if you set includeGlobalResourceTypes to false, global IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the resourceTypes field of exclusionByResourceTypes.

Global resources types and the resource exclusion recording strategy

By default, if you choose the EXCLUSION_BY_RESOURCE_TYPES recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

Unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.

IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. This list where you cannot record the global IAM resource types includes the following Regions:

" } }, "RecordingStrategyType": { "base": null, "refs": { - "RecordingStrategy$useOnly": "

The recording strategy for the configuration recorder.

Required and optional fields

The recordingStrategy field is optional when you set the allSupported field of RecordingGroup to true.

The recordingStrategy field is optional when you list resource types in the resourceTypes field of RecordingGroup.

The recordingStrategy field is required if you list resource types to exclude from recording in the resourceTypes field of ExclusionByResourceTypes.

Overriding fields

If you choose EXCLUSION_BY_RESOURCE_TYPES for the recording strategy, the exclusionByResourceTypes field will override other properties in the request.

For example, even if you set includeGlobalResourceTypes to false, globally recorded IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the resourceTypes field of exclusionByResourceTypes.

Global resource types and the exclusion recording strategy

By default, if you choose the EXCLUSION_BY_RESOURCE_TYPES recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

In addition, unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled. IAM users, groups, roles, and customer managed policies will be recorded automatically in all enabled Config Regions where Config was available before February 2022. This list does not include the following Regions:

" + "RecordingStrategy$useOnly": "

The recording strategy for the configuration recorder.

Required and optional fields

The recordingStrategy field is optional when you set the allSupported field of RecordingGroup to true.

The recordingStrategy field is optional when you list resource types in the resourceTypes field of RecordingGroup.

The recordingStrategy field is required if you list resource types to exclude from recording in the resourceTypes field of ExclusionByResourceTypes.

Overriding fields

If you choose EXCLUSION_BY_RESOURCE_TYPES for the recording strategy, the exclusionByResourceTypes field will override other properties in the request.

For example, even if you set includeGlobalResourceTypes to false, global IAM resource types will still be automatically recorded in this option unless those resource types are specifically listed as exclusions in the resourceTypes field of exclusionByResourceTypes.

Global resource types and the exclusion recording strategy

By default, if you choose the EXCLUSION_BY_RESOURCE_TYPES recording strategy, when Config adds support for a new resource type in the Region where you set up the configuration recorder, including global resource types, Config starts recording resources of that type automatically.

Unless specifically listed as exclusions, AWS::RDS::GlobalCluster will be recorded automatically in all supported Config Regions were the configuration recorder is enabled.

IAM users, groups, roles, and customer managed policies will be recorded in the Region where you set up the configuration recorder if that is a Region where Config was available before February 2022. You cannot be record the global IAM resouce types in Regions supported by Config after February 2022. This list where you cannot record the global IAM resource types includes the following Regions:

" } }, "ReevaluateConfigRuleNames": { @@ -3138,6 +3184,7 @@ "GetResourceConfigHistoryRequest$resourceType": "

The resource type.

", "ListAggregateDiscoveredResourcesRequest$ResourceType": "

The type of resources that you want Config to list in the response.

", "ListDiscoveredResourcesRequest$resourceType": "

The type of resources that you want Config to list in the response.

", + "RecordingModeResourceTypesList$member": null, "Relationship$resourceType": "

The resource type of the related resource.

", "ResourceCount$resourceType": "

The resource type (for example, \"AWS::EC2::Instance\").

", "ResourceCountFilters$ResourceType": "

The type of the Amazon Web Services resource.

", @@ -3150,7 +3197,7 @@ "base": null, "refs": { "ExclusionByResourceTypes$resourceTypes": "

A comma-separated list of resource types to exclude from recording by the configuration recorder.

", - "RecordingGroup$resourceTypes": "

A comma-separated list that specifies which resource types Config records.

Optionally, you can set the useOnly field of RecordingStrategy to INCLUSION_BY_RESOURCE_TYPES.

To record all configuration changes, set the allSupported field of RecordingGroup to true, and either omit this field or don't specify any resource types in this field. If you set the allSupported field to false and specify values for resourceTypes, when Config adds support for a new type of resource, it will not record resources of that type unless you manually add that type to your recording group.

For a list of valid resourceTypes values, see the Resource Type Value column in Supported Amazon Web Services resource Types in the Config developer guide.

Region Availability

Before specifying a resource type for Config to track, check Resource Coverage by Region Availability to see if the resource type is supported in the Amazon Web Services Region where you set up Config. If a resource type is supported by Config in at least one Region, you can enable the recording of that resource type in all Regions supported by Config, even if the specified resource type is not supported in the Amazon Web Services Region where you set up Config.

" + "RecordingGroup$resourceTypes": "

A comma-separated list that specifies which resource types Config records.

For a list of valid resourceTypes values, see the Resource Type Value column in Supported Amazon Web Services resource Types in the Config developer guide.

Required and optional fields

Optionally, you can set the useOnly field of RecordingStrategy to INCLUSION_BY_RESOURCE_TYPES.

To record all configuration changes, set the allSupported field of RecordingGroup to true, and either omit this field or don't specify any resource types in this field. If you set the allSupported field to false and specify values for resourceTypes, when Config adds support for a new type of resource, it will not record resources of that type unless you manually add that type to your recording group.

Region availability

Before specifying a resource type for Config to track, check Resource Coverage by Region Availability to see if the resource type is supported in the Amazon Web Services Region where you set up Config. If a resource type is supported by Config in at least one Region, you can enable the recording of that resource type in all Regions supported by Config, even if the specified resource type is not supported in the Amazon Web Services Region where you set up Config.

" } }, "ResourceTypeString": { diff --git a/apis/controltower/2018-05-10/api-2.json b/apis/controltower/2018-05-10/api-2.json index 7eaa7484256..103dc8000ad 100644 --- a/apis/controltower/2018-05-10/api-2.json +++ b/apis/controltower/2018-05-10/api-2.json @@ -12,6 +12,42 @@ "uid":"controltower-2018-05-10" }, "operations":{ + "CreateLandingZone":{ + "name":"CreateLandingZone", + "http":{ + "method":"POST", + "requestUri":"/create-landingzone", + "responseCode":200 + }, + "input":{"shape":"CreateLandingZoneInput"}, + "output":{"shape":"CreateLandingZoneOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "DeleteLandingZone":{ + "name":"DeleteLandingZone", + "http":{ + "method":"POST", + "requestUri":"/delete-landingzone", + "responseCode":200 + }, + "input":{"shape":"DeleteLandingZoneInput"}, + "output":{"shape":"DeleteLandingZoneOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"ResourceNotFoundException"} + ], + "idempotent":true + }, "DisableControl":{ "name":"DisableControl", "http":{ @@ -84,6 +120,40 @@ {"shape":"ResourceNotFoundException"} ] }, + "GetLandingZone":{ + "name":"GetLandingZone", + "http":{ + "method":"POST", + "requestUri":"/get-landingzone", + "responseCode":200 + }, + "input":{"shape":"GetLandingZoneInput"}, + "output":{"shape":"GetLandingZoneOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"ResourceNotFoundException"} + ] + }, + "GetLandingZoneOperation":{ + "name":"GetLandingZoneOperation", + "http":{ + "method":"POST", + "requestUri":"/get-landingzone-operation", + "responseCode":200 + }, + "input":{"shape":"GetLandingZoneOperationInput"}, + "output":{"shape":"GetLandingZoneOperationOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"ResourceNotFoundException"} + ] + }, "ListEnabledControls":{ "name":"ListEnabledControls", "http":{ @@ -101,6 +171,22 @@ {"shape":"ResourceNotFoundException"} ] }, + "ListLandingZones":{ + "name":"ListLandingZones", + "http":{ + "method":"POST", + "requestUri":"/list-landingzones", + "responseCode":200 + }, + "input":{"shape":"ListLandingZonesInput"}, + "output":{"shape":"ListLandingZonesOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -116,6 +202,24 @@ {"shape":"ResourceNotFoundException"} ] }, + "ResetLandingZone":{ + "name":"ResetLandingZone", + "http":{ + "method":"POST", + "requestUri":"/reset-landingzone", + "responseCode":200 + }, + "input":{"shape":"ResetLandingZoneInput"}, + "output":{"shape":"ResetLandingZoneOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"ResourceNotFoundException"} + ] + }, "TagResource":{ "name":"TagResource", "http":{ @@ -145,6 +249,24 @@ {"shape":"InternalServerException"}, {"shape":"ResourceNotFoundException"} ] + }, + "UpdateLandingZone":{ + "name":"UpdateLandingZone", + "http":{ + "method":"POST", + "requestUri":"/update-landingzone", + "responseCode":200 + }, + "input":{"shape":"UpdateLandingZoneInput"}, + "output":{"shape":"UpdateLandingZoneOutput"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"ResourceNotFoundException"} + ] } }, "shapes":{ @@ -209,6 +331,43 @@ "DISABLE_CONTROL" ] }, + "CreateLandingZoneInput":{ + "type":"structure", + "required":[ + "manifest", + "version" + ], + "members":{ + "manifest":{"shape":"Manifest"}, + "tags":{"shape":"TagMap"}, + "version":{"shape":"LandingZoneVersion"} + } + }, + "CreateLandingZoneOutput":{ + "type":"structure", + "required":[ + "arn", + "operationIdentifier" + ], + "members":{ + "arn":{"shape":"Arn"}, + "operationIdentifier":{"shape":"OperationIdentifier"} + } + }, + "DeleteLandingZoneInput":{ + "type":"structure", + "required":["landingZoneIdentifier"], + "members":{ + "landingZoneIdentifier":{"shape":"String"} + } + }, + "DeleteLandingZoneOutput":{ + "type":"structure", + "required":["operationIdentifier"], + "members":{ + "operationIdentifier":{"shape":"OperationIdentifier"} + } + }, "DisableControlInput":{ "type":"structure", "required":[ @@ -330,6 +489,34 @@ "enabledControlDetails":{"shape":"EnabledControlDetails"} } }, + "GetLandingZoneInput":{ + "type":"structure", + "required":["landingZoneIdentifier"], + "members":{ + "landingZoneIdentifier":{"shape":"String"} + } + }, + "GetLandingZoneOperationInput":{ + "type":"structure", + "required":["operationIdentifier"], + "members":{ + "operationIdentifier":{"shape":"OperationIdentifier"} + } + }, + "GetLandingZoneOperationOutput":{ + "type":"structure", + "required":["operationDetails"], + "members":{ + "operationDetails":{"shape":"LandingZoneOperationDetail"} + } + }, + "GetLandingZoneOutput":{ + "type":"structure", + "required":["landingZone"], + "members":{ + "landingZone":{"shape":"LandingZoneDetail"} + } + }, "Integer":{ "type":"integer", "box":true @@ -345,6 +532,81 @@ "fault":true, "retryable":{"throttling":false} }, + "LandingZoneDetail":{ + "type":"structure", + "required":[ + "manifest", + "version" + ], + "members":{ + "arn":{"shape":"Arn"}, + "driftStatus":{"shape":"LandingZoneDriftStatusSummary"}, + "latestAvailableVersion":{"shape":"LandingZoneVersion"}, + "manifest":{"shape":"Manifest"}, + "status":{"shape":"LandingZoneStatus"}, + "version":{"shape":"LandingZoneVersion"} + } + }, + "LandingZoneDriftStatus":{ + "type":"string", + "enum":[ + "DRIFTED", + "IN_SYNC" + ] + }, + "LandingZoneDriftStatusSummary":{ + "type":"structure", + "members":{ + "status":{"shape":"LandingZoneDriftStatus"} + } + }, + "LandingZoneOperationDetail":{ + "type":"structure", + "members":{ + "endTime":{"shape":"Timestamp"}, + "operationType":{"shape":"LandingZoneOperationType"}, + "startTime":{"shape":"Timestamp"}, + "status":{"shape":"LandingZoneOperationStatus"}, + "statusMessage":{"shape":"String"} + } + }, + "LandingZoneOperationStatus":{ + "type":"string", + "enum":[ + "SUCCEEDED", + "FAILED", + "IN_PROGRESS" + ] + }, + "LandingZoneOperationType":{ + "type":"string", + "enum":[ + "DELETE", + "CREATE", + "UPDATE", + "RESET" + ] + }, + "LandingZoneStatus":{ + "type":"string", + "enum":[ + "ACTIVE", + "PROCESSING", + "FAILED" + ] + }, + "LandingZoneSummary":{ + "type":"structure", + "members":{ + "arn":{"shape":"Arn"} + } + }, + "LandingZoneVersion":{ + "type":"string", + "max":10, + "min":3, + "pattern":"^\\d+.\\d+$" + }, "ListEnabledControlsInput":{ "type":"structure", "required":["targetIdentifier"], @@ -362,6 +624,33 @@ "nextToken":{"shape":"String"} } }, + "ListLandingZonesInput":{ + "type":"structure", + "members":{ + "maxResults":{"shape":"ListLandingZonesMaxResults"}, + "nextToken":{"shape":"String"} + } + }, + "ListLandingZonesMaxResults":{ + "type":"integer", + "box":true, + "max":1, + "min":1 + }, + "ListLandingZonesOutput":{ + "type":"structure", + "required":["landingZones"], + "members":{ + "landingZones":{"shape":"ListLandingZonesOutputLandingZonesList"}, + "nextToken":{"shape":"String"} + } + }, + "ListLandingZonesOutputLandingZonesList":{ + "type":"list", + "member":{"shape":"LandingZoneSummary"}, + "max":1, + "min":0 + }, "ListTagsForResourceInput":{ "type":"structure", "required":["resourceArn"], @@ -380,6 +669,12 @@ "tags":{"shape":"TagMap"} } }, + "Manifest":{ + "type":"structure", + "members":{ + }, + "document":true + }, "MaxResults":{ "type":"integer", "box":true, @@ -403,6 +698,20 @@ "max":50, "min":1 }, + "ResetLandingZoneInput":{ + "type":"structure", + "required":["landingZoneIdentifier"], + "members":{ + "landingZoneIdentifier":{"shape":"String"} + } + }, + "ResetLandingZoneOutput":{ + "type":"structure", + "required":["operationIdentifier"], + "members":{ + "operationIdentifier":{"shape":"OperationIdentifier"} + } + }, "ResourceNotFoundException":{ "type":"structure", "required":["message"], @@ -505,6 +814,10 @@ "exception":true, "retryable":{"throttling":true} }, + "Timestamp":{ + "type":"timestamp", + "timestampFormat":"iso8601" + }, "UntagResourceInput":{ "type":"structure", "required":[ @@ -529,6 +842,26 @@ "members":{ } }, + "UpdateLandingZoneInput":{ + "type":"structure", + "required":[ + "landingZoneIdentifier", + "manifest", + "version" + ], + "members":{ + "landingZoneIdentifier":{"shape":"String"}, + "manifest":{"shape":"Manifest"}, + "version":{"shape":"LandingZoneVersion"} + } + }, + "UpdateLandingZoneOutput":{ + "type":"structure", + "required":["operationIdentifier"], + "members":{ + "operationIdentifier":{"shape":"OperationIdentifier"} + } + }, "ValidationException":{ "type":"structure", "required":["message"], diff --git a/apis/controltower/2018-05-10/docs-2.json b/apis/controltower/2018-05-10/docs-2.json index b849bab1929..bc12815a461 100644 --- a/apis/controltower/2018-05-10/docs-2.json +++ b/apis/controltower/2018-05-10/docs-2.json @@ -1,29 +1,39 @@ { "version": "2.0", - "service": "

These interfaces allow you to apply the AWS library of pre-defined controls to your organizational units, programmatically. In AWS Control Tower, the terms \"control\" and \"guardrail\" are synonyms.

To call these APIs, you'll need to know:

To get the controlIdentifier for your AWS Control Tower control:

The controlIdentifier is an ARN that is specified for each control. You can view the controlIdentifier in the console on the Control details page, as well as in the documentation.

The controlIdentifier is unique in each AWS Region for each control. You can find the controlIdentifier for each Region and control in the Tables of control metadata in the AWS Control Tower User Guide.

A quick-reference list of control identifers for the AWS Control Tower legacy Strongly recommended and Elective controls is given in Resource identifiers for APIs and controls in the Controls reference guide section of the AWS Control Tower User Guide. Remember that Mandatory controls cannot be added or removed.

ARN format: arn:aws:controltower:{REGION}::control/{CONTROL_NAME}

Example:

arn:aws:controltower:us-west-2::control/AWS-GR_AUTOSCALING_LAUNCH_CONFIG_PUBLIC_IP_DISABLED

To get the targetIdentifier:

The targetIdentifier is the ARN for an OU.

In the AWS Organizations console, you can find the ARN for the OU on the Organizational unit details page associated with that OU.

OU ARN format:

arn:${Partition}:organizations::${MasterAccountId}:ou/o-${OrganizationId}/ou-${OrganizationalUnitId}

Details and examples

To view the open source resource repository on GitHub, see aws-cloudformation/aws-cloudformation-resource-providers-controltower

Recording API Requests

AWS Control Tower supports AWS CloudTrail, a service that records AWS API calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine which requests the AWS Control Tower service received, who made the request and when, and so on. For more about AWS Control Tower and its support for CloudTrail, see Logging AWS Control Tower Actions with AWS CloudTrail in the AWS Control Tower User Guide. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

", + "service": "

These interfaces allow you to apply the Amazon Web Services library of pre-defined controls to your organizational units, programmatically. In Amazon Web Services Control Tower, the terms \"control\" and \"guardrail\" are synonyms.

To call these APIs, you'll need to know:

To get the controlIdentifier for your AWS Control Tower control:

The controlIdentifier is an ARN that is specified for each control. You can view the controlIdentifier in the console on the Control details page, as well as in the documentation.

The controlIdentifier is unique in each Amazon Web Services Region for each control. You can find the controlIdentifier for each Region and control in the Tables of control metadata in the Amazon Web Services Control Tower User Guide.

A quick-reference list of control identifers for the Amazon Web Services Control Tower legacy Strongly recommended and Elective controls is given in Resource identifiers for APIs and controls in the Controls reference guide section of the Amazon Web Services Control Tower User Guide. Remember that Mandatory controls cannot be added or removed.

ARN format: arn:aws:controltower:{REGION}::control/{CONTROL_NAME}

Example:

arn:aws:controltower:us-west-2::control/AWS-GR_AUTOSCALING_LAUNCH_CONFIG_PUBLIC_IP_DISABLED

To get the targetIdentifier:

The targetIdentifier is the ARN for an OU.

In the Amazon Web Services Organizations console, you can find the ARN for the OU on the Organizational unit details page associated with that OU.

OU ARN format:

arn:${Partition}:organizations::${MasterAccountId}:ou/o-${OrganizationId}/ou-${OrganizationalUnitId}

Details and examples

To view the open source resource repository on GitHub, see aws-cloudformation/aws-cloudformation-resource-providers-controltower

Recording API Requests

Amazon Web Services Control Tower supports Amazon Web Services CloudTrail, a service that records Amazon Web Services API calls for your Amazon Web Services account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine which requests the Amazon Web Services Control Tower service received, who made the request and when, and so on. For more about Amazon Web Services Control Tower and its support for CloudTrail, see Logging Amazon Web Services Control Tower Actions with Amazon Web Services CloudTrail in the Amazon Web Services Control Tower User Guide. To learn more about CloudTrail, including how to turn it on and find your log files, see the Amazon Web Services CloudTrail User Guide.

", "operations": { - "DisableControl": "

This API call turns off a control. It starts an asynchronous operation that deletes AWS resources on the specified organizational unit and the accounts it contains. The resources will vary according to the control that you specify. For usage examples, see the AWS Control Tower User Guide .

", - "EnableControl": "

This API call activates a control. It starts an asynchronous operation that creates AWS resources on the specified organizational unit and the accounts it contains. The resources created will vary according to the control that you specify. For usage examples, see the AWS Control Tower User Guide .

", - "GetControlOperation": "

Returns the status of a particular EnableControl or DisableControl operation. Displays a message in case of error. Details for an operation are available for 90 days. For usage examples, see the AWS Control Tower User Guide .

", - "GetEnabledControl": "

Retrieves details about an enabled control. For usage examples, see the AWS Control Tower User Guide .

", - "ListEnabledControls": "

Lists the controls enabled by AWS Control Tower on the specified organizational unit and the accounts it contains. For usage examples, see the AWS Control Tower User Guide .

", - "ListTagsForResource": "

Returns a list of tags associated with the resource. For usage examples, see the AWS Control Tower User Guide .

", - "TagResource": "

Applies tags to a resource. For usage examples, see the AWS Control Tower User Guide .

", - "UntagResource": "

Removes tags from a resource. For usage examples, see the AWS Control Tower User Guide .

" + "CreateLandingZone": "

Creates a new landing zone. This starts an asynchronous operation that creates and configures a landing zone based on the parameters specified in the manifest JSON file.

", + "DeleteLandingZone": "

This decommissions a landing zone. This starts an asynchronous operation that deletes Amazon Web Services Control Tower resources deployed in Amazon Web Services Control Tower managed accounts.

", + "DisableControl": "

This API call turns off a control. It starts an asynchronous operation that deletes Amazon Web Services resources on the specified organizational unit and the accounts it contains. The resources will vary according to the control that you specify. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "EnableControl": "

This API call activates a control. It starts an asynchronous operation that creates Amazon Web Services resources on the specified organizational unit and the accounts it contains. The resources created will vary according to the control that you specify. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "GetControlOperation": "

Returns the status of a particular EnableControl or DisableControl operation. Displays a message in case of error. Details for an operation are available for 90 days. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "GetEnabledControl": "

Retrieves details about an enabled control. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "GetLandingZone": "

Returns details about the landing zone. Displays a message in case of error.

", + "GetLandingZoneOperation": "

Returns the status of the specified landing zone operation. Details for an operation are available for X days.

", + "ListEnabledControls": "

Lists the controls enabled by Amazon Web Services Control Tower on the specified organizational unit and the accounts it contains. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "ListLandingZones": "

Returns the landing zone ARN for the landing zone deployed in your managed account. This API also creates an ARN for existing accounts that do not yet have a landing zone ARN.

The return limit is one landing zone ARN.

", + "ListTagsForResource": "

Returns a list of tags associated with the resource. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "ResetLandingZone": "

This API call resets a landing zone. It starts an asynchronous operation that resets the landing zone to the parameters specified in its original configuration.

", + "TagResource": "

Applies tags to a resource. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "UntagResource": "

Removes tags from a resource. For usage examples, see the Amazon Web Services Control Tower User Guide .

", + "UpdateLandingZone": "

This API call updates the landing zone. It starts an asynchronous operation that updates the landing zone based on the new landing zone version or the updated parameters specified in the updated manifest file.

" }, "shapes": { "AccessDeniedException": { - "base": "

User does not have sufficient access to perform this action.

", + "base": "

You do not have sufficient access to perform this action.

", "refs": { } }, "Arn": { "base": null, "refs": { + "CreateLandingZoneOutput$arn": "

The ARN of the landing zone.

", "EnableControlOutput$arn": "

The ARN of the EnabledControl resource.

", "EnabledControlDetails$arn": "

The ARN of the enabled control.

", "EnabledControlSummary$arn": "

The ARN of the enabled control.

", "GetEnabledControlInput$enabledControlIdentifier": "

The controlIdentifier of the enabled control.

", + "LandingZoneDetail$arn": "

The ARN of the landing zone.

", + "LandingZoneSummary$arn": "

The ARN of the landing zone.

", "ListTagsForResourceInput$resourceArn": "

The ARN of the resource.

", "TagResourceInput$resourceArn": "

The ARN of the resource to be tagged.

", "UntagResourceInput$resourceArn": "

The ARN of the resource.

" @@ -61,6 +71,26 @@ "ControlOperation$operationType": "

One of ENABLE_CONTROL or DISABLE_CONTROL.

" } }, + "CreateLandingZoneInput": { + "base": null, + "refs": { + } + }, + "CreateLandingZoneOutput": { + "base": null, + "refs": { + } + }, + "DeleteLandingZoneInput": { + "base": null, + "refs": { + } + }, + "DeleteLandingZoneOutput": { + "base": null, + "refs": { + } + }, "DisableControlInput": { "base": null, "refs": { @@ -74,11 +104,11 @@ "DriftStatus": { "base": null, "refs": { - "DriftStatusSummary$driftStatus": "

The drift status of the enabled control.

Valid values:

" + "DriftStatusSummary$driftStatus": "

The drift status of the enabled control.

Valid values:

" } }, "DriftStatusSummary": { - "base": "

The drift summary of the enabled control.

AWS Control Tower expects the enabled control configuration to include all supported and governed Regions. If the enabled control differs from the expected configuration, it is defined to be in a state of drift. You can repair this drift by resetting the enabled control.

", + "base": "

The drift summary of the enabled control.

Amazon Web Services Control Tower expects the enabled control configuration to include all supported and governed Regions. If the enabled control differs from the expected configuration, it is defined to be in a state of drift. You can repair this drift by resetting the enabled control.

", "refs": { "EnabledControlDetails$driftStatusSummary": "

The drift status of the enabled control.

", "EnabledControlSummary$driftStatusSummary": "

The drift status of the enabled control.

" @@ -109,7 +139,7 @@ "EnabledControls": { "base": null, "refs": { - "ListEnabledControlsOutput$enabledControls": "

Lists the controls enabled by AWS Control Tower on the specified organizational unit and the accounts it contains.

" + "ListEnabledControlsOutput$enabledControls": "

Lists the controls enabled by Amazon Web Services Control Tower on the specified organizational unit and the accounts it contains.

" } }, "EnablementStatus": { @@ -145,6 +175,26 @@ "refs": { } }, + "GetLandingZoneInput": { + "base": null, + "refs": { + } + }, + "GetLandingZoneOperationInput": { + "base": null, + "refs": { + } + }, + "GetLandingZoneOperationOutput": { + "base": null, + "refs": { + } + }, + "GetLandingZoneOutput": { + "base": null, + "refs": { + } + }, "Integer": { "base": null, "refs": { @@ -156,6 +206,63 @@ "refs": { } }, + "LandingZoneDetail": { + "base": "

Information about the landing zone.

", + "refs": { + "GetLandingZoneOutput$landingZone": "

Information about the landing zone.

" + } + }, + "LandingZoneDriftStatus": { + "base": null, + "refs": { + "LandingZoneDriftStatusSummary$status": "

The drift status of the landing zone.

Valid values:

" + } + }, + "LandingZoneDriftStatusSummary": { + "base": "

The drift status summary of the landing zone.

If the landing zone differs from the expected configuration, it is defined to be in a state of drift. You can repair this drift by resetting the landing zone.

", + "refs": { + "LandingZoneDetail$driftStatus": "

The drift status of the landing zone.

" + } + }, + "LandingZoneOperationDetail": { + "base": "

Information about a landing zone operation.

", + "refs": { + "GetLandingZoneOperationOutput$operationDetails": "

The landing zone operation details.

" + } + }, + "LandingZoneOperationStatus": { + "base": null, + "refs": { + "LandingZoneOperationDetail$status": "

The landing zone operation status.

Valid values:

" + } + }, + "LandingZoneOperationType": { + "base": null, + "refs": { + "LandingZoneOperationDetail$operationType": "

The landing zone operation type.

Valid values:

" + } + }, + "LandingZoneStatus": { + "base": null, + "refs": { + "LandingZoneDetail$status": "

The landing zone deployment status.

Valid values:

" + } + }, + "LandingZoneSummary": { + "base": "

Returns a summary of information about a landing zone.

", + "refs": { + "ListLandingZonesOutputLandingZonesList$member": null + } + }, + "LandingZoneVersion": { + "base": null, + "refs": { + "CreateLandingZoneInput$version": "

The landing zone version.

", + "LandingZoneDetail$latestAvailableVersion": "

The latest available version of the landing zone.

", + "LandingZoneDetail$version": "

The landing zone's current deployed version.

", + "UpdateLandingZoneInput$version": "

The landing zone version.

" + } + }, "ListEnabledControlsInput": { "base": null, "refs": { @@ -166,6 +273,28 @@ "refs": { } }, + "ListLandingZonesInput": { + "base": null, + "refs": { + } + }, + "ListLandingZonesMaxResults": { + "base": null, + "refs": { + "ListLandingZonesInput$maxResults": "

The maximum number of returned landing zone ARNs.

" + } + }, + "ListLandingZonesOutput": { + "base": null, + "refs": { + } + }, + "ListLandingZonesOutputLandingZonesList": { + "base": null, + "refs": { + "ListLandingZonesOutput$landingZones": "

The ARN of the landing zone.

" + } + }, "ListTagsForResourceInput": { "base": null, "refs": { @@ -176,6 +305,14 @@ "refs": { } }, + "Manifest": { + "base": null, + "refs": { + "CreateLandingZoneInput$manifest": "

The manifest.yaml file is a text file that describes your Amazon Web Services resources. For examples, review The manifest file.

", + "LandingZoneDetail$manifest": "

The landing zone manifest.yaml text file that specifies the landing zone configurations.

", + "UpdateLandingZoneInput$manifest": "

The manifest.yaml file is a text file that describes your Amazon Web Services resources. For examples, review The manifest file

" + } + }, "MaxResults": { "base": null, "refs": { @@ -185,14 +322,19 @@ "OperationIdentifier": { "base": null, "refs": { + "CreateLandingZoneOutput$operationIdentifier": "

A unique identifier assigned to a CreateLandingZone operation. You can use this identifier as an input of GetLandingZoneOperation to check the operation's status.

", + "DeleteLandingZoneOutput$operationIdentifier": "

A unique identifier assigned to a DeleteLandingZone operation. You can use this identifier as an input of GetLandingZoneOperation to check the operation's status.

", "DisableControlOutput$operationIdentifier": "

The ID of the asynchronous operation, which is used to track status. The operation is available for 90 days.

", "EnableControlOutput$operationIdentifier": "

The ID of the asynchronous operation, which is used to track status. The operation is available for 90 days.

", "EnablementStatusSummary$lastOperationIdentifier": "

The last operation identifier for the enabled control.

", - "GetControlOperationInput$operationIdentifier": "

The ID of the asynchronous operation, which is used to track status. The operation is available for 90 days.

" + "GetControlOperationInput$operationIdentifier": "

The ID of the asynchronous operation, which is used to track status. The operation is available for 90 days.

", + "GetLandingZoneOperationInput$operationIdentifier": "

A unique identifier assigned to a landing zone operation.

", + "ResetLandingZoneOutput$operationIdentifier": "

A unique identifier assigned to a ResetLandingZone operation. You can use this identifier as an input of GetLandingZoneOperation to check the operation's status.

", + "UpdateLandingZoneOutput$operationIdentifier": "

A unique identifier assigned to a UpdateLandingZone operation. You can use this identifier as an input of GetLandingZoneOperation to check the operation's status.

" } }, "Region": { - "base": "

An AWS Region in which AWS Control Tower expects to find the control deployed.

The expected Regions are based on the Regions that are governed by the landing zone. In certain cases, a control is not actually enabled in the Region as expected, such as during drift, or mixed governance.

", + "base": "

An Amazon Web Services Region in which Amazon Web Services Control Tower expects to find the control deployed.

The expected Regions are based on the Regions that are governed by the landing zone. In certain cases, a control is not actually enabled in the Region as expected, such as during drift, or mixed governance.

", "refs": { "TargetRegions$member": null } @@ -200,7 +342,17 @@ "RegionName": { "base": null, "refs": { - "Region$name": "

The AWS Region name.

" + "Region$name": "

The Amazon Web Services Region name.

" + } + }, + "ResetLandingZoneInput": { + "base": null, + "refs": { + } + }, + "ResetLandingZoneOutput": { + "base": null, + "refs": { } }, "ResourceNotFoundException": { @@ -219,14 +371,21 @@ "AccessDeniedException$message": null, "ConflictException$message": null, "ControlOperation$statusMessage": "

If the operation result is FAILED, this string contains a message explaining why the operation failed.

", + "DeleteLandingZoneInput$landingZoneIdentifier": "

The unique identifier of the landing zone.

", + "GetLandingZoneInput$landingZoneIdentifier": "

The unique identifier of the landing zone.

", "InternalServerException$message": null, + "LandingZoneOperationDetail$statusMessage": "

If the operation result is FAILED, this string contains a message explaining why the operation failed.

", "ListEnabledControlsInput$nextToken": "

The token to continue the list from a previous API call with the same parameters.

", "ListEnabledControlsOutput$nextToken": "

Retrieves the next page of results. If the string is empty, the current response is the end of the results.

", + "ListLandingZonesInput$nextToken": "

The token to continue the list from a previous API call with the same parameters.

", + "ListLandingZonesOutput$nextToken": "

Retrieves the next page of results. If the string is empty, the current response is the end of the results.

", + "ResetLandingZoneInput$landingZoneIdentifier": "

The unique identifier of the landing zone.

", "ResourceNotFoundException$message": null, "ServiceQuotaExceededException$message": null, "ThrottlingException$message": null, "ThrottlingException$quotaCode": "

The ID of the service quota that was exceeded.

", "ThrottlingException$serviceCode": "

The ID of the service that is associated with the error.

", + "UpdateLandingZoneInput$landingZoneIdentifier": "

The unique identifier of the landing zone.

", "ValidationException$message": null } }, @@ -253,6 +412,7 @@ "TagMap": { "base": null, "refs": { + "CreateLandingZoneInput$tags": "

Tags to be applied to the landing zone.

", "EnableControlInput$tags": "

Tags to be applied to the EnabledControl resource.

", "ListTagsForResourceOutput$tags": "

A list of tags, as key:value strings.

", "TagResourceInput$tags": "

Tags to be applied to the resource.

" @@ -287,14 +447,21 @@ "TargetRegions": { "base": null, "refs": { - "EnabledControlDetails$targetRegions": "

Target AWS Regions for the enabled control.

" + "EnabledControlDetails$targetRegions": "

Target Amazon Web Services Regions for the enabled control.

" } }, "ThrottlingException": { - "base": "

Request was denied due to request throttling.

", + "base": "

Request was denied due to request throttling.

", "refs": { } }, + "Timestamp": { + "base": null, + "refs": { + "LandingZoneOperationDetail$endTime": "

The landing zone operation end time.

", + "LandingZoneOperationDetail$startTime": "

The landing zone operation start time.

" + } + }, "UntagResourceInput": { "base": null, "refs": { @@ -305,8 +472,18 @@ "refs": { } }, + "UpdateLandingZoneInput": { + "base": null, + "refs": { + } + }, + "UpdateLandingZoneOutput": { + "base": null, + "refs": { + } + }, "ValidationException": { - "base": "

The input fails to satisfy the constraints specified by an AWS service.

", + "base": "

The input fails to satisfy the constraints specified by an Amazon Web Services service.

", "refs": { } } diff --git a/apis/controltower/2018-05-10/endpoint-tests-1.json b/apis/controltower/2018-05-10/endpoint-tests-1.json index b5e526bdf11..592037b78a1 100644 --- a/apis/controltower/2018-05-10/endpoint-tests-1.json +++ b/apis/controltower/2018-05-10/endpoint-tests-1.json @@ -529,17 +529,6 @@ "expect": { "error": "Invalid Configuration: Missing Region" } - }, - { - "documentation": "Partition doesn't support DualStack", - "expect": { - "error": "DualStack is enabled but this partition does not support DualStack" - }, - "params": { - "Region": "us-isob-east-1", - "UseFIPS": false, - "UseDualStack": true - } } ], "version": "1.0" diff --git a/apis/controltower/2018-05-10/paginators-1.json b/apis/controltower/2018-05-10/paginators-1.json index 3d1220dffd0..24f2f2bdf59 100644 --- a/apis/controltower/2018-05-10/paginators-1.json +++ b/apis/controltower/2018-05-10/paginators-1.json @@ -5,6 +5,12 @@ "output_token": "nextToken", "limit_key": "maxResults", "result_key": "enabledControls" + }, + "ListLandingZones": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "landingZones" } } } diff --git a/apis/cost-optimization-hub/2022-07-26/api-2.json b/apis/cost-optimization-hub/2022-07-26/api-2.json new file mode 100644 index 00000000000..b53396cb305 --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/api-2.json @@ -0,0 +1,936 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2022-07-26", + "endpointPrefix":"cost-optimization-hub", + "jsonVersion":"1.0", + "protocol":"json", + "serviceFullName":"Cost Optimization Hub", + "serviceId":"Cost Optimization Hub", + "signatureVersion":"v4", + "signingName":"cost-optimization-hub", + "targetPrefix":"CostOptimizationHubService", + "uid":"cost-optimization-hub-2022-07-26" + }, + "operations":{ + "GetPreferences":{ + "name":"GetPreferences", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetPreferencesRequest"}, + "output":{"shape":"GetPreferencesResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "GetRecommendation":{ + "name":"GetRecommendation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetRecommendationRequest"}, + "output":{"shape":"GetRecommendationResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"} + ] + }, + "ListEnrollmentStatuses":{ + "name":"ListEnrollmentStatuses", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListEnrollmentStatusesRequest"}, + "output":{"shape":"ListEnrollmentStatusesResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "ListRecommendationSummaries":{ + "name":"ListRecommendationSummaries", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListRecommendationSummariesRequest"}, + "output":{"shape":"ListRecommendationSummariesResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "ListRecommendations":{ + "name":"ListRecommendations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListRecommendationsRequest"}, + "output":{"shape":"ListRecommendationsResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "UpdateEnrollmentStatus":{ + "name":"UpdateEnrollmentStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateEnrollmentStatusRequest"}, + "output":{"shape":"UpdateEnrollmentStatusResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + }, + "UpdatePreferences":{ + "name":"UpdatePreferences", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdatePreferencesRequest"}, + "output":{"shape":"UpdatePreferencesResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"} + ] + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"} + }, + "exception":true + }, + "AccountEnrollmentStatus":{ + "type":"structure", + "members":{ + "accountId":{"shape":"AccountId"}, + "createdTimestamp":{"shape":"Timestamp"}, + "lastUpdatedTimestamp":{"shape":"Timestamp"}, + "status":{"shape":"EnrollmentStatus"} + } + }, + "AccountEnrollmentStatuses":{ + "type":"list", + "member":{"shape":"AccountEnrollmentStatus"} + }, + "AccountId":{ + "type":"string", + "pattern":"^[0-9]{12}$" + }, + "AccountIdList":{ + "type":"list", + "member":{"shape":"AccountId"}, + "max":100, + "min":1 + }, + "ActionType":{ + "type":"string", + "enum":[ + "Rightsize", + "Stop", + "Upgrade", + "PurchaseSavingsPlans", + "PurchaseReservedInstances", + "MigrateToGraviton" + ] + }, + "ActionTypeList":{ + "type":"list", + "member":{"shape":"ActionType"}, + "max":100, + "min":1 + }, + "BlockStoragePerformanceConfiguration":{ + "type":"structure", + "members":{ + "iops":{"shape":"Double"}, + "throughput":{"shape":"Double"} + } + }, + "Boolean":{ + "type":"boolean", + "box":true + }, + "ComputeConfiguration":{ + "type":"structure", + "members":{ + "architecture":{"shape":"String"}, + "memorySizeInMB":{"shape":"Integer"}, + "platform":{"shape":"String"}, + "vCpu":{"shape":"Double"} + } + }, + "ComputeSavingsPlans":{ + "type":"structure", + "members":{ + "configuration":{"shape":"ComputeSavingsPlansConfiguration"}, + "costCalculation":{"shape":"SavingsPlansCostCalculation"} + } + }, + "ComputeSavingsPlansConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "hourlyCommitment":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "term":{"shape":"String"} + } + }, + "Datetime":{"type":"timestamp"}, + "Double":{ + "type":"double", + "box":true + }, + "EbsVolume":{ + "type":"structure", + "members":{ + "configuration":{"shape":"EbsVolumeConfiguration"}, + "costCalculation":{"shape":"ResourceCostCalculation"} + } + }, + "EbsVolumeConfiguration":{ + "type":"structure", + "members":{ + "attachmentState":{"shape":"String"}, + "performance":{"shape":"BlockStoragePerformanceConfiguration"}, + "storage":{"shape":"StorageConfiguration"} + } + }, + "Ec2AutoScalingGroup":{ + "type":"structure", + "members":{ + "configuration":{"shape":"Ec2AutoScalingGroupConfiguration"}, + "costCalculation":{"shape":"ResourceCostCalculation"} + } + }, + "Ec2AutoScalingGroupConfiguration":{ + "type":"structure", + "members":{ + "instance":{"shape":"InstanceConfiguration"} + } + }, + "Ec2Instance":{ + "type":"structure", + "members":{ + "configuration":{"shape":"Ec2InstanceConfiguration"}, + "costCalculation":{"shape":"ResourceCostCalculation"} + } + }, + "Ec2InstanceConfiguration":{ + "type":"structure", + "members":{ + "instance":{"shape":"InstanceConfiguration"} + } + }, + "Ec2InstanceSavingsPlans":{ + "type":"structure", + "members":{ + "configuration":{"shape":"Ec2InstanceSavingsPlansConfiguration"}, + "costCalculation":{"shape":"SavingsPlansCostCalculation"} + } + }, + "Ec2InstanceSavingsPlansConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "hourlyCommitment":{"shape":"String"}, + "instanceFamily":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "savingsPlansRegion":{"shape":"String"}, + "term":{"shape":"String"} + } + }, + "Ec2ReservedInstances":{ + "type":"structure", + "members":{ + "configuration":{"shape":"Ec2ReservedInstancesConfiguration"}, + "costCalculation":{"shape":"ReservedInstancesCostCalculation"} + } + }, + "Ec2ReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "currentGeneration":{"shape":"String"}, + "instanceFamily":{"shape":"String"}, + "instanceType":{"shape":"String"}, + "monthlyRecurringCost":{"shape":"String"}, + "normalizedUnitsToPurchase":{"shape":"String"}, + "numberOfInstancesToPurchase":{"shape":"String"}, + "offeringClass":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "platform":{"shape":"String"}, + "reservedInstancesRegion":{"shape":"String"}, + "service":{"shape":"String"}, + "sizeFlexEligible":{"shape":"Boolean"}, + "tenancy":{"shape":"String"}, + "term":{"shape":"String"}, + "upfrontCost":{"shape":"String"} + } + }, + "EcsService":{ + "type":"structure", + "members":{ + "configuration":{"shape":"EcsServiceConfiguration"}, + "costCalculation":{"shape":"ResourceCostCalculation"} + } + }, + "EcsServiceConfiguration":{ + "type":"structure", + "members":{ + "compute":{"shape":"ComputeConfiguration"} + } + }, + "ElastiCacheReservedInstances":{ + "type":"structure", + "members":{ + "configuration":{"shape":"ElastiCacheReservedInstancesConfiguration"}, + "costCalculation":{"shape":"ReservedInstancesCostCalculation"} + } + }, + "ElastiCacheReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "currentGeneration":{"shape":"String"}, + "instanceFamily":{"shape":"String"}, + "instanceType":{"shape":"String"}, + "monthlyRecurringCost":{"shape":"String"}, + "normalizedUnitsToPurchase":{"shape":"String"}, + "numberOfInstancesToPurchase":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "reservedInstancesRegion":{"shape":"String"}, + "service":{"shape":"String"}, + "sizeFlexEligible":{"shape":"Boolean"}, + "term":{"shape":"String"}, + "upfrontCost":{"shape":"String"} + } + }, + "EnrollmentStatus":{ + "type":"string", + "enum":[ + "Active", + "Inactive" + ] + }, + "EstimatedDiscounts":{ + "type":"structure", + "members":{ + "otherDiscount":{"shape":"Double"}, + "reservedInstancesDiscount":{"shape":"Double"}, + "savingsPlansDiscount":{"shape":"Double"} + } + }, + "Filter":{ + "type":"structure", + "members":{ + "accountIds":{"shape":"AccountIdList"}, + "actionTypes":{"shape":"ActionTypeList"}, + "implementationEfforts":{"shape":"ImplementationEffortList"}, + "recommendationIds":{"shape":"RecommendationIdList"}, + "regions":{"shape":"RegionList"}, + "resourceArns":{"shape":"ResourceArnList"}, + "resourceIds":{"shape":"ResourceIdList"}, + "resourceTypes":{"shape":"ResourceTypeList"}, + "restartNeeded":{"shape":"Boolean"}, + "rollbackPossible":{"shape":"Boolean"}, + "tags":{"shape":"TagList"} + } + }, + "GetPreferencesRequest":{ + "type":"structure", + "members":{ + } + }, + "GetPreferencesResponse":{ + "type":"structure", + "members":{ + "memberAccountDiscountVisibility":{"shape":"MemberAccountDiscountVisibility"}, + "savingsEstimationMode":{"shape":"SavingsEstimationMode"} + } + }, + "GetRecommendationRequest":{ + "type":"structure", + "required":["recommendationId"], + "members":{ + "recommendationId":{"shape":"String"} + } + }, + "GetRecommendationResponse":{ + "type":"structure", + "members":{ + "accountId":{"shape":"String"}, + "actionType":{"shape":"ActionType"}, + "costCalculationLookbackPeriodInDays":{"shape":"Integer"}, + "currencyCode":{"shape":"String"}, + "currentResourceDetails":{"shape":"ResourceDetails"}, + "currentResourceType":{"shape":"ResourceType"}, + "estimatedMonthlyCost":{"shape":"Double"}, + "estimatedMonthlySavings":{"shape":"Double"}, + "estimatedSavingsOverCostCalculationLookbackPeriod":{"shape":"Double"}, + "estimatedSavingsPercentage":{"shape":"Double"}, + "implementationEffort":{"shape":"ImplementationEffort"}, + "lastRefreshTimestamp":{"shape":"Datetime"}, + "recommendationId":{"shape":"String"}, + "recommendationLookbackPeriodInDays":{"shape":"Integer"}, + "recommendedResourceDetails":{"shape":"ResourceDetails"}, + "recommendedResourceType":{"shape":"ResourceType"}, + "region":{"shape":"String"}, + "resourceArn":{"shape":"String"}, + "resourceId":{"shape":"String"}, + "restartNeeded":{"shape":"Boolean"}, + "rollbackPossible":{"shape":"Boolean"}, + "source":{"shape":"Source"}, + "tags":{"shape":"TagList"} + } + }, + "ImplementationEffort":{ + "type":"string", + "enum":[ + "VeryLow", + "Low", + "Medium", + "High", + "VeryHigh" + ] + }, + "ImplementationEffortList":{ + "type":"list", + "member":{"shape":"ImplementationEffort"}, + "max":100, + "min":1 + }, + "InstanceConfiguration":{ + "type":"structure", + "members":{ + "type":{"shape":"String"} + } + }, + "Integer":{ + "type":"integer", + "box":true + }, + "InternalServerException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"} + }, + "exception":true, + "fault":true + }, + "LambdaFunction":{ + "type":"structure", + "members":{ + "configuration":{"shape":"LambdaFunctionConfiguration"}, + "costCalculation":{"shape":"ResourceCostCalculation"} + } + }, + "LambdaFunctionConfiguration":{ + "type":"structure", + "members":{ + "compute":{"shape":"ComputeConfiguration"} + } + }, + "ListEnrollmentStatusesRequest":{ + "type":"structure", + "members":{ + "accountId":{"shape":"AccountId"}, + "includeOrganizationInfo":{"shape":"PrimitiveBoolean"}, + "maxResults":{"shape":"MaxResults"}, + "nextToken":{"shape":"String"} + } + }, + "ListEnrollmentStatusesResponse":{ + "type":"structure", + "members":{ + "items":{"shape":"AccountEnrollmentStatuses"}, + "nextToken":{"shape":"String"} + } + }, + "ListRecommendationSummariesRequest":{ + "type":"structure", + "required":["groupBy"], + "members":{ + "filter":{"shape":"Filter"}, + "groupBy":{"shape":"String"}, + "maxResults":{"shape":"ListRecommendationSummariesRequestMaxResultsInteger"}, + "nextToken":{"shape":"String"} + } + }, + "ListRecommendationSummariesRequestMaxResultsInteger":{ + "type":"integer", + "box":true, + "max":1000, + "min":0 + }, + "ListRecommendationSummariesResponse":{ + "type":"structure", + "members":{ + "currencyCode":{"shape":"String"}, + "estimatedTotalDedupedSavings":{"shape":"Double"}, + "groupBy":{"shape":"String"}, + "items":{"shape":"RecommendationSummariesList"}, + "nextToken":{"shape":"String"} + } + }, + "ListRecommendationsRequest":{ + "type":"structure", + "members":{ + "filter":{"shape":"Filter"}, + "includeAllRecommendations":{"shape":"PrimitiveBoolean"}, + "maxResults":{"shape":"ListRecommendationsRequestMaxResultsInteger"}, + "nextToken":{"shape":"String"}, + "orderBy":{"shape":"OrderBy"} + } + }, + "ListRecommendationsRequestMaxResultsInteger":{ + "type":"integer", + "box":true, + "max":1000, + "min":0 + }, + "ListRecommendationsResponse":{ + "type":"structure", + "members":{ + "items":{"shape":"RecommendationList"}, + "nextToken":{"shape":"String"} + } + }, + "MaxResults":{ + "type":"integer", + "box":true, + "max":100, + "min":0 + }, + "MemberAccountDiscountVisibility":{ + "type":"string", + "enum":[ + "All", + "None" + ] + }, + "OpenSearchReservedInstances":{ + "type":"structure", + "members":{ + "configuration":{"shape":"OpenSearchReservedInstancesConfiguration"}, + "costCalculation":{"shape":"ReservedInstancesCostCalculation"} + } + }, + "OpenSearchReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "currentGeneration":{"shape":"String"}, + "instanceType":{"shape":"String"}, + "monthlyRecurringCost":{"shape":"String"}, + "normalizedUnitsToPurchase":{"shape":"String"}, + "numberOfInstancesToPurchase":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "reservedInstancesRegion":{"shape":"String"}, + "service":{"shape":"String"}, + "sizeFlexEligible":{"shape":"Boolean"}, + "term":{"shape":"String"}, + "upfrontCost":{"shape":"String"} + } + }, + "Order":{ + "type":"string", + "enum":[ + "Asc", + "Desc" + ] + }, + "OrderBy":{ + "type":"structure", + "members":{ + "dimension":{"shape":"String"}, + "order":{"shape":"Order"} + } + }, + "PrimitiveBoolean":{"type":"boolean"}, + "RdsReservedInstances":{ + "type":"structure", + "members":{ + "configuration":{"shape":"RdsReservedInstancesConfiguration"}, + "costCalculation":{"shape":"ReservedInstancesCostCalculation"} + } + }, + "RdsReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "currentGeneration":{"shape":"String"}, + "databaseEdition":{"shape":"String"}, + "databaseEngine":{"shape":"String"}, + "deploymentOption":{"shape":"String"}, + "instanceFamily":{"shape":"String"}, + "instanceType":{"shape":"String"}, + "licenseModel":{"shape":"String"}, + "monthlyRecurringCost":{"shape":"String"}, + "normalizedUnitsToPurchase":{"shape":"String"}, + "numberOfInstancesToPurchase":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "reservedInstancesRegion":{"shape":"String"}, + "service":{"shape":"String"}, + "sizeFlexEligible":{"shape":"Boolean"}, + "term":{"shape":"String"}, + "upfrontCost":{"shape":"String"} + } + }, + "Recommendation":{ + "type":"structure", + "members":{ + "accountId":{"shape":"String"}, + "actionType":{"shape":"String"}, + "currencyCode":{"shape":"String"}, + "currentResourceSummary":{"shape":"String"}, + "currentResourceType":{"shape":"String"}, + "estimatedMonthlyCost":{"shape":"Double"}, + "estimatedMonthlySavings":{"shape":"Double"}, + "estimatedSavingsPercentage":{"shape":"Double"}, + "implementationEffort":{"shape":"String"}, + "lastRefreshTimestamp":{"shape":"Datetime"}, + "recommendationId":{"shape":"String"}, + "recommendationLookbackPeriodInDays":{"shape":"Integer"}, + "recommendedResourceSummary":{"shape":"String"}, + "recommendedResourceType":{"shape":"String"}, + "region":{"shape":"String"}, + "resourceArn":{"shape":"String"}, + "resourceId":{"shape":"String"}, + "restartNeeded":{"shape":"Boolean"}, + "rollbackPossible":{"shape":"Boolean"}, + "source":{"shape":"Source"}, + "tags":{"shape":"TagList"} + } + }, + "RecommendationIdList":{ + "type":"list", + "member":{"shape":"String"}, + "max":100, + "min":1 + }, + "RecommendationList":{ + "type":"list", + "member":{"shape":"Recommendation"} + }, + "RecommendationSummariesList":{ + "type":"list", + "member":{"shape":"RecommendationSummary"} + }, + "RecommendationSummary":{ + "type":"structure", + "members":{ + "estimatedMonthlySavings":{"shape":"Double"}, + "group":{"shape":"String"}, + "recommendationCount":{"shape":"Integer"} + } + }, + "RedshiftReservedInstances":{ + "type":"structure", + "members":{ + "configuration":{"shape":"RedshiftReservedInstancesConfiguration"}, + "costCalculation":{"shape":"ReservedInstancesCostCalculation"} + } + }, + "RedshiftReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "currentGeneration":{"shape":"String"}, + "instanceFamily":{"shape":"String"}, + "instanceType":{"shape":"String"}, + "monthlyRecurringCost":{"shape":"String"}, + "normalizedUnitsToPurchase":{"shape":"String"}, + "numberOfInstancesToPurchase":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "reservedInstancesRegion":{"shape":"String"}, + "service":{"shape":"String"}, + "sizeFlexEligible":{"shape":"Boolean"}, + "term":{"shape":"String"}, + "upfrontCost":{"shape":"String"} + } + }, + "RegionList":{ + "type":"list", + "member":{"shape":"String"}, + "max":100, + "min":1 + }, + "ReservedInstancesCostCalculation":{ + "type":"structure", + "members":{ + "pricing":{"shape":"ReservedInstancesPricing"} + } + }, + "ReservedInstancesPricing":{ + "type":"structure", + "members":{ + "estimatedMonthlyAmortizedReservationCost":{"shape":"Double"}, + "estimatedOnDemandCost":{"shape":"Double"}, + "monthlyReservationEligibleCost":{"shape":"Double"}, + "savingsPercentage":{"shape":"Double"} + } + }, + "ResourceArnList":{ + "type":"list", + "member":{"shape":"String"}, + "max":100, + "min":1 + }, + "ResourceCostCalculation":{ + "type":"structure", + "members":{ + "pricing":{"shape":"ResourcePricing"}, + "usages":{"shape":"UsageList"} + } + }, + "ResourceDetails":{ + "type":"structure", + "members":{ + "computeSavingsPlans":{"shape":"ComputeSavingsPlans"}, + "ebsVolume":{"shape":"EbsVolume"}, + "ec2AutoScalingGroup":{"shape":"Ec2AutoScalingGroup"}, + "ec2Instance":{"shape":"Ec2Instance"}, + "ec2InstanceSavingsPlans":{"shape":"Ec2InstanceSavingsPlans"}, + "ec2ReservedInstances":{"shape":"Ec2ReservedInstances"}, + "ecsService":{"shape":"EcsService"}, + "elastiCacheReservedInstances":{"shape":"ElastiCacheReservedInstances"}, + "lambdaFunction":{"shape":"LambdaFunction"}, + "openSearchReservedInstances":{"shape":"OpenSearchReservedInstances"}, + "rdsReservedInstances":{"shape":"RdsReservedInstances"}, + "redshiftReservedInstances":{"shape":"RedshiftReservedInstances"}, + "sageMakerSavingsPlans":{"shape":"SageMakerSavingsPlans"} + }, + "union":true + }, + "ResourceIdList":{ + "type":"list", + "member":{"shape":"String"}, + "max":100, + "min":1 + }, + "ResourceNotFoundException":{ + "type":"structure", + "required":[ + "message", + "resourceId" + ], + "members":{ + "message":{"shape":"String"}, + "resourceId":{"shape":"String"} + }, + "exception":true + }, + "ResourcePricing":{ + "type":"structure", + "members":{ + "estimatedCostAfterDiscounts":{"shape":"Double"}, + "estimatedCostBeforeDiscounts":{"shape":"Double"}, + "estimatedDiscounts":{"shape":"EstimatedDiscounts"}, + "estimatedNetUnusedAmortizedCommitments":{"shape":"Double"} + } + }, + "ResourceType":{ + "type":"string", + "enum":[ + "Ec2Instance", + "LambdaFunction", + "EbsVolume", + "EcsService", + "Ec2AutoScalingGroup", + "Ec2InstanceSavingsPlans", + "ComputeSavingsPlans", + "SageMakerSavingsPlans", + "Ec2ReservedInstances", + "RdsReservedInstances", + "OpenSearchReservedInstances", + "RedshiftReservedInstances", + "ElastiCacheReservedInstances" + ] + }, + "ResourceTypeList":{ + "type":"list", + "member":{"shape":"ResourceType"}, + "max":100, + "min":1 + }, + "SageMakerSavingsPlans":{ + "type":"structure", + "members":{ + "configuration":{"shape":"SageMakerSavingsPlansConfiguration"}, + "costCalculation":{"shape":"SavingsPlansCostCalculation"} + } + }, + "SageMakerSavingsPlansConfiguration":{ + "type":"structure", + "members":{ + "accountScope":{"shape":"String"}, + "hourlyCommitment":{"shape":"String"}, + "paymentOption":{"shape":"String"}, + "term":{"shape":"String"} + } + }, + "SavingsEstimationMode":{ + "type":"string", + "enum":[ + "BeforeDiscounts", + "AfterDiscounts" + ] + }, + "SavingsPlansCostCalculation":{ + "type":"structure", + "members":{ + "pricing":{"shape":"SavingsPlansPricing"} + } + }, + "SavingsPlansPricing":{ + "type":"structure", + "members":{ + "estimatedMonthlyCommitment":{"shape":"Double"}, + "estimatedOnDemandCost":{"shape":"Double"}, + "monthlySavingsPlansEligibleCost":{"shape":"Double"}, + "savingsPercentage":{"shape":"Double"} + } + }, + "Source":{ + "type":"string", + "enum":[ + "ComputeOptimizer", + "CostExplorer" + ] + }, + "StorageConfiguration":{ + "type":"structure", + "members":{ + "sizeInGb":{"shape":"Double"}, + "type":{"shape":"String"} + } + }, + "String":{"type":"string"}, + "Tag":{ + "type":"structure", + "members":{ + "key":{"shape":"String"}, + "value":{"shape":"String"} + } + }, + "TagList":{ + "type":"list", + "member":{"shape":"Tag"}, + "max":100, + "min":1 + }, + "ThrottlingException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "exception":true + }, + "Timestamp":{"type":"timestamp"}, + "UpdateEnrollmentStatusRequest":{ + "type":"structure", + "required":["status"], + "members":{ + "includeMemberAccounts":{"shape":"Boolean"}, + "status":{"shape":"EnrollmentStatus"} + } + }, + "UpdateEnrollmentStatusResponse":{ + "type":"structure", + "members":{ + "status":{"shape":"String"} + } + }, + "UpdatePreferencesRequest":{ + "type":"structure", + "members":{ + "memberAccountDiscountVisibility":{"shape":"MemberAccountDiscountVisibility"}, + "savingsEstimationMode":{"shape":"SavingsEstimationMode"} + } + }, + "UpdatePreferencesResponse":{ + "type":"structure", + "members":{ + "memberAccountDiscountVisibility":{"shape":"MemberAccountDiscountVisibility"}, + "savingsEstimationMode":{"shape":"SavingsEstimationMode"} + } + }, + "Usage":{ + "type":"structure", + "members":{ + "operation":{"shape":"String"}, + "productCode":{"shape":"String"}, + "unit":{"shape":"String"}, + "usageAmount":{"shape":"Double"}, + "usageType":{"shape":"String"} + } + }, + "UsageList":{ + "type":"list", + "member":{"shape":"Usage"} + }, + "ValidationException":{ + "type":"structure", + "required":["message"], + "members":{ + "fields":{"shape":"ValidationExceptionDetails"}, + "message":{"shape":"String"}, + "reason":{"shape":"ValidationExceptionReason"} + }, + "exception":true + }, + "ValidationExceptionDetail":{ + "type":"structure", + "required":[ + "fieldName", + "message" + ], + "members":{ + "fieldName":{"shape":"String"}, + "message":{"shape":"String"} + } + }, + "ValidationExceptionDetails":{ + "type":"list", + "member":{"shape":"ValidationExceptionDetail"} + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "FieldValidationFailed", + "Other" + ] + } + } +} diff --git a/apis/cost-optimization-hub/2022-07-26/docs-2.json b/apis/cost-optimization-hub/2022-07-26/docs-2.json new file mode 100644 index 00000000000..f55a95ff265 --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/docs-2.json @@ -0,0 +1,796 @@ +{ + "version": "2.0", + "service": "

You can use the Cost Optimization Hub API to programmatically identify, filter, aggregate, and quantify savings for your cost optimization recommendations across multiple Amazon Web Services Regions and Amazon Web Services accounts in your organization.

The Cost Optimization Hub API provides the following endpoint:

", + "operations": { + "GetPreferences": "

Returns a set of preferences for an account in order to add account-specific preferences into the service. These preferences impact how the savings associated with recommendations are presented—estimated savings after discounts or estimated savings before discounts, for example.

", + "GetRecommendation": "

Returns both the current and recommended resource configuration and the estimated cost impact for a recommendation.

The recommendationId is only valid for up to a maximum of 24 hours as recommendations are refreshed daily. To retrieve the recommendationId, use the ListRecommendations API.

", + "ListEnrollmentStatuses": "

Retrieves the enrollment status for an account. It can also return the list of accounts that are enrolled under the organization.

", + "ListRecommendationSummaries": "

Returns a concise representation of savings estimates for resources. Also returns de-duped savings across different types of recommendations.

The following filters are not supported for this API: recommendationIds, resourceArns, and resourceIds.

", + "ListRecommendations": "

Returns a list of recommendations.

", + "UpdateEnrollmentStatus": "

Updates the enrollment (opt in and opt out) status of an account to the Cost Optimization Hub service.

If the account is a management account of an organization, this action can also be used to enroll member accounts of the organization.

You must have the appropriate permissions to opt in to Cost Optimization Hub and to view its recommendations. When you opt in, Cost Optimization Hub automatically creates a service-linked role in your account to access its data.

", + "UpdatePreferences": "

Updates a set of preferences for an account in order to add account-specific preferences into the service. These preferences impact how the savings associated with recommendations are presented.

" + }, + "shapes": { + "AccessDeniedException": { + "base": "

You are not authorized to use this operation with the given parameters.

", + "refs": { + } + }, + "AccountEnrollmentStatus": { + "base": "

Describes the enrollment status of an organization's member accounts in Cost Optimization Hub.

", + "refs": { + "AccountEnrollmentStatuses$member": null + } + }, + "AccountEnrollmentStatuses": { + "base": null, + "refs": { + "ListEnrollmentStatusesResponse$items": "

The account enrollment statuses.

" + } + }, + "AccountId": { + "base": null, + "refs": { + "AccountEnrollmentStatus$accountId": "

The Amazon Web Services account ID.

", + "AccountIdList$member": null, + "ListEnrollmentStatusesRequest$accountId": "

The enrollment status of a specific account ID in the organization.

" + } + }, + "AccountIdList": { + "base": null, + "refs": { + "Filter$accountIds": "

The account that the recommendation is for.

" + } + }, + "ActionType": { + "base": null, + "refs": { + "ActionTypeList$member": null, + "GetRecommendationResponse$actionType": "

The type of action you can take by adopting the recommendation.

" + } + }, + "ActionTypeList": { + "base": null, + "refs": { + "Filter$actionTypes": "

The type of action you can take by adopting the recommendation.

" + } + }, + "BlockStoragePerformanceConfiguration": { + "base": "

Describes the Amazon Elastic Block Store performance configuration of the current and recommended resource configuration for a recommendation.

", + "refs": { + "EbsVolumeConfiguration$performance": "

The Amazon Elastic Block Store performance configuration.

" + } + }, + "Boolean": { + "base": null, + "refs": { + "Ec2ReservedInstancesConfiguration$sizeFlexEligible": "

Determines whether the recommendation is size flexible.

", + "ElastiCacheReservedInstancesConfiguration$sizeFlexEligible": "

Determines whether the recommendation is size flexible.

", + "Filter$restartNeeded": "

Whether or not implementing the recommendation requires a restart.

", + "Filter$rollbackPossible": "

Whether or not implementing the recommendation can be rolled back.

", + "GetRecommendationResponse$restartNeeded": "

Whether or not implementing the recommendation requires a restart.

", + "GetRecommendationResponse$rollbackPossible": "

Whether or not implementing the recommendation can be rolled back.

", + "OpenSearchReservedInstancesConfiguration$sizeFlexEligible": "

Determines whether the recommendation is size flexible.

", + "RdsReservedInstancesConfiguration$sizeFlexEligible": "

Determines whether the recommendation is size flexible.

", + "Recommendation$restartNeeded": "

Whether or not implementing the recommendation requires a restart.

", + "Recommendation$rollbackPossible": "

Whether or not implementing the recommendation can be rolled back.

", + "RedshiftReservedInstancesConfiguration$sizeFlexEligible": "

Determines whether the recommendation is size flexible.

", + "UpdateEnrollmentStatusRequest$includeMemberAccounts": "

Indicates whether to enroll member accounts of the organization if the account is the management account.

" + } + }, + "ComputeConfiguration": { + "base": "

Describes the performance configuration for compute services such as Amazon EC2, Lambda, and ECS.

", + "refs": { + "EcsServiceConfiguration$compute": "

Details about the compute configuration.

", + "LambdaFunctionConfiguration$compute": "

Details about the compute configuration.

" + } + }, + "ComputeSavingsPlans": { + "base": "

The Compute Savings Plans recommendation details.

", + "refs": { + "ResourceDetails$computeSavingsPlans": "

The Compute Savings Plans recommendation details.

" + } + }, + "ComputeSavingsPlansConfiguration": { + "base": "

The Compute Savings Plans configuration used for recommendations.

", + "refs": { + "ComputeSavingsPlans$configuration": "

Configuration details of the Compute Savings Plans to purchase.

" + } + }, + "Datetime": { + "base": null, + "refs": { + "GetRecommendationResponse$lastRefreshTimestamp": "

The time when the recommendation was last generated.

", + "Recommendation$lastRefreshTimestamp": "

The time when the recommendation was last generated.

" + } + }, + "Double": { + "base": null, + "refs": { + "BlockStoragePerformanceConfiguration$iops": "

The number of I/O operations per second.

", + "BlockStoragePerformanceConfiguration$throughput": "

The throughput that the volume supports.

", + "ComputeConfiguration$vCpu": "

The number of vCPU cores in the resource.

", + "EstimatedDiscounts$otherDiscount": "

Estimated other discounts include all discounts that are not itemized. Itemized discounts include reservedInstanceDiscount and savingsPlansDiscount.

", + "EstimatedDiscounts$reservedInstancesDiscount": "

Estimated reserved instance discounts.

", + "EstimatedDiscounts$savingsPlansDiscount": "

Estimated Savings Plans discounts.

", + "GetRecommendationResponse$estimatedMonthlyCost": "

The estimated monthly cost of the recommendation.

", + "GetRecommendationResponse$estimatedMonthlySavings": "

The estimated monthly savings amount for the recommendation.

", + "GetRecommendationResponse$estimatedSavingsOverCostCalculationLookbackPeriod": "

The estimated savings amount over the lookback period used to calculate cost impact for a recommendation.

", + "GetRecommendationResponse$estimatedSavingsPercentage": "

The estimated savings percentage relative to the total cost over the cost calculation lookback period.

", + "ListRecommendationSummariesResponse$estimatedTotalDedupedSavings": "

The total overall savings for the aggregated view.

", + "Recommendation$estimatedMonthlyCost": "

The estimated monthly cost for the recommendation.

", + "Recommendation$estimatedMonthlySavings": "

The estimated monthly savings amount for the recommendation.

", + "Recommendation$estimatedSavingsPercentage": "

The estimated savings percentage relative to the total cost over the cost calculation lookback period.

", + "RecommendationSummary$estimatedMonthlySavings": "

The estimated total savings resulting from modifications, on a monthly basis.

", + "ReservedInstancesPricing$estimatedMonthlyAmortizedReservationCost": "

The estimated cost of your recurring monthly fees for the recommended reserved instance across the month.

", + "ReservedInstancesPricing$estimatedOnDemandCost": "

The remaining On-Demand cost estimated to not be covered by the recommended reserved instance, over the length of the lookback period.

", + "ReservedInstancesPricing$monthlyReservationEligibleCost": "

The cost of paying for the recommended reserved instance monthly.

", + "ReservedInstancesPricing$savingsPercentage": "

The savings percentage relative to the total On-Demand costs that are associated with this instance.

", + "ResourcePricing$estimatedCostAfterDiscounts": "

The savings estimate incorporating all discounts with Amazon Web Services, such as Reserved Instances and Savings Plans.

", + "ResourcePricing$estimatedCostBeforeDiscounts": "

The savings estimate using Amazon Web Services public pricing without incorporating any discounts.

", + "ResourcePricing$estimatedNetUnusedAmortizedCommitments": "

The estimated net unused amortized commitment for the recommendation.

", + "SavingsPlansPricing$estimatedMonthlyCommitment": "

Estimated monthly commitment for the Savings Plan.

", + "SavingsPlansPricing$estimatedOnDemandCost": "

Estimated On-Demand cost you will pay after buying the Savings Plan.

", + "SavingsPlansPricing$monthlySavingsPlansEligibleCost": "

The cost of paying for the recommended Savings Plan monthly.

", + "SavingsPlansPricing$savingsPercentage": "

Estimated savings as a percentage of your overall costs after buying the Savings Plan.

", + "StorageConfiguration$sizeInGb": "

The storage volume.

", + "Usage$usageAmount": "

The usage amount.

" + } + }, + "EbsVolume": { + "base": "

Describes the Amazon Elastic Block Store volume configuration of the current and recommended resource configuration for a recommendation.

", + "refs": { + "ResourceDetails$ebsVolume": "

The Amazon Elastic Block Store volume recommendation details.

" + } + }, + "EbsVolumeConfiguration": { + "base": "

The Amazon Elastic Block Store volume configuration used for recommendations.

", + "refs": { + "EbsVolume$configuration": "

The Amazon Elastic Block Store volume configuration used for recommendations.

" + } + }, + "Ec2AutoScalingGroup": { + "base": "

The EC2 Auto Scaling group recommendation details.

", + "refs": { + "ResourceDetails$ec2AutoScalingGroup": "

The EC2 Auto Scaling group recommendation details.

" + } + }, + "Ec2AutoScalingGroupConfiguration": { + "base": "

The EC2 auto scaling group configuration used for recommendations.

", + "refs": { + "Ec2AutoScalingGroup$configuration": "

The EC2 Auto Scaling group configuration used for recommendations.

" + } + }, + "Ec2Instance": { + "base": "

Describes the EC2 instance configuration of the current and recommended resource configuration for a recommendation.

", + "refs": { + "ResourceDetails$ec2Instance": "

The EC2 instance recommendation details.

" + } + }, + "Ec2InstanceConfiguration": { + "base": "

The EC2 instance configuration used for recommendations.

", + "refs": { + "Ec2Instance$configuration": "

The EC2 instance configuration used for recommendations.

" + } + }, + "Ec2InstanceSavingsPlans": { + "base": "

The EC2 instance Savings Plans recommendation details.

", + "refs": { + "ResourceDetails$ec2InstanceSavingsPlans": "

The EC2 instance Savings Plans recommendation details.

" + } + }, + "Ec2InstanceSavingsPlansConfiguration": { + "base": "

The EC2 instance Savings Plans configuration used for recommendations.

", + "refs": { + "Ec2InstanceSavingsPlans$configuration": "

The EC2 instance Savings Plans configuration used for recommendations.

" + } + }, + "Ec2ReservedInstances": { + "base": "

The EC2 reserved instances recommendation details.

", + "refs": { + "ResourceDetails$ec2ReservedInstances": "

The EC2 reserved instances recommendation details.

" + } + }, + "Ec2ReservedInstancesConfiguration": { + "base": "

The EC2 reserved instances configuration used for recommendations.

", + "refs": { + "Ec2ReservedInstances$configuration": "

The EC2 reserved instances configuration used for recommendations.

" + } + }, + "EcsService": { + "base": "

The ECS service recommendation details.

", + "refs": { + "ResourceDetails$ecsService": "

The ECS service recommendation details.

" + } + }, + "EcsServiceConfiguration": { + "base": "

The ECS service configuration used for recommendations.

", + "refs": { + "EcsService$configuration": "

The ECS service configuration used for recommendations.

" + } + }, + "ElastiCacheReservedInstances": { + "base": "

The ElastiCache reserved instances recommendation details.

", + "refs": { + "ResourceDetails$elastiCacheReservedInstances": "

The ElastiCache reserved instances recommendation details.

" + } + }, + "ElastiCacheReservedInstancesConfiguration": { + "base": "

The ElastiCache reserved instances configuration used for recommendations.

", + "refs": { + "ElastiCacheReservedInstances$configuration": "

The ElastiCache reserved instances configuration used for recommendations.

" + } + }, + "EnrollmentStatus": { + "base": null, + "refs": { + "AccountEnrollmentStatus$status": "

The account enrollment status.

", + "UpdateEnrollmentStatusRequest$status": "

Sets the account status.

" + } + }, + "EstimatedDiscounts": { + "base": "

Estimated discount details of the current and recommended resource configuration for a recommendation.

", + "refs": { + "ResourcePricing$estimatedDiscounts": "

The estimated discounts for a recommendation.

" + } + }, + "Filter": { + "base": "

Describes a filter that returns a more specific list of recommendations. Filters recommendations by different dimensions.

", + "refs": { + "ListRecommendationSummariesRequest$filter": null, + "ListRecommendationsRequest$filter": "

The constraints that you want all returned recommendations to match.

" + } + }, + "GetPreferencesRequest": { + "base": null, + "refs": { + } + }, + "GetPreferencesResponse": { + "base": null, + "refs": { + } + }, + "GetRecommendationRequest": { + "base": null, + "refs": { + } + }, + "GetRecommendationResponse": { + "base": null, + "refs": { + } + }, + "ImplementationEffort": { + "base": null, + "refs": { + "GetRecommendationResponse$implementationEffort": "

The effort required to implement the recommendation.

", + "ImplementationEffortList$member": null + } + }, + "ImplementationEffortList": { + "base": null, + "refs": { + "Filter$implementationEfforts": "

The effort required to implement the recommendation.

" + } + }, + "InstanceConfiguration": { + "base": "

The Instance configuration used for recommendations.

", + "refs": { + "Ec2AutoScalingGroupConfiguration$instance": "

Details about the instance.

", + "Ec2InstanceConfiguration$instance": "

Details about the instance.

" + } + }, + "Integer": { + "base": null, + "refs": { + "ComputeConfiguration$memorySizeInMB": "

The memory size of the resource.

", + "GetRecommendationResponse$costCalculationLookbackPeriodInDays": "

The lookback period used to calculate cost impact for a recommendation.

", + "GetRecommendationResponse$recommendationLookbackPeriodInDays": "

The lookback period that's used to generate the recommendation.

", + "Recommendation$recommendationLookbackPeriodInDays": "

The lookback period that's used to generate the recommendation.

", + "RecommendationSummary$recommendationCount": "

The total number of instance recommendations.

" + } + }, + "InternalServerException": { + "base": "

An error on the server occurred during the processing of your request. Try again later.

", + "refs": { + } + }, + "LambdaFunction": { + "base": "

The Lambda function recommendation details.

", + "refs": { + "ResourceDetails$lambdaFunction": "

The Lambda function recommendation details.

" + } + }, + "LambdaFunctionConfiguration": { + "base": "

The Lambda function configuration used for recommendations.

", + "refs": { + "LambdaFunction$configuration": "

The Lambda function configuration used for recommendations.

" + } + }, + "ListEnrollmentStatusesRequest": { + "base": null, + "refs": { + } + }, + "ListEnrollmentStatusesResponse": { + "base": null, + "refs": { + } + }, + "ListRecommendationSummariesRequest": { + "base": null, + "refs": { + } + }, + "ListRecommendationSummariesRequestMaxResultsInteger": { + "base": null, + "refs": { + "ListRecommendationSummariesRequest$maxResults": "

The maximum number of recommendations that are returned for the request.

" + } + }, + "ListRecommendationSummariesResponse": { + "base": null, + "refs": { + } + }, + "ListRecommendationsRequest": { + "base": null, + "refs": { + } + }, + "ListRecommendationsRequestMaxResultsInteger": { + "base": null, + "refs": { + "ListRecommendationsRequest$maxResults": "

The maximum number of recommendations that are returned for the request.

" + } + }, + "ListRecommendationsResponse": { + "base": null, + "refs": { + } + }, + "MaxResults": { + "base": null, + "refs": { + "ListEnrollmentStatusesRequest$maxResults": "

The maximum number of objects that are returned for the request.

" + } + }, + "MemberAccountDiscountVisibility": { + "base": null, + "refs": { + "GetPreferencesResponse$memberAccountDiscountVisibility": "

Retrieves the status of the \"member account discount visibility\" preference.

", + "UpdatePreferencesRequest$memberAccountDiscountVisibility": "

Sets the \"member account discount visibility\" preference.

", + "UpdatePreferencesResponse$memberAccountDiscountVisibility": "

Shows the status of the \"member account discount visibility\" preference.

" + } + }, + "OpenSearchReservedInstances": { + "base": "

The OpenSearch reserved instances recommendation details.

", + "refs": { + "ResourceDetails$openSearchReservedInstances": "

The OpenSearch reserved instances recommendation details.

" + } + }, + "OpenSearchReservedInstancesConfiguration": { + "base": "

The OpenSearch reserved instances configuration used for recommendations.

", + "refs": { + "OpenSearchReservedInstances$configuration": "

The OpenSearch reserved instances configuration used for recommendations.

" + } + }, + "Order": { + "base": null, + "refs": { + "OrderBy$order": "

The order that's used to sort the data.

" + } + }, + "OrderBy": { + "base": "

Defines how rows will be sorted in the response.

", + "refs": { + "ListRecommendationsRequest$orderBy": "

The ordering of recommendations by a dimension.

" + } + }, + "PrimitiveBoolean": { + "base": null, + "refs": { + "ListEnrollmentStatusesRequest$includeOrganizationInfo": "

Indicates whether to return the enrollment status for the organization.

", + "ListRecommendationsRequest$includeAllRecommendations": "

List of all recommendations for a resource, or a single recommendation if de-duped by resourceId.

" + } + }, + "RdsReservedInstances": { + "base": "

The RDS reserved instances recommendation details.

", + "refs": { + "ResourceDetails$rdsReservedInstances": "

The RDS reserved instances recommendation details.

" + } + }, + "RdsReservedInstancesConfiguration": { + "base": "

The RDS reserved instances configuration used for recommendations.

", + "refs": { + "RdsReservedInstances$configuration": "

The RDS reserved instances configuration used for recommendations.

" + } + }, + "Recommendation": { + "base": "

Describes a recommendation.

", + "refs": { + "RecommendationList$member": null + } + }, + "RecommendationIdList": { + "base": null, + "refs": { + "Filter$recommendationIds": "

The IDs for the recommendations.

" + } + }, + "RecommendationList": { + "base": null, + "refs": { + "ListRecommendationsResponse$items": "

List of all savings recommendations.

" + } + }, + "RecommendationSummariesList": { + "base": null, + "refs": { + "ListRecommendationSummariesResponse$items": "

List of all savings recommendations.

" + } + }, + "RecommendationSummary": { + "base": "

The summary of rightsizing recommendations, including de-duped savings from all types of recommendations.

", + "refs": { + "RecommendationSummariesList$member": null + } + }, + "RedshiftReservedInstances": { + "base": "

The Redshift reserved instances recommendation details.

", + "refs": { + "ResourceDetails$redshiftReservedInstances": "

The Redshift reserved instances recommendation details.

" + } + }, + "RedshiftReservedInstancesConfiguration": { + "base": "

The Redshift reserved instances configuration used for recommendations.

", + "refs": { + "RedshiftReservedInstances$configuration": "

The Redshift reserved instances configuration used for recommendations.

" + } + }, + "RegionList": { + "base": null, + "refs": { + "Filter$regions": "

The Amazon Web Services Region of the resource.

" + } + }, + "ReservedInstancesCostCalculation": { + "base": "

Cost impact of the purchase recommendation.

", + "refs": { + "Ec2ReservedInstances$costCalculation": "

Cost impact of the purchase recommendation.

", + "ElastiCacheReservedInstances$costCalculation": "

Cost impact of the purchase recommendation.

", + "OpenSearchReservedInstances$costCalculation": "

Cost impact of the purchase recommendation.

", + "RdsReservedInstances$costCalculation": "

Cost impact of the purchase recommendation.

", + "RedshiftReservedInstances$costCalculation": "

Cost impact of the purchase recommendation.

" + } + }, + "ReservedInstancesPricing": { + "base": "

Pricing details for your recommended reserved instance.

", + "refs": { + "ReservedInstancesCostCalculation$pricing": "

Pricing details of the purchase recommendation.

" + } + }, + "ResourceArnList": { + "base": null, + "refs": { + "Filter$resourceArns": "

The Amazon Resource Name (ARN) of the recommendation.

" + } + }, + "ResourceCostCalculation": { + "base": "

Cost impact of the resource recommendation.

", + "refs": { + "EbsVolume$costCalculation": "

Cost impact of the recommendation.

", + "Ec2AutoScalingGroup$costCalculation": "

Cost impact of the recommendation.

", + "Ec2Instance$costCalculation": "

Cost impact of the recommendation.

", + "EcsService$costCalculation": "

Cost impact of the recommendation.

", + "LambdaFunction$costCalculation": "

Cost impact of the recommendation.

" + } + }, + "ResourceDetails": { + "base": "

Contains detailed information about the specified resource.

", + "refs": { + "GetRecommendationResponse$currentResourceDetails": "

The details for the resource.

", + "GetRecommendationResponse$recommendedResourceDetails": "

The details about the recommended resource.

" + } + }, + "ResourceIdList": { + "base": null, + "refs": { + "Filter$resourceIds": "

The resource ID of the recommendation.

" + } + }, + "ResourceNotFoundException": { + "base": "

The specified Amazon Resource Name (ARN) in the request doesn't exist.

", + "refs": { + } + }, + "ResourcePricing": { + "base": "

Contains pricing information about the specified resource.

", + "refs": { + "ResourceCostCalculation$pricing": "

Pricing details of the resource recommendation.

" + } + }, + "ResourceType": { + "base": null, + "refs": { + "GetRecommendationResponse$currentResourceType": "

The type of resource.

", + "GetRecommendationResponse$recommendedResourceType": "

The resource type of the recommendation.

", + "ResourceTypeList$member": null + } + }, + "ResourceTypeList": { + "base": null, + "refs": { + "Filter$resourceTypes": "

The resource type of the recommendation.

" + } + }, + "SageMakerSavingsPlans": { + "base": "

The SageMaker Savings Plans recommendation details.

", + "refs": { + "ResourceDetails$sageMakerSavingsPlans": "

The SageMaker Savings Plans recommendation details.

" + } + }, + "SageMakerSavingsPlansConfiguration": { + "base": "

The SageMaker Savings Plans configuration used for recommendations.

", + "refs": { + "SageMakerSavingsPlans$configuration": "

The SageMaker Savings Plans configuration used for recommendations.

" + } + }, + "SavingsEstimationMode": { + "base": null, + "refs": { + "GetPreferencesResponse$savingsEstimationMode": "

Retrieves the status of the \"savings estimation mode\" preference.

", + "UpdatePreferencesRequest$savingsEstimationMode": "

Sets the \"savings estimation mode\" preference.

", + "UpdatePreferencesResponse$savingsEstimationMode": "

Shows the status of the \"savings estimation mode\" preference.

" + } + }, + "SavingsPlansCostCalculation": { + "base": "

Cost impact of the purchase recommendation.

", + "refs": { + "ComputeSavingsPlans$costCalculation": "

Cost impact of the Savings Plans purchase recommendation.

", + "Ec2InstanceSavingsPlans$costCalculation": "

Cost impact of the Savings Plans purchase recommendation.

", + "SageMakerSavingsPlans$costCalculation": "

Cost impact of the Savings Plans purchase recommendation.

" + } + }, + "SavingsPlansPricing": { + "base": "

Pricing information about a Savings Plan.

", + "refs": { + "SavingsPlansCostCalculation$pricing": "

Pricing details of the purchase recommendation.

" + } + }, + "Source": { + "base": null, + "refs": { + "GetRecommendationResponse$source": "

The source of the recommendation.

", + "Recommendation$source": "

The source of the recommendation.

" + } + }, + "StorageConfiguration": { + "base": "

The storage configuration used for recommendations.

", + "refs": { + "EbsVolumeConfiguration$storage": "

The disk storage of the Amazon Elastic Block Store volume.

" + } + }, + "String": { + "base": null, + "refs": { + "AccessDeniedException$message": null, + "ComputeConfiguration$architecture": "

The architecture of the resource.

", + "ComputeConfiguration$platform": "

The platform of the resource. The platform is the specific combination of operating system, license model, and software on an instance.

", + "ComputeSavingsPlansConfiguration$accountScope": "

The account scope that you want your recommendations for. Amazon Web Services calculates recommendations including the management account and member accounts if the value is set to PAYER. If the value is LINKED, recommendations are calculated for individual member accounts only.

", + "ComputeSavingsPlansConfiguration$hourlyCommitment": "

The hourly commitment for the Savings Plans type.

", + "ComputeSavingsPlansConfiguration$paymentOption": "

The payment option for the commitment.

", + "ComputeSavingsPlansConfiguration$term": "

The Savings Plans recommendation term in years.

", + "EbsVolumeConfiguration$attachmentState": "

The Amazon Elastic Block Store attachment state.

", + "Ec2InstanceSavingsPlansConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "Ec2InstanceSavingsPlansConfiguration$hourlyCommitment": "

The hourly commitment for the Savings Plans type.

", + "Ec2InstanceSavingsPlansConfiguration$instanceFamily": "

The instance family of the recommended Savings Plan.

", + "Ec2InstanceSavingsPlansConfiguration$paymentOption": "

The payment option for the commitment.

", + "Ec2InstanceSavingsPlansConfiguration$savingsPlansRegion": "

The Amazon Web Services Region of the commitment.

", + "Ec2InstanceSavingsPlansConfiguration$term": "

The Savings Plans recommendation term in years.

", + "Ec2ReservedInstancesConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "Ec2ReservedInstancesConfiguration$currentGeneration": "

Determines whether the recommendation is for a current generation instance.

", + "Ec2ReservedInstancesConfiguration$instanceFamily": "

The instance family of the recommended reservation.

", + "Ec2ReservedInstancesConfiguration$instanceType": "

The type of instance that Amazon Web Services recommends.

", + "Ec2ReservedInstancesConfiguration$monthlyRecurringCost": "

How much purchasing reserved instances costs you on a monthly basis.

", + "Ec2ReservedInstancesConfiguration$normalizedUnitsToPurchase": "

The number of normalized units that Amazon Web Services recommends that you purchase.

", + "Ec2ReservedInstancesConfiguration$numberOfInstancesToPurchase": "

The number of instances that Amazon Web Services recommends that you purchase.

", + "Ec2ReservedInstancesConfiguration$offeringClass": "

Indicates whether the recommendation is for standard or convertible reservations.

", + "Ec2ReservedInstancesConfiguration$paymentOption": "

The payment option for the commitment.

", + "Ec2ReservedInstancesConfiguration$platform": "

The platform of the recommended reservation. The platform is the specific combination of operating system, license model, and software on an instance.

", + "Ec2ReservedInstancesConfiguration$reservedInstancesRegion": "

The Amazon Web Services Region of the commitment.

", + "Ec2ReservedInstancesConfiguration$service": "

The service that you want your recommendations for.

", + "Ec2ReservedInstancesConfiguration$tenancy": "

Determines whether the recommended reservation is dedicated or shared.

", + "Ec2ReservedInstancesConfiguration$term": "

The reserved instances recommendation term in years.

", + "Ec2ReservedInstancesConfiguration$upfrontCost": "

How much purchasing this instance costs you upfront.

", + "ElastiCacheReservedInstancesConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "ElastiCacheReservedInstancesConfiguration$currentGeneration": "

Determines whether the recommendation is for a current generation instance.

", + "ElastiCacheReservedInstancesConfiguration$instanceFamily": "

The instance family of the recommended reservation.

", + "ElastiCacheReservedInstancesConfiguration$instanceType": "

The type of instance that Amazon Web Services recommends.

", + "ElastiCacheReservedInstancesConfiguration$monthlyRecurringCost": "

How much purchasing reserved instances costs you on a monthly basis.

", + "ElastiCacheReservedInstancesConfiguration$normalizedUnitsToPurchase": "

The number of normalized units that Amazon Web Services recommends that you purchase.

", + "ElastiCacheReservedInstancesConfiguration$numberOfInstancesToPurchase": "

The number of instances that Amazon Web Services recommends that you purchase.

", + "ElastiCacheReservedInstancesConfiguration$paymentOption": "

The payment option for the commitment.

", + "ElastiCacheReservedInstancesConfiguration$reservedInstancesRegion": "

The Amazon Web Services Region of the commitment.

", + "ElastiCacheReservedInstancesConfiguration$service": "

The service that you want your recommendations for.

", + "ElastiCacheReservedInstancesConfiguration$term": "

The reserved instances recommendation term in years.

", + "ElastiCacheReservedInstancesConfiguration$upfrontCost": "

How much purchasing this instance costs you upfront.

", + "GetRecommendationRequest$recommendationId": "

The ID for the recommendation.

", + "GetRecommendationResponse$accountId": "

The account that the recommendation is for.

", + "GetRecommendationResponse$currencyCode": "

The currency code used for the recommendation.

", + "GetRecommendationResponse$recommendationId": "

The ID for the recommendation.

", + "GetRecommendationResponse$region": "

The Amazon Web Services Region of the resource.

", + "GetRecommendationResponse$resourceArn": "

The Amazon Resource Name (ARN) of the resource.

", + "GetRecommendationResponse$resourceId": "

The unique identifier for the resource. This is the same as the Amazon Resource Name (ARN), if available.

", + "InstanceConfiguration$type": "

Details about the type.

", + "InternalServerException$message": null, + "ListEnrollmentStatusesRequest$nextToken": "

The token to retrieve the next set of results.

", + "ListEnrollmentStatusesResponse$nextToken": "

The token to retrieve the next set of results.

", + "ListRecommendationSummariesRequest$groupBy": "

The grouping of recommendations by a dimension.

", + "ListRecommendationSummariesRequest$nextToken": "

The token to retrieve the next set of results.

", + "ListRecommendationSummariesResponse$currencyCode": "

The currency code used for the recommendation.

", + "ListRecommendationSummariesResponse$groupBy": "

The dimension used to group the recommendations by.

", + "ListRecommendationSummariesResponse$nextToken": "

The token to retrieve the next set of results.

", + "ListRecommendationsRequest$nextToken": "

The token to retrieve the next set of results.

", + "ListRecommendationsResponse$nextToken": "

The token to retrieve the next set of results.

", + "OpenSearchReservedInstancesConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "OpenSearchReservedInstancesConfiguration$currentGeneration": "

Determines whether the recommendation is for a current generation instance.

", + "OpenSearchReservedInstancesConfiguration$instanceType": "

The type of instance that Amazon Web Services recommends.

", + "OpenSearchReservedInstancesConfiguration$monthlyRecurringCost": "

How much purchasing reserved instances costs you on a monthly basis.

", + "OpenSearchReservedInstancesConfiguration$normalizedUnitsToPurchase": "

The number of normalized units that Amazon Web Services recommends that you purchase.

", + "OpenSearchReservedInstancesConfiguration$numberOfInstancesToPurchase": "

The number of instances that Amazon Web Services recommends that you purchase.

", + "OpenSearchReservedInstancesConfiguration$paymentOption": "

The payment option for the commitment.

", + "OpenSearchReservedInstancesConfiguration$reservedInstancesRegion": "

The Amazon Web Services Region of the commitment.

", + "OpenSearchReservedInstancesConfiguration$service": "

The service that you want your recommendations for.

", + "OpenSearchReservedInstancesConfiguration$term": "

The reserved instances recommendation term in years.

", + "OpenSearchReservedInstancesConfiguration$upfrontCost": "

How much purchasing this instance costs you upfront.

", + "OrderBy$dimension": "

Sorts by dimension values.

", + "RdsReservedInstancesConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "RdsReservedInstancesConfiguration$currentGeneration": "

Determines whether the recommendation is for a current generation instance.

", + "RdsReservedInstancesConfiguration$databaseEdition": "

The database edition that the recommended reservation supports.

", + "RdsReservedInstancesConfiguration$databaseEngine": "

The database engine that the recommended reservation supports.

", + "RdsReservedInstancesConfiguration$deploymentOption": "

Determines whether the recommendation is for a reservation in a single Availability Zone or a reservation with a backup in a second Availability Zone.

", + "RdsReservedInstancesConfiguration$instanceFamily": "

The instance family of the recommended reservation.

", + "RdsReservedInstancesConfiguration$instanceType": "

The type of instance that Amazon Web Services recommends.

", + "RdsReservedInstancesConfiguration$licenseModel": "

The license model that the recommended reservation supports.

", + "RdsReservedInstancesConfiguration$monthlyRecurringCost": "

How much purchasing this instance costs you on a monthly basis.

", + "RdsReservedInstancesConfiguration$normalizedUnitsToPurchase": "

The number of normalized units that Amazon Web Services recommends that you purchase.

", + "RdsReservedInstancesConfiguration$numberOfInstancesToPurchase": "

The number of instances that Amazon Web Services recommends that you purchase.

", + "RdsReservedInstancesConfiguration$paymentOption": "

The payment option for the commitment.

", + "RdsReservedInstancesConfiguration$reservedInstancesRegion": "

The Amazon Web Services Region of the commitment.

", + "RdsReservedInstancesConfiguration$service": "

The service that you want your recommendations for.

", + "RdsReservedInstancesConfiguration$term": "

The reserved instances recommendation term in years.

", + "RdsReservedInstancesConfiguration$upfrontCost": "

How much purchasing this instance costs you upfront.

", + "Recommendation$accountId": "

The account that the recommendation is for.

", + "Recommendation$actionType": "

The type of tasks that can be carried out by this action.

", + "Recommendation$currencyCode": "

The currency code used for the recommendation.

", + "Recommendation$currentResourceSummary": "

Describes the current resource.

", + "Recommendation$currentResourceType": "

The current resource type.

", + "Recommendation$implementationEffort": "

The effort required to implement the recommendation.

", + "Recommendation$recommendationId": "

The ID for the recommendation.

", + "Recommendation$recommendedResourceSummary": "

Describes the recommended resource.

", + "Recommendation$recommendedResourceType": "

The recommended resource type.

", + "Recommendation$region": "

The Amazon Web Services Region of the resource.

", + "Recommendation$resourceArn": "

The Amazon Resource Name (ARN) for the recommendation.

", + "Recommendation$resourceId": "

The resource ID for the recommendation.

", + "RecommendationIdList$member": null, + "RecommendationSummary$group": "

The grouping of recommendations.

", + "RedshiftReservedInstancesConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "RedshiftReservedInstancesConfiguration$currentGeneration": "

Determines whether the recommendation is for a current generation instance.

", + "RedshiftReservedInstancesConfiguration$instanceFamily": "

The instance family of the recommended reservation.

", + "RedshiftReservedInstancesConfiguration$instanceType": "

The type of instance that Amazon Web Services recommends.

", + "RedshiftReservedInstancesConfiguration$monthlyRecurringCost": "

How much purchasing reserved instances costs you on a monthly basis.

", + "RedshiftReservedInstancesConfiguration$normalizedUnitsToPurchase": "

The number of normalized units that Amazon Web Services recommends that you purchase.

", + "RedshiftReservedInstancesConfiguration$numberOfInstancesToPurchase": "

The number of instances that Amazon Web Services recommends that you purchase.

", + "RedshiftReservedInstancesConfiguration$paymentOption": "

The payment option for the commitment.

", + "RedshiftReservedInstancesConfiguration$reservedInstancesRegion": "

The Amazon Web Services Region of the commitment.

", + "RedshiftReservedInstancesConfiguration$service": "

The service that you want your recommendations for.

", + "RedshiftReservedInstancesConfiguration$term": "

The reserved instances recommendation term in years.

", + "RedshiftReservedInstancesConfiguration$upfrontCost": "

How much purchasing this instance costs you upfront.

", + "RegionList$member": null, + "ResourceArnList$member": null, + "ResourceIdList$member": null, + "ResourceNotFoundException$message": null, + "ResourceNotFoundException$resourceId": "

The identifier of the resource that was not found.

", + "SageMakerSavingsPlansConfiguration$accountScope": "

The account scope that you want your recommendations for.

", + "SageMakerSavingsPlansConfiguration$hourlyCommitment": "

The hourly commitment for the Savings Plans type.

", + "SageMakerSavingsPlansConfiguration$paymentOption": "

The payment option for the commitment.

", + "SageMakerSavingsPlansConfiguration$term": "

The Savings Plans recommendation term in years.

", + "StorageConfiguration$type": "

The storage type.

", + "Tag$key": "

The key that's associated with the tag.

", + "Tag$value": "

The value that's associated with the tag.

", + "ThrottlingException$message": null, + "UpdateEnrollmentStatusResponse$status": "

The enrollment status of the account.

", + "Usage$operation": "

The operation value.

", + "Usage$productCode": "

The product code.

", + "Usage$unit": "

The usage unit.

", + "Usage$usageType": "

The usage type.

", + "ValidationException$message": null, + "ValidationExceptionDetail$fieldName": "

The field name where the invalid entry was detected.

", + "ValidationExceptionDetail$message": "

A message with the reason for the validation exception error.

" + } + }, + "Tag": { + "base": "

The tag structure that contains a tag key and value.

", + "refs": { + "TagList$member": null + } + }, + "TagList": { + "base": null, + "refs": { + "Filter$tags": "

A list of tags assigned to the recommendation.

", + "GetRecommendationResponse$tags": "

A list of tags associated with the resource for which the recommendation exists.

", + "Recommendation$tags": "

A list of tags assigned to the recommendation.

" + } + }, + "ThrottlingException": { + "base": "

The request was denied due to request throttling.

", + "refs": { + } + }, + "Timestamp": { + "base": null, + "refs": { + "AccountEnrollmentStatus$createdTimestamp": "

The time when the account enrollment status was created.

", + "AccountEnrollmentStatus$lastUpdatedTimestamp": "

The time when the account enrollment status was last updated.

" + } + }, + "UpdateEnrollmentStatusRequest": { + "base": null, + "refs": { + } + }, + "UpdateEnrollmentStatusResponse": { + "base": null, + "refs": { + } + }, + "UpdatePreferencesRequest": { + "base": null, + "refs": { + } + }, + "UpdatePreferencesResponse": { + "base": null, + "refs": { + } + }, + "Usage": { + "base": "

Details about the usage.

", + "refs": { + "UsageList$member": null + } + }, + "UsageList": { + "base": null, + "refs": { + "ResourceCostCalculation$usages": "

Usage details of the resource recommendation.

" + } + }, + "ValidationException": { + "base": "

The input fails to satisfy the constraints specified by an Amazon Web Services service.

", + "refs": { + } + }, + "ValidationExceptionDetail": { + "base": "

The input failed to meet the constraints specified by the Amazon Web Services service in a specified field.

", + "refs": { + "ValidationExceptionDetails$member": null + } + }, + "ValidationExceptionDetails": { + "base": null, + "refs": { + "ValidationException$fields": "

The list of fields that are invalid.

" + } + }, + "ValidationExceptionReason": { + "base": null, + "refs": { + "ValidationException$reason": "

The reason for the validation exception.

" + } + } + } +} diff --git a/apis/cost-optimization-hub/2022-07-26/endpoint-rule-set-1.json b/apis/cost-optimization-hub/2022-07-26/endpoint-rule-set-1.json new file mode 100644 index 00000000000..009d68485ce --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/endpoint-rule-set-1.json @@ -0,0 +1,350 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseDualStack": { + "builtIn": "AWS::UseDualStack", + "required": true, + "default": false, + "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", + "type": "Boolean" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://cost-optimization-hub-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://cost-optimization-hub-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://cost-optimization-hub.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://cost-optimization-hub.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ], + "type": "tree" + } + ] +} \ No newline at end of file diff --git a/apis/cost-optimization-hub/2022-07-26/endpoint-tests-1.json b/apis/cost-optimization-hub/2022-07-26/endpoint-tests-1.json new file mode 100644 index 00000000000..ba946348e14 --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/endpoint-tests-1.json @@ -0,0 +1,314 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cost-optimization-hub.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips disabled and dualstack enabled", + "expect": { + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/cost-optimization-hub/2022-07-26/examples-1.json b/apis/cost-optimization-hub/2022-07-26/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/cost-optimization-hub/2022-07-26/paginators-1.json b/apis/cost-optimization-hub/2022-07-26/paginators-1.json new file mode 100644 index 00000000000..39460e689e5 --- /dev/null +++ b/apis/cost-optimization-hub/2022-07-26/paginators-1.json @@ -0,0 +1,22 @@ +{ + "pagination": { + "ListEnrollmentStatuses": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "items" + }, + "ListRecommendationSummaries": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "items" + }, + "ListRecommendations": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "items" + } + } +} diff --git a/apis/detective/2018-10-26/api-2.json b/apis/detective/2018-10-26/api-2.json index 2149bf15135..3a81f385b29 100644 --- a/apis/detective/2018-10-26/api-2.json +++ b/apis/detective/2018-10-26/api-2.json @@ -175,6 +175,22 @@ {"shape":"TooManyRequestsException"} ] }, + "GetInvestigation":{ + "name":"GetInvestigation", + "http":{ + "method":"POST", + "requestUri":"/investigations/getInvestigation" + }, + "input":{"shape":"GetInvestigationRequest"}, + "output":{"shape":"GetInvestigationResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"TooManyRequestsException"} + ] + }, "GetMembers":{ "name":"GetMembers", "http":{ @@ -219,6 +235,38 @@ {"shape":"ValidationException"} ] }, + "ListIndicators":{ + "name":"ListIndicators", + "http":{ + "method":"POST", + "requestUri":"/investigations/listIndicators" + }, + "input":{"shape":"ListIndicatorsRequest"}, + "output":{"shape":"ListIndicatorsResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"TooManyRequestsException"} + ] + }, + "ListInvestigations":{ + "name":"ListInvestigations", + "http":{ + "method":"POST", + "requestUri":"/investigations/listInvestigations" + }, + "input":{"shape":"ListInvestigationsRequest"}, + "output":{"shape":"ListInvestigationsResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"TooManyRequestsException"} + ] + }, "ListInvitations":{ "name":"ListInvitations", "http":{ @@ -294,6 +342,22 @@ {"shape":"ValidationException"} ] }, + "StartInvestigation":{ + "name":"StartInvestigation", + "http":{ + "method":"POST", + "requestUri":"/investigations/startInvestigation" + }, + "input":{"shape":"StartInvestigationRequest"}, + "output":{"shape":"StartInvestigationResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"TooManyRequestsException"}, + {"shape":"ResourceNotFoundException"} + ] + }, "StartMonitoringMember":{ "name":"StartMonitoringMember", "http":{ @@ -357,6 +421,21 @@ {"shape":"ValidationException"} ] }, + "UpdateInvestigationState":{ + "name":"UpdateInvestigationState", + "http":{ + "method":"POST", + "requestUri":"/investigations/updateInvestigationState" + }, + "input":{"shape":"UpdateInvestigationStateRequest"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"TooManyRequestsException"} + ] + }, "UpdateOrganizationConfiguration":{ "name":"UpdateOrganizationConfiguration", "http":{ @@ -373,6 +452,9 @@ } }, "shapes":{ + "APIFailureCount":{"type":"long"}, + "APIName":{"type":"string"}, + "APISuccessCount":{"type":"long"}, "AcceptInvitationRequest":{ "type":"structure", "required":["GraphArn"], @@ -439,6 +521,12 @@ "type":"list", "member":{"shape":"Administrator"} }, + "AiPaginationToken":{ + "type":"string", + "max":2048, + "min":1 + }, + "Aso":{"type":"string"}, "BatchGetGraphMemberDatasourcesRequest":{ "type":"structure", "required":[ @@ -564,6 +652,17 @@ "VolumeUsageUpdateTime":{"shape":"Timestamp"} } }, + "DateFilter":{ + "type":"structure", + "required":[ + "StartInclusive", + "EndInclusive" + ], + "members":{ + "StartInclusive":{"shape":"Timestamp"}, + "EndInclusive":{"shape":"Timestamp"} + } + }, "DeleteGraphRequest":{ "type":"structure", "required":["GraphArn"], @@ -629,6 +728,17 @@ "AccountId":{"shape":"AccountId"} } }, + "EntityArn":{ + "type":"string", + "pattern":"^arn:.*" + }, + "EntityType":{ + "type":"string", + "enum":[ + "IAM_ROLE", + "IAM_USER" + ] + }, "ErrorCode":{ "type":"string", "enum":[ @@ -639,6 +749,57 @@ }, "ErrorCodeReason":{"type":"string"}, "ErrorMessage":{"type":"string"}, + "Field":{ + "type":"string", + "enum":[ + "SEVERITY", + "STATUS", + "CREATED_TIME" + ] + }, + "FilterCriteria":{ + "type":"structure", + "members":{ + "Severity":{"shape":"StringFilter"}, + "Status":{"shape":"StringFilter"}, + "State":{"shape":"StringFilter"}, + "EntityArn":{"shape":"StringFilter"}, + "CreatedTime":{"shape":"DateFilter"} + } + }, + "FlaggedIpAddressDetail":{ + "type":"structure", + "members":{ + "IpAddress":{"shape":"IpAddress"}, + "Reason":{"shape":"Reason"} + } + }, + "GetInvestigationRequest":{ + "type":"structure", + "required":[ + "GraphArn", + "InvestigationId" + ], + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "InvestigationId":{"shape":"InvestigationId"} + } + }, + "GetInvestigationResponse":{ + "type":"structure", + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "InvestigationId":{"shape":"InvestigationId"}, + "EntityArn":{"shape":"EntityArn"}, + "EntityType":{"shape":"EntityType"}, + "CreatedTime":{"shape":"Timestamp"}, + "ScopeStartTime":{"shape":"Timestamp"}, + "ScopeEndTime":{"shape":"Timestamp"}, + "Status":{"shape":"Status"}, + "Severity":{"shape":"Severity"}, + "State":{"shape":"State"} + } + }, "GetMembersRequest":{ "type":"structure", "required":[ @@ -678,6 +839,58 @@ "type":"list", "member":{"shape":"Graph"} }, + "HourlyTimeDelta":{ + "type":"integer", + "box":true + }, + "Id":{"type":"string"}, + "ImpossibleTravelDetail":{ + "type":"structure", + "members":{ + "StartingIpAddress":{"shape":"IpAddress"}, + "EndingIpAddress":{"shape":"IpAddress"}, + "StartingLocation":{"shape":"Location"}, + "EndingLocation":{"shape":"Location"}, + "HourlyTimeDelta":{"shape":"HourlyTimeDelta"} + } + }, + "Indicator":{ + "type":"structure", + "members":{ + "IndicatorType":{"shape":"IndicatorType"}, + "IndicatorDetail":{"shape":"IndicatorDetail"} + } + }, + "IndicatorDetail":{ + "type":"structure", + "members":{ + "TTPsObservedDetail":{"shape":"TTPsObservedDetail"}, + "ImpossibleTravelDetail":{"shape":"ImpossibleTravelDetail"}, + "FlaggedIpAddressDetail":{"shape":"FlaggedIpAddressDetail"}, + "NewGeolocationDetail":{"shape":"NewGeolocationDetail"}, + "NewAsoDetail":{"shape":"NewAsoDetail"}, + "NewUserAgentDetail":{"shape":"NewUserAgentDetail"}, + "RelatedFindingDetail":{"shape":"RelatedFindingDetail"}, + "RelatedFindingGroupDetail":{"shape":"RelatedFindingGroupDetail"} + } + }, + "IndicatorType":{ + "type":"string", + "enum":[ + "TTP_OBSERVED", + "IMPOSSIBLE_TRAVEL", + "FLAGGED_IP_ADDRESS", + "NEW_GEOLOCATION", + "NEW_ASO", + "NEW_USER_AGENT", + "RELATED_FINDING", + "RELATED_FINDING_GROUP" + ] + }, + "Indicators":{ + "type":"list", + "member":{"shape":"Indicator"} + }, "InternalServerException":{ "type":"structure", "members":{ @@ -686,6 +899,28 @@ "error":{"httpStatusCode":500}, "exception":true }, + "InvestigationDetail":{ + "type":"structure", + "members":{ + "InvestigationId":{"shape":"InvestigationId"}, + "Severity":{"shape":"Severity"}, + "Status":{"shape":"Status"}, + "State":{"shape":"State"}, + "CreatedTime":{"shape":"Timestamp"}, + "EntityArn":{"shape":"EntityArn"}, + "EntityType":{"shape":"EntityType"} + } + }, + "InvestigationDetails":{ + "type":"list", + "member":{"shape":"InvestigationDetail"} + }, + "InvestigationId":{ + "type":"string", + "max":21, + "min":21, + "pattern":"^[0-9]+$" + }, "InvitationType":{ "type":"string", "enum":[ @@ -693,6 +928,8 @@ "ORGANIZATION" ] }, + "IpAddress":{"type":"string"}, + "IsNewForEntireAccount":{"type":"boolean"}, "LastIngestStateChangeDates":{ "type":"map", "key":{"shape":"DatasourcePackageIngestState"}, @@ -728,6 +965,47 @@ "NextToken":{"shape":"PaginationToken"} } }, + "ListIndicatorsRequest":{ + "type":"structure", + "required":[ + "GraphArn", + "InvestigationId" + ], + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "InvestigationId":{"shape":"InvestigationId"}, + "IndicatorType":{"shape":"IndicatorType"}, + "NextToken":{"shape":"AiPaginationToken"}, + "MaxResults":{"shape":"MaxResults"} + } + }, + "ListIndicatorsResponse":{ + "type":"structure", + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "InvestigationId":{"shape":"InvestigationId"}, + "NextToken":{"shape":"AiPaginationToken"}, + "Indicators":{"shape":"Indicators"} + } + }, + "ListInvestigationsRequest":{ + "type":"structure", + "required":["GraphArn"], + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "NextToken":{"shape":"AiPaginationToken"}, + "MaxResults":{"shape":"MaxResults"}, + "FilterCriteria":{"shape":"FilterCriteria"}, + "SortCriteria":{"shape":"SortCriteria"} + } + }, + "ListInvestigationsResponse":{ + "type":"structure", + "members":{ + "InvestigationDetails":{"shape":"InvestigationDetails"}, + "NextToken":{"shape":"AiPaginationToken"} + } + }, "ListInvitationsRequest":{ "type":"structure", "members":{ @@ -789,6 +1067,13 @@ "Tags":{"shape":"TagMap"} } }, + "Location":{"type":"string"}, + "MaxResults":{ + "type":"integer", + "box":true, + "max":100, + "min":1 + }, "MemberDetail":{ "type":"structure", "members":{ @@ -869,12 +1154,39 @@ "type":"list", "member":{"shape":"MembershipDatasources"} }, + "NewAsoDetail":{ + "type":"structure", + "members":{ + "Aso":{"shape":"Aso"}, + "IsNewForEntireAccount":{"shape":"IsNewForEntireAccount"} + } + }, + "NewGeolocationDetail":{ + "type":"structure", + "members":{ + "Location":{"shape":"Location"}, + "IpAddress":{"shape":"IpAddress"}, + "IsNewForEntireAccount":{"shape":"IsNewForEntireAccount"} + } + }, + "NewUserAgentDetail":{ + "type":"structure", + "members":{ + "UserAgent":{"shape":"UserAgent"}, + "IsNewForEntireAccount":{"shape":"IsNewForEntireAccount"} + } + }, "PaginationToken":{ "type":"string", "max":1024, "min":1 }, "Percentage":{"type":"double"}, + "Procedure":{"type":"string"}, + "Reason":{ + "type":"string", + "enum":["AWS_THREAT_INTELLIGENCE"] + }, "RejectInvitationRequest":{ "type":"structure", "required":["GraphArn"], @@ -882,6 +1194,20 @@ "GraphArn":{"shape":"GraphArn"} } }, + "RelatedFindingDetail":{ + "type":"structure", + "members":{ + "Arn":{"shape":"EntityArn"}, + "Type":{"shape":"Type"}, + "IpAddress":{"shape":"IpAddress"} + } + }, + "RelatedFindingGroupDetail":{ + "type":"structure", + "members":{ + "Id":{"shape":"Id"} + } + }, "Resource":{ "type":"string", "max":64, @@ -910,6 +1236,51 @@ "error":{"httpStatusCode":402}, "exception":true }, + "Severity":{ + "type":"string", + "enum":[ + "INFORMATIONAL", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "SortCriteria":{ + "type":"structure", + "members":{ + "Field":{"shape":"Field"}, + "SortOrder":{"shape":"SortOrder"} + } + }, + "SortOrder":{ + "type":"string", + "enum":[ + "ASC", + "DESC" + ] + }, + "StartInvestigationRequest":{ + "type":"structure", + "required":[ + "GraphArn", + "EntityArn", + "ScopeStartTime", + "ScopeEndTime" + ], + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "EntityArn":{"shape":"EntityArn"}, + "ScopeStartTime":{"shape":"Timestamp"}, + "ScopeEndTime":{"shape":"Timestamp"} + } + }, + "StartInvestigationResponse":{ + "type":"structure", + "members":{ + "InvestigationId":{"shape":"InvestigationId"} + } + }, "StartMonitoringMemberRequest":{ "type":"structure", "required":[ @@ -921,6 +1292,41 @@ "AccountId":{"shape":"AccountId"} } }, + "State":{ + "type":"string", + "enum":[ + "ACTIVE", + "ARCHIVED" + ] + }, + "Status":{ + "type":"string", + "enum":[ + "RUNNING", + "FAILED", + "SUCCESSFUL" + ] + }, + "StringFilter":{ + "type":"structure", + "required":["Value"], + "members":{ + "Value":{"shape":"Value"} + } + }, + "TTPsObservedDetail":{ + "type":"structure", + "members":{ + "Tactic":{"shape":"Tactic"}, + "Technique":{"shape":"Technique"}, + "Procedure":{"shape":"Procedure"}, + "IpAddress":{"shape":"IpAddress"}, + "APIName":{"shape":"APIName"}, + "APISuccessCount":{"shape":"APISuccessCount"}, + "APIFailureCount":{"shape":"APIFailureCount"} + } + }, + "Tactic":{"type":"string"}, "TagKey":{ "type":"string", "max":128, @@ -964,6 +1370,7 @@ "type":"string", "max":256 }, + "Technique":{"type":"string"}, "Timestamp":{ "type":"timestamp", "timestampFormat":"iso8601" @@ -982,6 +1389,7 @@ "error":{"httpStatusCode":429}, "exception":true }, + "Type":{"type":"string"}, "UnprocessedAccount":{ "type":"structure", "members":{ @@ -1040,6 +1448,19 @@ "DatasourcePackages":{"shape":"DatasourcePackageList"} } }, + "UpdateInvestigationStateRequest":{ + "type":"structure", + "required":[ + "GraphArn", + "InvestigationId", + "State" + ], + "members":{ + "GraphArn":{"shape":"GraphArn"}, + "InvestigationId":{"shape":"InvestigationId"}, + "State":{"shape":"State"} + } + }, "UpdateOrganizationConfigurationRequest":{ "type":"structure", "required":["GraphArn"], @@ -1048,6 +1469,7 @@ "AutoEnable":{"shape":"Boolean"} } }, + "UserAgent":{"type":"string"}, "ValidationException":{ "type":"structure", "members":{ @@ -1058,6 +1480,11 @@ "error":{"httpStatusCode":400}, "exception":true }, + "Value":{ + "type":"string", + "max":500, + "min":1 + }, "VolumeUsageByDatasourcePackage":{ "type":"map", "key":{"shape":"DatasourcePackage"}, diff --git a/apis/detective/2018-10-26/docs-2.json b/apis/detective/2018-10-26/docs-2.json index 956273df360..93a31bfde86 100644 --- a/apis/detective/2018-10-26/docs-2.json +++ b/apis/detective/2018-10-26/docs-2.json @@ -13,21 +13,44 @@ "DisableOrganizationAdminAccount": "

Removes the Detective administrator account in the current Region. Deletes the organization behavior graph.

Can only be called by the organization management account.

Removing the Detective administrator account does not affect the delegated administrator account for Detective in Organizations.

To remove the delegated administrator account in Organizations, use the Organizations API. Removing the delegated administrator account also removes the Detective administrator account in all Regions, except for Regions where the Detective administrator account is the organization management account.

", "DisassociateMembership": "

Removes the member account from the specified behavior graph. This operation can only be called by an invited member account that has the ENABLED status.

DisassociateMembership cannot be called by an organization account in the organization behavior graph. For the organization behavior graph, the Detective administrator account determines which organization accounts to enable or disable as member accounts.

", "EnableOrganizationAdminAccount": "

Designates the Detective administrator account for the organization in the current Region.

If the account does not have Detective enabled, then enables Detective for that account and creates a new behavior graph.

Can only be called by the organization management account.

If the organization has a delegated administrator account in Organizations, then the Detective administrator account must be either the delegated administrator account or the organization management account.

If the organization does not have a delegated administrator account in Organizations, then you can choose any account in the organization. If you choose an account other than the organization management account, Detective calls Organizations to make that account the delegated administrator account for Detective. The organization management account cannot be the delegated administrator account.

", + "GetInvestigation": "

Returns the investigation results of an investigation for a behavior graph.

", "GetMembers": "

Returns the membership details for specified member accounts for a behavior graph.

", "ListDatasourcePackages": "

Lists data source packages in the behavior graph.

", "ListGraphs": "

Returns the list of behavior graphs that the calling account is an administrator account of. This operation can only be called by an administrator account.

Because an account can currently only be the administrator of one behavior graph within a Region, the results always contain a single behavior graph.

", + "ListIndicators": "

Get the indicators from an investigation

", + "ListInvestigations": "

List all Investigations.

", "ListInvitations": "

Retrieves the list of open and accepted behavior graph invitations for the member account. This operation can only be called by an invited member account.

Open invitations are invitations that the member account has not responded to.

The results do not include behavior graphs for which the member account declined the invitation. The results also do not include behavior graphs that the member account resigned from or was removed from.

", "ListMembers": "

Retrieves the list of member accounts for a behavior graph.

For invited accounts, the results do not include member accounts that were removed from the behavior graph.

For the organization behavior graph, the results do not include organization accounts that the Detective administrator account has not enabled as member accounts.

", "ListOrganizationAdminAccounts": "

Returns information about the Detective administrator account for an organization. Can only be called by the organization management account.

", "ListTagsForResource": "

Returns the tag values that are assigned to a behavior graph.

", "RejectInvitation": "

Rejects an invitation to contribute the account data to a behavior graph. This operation must be called by an invited member account that has the INVITED status.

RejectInvitation cannot be called by an organization account in the organization behavior graph. In the organization behavior graph, organization accounts do not receive an invitation.

", + "StartInvestigation": "

initiate an investigation on an entity in a graph

", "StartMonitoringMember": "

Sends a request to enable data ingest for a member account that has a status of ACCEPTED_BUT_DISABLED.

For valid member accounts, the status is updated as follows.

", "TagResource": "

Applies tag values to a behavior graph.

", "UntagResource": "

Removes tags from a behavior graph.

", "UpdateDatasourcePackages": "

Starts a data source packages for the behavior graph.

", + "UpdateInvestigationState": "

Update the state of an investigation.

", "UpdateOrganizationConfiguration": "

Updates the configuration for the Organizations integration in the current Region. Can only be called by the Detective administrator account for the organization.

" }, "shapes": { + "APIFailureCount": { + "base": null, + "refs": { + "TTPsObservedDetail$APIFailureCount": "

The total number of failed API requests.

" + } + }, + "APIName": { + "base": null, + "refs": { + "TTPsObservedDetail$APIName": "

The name of the API where the TTP was observed.

" + } + }, + "APISuccessCount": { + "base": null, + "refs": { + "TTPsObservedDetail$APISuccessCount": "

The total number of successful API requests.

" + } + }, "AcceptInvitationRequest": { "base": null, "refs": { @@ -92,6 +115,21 @@ "ListOrganizationAdminAccountsResponse$Administrators": "

The list of Detective administrator accounts.

" } }, + "AiPaginationToken": { + "base": null, + "refs": { + "ListIndicatorsRequest$NextToken": "

List if there are more results available. The value of nextToken is a unique pagination token for each page. Repeat the call using the returned token to retrieve the next page. Keep all other arguments unchanged.

Each pagination token expires after 24 hours. Using an expired pagination token will return a Validation Exception error.

", + "ListIndicatorsResponse$NextToken": "

List if there are more results available. The value of nextToken is a unique pagination token for each page. Repeat the call using the returned token to retrieve the next page. Keep all other arguments unchanged.

Each pagination token expires after 24 hours. Using an expired pagination token will return a Validation Exception error.

", + "ListInvestigationsRequest$NextToken": "

List if there are more results available. The value of nextToken is a unique pagination token for each page. Repeat the call using the returned token to retrieve the next page. Keep all other arguments unchanged.

Each pagination token expires after 24 hours. Using an expired pagination token will return a Validation Exception error.

", + "ListInvestigationsResponse$NextToken": "

List if there are more results available. The value of nextToken is a unique pagination token for each page. Repeat the call using the returned token to retrieve the next page. Keep all other arguments unchanged.

Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

" + } + }, + "Aso": { + "base": null, + "refs": { + "NewAsoDetail$Aso": "

Details about the new Autonomous System Organization (ASO).

" + } + }, "BatchGetGraphMemberDatasourcesRequest": { "base": null, "refs": { @@ -206,6 +244,12 @@ "VolumeUsageByDatasourcePackage$value": null } }, + "DateFilter": { + "base": "

Contains details on the time range used to filter data.

", + "refs": { + "FilterCriteria$CreatedTime": "

Filter the investigation results based on when the investigation was created.

" + } + }, "DeleteGraphRequest": { "base": null, "refs": { @@ -254,6 +298,22 @@ "refs": { } }, + "EntityArn": { + "base": null, + "refs": { + "GetInvestigationResponse$EntityArn": "

The unique Amazon Resource Name (ARN) of the IAM user and IAM role.

", + "InvestigationDetail$EntityArn": "

The unique Amazon Resource Name (ARN) of the IAM user and IAM role.

", + "RelatedFindingDetail$Arn": "

The ARN of the related finding.

", + "StartInvestigationRequest$EntityArn": "

The unique Amazon Resource Name (ARN) of the IAM user and IAM role.

" + } + }, + "EntityType": { + "base": null, + "refs": { + "GetInvestigationResponse$EntityType": "

Type of entity. For example, Amazon Web Services accounts, such as IAM user and role.

", + "InvestigationDetail$EntityType": "

Type of entity. For example, Amazon Web Services accounts, such as IAM user and role.

" + } + }, "ErrorCode": { "base": null, "refs": { @@ -282,6 +342,34 @@ "ValidationException$Message": null } }, + "Field": { + "base": null, + "refs": { + "SortCriteria$Field": "

Represents the Field attribute to sort investigations.

" + } + }, + "FilterCriteria": { + "base": "

Details on the criteria used to define the filter for investigation results.

", + "refs": { + "ListInvestigationsRequest$FilterCriteria": "

Filter the investigation results based on a criteria.

" + } + }, + "FlaggedIpAddressDetail": { + "base": "

Contains information on suspicious IP addresses identified as indicators of compromise. This indicator is derived from Amazon Web Services threat intelligence.

", + "refs": { + "IndicatorDetail$FlaggedIpAddressDetail": "

Suspicious IP addresses that are flagged, which indicates critical or severe threats based on threat intelligence by Detective. This indicator is derived from AWS threat intelligence.

" + } + }, + "GetInvestigationRequest": { + "base": null, + "refs": { + } + }, + "GetInvestigationResponse": { + "base": null, + "refs": { + } + }, "GetMembersRequest": { "base": null, "refs": { @@ -310,20 +398,27 @@ "DeleteMembersRequest$GraphArn": "

The ARN of the behavior graph to remove members from.

", "DescribeOrganizationConfigurationRequest$GraphArn": "

The ARN of the organization behavior graph.

", "DisassociateMembershipRequest$GraphArn": "

The ARN of the behavior graph to remove the member account from.

The member account's member status in the behavior graph must be ENABLED.

", + "GetInvestigationRequest$GraphArn": "

The ARN of the behavior graph.

", + "GetInvestigationResponse$GraphArn": "

The ARN of the behavior graph.

", "GetMembersRequest$GraphArn": "

The ARN of the behavior graph for which to request the member details.

", "Graph$Arn": "

The ARN of the behavior graph.

", "GraphArnList$member": null, "ListDatasourcePackagesRequest$GraphArn": "

The ARN of the behavior graph.

", + "ListIndicatorsRequest$GraphArn": "

The ARN of the behavior graph.

", + "ListIndicatorsResponse$GraphArn": "

The ARN of the behavior graph.

", + "ListInvestigationsRequest$GraphArn": "

The ARN of the behavior graph.

", "ListMembersRequest$GraphArn": "

The ARN of the behavior graph for which to retrieve the list of member accounts.

", "ListTagsForResourceRequest$ResourceArn": "

The ARN of the behavior graph for which to retrieve the tag values.

", "MemberDetail$GraphArn": "

The ARN of the behavior graph.

", "MembershipDatasources$GraphArn": "

The ARN of the organization behavior graph.

", "RejectInvitationRequest$GraphArn": "

The ARN of the behavior graph to reject the invitation to.

The member account's current member status in the behavior graph must be INVITED.

", + "StartInvestigationRequest$GraphArn": "

The ARN of the behavior graph.

", "StartMonitoringMemberRequest$GraphArn": "

The ARN of the behavior graph.

", "TagResourceRequest$ResourceArn": "

The ARN of the behavior graph to assign the tags to.

", "UnprocessedGraph$GraphArn": "

The ARN of the organization behavior graph.

", "UntagResourceRequest$ResourceArn": "

The ARN of the behavior graph to remove the tags from.

", "UpdateDatasourcePackagesRequest$GraphArn": "

The ARN of the behavior graph.

", + "UpdateInvestigationStateRequest$GraphArn": "

The ARN of the behavior graph.

", "UpdateOrganizationConfigurationRequest$GraphArn": "

The ARN of the organization behavior graph.

" } }, @@ -339,17 +434,103 @@ "ListGraphsResponse$GraphList": "

A list of behavior graphs that the account is an administrator account for.

" } }, + "HourlyTimeDelta": { + "base": null, + "refs": { + "ImpossibleTravelDetail$HourlyTimeDelta": "

Returns the time difference between the first and last timestamp the resource was used.

" + } + }, + "Id": { + "base": null, + "refs": { + "RelatedFindingGroupDetail$Id": "

The unique identifier for the finding group.

" + } + }, + "ImpossibleTravelDetail": { + "base": "

Contains information on unusual and impossible travel in an account.

", + "refs": { + "IndicatorDetail$ImpossibleTravelDetail": "

Identifies unusual and impossible user activity for an account.

" + } + }, + "Indicator": { + "base": "

Investigations triages indicators of compromises such as a finding and surfaces only the most critical and suspicious issues, so you can focus on high-level investigations.

", + "refs": { + "Indicators$member": null + } + }, + "IndicatorDetail": { + "base": "

Details about the indicators of compromise which are used to determine if a resource is involved in a security incident.

", + "refs": { + "Indicator$IndicatorDetail": "

Details about the indicator of compromise.

" + } + }, + "IndicatorType": { + "base": null, + "refs": { + "Indicator$IndicatorType": "

The type of indicator.

", + "ListIndicatorsRequest$IndicatorType": "

See Detective investigations..

" + } + }, + "Indicators": { + "base": null, + "refs": { + "ListIndicatorsResponse$Indicators": "

Indicators of compromise listed based on severity.

" + } + }, "InternalServerException": { "base": "

The request was valid but failed because of a problem with the service.

", "refs": { } }, + "InvestigationDetail": { + "base": "

Details about the investigation related to a potential security event identified by Detective

", + "refs": { + "InvestigationDetails$member": null + } + }, + "InvestigationDetails": { + "base": null, + "refs": { + "ListInvestigationsResponse$InvestigationDetails": "

Investigations details lists the summary of uncommon behavior or malicious activity which indicates a compromise.

" + } + }, + "InvestigationId": { + "base": null, + "refs": { + "GetInvestigationRequest$InvestigationId": "

The investigation ID of the investigation report.

", + "GetInvestigationResponse$InvestigationId": "

The investigation ID of the investigation report.

", + "InvestigationDetail$InvestigationId": "

The investigation ID of the investigation report.

", + "ListIndicatorsRequest$InvestigationId": "

The investigation ID of the investigation report.

", + "ListIndicatorsResponse$InvestigationId": "

The investigation ID of the investigation report.

", + "StartInvestigationResponse$InvestigationId": "

The investigation ID of the investigation report.

", + "UpdateInvestigationStateRequest$InvestigationId": "

The investigation ID of the investigation report.

" + } + }, "InvitationType": { "base": null, "refs": { "MemberDetail$InvitationType": "

The type of behavior graph membership.

For an organization account in the organization behavior graph, the type is ORGANIZATION.

For an account that was invited to a behavior graph, the type is INVITATION.

" } }, + "IpAddress": { + "base": null, + "refs": { + "FlaggedIpAddressDetail$IpAddress": "

IP address of the suspicious entity.

", + "ImpossibleTravelDetail$StartingIpAddress": "

IP address where the resource was first used in the impossible travel

", + "ImpossibleTravelDetail$EndingIpAddress": "

IP address where the resource was last used in the impossible travel.

", + "NewGeolocationDetail$IpAddress": "

IP address using which the resource was accessed.

", + "RelatedFindingDetail$IpAddress": "

The IP address of the finding.

", + "TTPsObservedDetail$IpAddress": "

The IP address where the TTP was observed.

" + } + }, + "IsNewForEntireAccount": { + "base": null, + "refs": { + "NewAsoDetail$IsNewForEntireAccount": "

Checks if the ASO is for new for the entire account.

", + "NewGeolocationDetail$IsNewForEntireAccount": "

Checks if the gelocation is new for the entire account.

", + "NewUserAgentDetail$IsNewForEntireAccount": "

Checks if the user agent is new for the entire account.

" + } + }, "LastIngestStateChangeDates": { "base": null, "refs": { @@ -377,6 +558,26 @@ "refs": { } }, + "ListIndicatorsRequest": { + "base": null, + "refs": { + } + }, + "ListIndicatorsResponse": { + "base": null, + "refs": { + } + }, + "ListInvestigationsRequest": { + "base": null, + "refs": { + } + }, + "ListInvestigationsResponse": { + "base": null, + "refs": { + } + }, "ListInvitationsRequest": { "base": null, "refs": { @@ -417,6 +618,21 @@ "refs": { } }, + "Location": { + "base": null, + "refs": { + "ImpossibleTravelDetail$StartingLocation": "

Location where the resource was first used in the impossible travel

", + "ImpossibleTravelDetail$EndingLocation": "

Location where the resource was last used in the impossible travel.

", + "NewGeolocationDetail$Location": "

Location where the resource was accessed.

" + } + }, + "MaxResults": { + "base": null, + "refs": { + "ListIndicatorsRequest$MaxResults": "

List the maximum number of indicators in a page.

", + "ListInvestigationsRequest$MaxResults": "

List the maximum number of investigations in a page.

" + } + }, "MemberDetail": { "base": "

Details about a member account in a behavior graph.

", "refs": { @@ -467,6 +683,24 @@ "BatchGetMembershipDatasourcesResponse$MembershipDatasources": "

Details on the data source package history for an member of the behavior graph.

" } }, + "NewAsoDetail": { + "base": "

Details new Autonomous System Organizations (ASOs) used either at the resource or account level.

", + "refs": { + "IndicatorDetail$NewAsoDetail": "

Contains details about the new Autonomous System Organization (ASO).

" + } + }, + "NewGeolocationDetail": { + "base": "

Details new geolocations used either at the resource or account level. For example, lists an observed geolocation that is an infrequent or unused location based on previous user activity.

", + "refs": { + "IndicatorDetail$NewGeolocationDetail": "

Contains details about the new geographic location.

" + } + }, + "NewUserAgentDetail": { + "base": "

Details new user agents used either at the resource or account level.

", + "refs": { + "IndicatorDetail$NewUserAgentDetail": "

Contains details about the new user agent.

" + } + }, "PaginationToken": { "base": null, "refs": { @@ -488,11 +722,35 @@ "MemberDetail$PercentOfGraphUtilization": "

The member account data volume as a percentage of the maximum allowed data volume. 0 indicates 0 percent, and 100 indicates 100 percent.

Note that this is not the percentage of the behavior graph data volume.

For example, the data volume for the behavior graph is 80 GB per day. The maximum data volume is 160 GB per day. If the data volume for the member account is 40 GB per day, then PercentOfGraphUtilization is 25. It represents 25% of the maximum allowed data volume.

" } }, + "Procedure": { + "base": null, + "refs": { + "TTPsObservedDetail$Procedure": "

The procedure used, identified by the investigation.

" + } + }, + "Reason": { + "base": null, + "refs": { + "FlaggedIpAddressDetail$Reason": "

Details the reason the IP address was flagged as suspicious.

" + } + }, "RejectInvitationRequest": { "base": null, "refs": { } }, + "RelatedFindingDetail": { + "base": "

Details related activities associated with a potential security event. Lists all distinct categories of evidence that are connected to the resource or the finding group.

", + "refs": { + "IndicatorDetail$RelatedFindingDetail": "

Contains details about related findings.

" + } + }, + "RelatedFindingGroupDetail": { + "base": "

Details multiple activities as they related to a potential security event. Detective uses graph analysis technique that infers relationships between findings and entities, and groups them together as a finding group.

", + "refs": { + "IndicatorDetail$RelatedFindingGroupDetail": "

Contains details about related finding groups.

" + } + }, "Resource": { "base": null, "refs": { @@ -515,11 +773,76 @@ "refs": { } }, + "Severity": { + "base": null, + "refs": { + "GetInvestigationResponse$Severity": "

Severity based on the likelihood and impact of the indicators of compromise discovered in the investigation.

", + "InvestigationDetail$Severity": "

Severity based on the likelihood and impact of the indicators of compromise discovered in the investigation.

" + } + }, + "SortCriteria": { + "base": "

Details about the criteria used for sorting investigations.

", + "refs": { + "ListInvestigationsRequest$SortCriteria": "

Sorts the investigation results based on a criteria.

" + } + }, + "SortOrder": { + "base": null, + "refs": { + "SortCriteria$SortOrder": "

The order by which the sorted findings are displayed.

" + } + }, + "StartInvestigationRequest": { + "base": null, + "refs": { + } + }, + "StartInvestigationResponse": { + "base": null, + "refs": { + } + }, "StartMonitoringMemberRequest": { "base": null, "refs": { } }, + "State": { + "base": null, + "refs": { + "GetInvestigationResponse$State": "

The current state of the investigation. An archived investigation indicates you have completed reviewing the investigation.

", + "InvestigationDetail$State": "

The current state of the investigation. An archived investigation indicates you have completed reviewing the investigation.

", + "UpdateInvestigationStateRequest$State": "

The current state of the investigation. An archived investigation indicates you have completed reviewing the investigation.

" + } + }, + "Status": { + "base": null, + "refs": { + "GetInvestigationResponse$Status": "

Status based on the completion status of the investigation.

", + "InvestigationDetail$Status": "

Status based on the completion status of the investigation.

" + } + }, + "StringFilter": { + "base": "

A string for filtering Detective investigations.

", + "refs": { + "FilterCriteria$Severity": "

Filter the investigation results based on the severity.

", + "FilterCriteria$Status": "

Filter the investigation results based on the status.

", + "FilterCriteria$State": "

Filter the investigation results based on the state.

", + "FilterCriteria$EntityArn": "

Filter the investigation results based on the Amazon Resource Name (ARN) of the entity.

" + } + }, + "TTPsObservedDetail": { + "base": "

Details tactics, techniques, and procedures (TTPs) used in a potential security event. Tactics are based on MITRE ATT&CK Matrix for Enterprise.

", + "refs": { + "IndicatorDetail$TTPsObservedDetail": "

Details about the indicator of compromise.

" + } + }, + "Tactic": { + "base": null, + "refs": { + "TTPsObservedDetail$Tactic": "

The tactic used, identified by the investigation.

" + } + }, "TagKey": { "base": null, "refs": { @@ -557,16 +880,30 @@ "TagMap$value": null } }, + "Technique": { + "base": null, + "refs": { + "TTPsObservedDetail$Technique": "

The technique used, identified by the investigation.

" + } + }, "Timestamp": { "base": null, "refs": { "Administrator$DelegationTime": "

The date and time when the Detective administrator account was enabled. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "DatasourcePackageUsageInfo$VolumeUsageUpdateTime": "

The data and time when the member account data volume was last updated. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", + "DateFilter$StartInclusive": "

A timestamp representing the start of the time period from when data is filtered, including the start date.

", + "DateFilter$EndInclusive": "

A timestamp representing the end date of the time period until when data is filtered , including the end date.

", + "GetInvestigationResponse$CreatedTime": "

The UTC time stamp of the creation time of the investigation report.

", + "GetInvestigationResponse$ScopeStartTime": "

The start date and time for the scope time set to generate the investigation report.

", + "GetInvestigationResponse$ScopeEndTime": "

The data and time when the investigation began. The value is an UTC ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "Graph$CreatedTime": "

The date and time that the behavior graph was created. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", + "InvestigationDetail$CreatedTime": "

The UTC time stamp of the creation time of the investigation report.

", "MemberDetail$InvitedTime": "

For invited accounts, the date and time that Detective sent the invitation to the account. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "MemberDetail$UpdatedTime": "

The date and time that the member account was last updated. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "MemberDetail$VolumeUsageUpdatedTime": "

The data and time when the member account data volume was last updated. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "MemberDetail$PercentOfGraphUtilizationUpdatedTime": "

The date and time when the graph utilization percentage was last updated. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", + "StartInvestigationRequest$ScopeStartTime": "

The data and time when the investigation began. The value is an UTC ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", + "StartInvestigationRequest$ScopeEndTime": "

The data and time when the investigation began. The value is an UTC ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

", "TimestampForCollection$Timestamp": "

The data and time when data collection began for a source package. The value is an ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z.

" } }, @@ -581,6 +918,12 @@ "refs": { } }, + "Type": { + "base": null, + "refs": { + "RelatedFindingDetail$Type": "

The type of finding.

" + } + }, "UnprocessedAccount": { "base": "

A member account that was included in a request but for which the request could not be processed.

", "refs": { @@ -630,16 +973,33 @@ "refs": { } }, + "UpdateInvestigationStateRequest": { + "base": null, + "refs": { + } + }, "UpdateOrganizationConfigurationRequest": { "base": null, "refs": { } }, + "UserAgent": { + "base": null, + "refs": { + "NewUserAgentDetail$UserAgent": "

New user agent which accessed the resource.

" + } + }, "ValidationException": { "base": "

The request parameters are invalid.

", "refs": { } }, + "Value": { + "base": null, + "refs": { + "StringFilter$Value": "

The string filter value.

" + } + }, "VolumeUsageByDatasourcePackage": { "base": null, "refs": { diff --git a/apis/detective/2018-10-26/endpoint-rule-set-1.json b/apis/detective/2018-10-26/endpoint-rule-set-1.json index fa378ddc6d0..2f409ed9707 100644 --- a/apis/detective/2018-10-26/endpoint-rule-set-1.json +++ b/apis/detective/2018-10-26/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/ecs/2014-11-13/api-2.json b/apis/ecs/2014-11-13/api-2.json index efe8002780f..ff4c33e9d5d 100644 --- a/apis/ecs/2014-11-13/api-2.json +++ b/apis/ecs/2014-11-13/api-2.json @@ -3165,7 +3165,8 @@ "members":{ "name":{"shape":"SettingName"}, "value":{"shape":"String"}, - "principalArn":{"shape":"String"} + "principalArn":{"shape":"String"}, + "type":{"shape":"SettingType"} } }, "SettingName":{ @@ -3178,7 +3179,15 @@ "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", - "fargateTaskRetirementWaitPeriod" + "fargateTaskRetirementWaitPeriod", + "guardDutyActivate" + ] + }, + "SettingType":{ + "type":"string", + "enum":[ + "user", + "aws_managed" ] }, "Settings":{ diff --git a/apis/ecs/2014-11-13/docs-2.json b/apis/ecs/2014-11-13/docs-2.json index 41128d6ede6..04feb858f03 100644 --- a/apis/ecs/2014-11-13/docs-2.json +++ b/apis/ecs/2014-11-13/docs-2.json @@ -1,6 +1,6 @@ { "version": "2.0", - "service": "Amazon Elastic Container Service

Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, container management service. It makes it easy to run, stop, and manage Docker containers. You can host your cluster on a serverless infrastructure that's managed by Amazon ECS by launching your services or tasks on Fargate. For more control, you can host your tasks on a cluster of Amazon Elastic Compute Cloud (Amazon EC2) or External (on-premises) instances that you manage.

Amazon ECS makes it easy to launch and stop container-based applications with simple API calls. This makes it easy to get the state of your cluster from a centralized service, and gives you access to many familiar Amazon EC2 features.

You can use Amazon ECS to schedule the placement of containers across your cluster based on your resource needs, isolation policies, and availability requirements. With Amazon ECS, you don't need to operate your own cluster management and configuration management systems. You also don't need to worry about scaling your management infrastructure.

", + "service": "Amazon Elastic Container Service

Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, container management service. It makes it easy to run, stop, and manage Docker containers. You can host your cluster on a serverless infrastructure that's managed by Amazon ECS by launching your services or tasks on Fargate. For more control, you can host your tasks on a cluster of Amazon Elastic Compute Cloud (Amazon EC2) or External (on-premises) instances that you manage.

Amazon ECS makes it easy to launch and stop container-based applications with simple API calls. This makes it easy to get the state of your cluster from a centralized service, and gives you access to many familiar Amazon EC2 features.

You can use Amazon ECS to schedule the placement of containers across your cluster based on your resource needs, isolation policies, and availability requirements. With Amazon ECS, you don't need to operate your own cluster management and configuration management systems. You also don't need to worry about scaling your management infrastructure.

", "operations": { "CreateCapacityProvider": "

Creates a new capacity provider. Capacity providers are associated with an Amazon ECS cluster and are used in capacity provider strategies to facilitate cluster auto scaling.

Only capacity providers that use an Auto Scaling group can be created. Amazon ECS tasks on Fargate use the FARGATE and FARGATE_SPOT capacity providers. These providers are available to all accounts in the Amazon Web Services Regions that Fargate supports.

", "CreateCluster": "

Creates a new Amazon ECS cluster. By default, your account receives a default cluster when you launch your first container instance. However, you can create your own cluster with a unique name with the CreateCluster action.

When you call the CreateCluster API operation, Amazon ECS attempts to create the Amazon ECS service-linked role for your account. This is so that it can manage required resources in other Amazon Web Services services on your behalf. However, if the user that makes the call doesn't have permissions to create the service-linked role, it isn't created. For more information, see Using service-linked roles for Amazon ECS in the Amazon Elastic Container Service Developer Guide.

", @@ -35,7 +35,7 @@ "ListTaskDefinitionFamilies": "

Returns a list of task definition families that are registered to your account. This list includes task definition families that no longer have any ACTIVE task definition revisions.

You can filter out task definition families that don't contain any ACTIVE task definition revisions by setting the status parameter to ACTIVE. You can also filter the results with the familyPrefix parameter.

", "ListTaskDefinitions": "

Returns a list of task definitions that are registered to your account. You can filter the results by family name with the familyPrefix parameter or by status with the status parameter.

", "ListTasks": "

Returns a list of tasks. You can filter the results by cluster, task definition family, container instance, launch type, what IAM principal started the task, or by the desired status of the task.

Recently stopped tasks might appear in the returned results.

", - "PutAccountSetting": "

Modifies an account setting. Account settings are set on a per-Region basis.

If you change the root user account setting, the default settings are reset for users and roles that do not have specified individual account settings. For more information, see Account Settings in the Amazon Elastic Container Service Developer Guide.

When you specify serviceLongArnFormat, taskLongArnFormat, or containerInstanceLongArnFormat, the Amazon Resource Name (ARN) and resource ID format of the resource type for a specified user, role, or the root user for an account is affected. The opt-in and opt-out account setting must be set for each Amazon ECS resource separately. The ARN and resource ID format of a resource is defined by the opt-in status of the user or role that created the resource. You must turn on this setting to use Amazon ECS features such as resource tagging.

When you specify awsvpcTrunking, the elastic network interface (ENI) limit for any new container instances that support the feature is changed. If awsvpcTrunking is turned on, any new container instances that support the feature are launched have the increased ENI limits available to them. For more information, see Elastic Network Interface Trunking in the Amazon Elastic Container Service Developer Guide.

When you specify containerInsights, the default setting indicating whether Amazon Web Services CloudWatch Container Insights is turned on for your clusters is changed. If containerInsights is turned on, any new clusters that are created will have Container Insights turned on unless you disable it during cluster creation. For more information, see CloudWatch Container Insights in the Amazon Elastic Container Service Developer Guide.

Amazon ECS is introducing tagging authorization for resource creation. Users must have permissions for actions that create the resource, such as ecsCreateCluster. If tags are specified when you create a resource, Amazon Web Services performs additional authorization to verify if users or roles have permissions to create tags. Therefore, you must grant explicit permissions to use the ecs:TagResource action. For more information, see Grant permission to tag resources on creation in the Amazon ECS Developer Guide.

When Amazon Web Services determines that a security or infrastructure update is needed for an Amazon ECS task hosted on Fargate, the tasks need to be stopped and new tasks launched to replace them. Use fargateTaskRetirementWaitPeriod to configure the wait time to retire a Fargate task. For information about the Fargate tasks maintenance, see Amazon Web Services Fargate task maintenance in the Amazon ECS Developer Guide.

", + "PutAccountSetting": "

Modifies an account setting. Account settings are set on a per-Region basis.

If you change the root user account setting, the default settings are reset for users and roles that do not have specified individual account settings. For more information, see Account Settings in the Amazon Elastic Container Service Developer Guide.

When you specify serviceLongArnFormat, taskLongArnFormat, or containerInstanceLongArnFormat, the Amazon Resource Name (ARN) and resource ID format of the resource type for a specified user, role, or the root user for an account is affected. The opt-in and opt-out account setting must be set for each Amazon ECS resource separately. The ARN and resource ID format of a resource is defined by the opt-in status of the user or role that created the resource. You must turn on this setting to use Amazon ECS features such as resource tagging.

When you specify awsvpcTrunking, the elastic network interface (ENI) limit for any new container instances that support the feature is changed. If awsvpcTrunking is turned on, any new container instances that support the feature are launched have the increased ENI limits available to them. For more information, see Elastic Network Interface Trunking in the Amazon Elastic Container Service Developer Guide.

When you specify containerInsights, the default setting indicating whether Amazon Web Services CloudWatch Container Insights is turned on for your clusters is changed. If containerInsights is turned on, any new clusters that are created will have Container Insights turned on unless you disable it during cluster creation. For more information, see CloudWatch Container Insights in the Amazon Elastic Container Service Developer Guide.

Amazon ECS is introducing tagging authorization for resource creation. Users must have permissions for actions that create the resource, such as ecsCreateCluster. If tags are specified when you create a resource, Amazon Web Services performs additional authorization to verify if users or roles have permissions to create tags. Therefore, you must grant explicit permissions to use the ecs:TagResource action. For more information, see Grant permission to tag resources on creation in the Amazon ECS Developer Guide.

When Amazon Web Services determines that a security or infrastructure update is needed for an Amazon ECS task hosted on Fargate, the tasks need to be stopped and new tasks launched to replace them. Use fargateTaskRetirementWaitPeriod to configure the wait time to retire a Fargate task. For information about the Fargate tasks maintenance, see Amazon Web Services Fargate task maintenance in the Amazon ECS Developer Guide.

The guardDutyActivate parameter is read-only in Amazon ECS and indicates whether Amazon ECS Runtime Monitoring is enabled or disabled by your security administrator in your Amazon ECS account. Amazon GuardDuty controls this account setting on your behalf. For more information, see Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring.

", "PutAccountSettingDefault": "

Modifies an account setting for all users on an account for whom no individual account setting has been specified. Account settings are set on a per-Region basis.

", "PutAttributes": "

Create or update an attribute on an Amazon ECS resource. If the attribute doesn't exist, it's created. If the attribute exists, its value is replaced with the specified value. To delete an attribute, use DeleteAttributes. For more information, see Attributes in the Amazon Elastic Container Service Developer Guide.

", "PutClusterCapacityProviders": "

Modifies the available capacity providers and the default capacity provider strategy for a cluster.

You must specify both the available capacity providers and a default capacity provider strategy for the cluster. If the specified cluster has existing capacity providers associated with it, you must specify all existing capacity providers in addition to any new ones you want to add. Any existing capacity providers that are associated with a cluster that are omitted from a PutClusterCapacityProviders API call will be disassociated with the cluster. You can only disassociate an existing capacity provider from a cluster if it's not being used by any existing tasks.

When creating a service or running a task on a cluster, if no capacity provider or launch type is specified, then the cluster's default capacity provider strategy is used. We recommend that you define a default capacity provider strategy for your cluster. However, you must specify an empty array ([]) to bypass defining a default strategy.

", @@ -1946,11 +1946,17 @@ "refs": { "DeleteAccountSettingRequest$name": "

The resource name to disable the account setting for. If serviceLongArnFormat is specified, the ARN for your Amazon ECS services is affected. If taskLongArnFormat is specified, the ARN and resource ID for your Amazon ECS tasks is affected. If containerInstanceLongArnFormat is specified, the ARN and resource ID for your Amazon ECS container instances is affected. If awsvpcTrunking is specified, the ENI limit for your Amazon ECS container instances is affected.

", "ListAccountSettingsRequest$name": "

The name of the account setting you want to list the settings for.

", - "PutAccountSettingDefaultRequest$name": "

The resource name for which to modify the account setting. If you specify serviceLongArnFormat, the ARN for your Amazon ECS services is affected. If you specify taskLongArnFormat, the ARN and resource ID for your Amazon ECS tasks is affected. If you specify containerInstanceLongArnFormat, the ARN and resource ID for your Amazon ECS container instances is affected. If you specify awsvpcTrunking, the ENI limit for your Amazon ECS container instances is affected. If you specify containerInsights, the default setting for Amazon Web Services CloudWatch Container Insights for your clusters is affected. If you specify tagResourceAuthorization, the opt-in option for tagging resources on creation is affected. For information about the opt-in timeline, see Tagging authorization timeline in the Amazon ECS Developer Guide. If you specify fargateTaskRetirementWaitPeriod, the default wait time to retire a Fargate task due to required maintenance is affected.

When you specify fargateFIPSMode for the name and enabled for the value, Fargate uses FIPS-140 compliant cryptographic algorithms on your tasks. For more information about FIPS-140 compliance with Fargate, see Amazon Web Services Fargate Federal Information Processing Standard (FIPS) 140-2 compliance in the Amazon Elastic Container Service Developer Guide.

When Amazon Web Services determines that a security or infrastructure update is needed for an Amazon ECS task hosted on Fargate, the tasks need to be stopped and new tasks launched to replace them. Use fargateTaskRetirementWaitPeriod to set the wait time to retire a Fargate task to the default. For information about the Fargate tasks maintenance, see Amazon Web Services Fargate task maintenance in the Amazon ECS Developer Guide.

", - "PutAccountSettingRequest$name": "

The Amazon ECS resource name for which to modify the account setting. If you specify serviceLongArnFormat, the ARN for your Amazon ECS services is affected. If you specify taskLongArnFormat, the ARN and resource ID for your Amazon ECS tasks is affected. If you specify containerInstanceLongArnFormat, the ARN and resource ID for your Amazon ECS container instances is affected. If you specify awsvpcTrunking, the elastic network interface (ENI) limit for your Amazon ECS container instances is affected. If you specify containerInsights, the default setting for Amazon Web Services CloudWatch Container Insights for your clusters is affected. If you specify fargateFIPSMode, Fargate FIPS 140 compliance is affected. If you specify tagResourceAuthorization, the opt-in option for tagging resources on creation is affected. For information about the opt-in timeline, see Tagging authorization timeline in the Amazon ECS Developer Guide. If you specify fargateTaskRetirementWaitPeriod, the wait time to retire a Fargate task is affected.

", + "PutAccountSettingDefaultRequest$name": "

The resource name for which to modify the account setting. If you specify serviceLongArnFormat, the ARN for your Amazon ECS services is affected. If you specify taskLongArnFormat, the ARN and resource ID for your Amazon ECS tasks is affected. If you specify containerInstanceLongArnFormat, the ARN and resource ID for your Amazon ECS container instances is affected. If you specify awsvpcTrunking, the ENI limit for your Amazon ECS container instances is affected. If you specify containerInsights, the default setting for Amazon Web Services CloudWatch Container Insights for your clusters is affected. If you specify tagResourceAuthorization, the opt-in option for tagging resources on creation is affected. For information about the opt-in timeline, see Tagging authorization timeline in the Amazon ECS Developer Guide. If you specify fargateTaskRetirementWaitPeriod, the default wait time to retire a Fargate task due to required maintenance is affected.

When you specify fargateFIPSMode for the name and enabled for the value, Fargate uses FIPS-140 compliant cryptographic algorithms on your tasks. For more information about FIPS-140 compliance with Fargate, see Amazon Web Services Fargate Federal Information Processing Standard (FIPS) 140-2 compliance in the Amazon Elastic Container Service Developer Guide.

When Amazon Web Services determines that a security or infrastructure update is needed for an Amazon ECS task hosted on Fargate, the tasks need to be stopped and new tasks launched to replace them. Use fargateTaskRetirementWaitPeriod to set the wait time to retire a Fargate task to the default. For information about the Fargate tasks maintenance, see Amazon Web Services Fargate task maintenance in the Amazon ECS Developer Guide.

The guardDutyActivate parameter is read-only in Amazon ECS and indicates whether Amazon ECS Runtime Monitoring is enabled or disabled by your security administrator in your Amazon ECS account. Amazon GuardDuty controls this account setting on your behalf. For more information, see Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring.

", + "PutAccountSettingRequest$name": "

The Amazon ECS resource name for which to modify the account setting. If you specify serviceLongArnFormat, the ARN for your Amazon ECS services is affected. If you specify taskLongArnFormat, the ARN and resource ID for your Amazon ECS tasks is affected. If you specify containerInstanceLongArnFormat, the ARN and resource ID for your Amazon ECS container instances is affected. If you specify awsvpcTrunking, the elastic network interface (ENI) limit for your Amazon ECS container instances is affected. If you specify containerInsights, the default setting for Amazon Web Services CloudWatch Container Insights for your clusters is affected. If you specify fargateFIPSMode, Fargate FIPS 140 compliance is affected. If you specify tagResourceAuthorization, the opt-in option for tagging resources on creation is affected. For information about the opt-in timeline, see Tagging authorization timeline in the Amazon ECS Developer Guide. If you specify fargateTaskRetirementWaitPeriod, the wait time to retire a Fargate task is affected.

The guardDutyActivate parameter is read-only in Amazon ECS and indicates whether Amazon ECS Runtime Monitoring is enabled or disabled by your security administrator in your Amazon ECS account. Amazon GuardDuty controls this account setting on your behalf. For more information, see Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring.

", "Setting$name": "

The Amazon ECS resource name.

" } }, + "SettingType": { + "base": null, + "refs": { + "Setting$type": "

Indicates whether Amazon Web Services manages the account setting, or if the user manages it.

aws_managed account settings are read-only, as Amazon Web Services manages such on the customer's behalf. Currently, the guardDutyActivate account setting is the only one Amazon Web Services manages.

" + } + }, "Settings": { "base": null, "refs": { diff --git a/apis/eks-auth/2023-11-26/api-2.json b/apis/eks-auth/2023-11-26/api-2.json new file mode 100644 index 00000000000..47fab60d111 --- /dev/null +++ b/apis/eks-auth/2023-11-26/api-2.json @@ -0,0 +1,229 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-11-26", + "endpointPrefix":"eks-auth", + "jsonVersion":"1.1", + "protocol":"rest-json", + "serviceFullName":"Amazon EKS Auth", + "serviceId":"EKS Auth", + "signatureVersion":"v4", + "signingName":"eks-auth", + "uid":"eks-auth-2023-11-26" + }, + "operations":{ + "AssumeRoleForPodIdentity":{ + "name":"AssumeRoleForPodIdentity", + "http":{ + "method":"POST", + "requestUri":"/clusters/{clusterName}/assume-role-for-pod-identity", + "responseCode":200 + }, + "input":{"shape":"AssumeRoleForPodIdentityRequest"}, + "output":{"shape":"AssumeRoleForPodIdentityResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"InvalidRequestException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"InvalidTokenException"}, + {"shape":"InvalidParameterException"}, + {"shape":"ExpiredTokenException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"} + ] + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "AssumeRoleForPodIdentityRequest":{ + "type":"structure", + "required":[ + "clusterName", + "token" + ], + "members":{ + "clusterName":{ + "shape":"ClusterName", + "location":"uri", + "locationName":"clusterName" + }, + "token":{"shape":"JwtToken"} + } + }, + "AssumeRoleForPodIdentityResponse":{ + "type":"structure", + "required":[ + "subject", + "audience", + "podIdentityAssociation", + "assumedRoleUser", + "credentials" + ], + "members":{ + "subject":{"shape":"Subject"}, + "audience":{"shape":"String"}, + "podIdentityAssociation":{"shape":"PodIdentityAssociation"}, + "assumedRoleUser":{"shape":"AssumedRoleUser"}, + "credentials":{"shape":"Credentials"} + } + }, + "AssumedRoleUser":{ + "type":"structure", + "required":[ + "arn", + "assumeRoleId" + ], + "members":{ + "arn":{"shape":"String"}, + "assumeRoleId":{"shape":"String"} + } + }, + "ClusterName":{ + "type":"string", + "max":100, + "min":1, + "pattern":"[0-9A-Za-z][A-Za-z0-9\\-_]*" + }, + "Credentials":{ + "type":"structure", + "required":[ + "sessionToken", + "secretAccessKey", + "accessKeyId", + "expiration" + ], + "members":{ + "sessionToken":{"shape":"String"}, + "secretAccessKey":{"shape":"String"}, + "accessKeyId":{"shape":"String"}, + "expiration":{"shape":"Timestamp"} + }, + "sensitive":true + }, + "ExpiredTokenException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "InternalServerException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true + }, + "InvalidParameterException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "InvalidRequestException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "InvalidTokenException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "JwtToken":{ + "type":"string", + "min":1, + "pattern":"[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+", + "sensitive":true + }, + "PodIdentityAssociation":{ + "type":"structure", + "required":[ + "associationArn", + "associationId" + ], + "members":{ + "associationArn":{"shape":"String"}, + "associationId":{"shape":"String"} + } + }, + "ResourceNotFoundException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "ServiceUnavailableException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{"httpStatusCode":503}, + "exception":true, + "fault":true + }, + "String":{"type":"string"}, + "Subject":{ + "type":"structure", + "required":[ + "namespace", + "serviceAccount" + ], + "members":{ + "namespace":{"shape":"String"}, + "serviceAccount":{"shape":"String"} + } + }, + "ThrottlingException":{ + "type":"structure", + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":429, + "senderFault":true + }, + "exception":true + }, + "Timestamp":{"type":"timestamp"} + } +} diff --git a/apis/eks-auth/2023-11-26/docs-2.json b/apis/eks-auth/2023-11-26/docs-2.json new file mode 100644 index 00000000000..e4310f64f1e --- /dev/null +++ b/apis/eks-auth/2023-11-26/docs-2.json @@ -0,0 +1,130 @@ +{ + "version": "2.0", + "service": "

The Amazon EKS Auth API and the AssumeRoleForPodIdentity action are only used by the EKS Pod Identity Agent.

", + "operations": { + "AssumeRoleForPodIdentity": "

The Amazon EKS Auth API and the AssumeRoleForPodIdentity action are only used by the EKS Pod Identity Agent.

We recommend that applications use the Amazon Web Services SDKs to connect to Amazon Web Services services; if credentials from an EKS Pod Identity association are available in the pod, the latest versions of the SDKs use them automatically.

" + }, + "shapes": { + "AccessDeniedException": { + "base": "

You don't have permissions to perform the requested operation. The IAM principal making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access management in the IAM User Guide.

", + "refs": { + } + }, + "AssumeRoleForPodIdentityRequest": { + "base": null, + "refs": { + } + }, + "AssumeRoleForPodIdentityResponse": { + "base": null, + "refs": { + } + }, + "AssumedRoleUser": { + "base": "

An object with the permanent IAM role identity and the temporary session name.

", + "refs": { + "AssumeRoleForPodIdentityResponse$assumedRoleUser": "

An object with the permanent IAM role identity and the temporary session name.

The ARN of the IAM role that the temporary credentials authenticate to.

The session name of the temporary session requested to STS. The value is a unique identifier that contains the role ID, a colon (:), and the role session name of the role that is being assumed. The role ID is generated by IAM when the role is created. The role session name part of the value follows this format: eks-clustername-podname-random UUID

" + } + }, + "ClusterName": { + "base": null, + "refs": { + "AssumeRoleForPodIdentityRequest$clusterName": "

The name of the cluster for the request.

" + } + }, + "Credentials": { + "base": "

The Amazon Web Services Signature Version 4 type of temporary credentials.

", + "refs": { + "AssumeRoleForPodIdentityResponse$credentials": "

The Amazon Web Services Signature Version 4 type of temporary credentials.

" + } + }, + "ExpiredTokenException": { + "base": "

The specified Kubernetes service account token is expired.

", + "refs": { + } + }, + "InternalServerException": { + "base": "

These errors are usually caused by a server-side issue.

", + "refs": { + } + }, + "InvalidParameterException": { + "base": "

The specified parameter is invalid. Review the available parameters for the API request.

", + "refs": { + } + }, + "InvalidRequestException": { + "base": "

This exception is thrown if the request contains a semantic error. The precise meaning will depend on the API, and will be documented in the error message.

", + "refs": { + } + }, + "InvalidTokenException": { + "base": "

The specified Kubernetes service account token is invalid.

", + "refs": { + } + }, + "JwtToken": { + "base": null, + "refs": { + "AssumeRoleForPodIdentityRequest$token": "

The token of the Kubernetes service account for the pod.

" + } + }, + "PodIdentityAssociation": { + "base": "

Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances.

", + "refs": { + "AssumeRoleForPodIdentityResponse$podIdentityAssociation": "

The Amazon Resource Name (ARN) and ID of the EKS Pod Identity association.

" + } + }, + "ResourceNotFoundException": { + "base": "

The specified resource could not be found.

", + "refs": { + } + }, + "ServiceUnavailableException": { + "base": "

The service is unavailable. Back off and retry the operation.

", + "refs": { + } + }, + "String": { + "base": null, + "refs": { + "AccessDeniedException$message": null, + "AssumeRoleForPodIdentityResponse$audience": "

The identity that is allowed to use the credentials. This value is always pods.eks.amazonaws.com.

", + "AssumedRoleUser$arn": "

The ARN of the IAM role that the temporary credentials authenticate to.

", + "AssumedRoleUser$assumeRoleId": "

The session name of the temporary session requested to STS. The value is a unique identifier that contains the role ID, a colon (:), and the role session name of the role that is being assumed. The role ID is generated by IAM when the role is created. The role session name part of the value follows this format: eks-clustername-podname-random UUID

", + "Credentials$sessionToken": "

The token that applications inside the pods must pass to any service API to use the temporary credentials.

", + "Credentials$secretAccessKey": "

The secret access key that applications inside the pods use to sign requests.

", + "Credentials$accessKeyId": "

The access key ID that identifies the temporary security credentials.

", + "ExpiredTokenException$message": null, + "InternalServerException$message": null, + "InvalidParameterException$message": null, + "InvalidRequestException$message": null, + "InvalidTokenException$message": null, + "PodIdentityAssociation$associationArn": "

The Amazon Resource Name (ARN) of the EKS Pod Identity association.

", + "PodIdentityAssociation$associationId": "

The ID of the association.

", + "ResourceNotFoundException$message": null, + "ServiceUnavailableException$message": null, + "Subject$namespace": "

The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.

", + "Subject$serviceAccount": "

The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

", + "ThrottlingException$message": null + } + }, + "Subject": { + "base": "

An object containing the name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

", + "refs": { + "AssumeRoleForPodIdentityResponse$subject": "

The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

" + } + }, + "ThrottlingException": { + "base": "

The request was denied because your request rate is too high. Reduce the frequency of requests.

", + "refs": { + } + }, + "Timestamp": { + "base": null, + "refs": { + "Credentials$expiration": "

The Unix epoch timestamp in seconds when the current credentials expire.

" + } + } + } +} diff --git a/apis/eks-auth/2023-11-26/endpoint-rule-set-1.json b/apis/eks-auth/2023-11-26/endpoint-rule-set-1.json new file mode 100644 index 00000000000..f174f455c63 --- /dev/null +++ b/apis/eks-auth/2023-11-26/endpoint-rule-set-1.json @@ -0,0 +1,247 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://eks-auth-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://eks-auth.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://eks-auth-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://eks-auth.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ] +} \ No newline at end of file diff --git a/apis/eks-auth/2023-11-26/endpoint-tests-1.json b/apis/eks-auth/2023-11-26/endpoint-tests-1.json new file mode 100644 index 00000000000..2f75975a45b --- /dev/null +++ b/apis/eks-auth/2023-11-26/endpoint-tests-1.json @@ -0,0 +1,119 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://eks-auth.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/eks-auth/2023-11-26/examples-1.json b/apis/eks-auth/2023-11-26/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/eks-auth/2023-11-26/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/eks-auth/2023-11-26/paginators-1.json b/apis/eks-auth/2023-11-26/paginators-1.json new file mode 100644 index 00000000000..5677bd8e4a2 --- /dev/null +++ b/apis/eks-auth/2023-11-26/paginators-1.json @@ -0,0 +1,4 @@ +{ + "pagination": { + } +} diff --git a/apis/eks-auth/2023-11-26/smoke.json b/apis/eks-auth/2023-11-26/smoke.json new file mode 100644 index 00000000000..047a1d85ef7 --- /dev/null +++ b/apis/eks-auth/2023-11-26/smoke.json @@ -0,0 +1,6 @@ +{ + "version": 1, + "defaultRegion": "us-west-2", + "testCases": [ + ] +} \ No newline at end of file diff --git a/apis/eks-auth/2023-11-26/waiters-2.json b/apis/eks-auth/2023-11-26/waiters-2.json new file mode 100644 index 00000000000..4b20636aa4c --- /dev/null +++ b/apis/eks-auth/2023-11-26/waiters-2.json @@ -0,0 +1,5 @@ +{ + "version": 2, + "waiters": { + } +} \ No newline at end of file diff --git a/apis/eks/2017-11-01/api-2.json b/apis/eks/2017-11-01/api-2.json index 80873929cf0..58d7558617e 100644 --- a/apis/eks/2017-11-01/api-2.json +++ b/apis/eks/2017-11-01/api-2.json @@ -133,6 +133,23 @@ {"shape":"ServiceUnavailableException"} ] }, + "CreatePodIdentityAssociation":{ + "name":"CreatePodIdentityAssociation", + "http":{ + "method":"POST", + "requestUri":"/clusters/{name}/pod-identity-associations" + }, + "input":{"shape":"CreatePodIdentityAssociationRequest"}, + "output":{"shape":"CreatePodIdentityAssociationResponse"}, + "errors":[ + {"shape":"ServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterException"}, + {"shape":"ResourceLimitExceededException"}, + {"shape":"ResourceInUseException"} + ] + }, "DeleteAddon":{ "name":"DeleteAddon", "http":{ @@ -212,6 +229,21 @@ {"shape":"ServiceUnavailableException"} ] }, + "DeletePodIdentityAssociation":{ + "name":"DeletePodIdentityAssociation", + "http":{ + "method":"DELETE", + "requestUri":"/clusters/{name}/pod-identity-associations/{associationId}" + }, + "input":{"shape":"DeletePodIdentityAssociationRequest"}, + "output":{"shape":"DeletePodIdentityAssociationResponse"}, + "errors":[ + {"shape":"ServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterException"} + ] + }, "DeregisterCluster":{ "name":"DeregisterCluster", "http":{ @@ -350,6 +382,21 @@ {"shape":"ServiceUnavailableException"} ] }, + "DescribePodIdentityAssociation":{ + "name":"DescribePodIdentityAssociation", + "http":{ + "method":"GET", + "requestUri":"/clusters/{name}/pod-identity-associations/{associationId}" + }, + "input":{"shape":"DescribePodIdentityAssociationRequest"}, + "output":{"shape":"DescribePodIdentityAssociationResponse"}, + "errors":[ + {"shape":"ServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterException"} + ] + }, "DescribeUpdate":{ "name":"DescribeUpdate", "http":{ @@ -475,6 +522,21 @@ {"shape":"ResourceNotFoundException"} ] }, + "ListPodIdentityAssociations":{ + "name":"ListPodIdentityAssociations", + "http":{ + "method":"GET", + "requestUri":"/clusters/{name}/pod-identity-associations" + }, + "input":{"shape":"ListPodIdentityAssociationsRequest"}, + "output":{"shape":"ListPodIdentityAssociationsResponse"}, + "errors":[ + {"shape":"ServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -648,6 +710,21 @@ {"shape":"ResourceNotFoundException"}, {"shape":"InvalidRequestException"} ] + }, + "UpdatePodIdentityAssociation":{ + "name":"UpdatePodIdentityAssociation", + "http":{ + "method":"POST", + "requestUri":"/clusters/{name}/pod-identity-associations/{associationId}" + }, + "input":{"shape":"UpdatePodIdentityAssociationRequest"}, + "output":{"shape":"UpdatePodIdentityAssociationResponse"}, + "errors":[ + {"shape":"ServerException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterException"} + ] } }, "shapes":{ @@ -1175,6 +1252,36 @@ "nodegroup":{"shape":"Nodegroup"} } }, + "CreatePodIdentityAssociationRequest":{ + "type":"structure", + "required":[ + "clusterName", + "namespace", + "serviceAccount", + "roleArn" + ], + "members":{ + "clusterName":{ + "shape":"String", + "location":"uri", + "locationName":"name" + }, + "namespace":{"shape":"String"}, + "serviceAccount":{"shape":"String"}, + "roleArn":{"shape":"String"}, + "clientRequestToken":{ + "shape":"String", + "idempotencyToken":true + }, + "tags":{"shape":"TagMap"} + } + }, + "CreatePodIdentityAssociationResponse":{ + "type":"structure", + "members":{ + "association":{"shape":"PodIdentityAssociation"} + } + }, "DeleteAddonRequest":{ "type":"structure", "required":[ @@ -1289,6 +1396,31 @@ "nodegroup":{"shape":"Nodegroup"} } }, + "DeletePodIdentityAssociationRequest":{ + "type":"structure", + "required":[ + "clusterName", + "associationId" + ], + "members":{ + "clusterName":{ + "shape":"String", + "location":"uri", + "locationName":"name" + }, + "associationId":{ + "shape":"String", + "location":"uri", + "locationName":"associationId" + } + } + }, + "DeletePodIdentityAssociationResponse":{ + "type":"structure", + "members":{ + "association":{"shape":"PodIdentityAssociation"} + } + }, "DeregisterClusterRequest":{ "type":"structure", "required":["name"], @@ -1516,6 +1648,31 @@ "nodegroup":{"shape":"Nodegroup"} } }, + "DescribePodIdentityAssociationRequest":{ + "type":"structure", + "required":[ + "clusterName", + "associationId" + ], + "members":{ + "clusterName":{ + "shape":"String", + "location":"uri", + "locationName":"name" + }, + "associationId":{ + "shape":"String", + "location":"uri", + "locationName":"associationId" + } + } + }, + "DescribePodIdentityAssociationResponse":{ + "type":"structure", + "members":{ + "association":{"shape":"PodIdentityAssociation"} + } + }, "DescribeUpdateRequest":{ "type":"structure", "required":[ @@ -2020,6 +2177,50 @@ "nextToken":{"shape":"String"} } }, + "ListPodIdentityAssociationsMaxResults":{ + "type":"integer", + "box":true, + "max":100, + "min":1 + }, + "ListPodIdentityAssociationsRequest":{ + "type":"structure", + "required":["clusterName"], + "members":{ + "clusterName":{ + "shape":"String", + "location":"uri", + "locationName":"name" + }, + "namespace":{ + "shape":"String", + "location":"querystring", + "locationName":"namespace" + }, + "serviceAccount":{ + "shape":"String", + "location":"querystring", + "locationName":"serviceAccount" + }, + "maxResults":{ + "shape":"ListPodIdentityAssociationsMaxResults", + "location":"querystring", + "locationName":"maxResults" + }, + "nextToken":{ + "shape":"String", + "location":"querystring", + "locationName":"nextToken" + } + } + }, + "ListPodIdentityAssociationsResponse":{ + "type":"structure", + "members":{ + "associations":{"shape":"PodIdentityAssociationSummaries"}, + "nextToken":{"shape":"String"} + } + }, "ListTagsForResourceRequest":{ "type":"structure", "required":["resourceArn"], @@ -2309,6 +2510,34 @@ "max":100, "min":1 }, + "PodIdentityAssociation":{ + "type":"structure", + "members":{ + "clusterName":{"shape":"String"}, + "namespace":{"shape":"String"}, + "serviceAccount":{"shape":"String"}, + "roleArn":{"shape":"String"}, + "associationArn":{"shape":"String"}, + "associationId":{"shape":"String"}, + "tags":{"shape":"TagMap"}, + "createdAt":{"shape":"Timestamp"}, + "modifiedAt":{"shape":"Timestamp"} + } + }, + "PodIdentityAssociationSummaries":{ + "type":"list", + "member":{"shape":"PodIdentityAssociationSummary"} + }, + "PodIdentityAssociationSummary":{ + "type":"structure", + "members":{ + "clusterName":{"shape":"String"}, + "namespace":{"shape":"String"}, + "serviceAccount":{"shape":"String"}, + "associationArn":{"shape":"String"}, + "associationId":{"shape":"String"} + } + }, "Provider":{ "type":"structure", "members":{ @@ -2753,6 +2982,36 @@ "type":"list", "member":{"shape":"UpdateParam"} }, + "UpdatePodIdentityAssociationRequest":{ + "type":"structure", + "required":[ + "clusterName", + "associationId" + ], + "members":{ + "clusterName":{ + "shape":"String", + "location":"uri", + "locationName":"name" + }, + "associationId":{ + "shape":"String", + "location":"uri", + "locationName":"associationId" + }, + "roleArn":{"shape":"String"}, + "clientRequestToken":{ + "shape":"String", + "idempotencyToken":true + } + } + }, + "UpdatePodIdentityAssociationResponse":{ + "type":"structure", + "members":{ + "association":{"shape":"PodIdentityAssociation"} + } + }, "UpdateStatus":{ "type":"string", "enum":[ diff --git a/apis/eks/2017-11-01/docs-2.json b/apis/eks/2017-11-01/docs-2.json index a1caed50dc9..ecd3f0b58cc 100644 --- a/apis/eks/2017-11-01/docs-2.json +++ b/apis/eks/2017-11-01/docs-2.json @@ -5,15 +5,17 @@ "AssociateEncryptionConfig": "

Associate encryption configuration to an existing cluster.

You can use this API to enable encryption on existing clusters which do not have encryption already enabled. This allows you to implement a defense-in-depth security strategy without migrating applications to new Amazon EKS clusters.

", "AssociateIdentityProviderConfig": "

Associate an identity provider configuration to a cluster.

If you want to authenticate identities using an identity provider, you can create an identity provider configuration and associate it to your cluster. After configuring authentication to your cluster you can create Kubernetes roles and clusterroles to assign permissions to the roles, and then bind the roles to the identities using Kubernetes rolebindings and clusterrolebindings. For more information see Using RBAC Authorization in the Kubernetes documentation.

", "CreateAddon": "

Creates an Amazon EKS add-on.

Amazon EKS add-ons help to automate the provisioning and lifecycle management of common operational software for Amazon EKS clusters. For more information, see Amazon EKS add-ons in the Amazon EKS User Guide.

", - "CreateCluster": "

Creates an Amazon EKS control plane.

The Amazon EKS control plane consists of control plane instances that run the Kubernetes software, such as etcd and the API server. The control plane runs in an account managed by Amazon Web Services, and the Kubernetes API is exposed by the Amazon EKS API server endpoint. Each Amazon EKS cluster control plane is single tenant and unique. It runs on its own set of Amazon EC2 instances.

The cluster control plane is provisioned across multiple Availability Zones and fronted by an Elastic Load Balancing Network Load Balancer. Amazon EKS also provisions elastic network interfaces in your VPC subnets to provide connectivity from the control plane instances to the nodes (for example, to support kubectl exec, logs, and proxy data flows).

Amazon EKS nodes run in your Amazon Web Services account and connect to your cluster's control plane over the Kubernetes API server endpoint and a certificate file that is created for your cluster.

In most cases, it takes several minutes to create a cluster. After you create an Amazon EKS cluster, you must configure your Kubernetes tooling to communicate with the API server and launch nodes into your cluster. For more information, see Managing Cluster Authentication and Launching Amazon EKS nodes in the Amazon EKS User Guide.

", + "CreateCluster": "

Creates an Amazon EKS control plane.

The Amazon EKS control plane consists of control plane instances that run the Kubernetes software, such as etcd and the API server. The control plane runs in an account managed by Amazon Web Services, and the Kubernetes API is exposed by the Amazon EKS API server endpoint. Each Amazon EKS cluster control plane is single tenant and unique. It runs on its own set of Amazon EC2 instances.

The cluster control plane is provisioned across multiple Availability Zones and fronted by an Elastic Load Balancing Network Load Balancer. Amazon EKS also provisions elastic network interfaces in your VPC subnets to provide connectivity from the control plane instances to the nodes (for example, to support kubectl exec, logs, and proxy data flows).

Amazon EKS nodes run in your Amazon Web Services account and connect to your cluster's control plane over the Kubernetes API server endpoint and a certificate file that is created for your cluster.

You can use the endpointPublicAccess and endpointPrivateAccess parameters to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see Amazon EKS Cluster Endpoint Access Control in the Amazon EKS User Guide .

You can use the logging parameter to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster Control Plane Logs in the Amazon EKS User Guide .

CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see CloudWatch Pricing.

In most cases, it takes several minutes to create a cluster. After you create an Amazon EKS cluster, you must configure your Kubernetes tooling to communicate with the API server and launch nodes into your cluster. For more information, see Managing Cluster Authentication and Launching Amazon EKS nodes in the Amazon EKS User Guide.

", "CreateEksAnywhereSubscription": "

Creates an EKS Anywhere subscription. When a subscription is created, it is a contract agreement for the length of the term specified in the request. Licenses that are used to validate support are provisioned in Amazon Web Services License Manager and the caller account is granted access to EKS Anywhere Curated Packages.

", "CreateFargateProfile": "

Creates an Fargate profile for your Amazon EKS cluster. You must have at least one Fargate profile in a cluster to be able to run pods on Fargate.

The Fargate profile allows an administrator to declare which pods run on Fargate and specify which pods run on which Fargate profile. This declaration is done through the profile’s selectors. Each profile can have up to five selectors that contain a namespace and labels. A namespace is required for every selector. The label field consists of multiple optional key-value pairs. Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of the selectors in the Fargate profile, then that pod is run on Fargate.

When you create a Fargate profile, you must specify a pod execution role to use with the pods that are scheduled with the profile. This role is added to the cluster's Kubernetes Role Based Access Control (RBAC) for authorization so that the kubelet that is running on the Fargate infrastructure can register with your Amazon EKS cluster so that it can appear in your cluster as a node. The pod execution role also provides IAM permissions to the Fargate infrastructure to allow read access to Amazon ECR image repositories. For more information, see Pod Execution Role in the Amazon EKS User Guide.

Fargate profiles are immutable. However, you can create a new updated profile to replace an existing profile and then delete the original after the updated profile has finished creating.

If any Fargate profiles in a cluster are in the DELETING status, you must wait for that Fargate profile to finish deleting before you can create any other profiles in that cluster.

For more information, see Fargate Profile in the Amazon EKS User Guide.

", "CreateNodegroup": "

Creates a managed node group for an Amazon EKS cluster. You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster.

An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see Managed node groups in the Amazon EKS User Guide.

Windows AMI types are only supported for commercial Regions that support Windows Amazon EKS.

", + "CreatePodIdentityAssociation": "

Creates an EKS Pod Identity association between a service account in an Amazon EKS cluster and an IAM role with EKS Pod Identity. Use EKS Pod Identity to give temporary IAM credentials to pods and the credentials are rotated automatically.

Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that 7EC2l instance profiles provide credentials to Amazon EC2 instances.

If a pod uses a service account that has an association, Amazon EKS sets environment variables in the containers of the pod. The environment variables configure the Amazon Web Services SDKs, including the Command Line Interface, to use the EKS Pod Identity credentials.

Pod Identity is a simpler method than IAM roles for service accounts, as this method doesn't use OIDC identity providers. Additionally, you can configure a role for Pod Identity once, and reuse it across clusters.

", "DeleteAddon": "

Delete an Amazon EKS add-on.

When you remove the add-on, it will also be deleted from the cluster. You can always manually start an add-on on the cluster using the Kubernetes API.

", "DeleteCluster": "

Deletes the Amazon EKS cluster control plane.

If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. For more information, see Deleting a Cluster in the Amazon EKS User Guide.

If you have managed node groups or Fargate profiles attached to the cluster, you must delete them first. For more information, see DeleteNodegroup and DeleteFargateProfile.

", - "DeleteEksAnywhereSubscription": "

Deletes an expired / inactive subscription. Deleting inactive subscriptions removes them from the Amazon Web Services Management Console view and from list/describe API responses. Subscriptions can only be cancelled within 7 days of creation, and are cancelled by creating a ticket in the Amazon Web Services Support Center.

", + "DeleteEksAnywhereSubscription": "

Deletes an expired or inactive subscription. Deleting inactive subscriptions removes them from the Amazon Web Services Management Console view and from list/describe API responses. Subscriptions can only be cancelled within 7 days of creation and are cancelled by creating a ticket in the Amazon Web Services Support Center.

", "DeleteFargateProfile": "

Deletes an Fargate profile.

When you delete a Fargate profile, any pods running on Fargate that were created with the profile are deleted. If those pods match another Fargate profile, then they are scheduled on Fargate with that profile. If they no longer match any Fargate profiles, then they are not scheduled on Fargate and they may remain in a pending state.

Only one Fargate profile in a cluster can be in the DELETING status at a time. You must wait for a Fargate profile to finish deleting before you can delete any other profiles in that cluster.

", "DeleteNodegroup": "

Deletes an Amazon EKS node group for a cluster.

", + "DeletePodIdentityAssociation": "

Deletes a EKS Pod Identity association.

The temporary Amazon Web Services credentials from the previous IAM role session might still be valid until the session expiry. If you need to immediately revoke the temporary session credentials, then go to the role in the IAM console.

", "DeregisterCluster": "

Deregisters a connected cluster to remove it from the Amazon EKS control plane.

", "DescribeAddon": "

Describes an Amazon EKS add-on.

", "DescribeAddonConfiguration": "

Returns configuration options.

", @@ -23,6 +25,7 @@ "DescribeFargateProfile": "

Returns descriptive information about an Fargate profile.

", "DescribeIdentityProviderConfig": "

Returns descriptive information about an identity provider configuration.

", "DescribeNodegroup": "

Returns descriptive information about an Amazon EKS node group.

", + "DescribePodIdentityAssociation": "

Returns descriptive information about an EKS Pod Identity association.

This action requires the ID of the association. You can get the ID from the response to the CreatePodIdentityAssocation for newly created associations. Or, you can list the IDs for associations with ListPodIdentityAssociations and filter the list by namespace or service account.

", "DescribeUpdate": "

Returns descriptive information about an update against your Amazon EKS cluster or associated managed node group or Amazon EKS add-on.

When the status of the update is Succeeded, the update is complete. If an update fails, the status is Failed, and an error detail explains the reason for the failure.

", "DisassociateIdentityProviderConfig": "

Disassociates an identity provider configuration from a cluster. If you disassociate an identity provider from your cluster, users included in the provider can no longer access the cluster. However, you can still access the cluster with IAM principals.

", "ListAddons": "

Lists the installed add-ons.

", @@ -31,17 +34,19 @@ "ListFargateProfiles": "

Lists the Fargate profiles associated with the specified cluster in your Amazon Web Services account in the specified Region.

", "ListIdentityProviderConfigs": "

A list of identity provider configurations.

", "ListNodegroups": "

Lists the Amazon EKS managed node groups associated with the specified cluster in your Amazon Web Services account in the specified Region. Self-managed node groups are not listed.

", + "ListPodIdentityAssociations": "

List the EKS Pod Identity associations in a cluster. You can filter the list by the namespace that the association is in or the service account that the association uses.

", "ListTagsForResource": "

List the tags for an Amazon EKS resource.

", "ListUpdates": "

Lists the updates associated with an Amazon EKS cluster or managed node group in your Amazon Web Services account, in the specified Region.

", "RegisterCluster": "

Connects a Kubernetes cluster to the Amazon EKS control plane.

Any Kubernetes cluster can be connected to the Amazon EKS control plane to view current information about the cluster and its nodes.

Cluster connection requires two steps. First, send a RegisterClusterRequest to add it to the Amazon EKS control plane.

Second, a Manifest containing the activationID and activationCode must be applied to the Kubernetes cluster through it's native provider to provide visibility.

After the Manifest is updated and applied, then the connected cluster is visible to the Amazon EKS control plane. If the Manifest is not applied within three days, then the connected cluster will no longer be visible and must be deregistered. See DeregisterCluster.

", "TagResource": "

Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they are not changed. When a resource is deleted, the tags associated with that resource are deleted as well. Tags that you create for Amazon EKS resources do not propagate to any other resources associated with the cluster. For example, if you tag a cluster with this operation, that tag does not automatically propagate to the subnets and nodes associated with the cluster.

", "UntagResource": "

Deletes specified tags from a resource.

", "UpdateAddon": "

Updates an Amazon EKS add-on.

", - "UpdateClusterConfig": "

Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with the DescribeUpdate API operation.

You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster Control Plane Logs in the Amazon EKS User Guide .

CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see CloudWatch Pricing.

You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see Amazon EKS cluster endpoint access control in the Amazon EKS User Guide .

You can't update the subnets or security group IDs for an existing cluster.

Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active.

", + "UpdateClusterConfig": "

Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with the DescribeUpdate API operation.

You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see Amazon EKS Cluster Control Plane Logs in the Amazon EKS User Guide .

CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see CloudWatch Pricing.

You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see Amazon EKS cluster endpoint access control in the Amazon EKS User Guide .

You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html in the Amazon EKS User Guide .

Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active.

", "UpdateClusterVersion": "

Updates an Amazon EKS cluster to the specified Kubernetes version. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with the DescribeUpdate API operation.

Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active.

If your cluster has managed node groups attached to it, all of your node groups’ Kubernetes versions must match the cluster’s Kubernetes version in order to update the cluster to a new Kubernetes version.

", "UpdateEksAnywhereSubscription": "

Update an EKS Anywhere Subscription. Only auto renewal and tags can be updated after subscription creation.

", "UpdateNodegroupConfig": "

Updates an Amazon EKS managed node group configuration. Your node group continues to function during the update. The response output includes an update ID that you can use to track the status of your node group update with the DescribeUpdate API operation. Currently you can update the Kubernetes labels for a node group or the scaling configuration.

", - "UpdateNodegroupVersion": "

Updates the Kubernetes version or AMI version of an Amazon EKS managed node group.

You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template.

If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see Amazon EKS optimized Amazon Linux AMI versions in the Amazon EKS User Guide. For information about Windows versions, see Amazon EKS optimized Windows AMI versions in the Amazon EKS User Guide.

You cannot roll back a node group to an earlier Kubernetes version or AMI version.

When a node in a managed node group is terminated due to a scaling action or update, the pods in that node are drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a pod disruption budget issue.

" + "UpdateNodegroupVersion": "

Updates the Kubernetes version or AMI version of an Amazon EKS managed node group.

You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template.

If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see Amazon EKS optimized Amazon Linux AMI versions in the Amazon EKS User Guide. For information about Windows versions, see Amazon EKS optimized Windows AMI versions in the Amazon EKS User Guide.

You cannot roll back a node group to an earlier Kubernetes version or AMI version.

When a node in a managed node group is terminated due to a scaling action or update, the pods in that node are drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a pod disruption budget issue.

", + "UpdatePodIdentityAssociation": "

Updates a EKS Pod Identity association. Only the IAM role can be changed; an association can't be moved between clusters, namespaces, or service accounts. If you need to edit the namespace or service account, you need to remove the association and then create a new association with your desired settings.

" }, "shapes": { "AMITypes": { @@ -353,6 +358,16 @@ "refs": { } }, + "CreatePodIdentityAssociationRequest": { + "base": null, + "refs": { + } + }, + "CreatePodIdentityAssociationResponse": { + "base": null, + "refs": { + } + }, "DeleteAddonRequest": { "base": null, "refs": { @@ -403,6 +418,16 @@ "refs": { } }, + "DeletePodIdentityAssociationRequest": { + "base": null, + "refs": { + } + }, + "DeletePodIdentityAssociationResponse": { + "base": null, + "refs": { + } + }, "DeregisterClusterRequest": { "base": null, "refs": { @@ -499,6 +524,16 @@ "refs": { } }, + "DescribePodIdentityAssociationRequest": { + "base": null, + "refs": { + } + }, + "DescribePodIdentityAssociationResponse": { + "base": null, + "refs": { + } + }, "DescribeUpdateRequest": { "base": null, "refs": { @@ -570,7 +605,7 @@ "EksAnywhereSubscriptionTermUnit": { "base": null, "refs": { - "EksAnywhereSubscriptionTerm$unit": "

The term unit of the subscription. Valid value is MONTHS.

" + "EksAnywhereSubscriptionTerm$unit": "

The term unit of the subscription. Valid value is MONTHS.

" } }, "EncryptionConfig": { @@ -679,8 +714,8 @@ "Integer": { "base": null, "refs": { - "CreateEksAnywhereSubscriptionRequest$licenseQuantity": "

The number of licenses to purchase with the subscription. Valid values are between 1 and 1000. This value cannot be changed after creating the subscription.

", - "EksAnywhereSubscription$licenseQuantity": "

The number of licenses included in a subscription. Valid values are between 1 and 1000.

", + "CreateEksAnywhereSubscriptionRequest$licenseQuantity": "

The number of licenses to purchase with the subscription. Valid values are between 1 and 100. This value can't be changed after creating the subscription.

", + "EksAnywhereSubscription$licenseQuantity": "

The number of licenses included in a subscription. Valid values are between 1 and 100.

", "EksAnywhereSubscriptionTerm$duration": "

The duration of the subscription term. Valid values are 12 and 36, indicating a 12 month or 36 month subscription.

" } }, @@ -823,6 +858,22 @@ "refs": { } }, + "ListPodIdentityAssociationsMaxResults": { + "base": null, + "refs": { + "ListPodIdentityAssociationsRequest$maxResults": "

The maximum number of EKS Pod Identity association results returned by ListPodIdentityAssociations in paginated output. When you use this parameter, ListPodIdentityAssociations returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListPodIdentityAssociations request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListPodIdentityAssociations returns up to 100 results and a nextToken value if applicable.

" + } + }, + "ListPodIdentityAssociationsRequest": { + "base": null, + "refs": { + } + }, + "ListPodIdentityAssociationsResponse": { + "base": null, + "refs": { + } + }, "ListTagsForResourceRequest": { "base": null, "refs": { @@ -983,6 +1034,27 @@ "NodegroupUpdateConfig$maxUnavailablePercentage": "

The maximum percentage of nodes unavailable during a version update. This percentage of nodes will be updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value.

" } }, + "PodIdentityAssociation": { + "base": "

Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that 7EC2l instance profiles provide credentials to Amazon EC2 instances.

", + "refs": { + "CreatePodIdentityAssociationResponse$association": "

The full description of your new association.

The description includes an ID for the association. Use the ID of the association in further actions to manage the association.

", + "DeletePodIdentityAssociationResponse$association": "

The full description of the EKS Pod Identity association that was deleted.

", + "DescribePodIdentityAssociationResponse$association": "

The full description of the EKS Pod Identity association.

", + "UpdatePodIdentityAssociationResponse$association": "

The full description of the EKS Pod Identity association that was updated.

" + } + }, + "PodIdentityAssociationSummaries": { + "base": null, + "refs": { + "ListPodIdentityAssociationsResponse$associations": "

The list of summarized descriptions of the associations that are in the cluster and match any filters that you provided.

Each summary is simplified by removing these fields compared to the full PodIdentityAssociation :

" + } + }, + "PodIdentityAssociationSummary": { + "base": "

The summarized description of the association.

Each summary is simplified by removing these fields compared to the full PodIdentityAssociation :

", + "refs": { + "PodIdentityAssociationSummaries$member": null + } + }, "Provider": { "base": "

Identifies the Key Management Service (KMS) key used to encrypt the secrets.

", "refs": { @@ -1053,7 +1125,7 @@ "String": { "base": null, "refs": { - "AccessDeniedException$message": null, + "AccessDeniedException$message": "

You do not have sufficient access to perform this action.

", "Addon$addonName": "

The name of the add-on.

", "Addon$addonVersion": "

The version of the add-on.

", "Addon$addonArn": "

The Amazon Resource Name (ARN) of the add-on.

", @@ -1072,13 +1144,13 @@ "AssociateIdentityProviderConfigRequest$clusterName": "

The name of the cluster to associate the configuration to.

", "AssociateIdentityProviderConfigRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "AutoScalingGroup$name": "

The name of the Auto Scaling group associated with an Amazon EKS managed node group.

", - "BadRequestException$message": null, + "BadRequestException$message": "

This exception is thrown if the request contains a semantic error. The precise meaning will depend on the API, and will be documented in the error message.

", "Certificate$data": "

The Base64-encoded certificate data required to communicate with your cluster. Add this to the certificate-authority-data section of the kubeconfig file for your cluster.

", "ClientException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "ClientException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", - "ClientException$addonName": null, + "ClientException$addonName": "

The Amazon EKS add-on name associated with the exception.

", "ClientException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "ClientException$message": null, + "ClientException$message": "

These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an IAM principal that doesn't have permissions to use the action or resource or specifying an identifier that is not valid.

", "Cluster$name": "

The name of the cluster.

", "Cluster$arn": "

The Amazon Resource Name (ARN) of the cluster.

", "Cluster$version": "

The Kubernetes server version for the cluster.

", @@ -1114,6 +1186,11 @@ "CreateNodegroupRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "CreateNodegroupRequest$version": "

The Kubernetes version to use for your managed nodes. By default, the Kubernetes version of the cluster is used, and this is the only accepted specified value. If you specify launchTemplate, and your launch template uses a custom AMI, then don't specify version, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see Launch template support in the Amazon EKS User Guide.

", "CreateNodegroupRequest$releaseVersion": "

The AMI version of the Amazon EKS optimized AMI to use with your node group. By default, the latest available AMI version for the node group's current Kubernetes version is used. For information about Linux versions, see Amazon EKS optimized Amazon Linux AMI versions in the Amazon EKS User Guide. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see Amazon EKS optimized Windows AMI versions in the Amazon EKS User Guide.

If you specify launchTemplate, and your launch template uses a custom AMI, then don't specify releaseVersion, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see Launch template support in the Amazon EKS User Guide.

", + "CreatePodIdentityAssociationRequest$clusterName": "

The name of the cluster to create the association in.

", + "CreatePodIdentityAssociationRequest$namespace": "

The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.

", + "CreatePodIdentityAssociationRequest$serviceAccount": "

The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

", + "CreatePodIdentityAssociationRequest$roleArn": "

The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.

", + "CreatePodIdentityAssociationRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "DeleteAddonRequest$addonName": "

The name of the add-on. The name must match one of the names returned by ListAddons .

", "DeleteClusterRequest$name": "

The name of the cluster to delete.

", "DeleteEksAnywhereSubscriptionRequest$id": "

The ID of the subscription.

", @@ -1121,6 +1198,8 @@ "DeleteFargateProfileRequest$fargateProfileName": "

The name of the Fargate profile to delete.

", "DeleteNodegroupRequest$clusterName": "

The name of the Amazon EKS cluster that is associated with your node group.

", "DeleteNodegroupRequest$nodegroupName": "

The name of the node group to delete.

", + "DeletePodIdentityAssociationRequest$clusterName": "

The cluster name that

", + "DeletePodIdentityAssociationRequest$associationId": "

The ID of the association to be deleted.

", "DeregisterClusterRequest$name": "

The name of the connected cluster to deregister.

", "DescribeAddonConfigurationRequest$addonName": "

The name of the add-on. The name must match one of the names that DescribeAddonVersions returns.

", "DescribeAddonConfigurationRequest$addonVersion": "

The version of the add-on. The version must match one of the versions returned by DescribeAddonVersions .

", @@ -1131,7 +1210,7 @@ "DescribeAddonVersionsRequest$kubernetesVersion": "

The Kubernetes versions that you can use the add-on with.

", "DescribeAddonVersionsRequest$nextToken": "

The nextToken value returned from a previous paginated DescribeAddonVersionsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", "DescribeAddonVersionsRequest$addonName": "

The name of the add-on. The name must match one of the names returned by ListAddons .

", - "DescribeAddonVersionsResponse$nextToken": "

The nextToken value returned from a previous paginated DescribeAddonVersionsResponse where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", + "DescribeAddonVersionsResponse$nextToken": "

The nextToken value to include in a future DescribeAddonVersions request. When the results of a DescribeAddonVersions request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", "DescribeClusterRequest$name": "

The name of the cluster to describe.

", "DescribeEksAnywhereSubscriptionRequest$id": "

The ID of the subscription.

", "DescribeFargateProfileRequest$clusterName": "

The name of the Amazon EKS cluster associated with the Fargate profile.

", @@ -1139,6 +1218,8 @@ "DescribeIdentityProviderConfigRequest$clusterName": "

The cluster name that the identity provider configuration is associated to.

", "DescribeNodegroupRequest$clusterName": "

The name of the Amazon EKS cluster associated with the node group.

", "DescribeNodegroupRequest$nodegroupName": "

The name of the node group to describe.

", + "DescribePodIdentityAssociationRequest$clusterName": "

The name of the cluster that the association is in.

", + "DescribePodIdentityAssociationRequest$associationId": "

The ID of the association that you want the description of.

", "DescribeUpdateRequest$name": "

The name of the Amazon EKS cluster associated with the update.

", "DescribeUpdateRequest$updateId": "

The ID of the update to describe.

", "DescribeUpdateRequest$nodegroupName": "

The name of the Amazon EKS node group associated with the update. This parameter is required if the update is a node group update.

", @@ -1162,14 +1243,14 @@ "InvalidParameterException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "InvalidParameterException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", "InvalidParameterException$fargateProfileName": "

The Fargate profile associated with the exception.

", - "InvalidParameterException$addonName": null, + "InvalidParameterException$addonName": "

The specified parameter for the add-on name is invalid. Review the available parameters for the API request

", "InvalidParameterException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "InvalidParameterException$message": null, + "InvalidParameterException$message": "

The specified parameter is invalid. Review the available parameters for the API request.

", "InvalidRequestException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "InvalidRequestException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", - "InvalidRequestException$addonName": null, + "InvalidRequestException$addonName": "

The request is invalid given the state of the add-on name. Check the state of the cluster and the associated operations.

", "InvalidRequestException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "InvalidRequestException$message": null, + "InvalidRequestException$message": "

The Amazon EKS add-on name associated with the exception.

", "Issue$message": "

The error message associated with the issue.

", "KubernetesNetworkConfigRequest$serviceIpv4Cidr": "

Don't specify a value if you select ipv6 for ipFamily. The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. The block must meet the following requirements:

You can only specify a custom CIDR block when you create a cluster and can't change this value once the cluster is created.

", "KubernetesNetworkConfigResponse$serviceIpv4Cidr": "

The CIDR block that Kubernetes pod and service IP addresses are assigned from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a subnet that the node is in. If you didn't specify a CIDR block when you created the cluster, then Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. If this was specified, then it was specified when the cluster was created and it can't be changed.

", @@ -1178,20 +1259,25 @@ "LaunchTemplateSpecification$version": "

The version number of the launch template to use. If no version is specified, then the template's default version is used.

", "LaunchTemplateSpecification$id": "

The ID of the launch template.

You must specify either the launch template ID or the launch template name in the request, but not both.

", "ListAddonsRequest$nextToken": "

The nextToken value returned from a previous paginated ListAddonsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", - "ListAddonsResponse$nextToken": "

The nextToken value returned from a previous paginated ListAddonsResponse where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", + "ListAddonsResponse$nextToken": "

The nextToken value to include in a future ListAddons request. When the results of a ListAddons request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", "ListClustersRequest$nextToken": "

The nextToken value returned from a previous paginated ListClusters request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", "ListClustersResponse$nextToken": "

The nextToken value to include in a future ListClusters request. When the results of a ListClusters request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", - "ListEksAnywhereSubscriptionsRequest$nextToken": "

The nextToken value to include in a future ListEksAnywhereSubscriptions request. When the results of a ListEksAnywhereSubscriptions request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", + "ListEksAnywhereSubscriptionsRequest$nextToken": "

The nextToken value returned from a previous paginated ListEksAnywhereSubscriptions request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

", "ListEksAnywhereSubscriptionsResponse$nextToken": "

The nextToken value to include in a future ListEksAnywhereSubscriptions request. When the results of a ListEksAnywhereSubscriptions request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", "ListFargateProfilesRequest$clusterName": "

The name of the Amazon EKS cluster that you would like to list Fargate profiles in.

", "ListFargateProfilesRequest$nextToken": "

The nextToken value returned from a previous paginated ListFargateProfiles request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

", "ListFargateProfilesResponse$nextToken": "

The nextToken value to include in a future ListFargateProfiles request. When the results of a ListFargateProfiles request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", "ListIdentityProviderConfigsRequest$clusterName": "

The cluster name that you want to list identity provider configurations for.

", "ListIdentityProviderConfigsRequest$nextToken": "

The nextToken value returned from a previous paginated IdentityProviderConfigsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

", - "ListIdentityProviderConfigsResponse$nextToken": "

The nextToken value returned from a previous paginated ListIdentityProviderConfigsResponse where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

", + "ListIdentityProviderConfigsResponse$nextToken": "

The nextToken value to include in a future ListIdentityProviderConfigsResponse request. When the results of a ListIdentityProviderConfigsResponse request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", "ListNodegroupsRequest$clusterName": "

The name of the Amazon EKS cluster that you would like to list node groups in.

", "ListNodegroupsRequest$nextToken": "

The nextToken value returned from a previous paginated ListNodegroups request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

", "ListNodegroupsResponse$nextToken": "

The nextToken value to include in a future ListNodegroups request. When the results of a ListNodegroups request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

", + "ListPodIdentityAssociationsRequest$clusterName": "

The name of the cluster that the associations are in.

", + "ListPodIdentityAssociationsRequest$namespace": "

The name of the Kubernetes namespace inside the cluster that the associations are in.

", + "ListPodIdentityAssociationsRequest$serviceAccount": "

The name of the Kubernetes service account that the associations use.

", + "ListPodIdentityAssociationsRequest$nextToken": "

The nextToken value returned from a previous paginated ListUpdates request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", + "ListPodIdentityAssociationsResponse$nextToken": "

The nextToken value to include in a future ListPodIdentityAssociations request. When the results of a ListPodIdentityAssociations request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return.

This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.

", "ListTagsForResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. Currently, the supported resources are Amazon EKS clusters and managed node groups.

", "ListUpdatesRequest$name": "

The name of the Amazon EKS cluster to list updates for.

", "ListUpdatesRequest$nodegroupName": "

The name of the Amazon EKS managed node group to list updates for.

", @@ -1207,7 +1293,7 @@ "Nodegroup$releaseVersion": "

If the node group was deployed using a launch template with a custom AMI, then this is the AMI ID that was specified in the launch template. For node groups that weren't deployed using a launch template, this is the version of the Amazon EKS optimized AMI that the node group was deployed with.

", "Nodegroup$nodeRole": "

The IAM role associated with your node group. The Amazon EKS node kubelet daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies.

", "NodegroupResources$remoteAccessSecurityGroup": "

The remote access security group associated with the node group. This security group controls SSH access to the nodes.

", - "NotFoundException$message": null, + "NotFoundException$message": "

A service resource associated with the request could not be found. Clients should not retry such requests.

", "OIDC$issuer": "

The issuer URL for the OIDC identity provider.

", "OidcIdentityProviderConfig$identityProviderConfigName": "

The name of the configuration.

", "OidcIdentityProviderConfig$identityProviderConfigArn": "

The ARN of the configuration.

", @@ -1227,33 +1313,44 @@ "OidcIdentityProviderConfigRequest$groupsPrefix": "

The prefix that is prepended to group claims to prevent clashes with existing names (such as system: groups). For example, the value oidc: will create group names like oidc:engineering and oidc:infra.

", "OutpostConfigRequest$controlPlaneInstanceType": "

The Amazon EC2 instance type that you want to use for your local Amazon EKS cluster on Outposts. Choose an instance type based on the number of nodes that your cluster will have. For more information, see Capacity considerations in the Amazon EKS User Guide.

The instance type that you specify is used for all Kubernetes control plane instances. The instance type can't be changed after cluster creation. The control plane is not automatically scaled by Amazon EKS.

", "OutpostConfigResponse$controlPlaneInstanceType": "

The Amazon EC2 instance type used for the control plane. The instance type is the same for all control plane instances.

", + "PodIdentityAssociation$clusterName": "

The name of the cluster that the association is in.

", + "PodIdentityAssociation$namespace": "

The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.

", + "PodIdentityAssociation$serviceAccount": "

The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

", + "PodIdentityAssociation$roleArn": "

The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.

", + "PodIdentityAssociation$associationArn": "

The Amazon Resource Name (ARN) of the association.

", + "PodIdentityAssociation$associationId": "

The ID of the association.

", + "PodIdentityAssociationSummary$clusterName": "

The name of the cluster that the association is in.

", + "PodIdentityAssociationSummary$namespace": "

The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.

", + "PodIdentityAssociationSummary$serviceAccount": "

The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.

", + "PodIdentityAssociationSummary$associationArn": "

The Amazon Resource Name (ARN) of the association.

", + "PodIdentityAssociationSummary$associationId": "

The ID of the association.

", "Provider$keyArn": "

Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric and created in the same Amazon Web Services Region as the cluster. If the KMS key was created in a different account, the IAM principal must have access to the KMS key. For more information, see Allowing users in other accounts to use a KMS key in the Key Management Service Developer Guide.

", "RegisterClusterRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "RemoteAccessConfig$ec2SshKey": "

The Amazon EC2 SSH key name that provides access for SSH communication with the nodes in the managed node group. For more information, see Amazon EC2 key pairs and Linux instances in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For Windows, an Amazon EC2 SSH key is used to obtain the RDP password. For more information, see Amazon EC2 key pairs and Windows instances in the Amazon Elastic Compute Cloud User Guide for Windows Instances.

", "ResourceInUseException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "ResourceInUseException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", - "ResourceInUseException$addonName": null, - "ResourceInUseException$message": null, + "ResourceInUseException$addonName": "

The specified add-on name is in use.

", + "ResourceInUseException$message": "

The Amazon EKS message associated with the exception.

", "ResourceLimitExceededException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "ResourceLimitExceededException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", "ResourceLimitExceededException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "ResourceLimitExceededException$message": null, + "ResourceLimitExceededException$message": "

The Amazon EKS message associated with the exception.

", "ResourceNotFoundException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "ResourceNotFoundException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", "ResourceNotFoundException$fargateProfileName": "

The Fargate profile associated with the exception.

", - "ResourceNotFoundException$addonName": null, + "ResourceNotFoundException$addonName": "

The Amazon EKS add-on name associated with the exception.

", "ResourceNotFoundException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "ResourceNotFoundException$message": null, - "ResourcePropagationDelayException$message": null, + "ResourceNotFoundException$message": "

The Amazon EKS message associated with the exception.

", + "ResourcePropagationDelayException$message": "

Required resources (such as service-linked roles) were created and are still propagating. Retry later.

", "ServerException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "ServerException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", - "ServerException$addonName": null, + "ServerException$addonName": "

The Amazon EKS add-on name associated with the exception.

", "ServerException$subscriptionId": "

The Amazon EKS subscription ID with the exception.

", - "ServerException$message": null, - "ServiceUnavailableException$message": null, + "ServerException$message": "

These errors are usually caused by a server-side issue.

", + "ServiceUnavailableException$message": "

The request has failed due to a temporary failure of the server.

", "StringList$member": null, "TagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, the supported resources are Amazon EKS clusters and managed node groups.

", - "UnsupportedAvailabilityZoneException$message": null, + "UnsupportedAvailabilityZoneException$message": "

At least one of your specified cluster subnets is in an Availability Zone that does not support Amazon EKS. The exception output specifies the supported Availability Zones for your account, from which you can choose subnets for your cluster.

", "UnsupportedAvailabilityZoneException$clusterName": "

The Amazon EKS cluster associated with the exception.

", "UnsupportedAvailabilityZoneException$nodegroupName": "

The Amazon EKS managed node group associated with the exception.

", "UntagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the resource from which to delete tags. Currently, the supported resources are Amazon EKS clusters and managed node groups.

", @@ -1267,7 +1364,7 @@ "UpdateClusterVersionRequest$name": "

The name of the Amazon EKS cluster to update.

", "UpdateClusterVersionRequest$version": "

The desired Kubernetes version following a successful update.

", "UpdateClusterVersionRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", - "UpdateEksAnywhereSubscriptionRequest$id": "

", + "UpdateEksAnywhereSubscriptionRequest$id": "

The ID of the subscription.

", "UpdateEksAnywhereSubscriptionRequest$clientRequestToken": "

Unique, case-sensitive identifier to ensure the idempotency of the request.

", "UpdateNodegroupConfigRequest$clusterName": "

The name of the Amazon EKS cluster that the managed node group resides in.

", "UpdateNodegroupConfigRequest$nodegroupName": "

The name of the managed node group to update.

", @@ -1278,6 +1375,10 @@ "UpdateNodegroupVersionRequest$releaseVersion": "

The AMI version of the Amazon EKS optimized AMI to use for the update. By default, the latest available AMI version for the node group's Kubernetes version is used. For information about Linux versions, see Amazon EKS optimized Amazon Linux AMI versions in the Amazon EKS User Guide. Amazon EKS managed node groups support the November 2022 and later releases of the Windows AMIs. For information about Windows versions, see Amazon EKS optimized Windows AMI versions in the Amazon EKS User Guide.

If you specify launchTemplate, and your launch template uses a custom AMI, then don't specify releaseVersion, or the node group update will fail. For more information about using launch templates with Amazon EKS, see Launch template support in the Amazon EKS User Guide.

", "UpdateNodegroupVersionRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "UpdateParam$value": "

The value of the keys submitted as part of an update request.

", + "UpdatePodIdentityAssociationRequest$clusterName": "

The name of the cluster that you want to update the association in.

", + "UpdatePodIdentityAssociationRequest$associationId": "

The ID of the association to be updated.

", + "UpdatePodIdentityAssociationRequest$roleArn": "

The new IAM role to change the

", + "UpdatePodIdentityAssociationRequest$clientRequestToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", "VpcConfigResponse$clusterSecurityGroupId": "

The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication.

", "VpcConfigResponse$vpcId": "

The VPC associated with your cluster.

", "labelsKeyList$member": null @@ -1296,7 +1397,7 @@ "DescribeAddonVersionsRequest$types": "

The type of the add-on. For valid types, don't specify a value for this property.

", "DescribeAddonVersionsRequest$publishers": "

The publisher of the add-on. For valid publishers, don't specify a value for this property.

", "DescribeAddonVersionsRequest$owners": "

The owner of the add-on. For valid owners, don't specify a value for this property.

", - "EksAnywhereSubscription$licenseArns": "

License Manager License ARNs associated with the subscription.

", + "EksAnywhereSubscription$licenseArns": "

Amazon Web Services License Manager ARN associated with the subscription.

", "EncryptionConfig$resources": "

Specifies the resources to be encrypted. The only supported value is \"secrets\".

", "ErrorDetail$resourceIds": "

An optional field that contains the resource IDs associated with the error.

", "FargateProfile$subnets": "

The IDs of subnets to launch pods into.

", @@ -1321,7 +1422,7 @@ } }, "TagKey": { - "base": null, + "base": "

One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.

", "refs": { "TagKeyList$member": null, "TagMap$key": null @@ -1334,7 +1435,7 @@ } }, "TagMap": { - "base": null, + "base": "

The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.

The following basic restrictions apply to tags:

", "refs": { "Addon$tags": "

The metadata that you apply to the add-on to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Add-on tags do not propagate to any other resources associated with the cluster.

", "AssociateIdentityProviderConfigRequest$tags": "

The metadata to apply to the configuration to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

", @@ -1342,14 +1443,16 @@ "Cluster$tags": "

The metadata that you apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Cluster tags do not propagate to any other resources associated with the cluster.

", "CreateAddonRequest$tags": "

The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

", "CreateClusterRequest$tags": "

The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

", - "CreateEksAnywhereSubscriptionRequest$tags": "

The metadata for a subscription to assist with categorization and organization. Each tag consists of a key and an optional value. Subscription tags do not propagate to any other resources associated with the subscription.

", + "CreateEksAnywhereSubscriptionRequest$tags": "

The metadata for a subscription to assist with categorization and organization. Each tag consists of a key and an optional value. Subscription tags don't propagate to any other resources associated with the subscription.

", "CreateFargateProfileRequest$tags": "

The metadata to apply to the Fargate profile to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Fargate profile tags do not propagate to any other resources associated with the Fargate profile, such as the pods that are scheduled with it.

", "CreateNodegroupRequest$tags": "

The metadata to apply to the node group to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Node group tags do not propagate to any other resources associated with the node group, such as the Amazon EC2 instances or subnets.

", + "CreatePodIdentityAssociationRequest$tags": "

The metadata that you apply to a resource to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

The following basic restrictions apply to tags:

", "EksAnywhereSubscription$tags": "

The metadata for a subscription to assist with categorization and organization. Each tag consists of a key and an optional value. Subscription tags do not propagate to any other resources associated with the subscription.

", "FargateProfile$tags": "

The metadata applied to the Fargate profile to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Fargate profile tags do not propagate to any other resources associated with the Fargate profile, such as the pods that are scheduled with it.

", "ListTagsForResourceResponse$tags": "

The tags for the resource.

", "Nodegroup$tags": "

The metadata applied to the node group to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Node group tags do not propagate to any other resources associated with the node group, such as the Amazon EC2 instances or subnets.

", "OidcIdentityProviderConfig$tags": "

The metadata to apply to the provider configuration to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

", + "PodIdentityAssociation$tags": "

The metadata that you apply to a resource to assist with categorization and organization. Each tag consists of a key and an optional value. You define both.

The following basic restrictions apply to tags:

", "RegisterClusterRequest$tags": "

The metadata that you apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Cluster tags do not propagate to any other resources associated with the cluster.

", "TagResourceRequest$tags": "

The tags to add to the resource. A tag is an array of key-value pairs.

" } @@ -1365,7 +1468,7 @@ } }, "TagValue": { - "base": null, + "base": "

The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).

", "refs": { "TagMap$value": null } @@ -1395,6 +1498,8 @@ "FargateProfile$createdAt": "

The Unix epoch timestamp in seconds for when the Fargate profile was created.

", "Nodegroup$createdAt": "

The Unix epoch timestamp in seconds for when the managed node group was created.

", "Nodegroup$modifiedAt": "

The Unix epoch timestamp in seconds for when the managed node group was last modified.

", + "PodIdentityAssociation$createdAt": "

The timestamp that the association was created at.

", + "PodIdentityAssociation$modifiedAt": "

The most recent timestamp that the association was modified at

", "Update$createdAt": "

The Unix epoch timestamp in seconds for when the update was created.

" } }, @@ -1511,6 +1616,16 @@ "Update$params": "

A key-value map that contains the parameters associated with the update.

" } }, + "UpdatePodIdentityAssociationRequest": { + "base": null, + "refs": { + } + }, + "UpdatePodIdentityAssociationResponse": { + "base": null, + "refs": { + } + }, "UpdateStatus": { "base": null, "refs": { diff --git a/apis/eks/2017-11-01/paginators-1.json b/apis/eks/2017-11-01/paginators-1.json index 025ef9c5a41..fd4610d9af6 100644 --- a/apis/eks/2017-11-01/paginators-1.json +++ b/apis/eks/2017-11-01/paginators-1.json @@ -18,6 +18,12 @@ "output_token": "nextToken", "result_key": "clusters" }, + "ListEksAnywhereSubscriptions": { + "input_token": "nextToken", + "limit_key": "maxResults", + "output_token": "nextToken", + "result_key": "subscriptions" + }, "ListFargateProfiles": { "input_token": "nextToken", "limit_key": "maxResults", @@ -36,6 +42,12 @@ "output_token": "nextToken", "result_key": "nodegroups" }, + "ListPodIdentityAssociations": { + "input_token": "nextToken", + "limit_key": "maxResults", + "output_token": "nextToken", + "result_key": "associations" + }, "ListUpdates": { "input_token": "nextToken", "limit_key": "maxResults", diff --git a/apis/elasticfilesystem/2015-02-01/api-2.json b/apis/elasticfilesystem/2015-02-01/api-2.json index 2ed1bc45849..3c0b9b16e8b 100644 --- a/apis/elasticfilesystem/2015-02-01/api-2.json +++ b/apis/elasticfilesystem/2015-02-01/api-2.json @@ -1167,7 +1167,8 @@ "Value":{"shape":"FileSystemSizeValue"}, "Timestamp":{"shape":"Timestamp"}, "ValueInIA":{"shape":"FileSystemNullableSizeValue"}, - "ValueInStandard":{"shape":"FileSystemNullableSizeValue"} + "ValueInStandard":{"shape":"FileSystemNullableSizeValue"}, + "ValueInArchive":{"shape":"FileSystemNullableSizeValue"} } }, "FileSystemSizeValue":{ @@ -1269,13 +1270,14 @@ "LifecyclePolicies":{ "type":"list", "member":{"shape":"LifecyclePolicy"}, - "max":2 + "max":3 }, "LifecyclePolicy":{ "type":"structure", "members":{ "TransitionToIA":{"shape":"TransitionToIARules"}, - "TransitionToPrimaryStorageClass":{"shape":"TransitionToPrimaryStorageClassRules"} + "TransitionToPrimaryStorageClass":{"shape":"TransitionToPrimaryStorageClassRules"}, + "TransitionToArchive":{"shape":"TransitionToArchiveRules"} } }, "ListTagsForResourceRequest":{ @@ -1767,6 +1769,20 @@ "error":{"httpStatusCode":429}, "exception":true }, + "TransitionToArchiveRules":{ + "type":"string", + "enum":[ + "AFTER_1_DAY", + "AFTER_7_DAYS", + "AFTER_14_DAYS", + "AFTER_30_DAYS", + "AFTER_60_DAYS", + "AFTER_90_DAYS", + "AFTER_180_DAYS", + "AFTER_270_DAYS", + "AFTER_365_DAYS" + ] + }, "TransitionToIARules":{ "type":"string", "enum":[ @@ -1775,7 +1791,10 @@ "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", - "AFTER_1_DAY" + "AFTER_1_DAY", + "AFTER_180_DAYS", + "AFTER_270_DAYS", + "AFTER_365_DAYS" ] }, "TransitionToPrimaryStorageClassRules":{ diff --git a/apis/elasticfilesystem/2015-02-01/docs-2.json b/apis/elasticfilesystem/2015-02-01/docs-2.json index 8e036afb448..0c8f6b4d1ff 100644 --- a/apis/elasticfilesystem/2015-02-01/docs-2.json +++ b/apis/elasticfilesystem/2015-02-01/docs-2.json @@ -3,9 +3,9 @@ "service": "Amazon Elastic File System

Amazon Elastic File System (Amazon EFS) provides simple, scalable file storage for use with Amazon EC2 Linux and Mac instances in the Amazon Web Services Cloud. With Amazon EFS, storage capacity is elastic, growing and shrinking automatically as you add and remove files, so that your applications have the storage they need, when they need it. For more information, see the Amazon Elastic File System API Reference and the Amazon Elastic File System User Guide.

", "operations": { "CreateAccessPoint": "

Creates an EFS access point. An access point is an application-specific view into an EFS file system that applies an operating system user and group, and a file system path, to any file system request made through the access point. The operating system user and group override any identity information provided by the NFS client. The file system path is exposed as the access point's root directory. Applications using the access point can only access data in the application's own directory and any subdirectories. To learn more, see Mounting a file system using EFS access points.

If multiple requests to create access points on the same file system are sent in quick succession, and the file system is near the limit of 1,000 access points, you may experience a throttling response for these requests. This is to ensure that the file system does not exceed the stated access point limit.

This operation requires permissions for the elasticfilesystem:CreateAccessPoint action.

Access points can be tagged on creation. If tags are specified in the creation action, IAM performs additional authorization on the elasticfilesystem:TagResource action to verify if users have permissions to create tags. Therefore, you must grant explicit permissions to use the elasticfilesystem:TagResource action. For more information, see Granting permissions to tag resources during creation.

", - "CreateFileSystem": "

Creates a new, empty file system. The operation requires a creation token in the request that Amazon EFS uses to ensure idempotent creation (calling the operation with same creation token has no effect). If a file system does not currently exist that is owned by the caller's Amazon Web Services account with the specified creation token, this operation does the following:

Otherwise, this operation returns a FileSystemAlreadyExists error with the ID of the existing file system.

For basic use cases, you can use a randomly generated UUID for the creation token.

The idempotent operation allows you to retry a CreateFileSystem call without risk of creating an extra file system. This can happen when an initial call fails in a way that leaves it uncertain whether or not a file system was actually created. An example might be that a transport level timeout occurred or your connection was reset. As long as you use the same creation token, if the initial call had succeeded in creating a file system, the client can learn of its existence from the FileSystemAlreadyExists error.

For more information, see Creating a file system in the Amazon EFS User Guide.

The CreateFileSystem call returns while the file system's lifecycle state is still creating. You can check the file system creation status by calling the DescribeFileSystems operation, which among other things returns the file system state.

This operation accepts an optional PerformanceMode parameter that you choose for your file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. For more information, see Amazon EFS performance modes.

You can set the throughput mode for the file system using the ThroughputMode parameter.

After the file system is fully created, Amazon EFS sets its lifecycle state to available, at which point you can create one or more mount targets for the file system in your VPC. For more information, see CreateMountTarget. You mount your Amazon EFS file system on an EC2 instances in your VPC by using the mount target. For more information, see Amazon EFS: How it Works.

This operation requires permissions for the elasticfilesystem:CreateFileSystem action.

File systems can be tagged on creation. If tags are specified in the creation action, IAM performs additional authorization on the elasticfilesystem:TagResource action to verify if users have permissions to create tags. Therefore, you must grant explicit permissions to use the elasticfilesystem:TagResource action. For more information, see Granting permissions to tag resources during creation.

", - "CreateMountTarget": "

Creates a mount target for a file system. You can then mount the file system on EC2 instances by using the mount target.

You can create one mount target in each Availability Zone in your VPC. All EC2 instances in a VPC within a given Availability Zone share a single mount target for a given file system. If you have multiple subnets in an Availability Zone, you create a mount target in one of the subnets. EC2 instances do not need to be in the same subnet as the mount target in order to access their file system.

You can create only one mount target for an EFS file system using One Zone storage classes. You must create that mount target in the same Availability Zone in which the file system is located. Use the AvailabilityZoneName and AvailabiltyZoneId properties in the DescribeFileSystems response object to get this information. Use the subnetId associated with the file system's Availability Zone when creating the mount target.

For more information, see Amazon EFS: How it Works.

To create a mount target for a file system, the file system's lifecycle state must be available. For more information, see DescribeFileSystems.

In the request, provide the following:

After creating the mount target, Amazon EFS returns a response that includes, a MountTargetId and an IpAddress. You use this IP address when mounting the file system in an EC2 instance. You can also use the mount target's DNS name when mounting the file system. The EC2 instance on which you mount the file system by using the mount target can resolve the mount target's DNS name to its IP address. For more information, see How it Works: Implementation Overview.

Note that you can create mount targets for a file system in only one VPC, and there can be only one mount target per Availability Zone. That is, if the file system already has one or more mount targets created for it, the subnet specified in the request to add another mount target must meet the following requirements:

If the request satisfies the requirements, Amazon EFS does the following:

The CreateMountTarget call returns only after creating the network interface, but while the mount target state is still creating, you can check the mount target creation status by calling the DescribeMountTargets operation, which among other things returns the mount target state.

We recommend that you create a mount target in each of the Availability Zones. There are cost considerations for using a file system in an Availability Zone through a mount target created in another Availability Zone. For more information, see Amazon EFS. In addition, by always using a mount target local to the instance's Availability Zone, you eliminate a partial failure scenario. If the Availability Zone in which your mount target is created goes down, then you can't access your file system through that mount target.

This operation requires permissions for the following action on the file system:

This operation also requires permissions for the following Amazon EC2 actions:

", - "CreateReplicationConfiguration": "

Creates a replication configuration that replicates an existing EFS file system to a new, read-only file system. For more information, see Amazon EFS replication in the Amazon EFS User Guide. The replication configuration specifies the following:

The following properties are set by default:

The following properties are turned off by default:

For more information, see Amazon EFS replication in the Amazon EFS User Guide.

", + "CreateFileSystem": "

Creates a new, empty file system. The operation requires a creation token in the request that Amazon EFS uses to ensure idempotent creation (calling the operation with same creation token has no effect). If a file system does not currently exist that is owned by the caller's Amazon Web Services account with the specified creation token, this operation does the following:

Otherwise, this operation returns a FileSystemAlreadyExists error with the ID of the existing file system.

For basic use cases, you can use a randomly generated UUID for the creation token.

The idempotent operation allows you to retry a CreateFileSystem call without risk of creating an extra file system. This can happen when an initial call fails in a way that leaves it uncertain whether or not a file system was actually created. An example might be that a transport level timeout occurred or your connection was reset. As long as you use the same creation token, if the initial call had succeeded in creating a file system, the client can learn of its existence from the FileSystemAlreadyExists error.

For more information, see Creating a file system in the Amazon EFS User Guide.

The CreateFileSystem call returns while the file system's lifecycle state is still creating. You can check the file system creation status by calling the DescribeFileSystems operation, which among other things returns the file system state.

This operation accepts an optional PerformanceMode parameter that you choose for your file system. We recommend generalPurpose performance mode for all file systems. File systems using the maxIO mode is a previous generation performance type that is designed for highly parallelized workloads that can tolerate higher latencies than the General Purpose mode. Max I/O mode is not supported for One Zone file systems or file systems that use Elastic throughput.

Due to the higher per-operation latencies with Max I/O, we recommend using General Purpose performance mode for all file systems.

The performance mode can't be changed after the file system has been created. For more information, see Amazon EFS performance modes.

You can set the throughput mode for the file system using the ThroughputMode parameter.

After the file system is fully created, Amazon EFS sets its lifecycle state to available, at which point you can create one or more mount targets for the file system in your VPC. For more information, see CreateMountTarget. You mount your Amazon EFS file system on an EC2 instances in your VPC by using the mount target. For more information, see Amazon EFS: How it Works.

This operation requires permissions for the elasticfilesystem:CreateFileSystem action.

File systems can be tagged on creation. If tags are specified in the creation action, IAM performs additional authorization on the elasticfilesystem:TagResource action to verify if users have permissions to create tags. Therefore, you must grant explicit permissions to use the elasticfilesystem:TagResource action. For more information, see Granting permissions to tag resources during creation.

", + "CreateMountTarget": "

Creates a mount target for a file system. You can then mount the file system on EC2 instances by using the mount target.

You can create one mount target in each Availability Zone in your VPC. All EC2 instances in a VPC within a given Availability Zone share a single mount target for a given file system. If you have multiple subnets in an Availability Zone, you create a mount target in one of the subnets. EC2 instances do not need to be in the same subnet as the mount target in order to access their file system.

You can create only one mount target for a One Zone file system. You must create that mount target in the same Availability Zone in which the file system is located. Use the AvailabilityZoneName and AvailabiltyZoneId properties in the DescribeFileSystems response object to get this information. Use the subnetId associated with the file system's Availability Zone when creating the mount target.

For more information, see Amazon EFS: How it Works.

To create a mount target for a file system, the file system's lifecycle state must be available. For more information, see DescribeFileSystems.

In the request, provide the following:

After creating the mount target, Amazon EFS returns a response that includes, a MountTargetId and an IpAddress. You use this IP address when mounting the file system in an EC2 instance. You can also use the mount target's DNS name when mounting the file system. The EC2 instance on which you mount the file system by using the mount target can resolve the mount target's DNS name to its IP address. For more information, see How it Works: Implementation Overview.

Note that you can create mount targets for a file system in only one VPC, and there can be only one mount target per Availability Zone. That is, if the file system already has one or more mount targets created for it, the subnet specified in the request to add another mount target must meet the following requirements:

If the request satisfies the requirements, Amazon EFS does the following:

The CreateMountTarget call returns only after creating the network interface, but while the mount target state is still creating, you can check the mount target creation status by calling the DescribeMountTargets operation, which among other things returns the mount target state.

We recommend that you create a mount target in each of the Availability Zones. There are cost considerations for using a file system in an Availability Zone through a mount target created in another Availability Zone. For more information, see Amazon EFS. In addition, by always using a mount target local to the instance's Availability Zone, you eliminate a partial failure scenario. If the Availability Zone in which your mount target is created goes down, then you can't access your file system through that mount target.

This operation requires permissions for the following action on the file system:

This operation also requires permissions for the following Amazon EC2 actions:

", + "CreateReplicationConfiguration": "

Creates a replication configuration that replicates an existing EFS file system to a new, read-only file system. For more information, see Amazon EFS replication in the Amazon EFS User Guide. The replication configuration specifies the following:

The following properties are set by default:

The following properties are turned off by default:

For more information, see Amazon EFS replication in the Amazon EFS User Guide.

", "CreateTags": "

DEPRECATED - CreateTags is deprecated and not maintained. To create tags for EFS resources, use the API action.

Creates or overwrites tags associated with a file system. Each tag is a key-value pair. If a tag key specified in the request already exists on the file system, this operation overwrites its value with the value provided in the request. If you add the Name tag to your file system, Amazon EFS returns it in the response to the DescribeFileSystems operation.

This operation requires permission for the elasticfilesystem:CreateTags action.

", "DeleteAccessPoint": "

Deletes the specified access point. After deletion is complete, new clients can no longer connect to the access points. Clients connected to the access point at the time of deletion will continue to function until they terminate their connection.

This operation requires permissions for the elasticfilesystem:DeleteAccessPoint action.

", "DeleteFileSystem": "

Deletes a file system, permanently severing access to its contents. Upon return, the file system no longer exists and you can't access any contents of the deleted file system.

You need to manually delete mount targets attached to a file system before you can delete an EFS file system. This step is performed for you when you use the Amazon Web Services console to delete a file system.

You cannot delete a file system that is part of an EFS Replication configuration. You need to delete the replication configuration first.

You can't delete a file system that is in use. That is, if the file system has any mount targets, you must first delete them. For more information, see DescribeMountTargets and DeleteMountTarget.

The DeleteFileSystem call returns while the file system state is still deleting. You can check the file system deletion status by calling the DescribeFileSystems operation, which returns a list of file systems in your account. If you pass file system ID or creation token for the deleted file system, the DescribeFileSystems returns a 404 FileSystemNotFound error.

This operation requires permissions for the elasticfilesystem:DeleteFileSystem action.

", @@ -18,7 +18,7 @@ "DescribeBackupPolicy": "

Returns the backup policy for the specified EFS file system.

", "DescribeFileSystemPolicy": "

Returns the FileSystemPolicy for the specified EFS file system.

This operation requires permissions for the elasticfilesystem:DescribeFileSystemPolicy action.

", "DescribeFileSystems": "

Returns the description of a specific Amazon EFS file system if either the file system CreationToken or the FileSystemId is provided. Otherwise, it returns descriptions of all file systems owned by the caller's Amazon Web Services account in the Amazon Web Services Region of the endpoint that you're calling.

When retrieving all file system descriptions, you can optionally specify the MaxItems parameter to limit the number of descriptions in a response. This number is automatically set to 100. If more file system descriptions remain, Amazon EFS returns a NextMarker, an opaque token, in the response. In this case, you should send a subsequent request with the Marker request parameter set to the value of NextMarker.

To retrieve a list of your file system descriptions, this operation is used in an iterative process, where DescribeFileSystems is called first without the Marker and then the operation continues to call it with the Marker parameter set to the value of the NextMarker from the previous response until the response has no NextMarker.

The order of file systems returned in the response of one DescribeFileSystems call and the order of file systems returned across the responses of a multi-call iteration is unspecified.

This operation requires permissions for the elasticfilesystem:DescribeFileSystems action.

", - "DescribeLifecycleConfiguration": "

Returns the current LifecycleConfiguration object for the specified Amazon EFS file system. EFS lifecycle management uses the LifecycleConfiguration object to identify which files to move to the EFS Infrequent Access (IA) storage class. For a file system without a LifecycleConfiguration object, the call returns an empty array in the response.

When EFS Intelligent-Tiering is enabled, TransitionToPrimaryStorageClass has a value of AFTER_1_ACCESS.

This operation requires permissions for the elasticfilesystem:DescribeLifecycleConfiguration operation.

", + "DescribeLifecycleConfiguration": "

Returns the current LifecycleConfiguration object for the specified Amazon EFS file system. Llifecycle management uses the LifecycleConfiguration object to identify when to move files between storage classes. For a file system without a LifecycleConfiguration object, the call returns an empty array in the response.

This operation requires permissions for the elasticfilesystem:DescribeLifecycleConfiguration operation.

", "DescribeMountTargetSecurityGroups": "

Returns the security groups currently in effect for a mount target. This operation requires that the network interface of the mount target has been created and the lifecycle state of the mount target is not deleted.

This operation requires permissions for the following actions:

", "DescribeMountTargets": "

Returns the descriptions of all the current mount targets, or a specific mount target, for a file system. When requesting all of the current mount targets, the order of mount targets returned in the response is unspecified.

This operation requires permissions for the elasticfilesystem:DescribeMountTargets action, on either the file system ID that you specify in FileSystemId, or on the file system of the mount target that you specify in MountTargetId.

", "DescribeReplicationConfigurations": "

Retrieves the replication configuration for a specific file system. If a file system is not specified, all of the replication configurations for the Amazon Web Services account in an Amazon Web Services Region are retrieved.

", @@ -28,7 +28,7 @@ "PutAccountPreferences": "

Use this operation to set the account preference in the current Amazon Web Services Region to use long 17 character (63 bit) or short 8 character (32 bit) resource IDs for new EFS file system and mount target resources. All existing resource IDs are not affected by any changes you make. You can set the ID preference during the opt-in period as EFS transitions to long resource IDs. For more information, see Managing Amazon EFS resource IDs.

Starting in October, 2021, you will receive an error if you try to set the account preference to use the short 8 character format resource ID. Contact Amazon Web Services support if you receive an error and must use short IDs for file system and mount target resources.

", "PutBackupPolicy": "

Updates the file system's backup policy. Use this action to start or stop automatic backups of the file system.

", "PutFileSystemPolicy": "

Applies an Amazon EFS FileSystemPolicy to an Amazon EFS file system. A file system policy is an IAM resource-based policy and can contain multiple policy statements. A file system always has exactly one file system policy, which can be the default policy or an explicit policy set or updated using this API operation. EFS file system policies have a 20,000 character limit. When an explicit policy is set, it overrides the default policy. For more information about the default file system policy, see Default EFS File System Policy.

EFS file system policies have a 20,000 character limit.

This operation requires permissions for the elasticfilesystem:PutFileSystemPolicy action.

", - "PutLifecycleConfiguration": "

Use this action to manage EFS lifecycle management and EFS Intelligent-Tiering. A LifecycleConfiguration consists of one or more LifecyclePolicy objects that define the following:

For more information, see EFS Lifecycle Management.

Each Amazon EFS file system supports one lifecycle configuration, which applies to all files in the file system. If a LifecycleConfiguration object already exists for the specified file system, a PutLifecycleConfiguration call modifies the existing configuration. A PutLifecycleConfiguration call with an empty LifecyclePolicies array in the request body deletes any existing LifecycleConfiguration and turns off lifecycle management and EFS Intelligent-Tiering for the file system.

In the request, specify the following:

This operation requires permissions for the elasticfilesystem:PutLifecycleConfiguration operation.

To apply a LifecycleConfiguration object to an encrypted file system, you need the same Key Management Service permissions as when you created the encrypted file system.

", + "PutLifecycleConfiguration": "

Use this action to manage storage of your file system. A LifecycleConfiguration consists of one or more LifecyclePolicy objects that define the following:

For more information, see Managing file system storage.

Each Amazon EFS file system supports one lifecycle configuration, which applies to all files in the file system. If a LifecycleConfiguration object already exists for the specified file system, a PutLifecycleConfiguration call modifies the existing configuration. A PutLifecycleConfiguration call with an empty LifecyclePolicies array in the request body deletes any existing LifecycleConfiguration for the file system.

In the request, specify the following:

This operation requires permissions for the elasticfilesystem:PutLifecycleConfiguration operation.

To apply a LifecycleConfiguration object to an encrypted file system, you need the same Key Management Service permissions as when you created the encrypted file system.

", "TagResource": "

Creates a tag for an EFS resource. You can create tags for EFS file systems and access points using this API operation.

This operation requires permissions for the elasticfilesystem:TagResource action.

", "UntagResource": "

Removes tags from an EFS resource. You can remove tags from EFS file systems and access points using this API operation.

This operation requires permissions for the elasticfilesystem:UntagResource action.

", "UpdateFileSystem": "

Updates the throughput mode or the amount of provisioned throughput of an existing file system.

" @@ -80,16 +80,16 @@ "AvailabilityZoneId": { "base": null, "refs": { - "FileSystemDescription$AvailabilityZoneId": "

The unique and consistent identifier of the Availability Zone in which the file system's One Zone storage classes exist. For example, use1-az1 is an Availability Zone ID for the us-east-1 Amazon Web Services Region, and it has the same location in every Amazon Web Services account.

", + "FileSystemDescription$AvailabilityZoneId": "

The unique and consistent identifier of the Availability Zone in which the file system is located, and is valid only for One Zone file systems. For example, use1-az1 is an Availability Zone ID for the us-east-1 Amazon Web Services Region, and it has the same location in every Amazon Web Services account.

", "MountTargetDescription$AvailabilityZoneId": "

The unique and consistent identifier of the Availability Zone that the mount target resides in. For example, use1-az1 is an AZ ID for the us-east-1 Region and it has the same location in every Amazon Web Services account.

" } }, "AvailabilityZoneName": { "base": null, "refs": { - "CreateFileSystemRequest$AvailabilityZoneName": "

Used to create a file system that uses One Zone storage classes. It specifies the Amazon Web Services Availability Zone in which to create the file system. Use the format us-east-1a to specify the Availability Zone. For more information about One Zone storage classes, see Using EFS storage classes in the Amazon EFS User Guide.

One Zone storage classes are not available in all Availability Zones in Amazon Web Services Regions where Amazon EFS is available.

", - "DestinationToCreate$AvailabilityZoneName": "

To create a file system that uses EFS One Zone storage, specify the name of the Availability Zone in which to create the destination file system.

", - "FileSystemDescription$AvailabilityZoneName": "

Describes the Amazon Web Services Availability Zone in which the file system is located, and is valid only for file systems using One Zone storage classes. For more information, see Using EFS storage classes in the Amazon EFS User Guide.

", + "CreateFileSystemRequest$AvailabilityZoneName": "

Used to create a One Zone file system. It specifies the Amazon Web Services Availability Zone in which to create the file system. Use the format us-east-1a to specify the Availability Zone. For more information about One Zone file systems, see Using EFS storage classes in the Amazon EFS User Guide.

One Zone file systems are not available in all Availability Zones in Amazon Web Services Regions where Amazon EFS is available.

", + "DestinationToCreate$AvailabilityZoneName": "

To create a file system that uses One Zone storage, specify the name of the Availability Zone in which to create the destination file system.

", + "FileSystemDescription$AvailabilityZoneName": "

Describes the Amazon Web Services Availability Zone in which the file system is located, and is valid only for One Zone file systems. For more information, see Using EFS storage classes in the Amazon EFS User Guide.

", "MountTargetDescription$AvailabilityZoneName": "

The name of the Availability Zone in which the mount target is located. Availability Zones are independently mapped to names for each Amazon Web Services account. For example, the Availability Zone us-east-1a for your Amazon Web Services account might not be the same location as us-east-1a for another Amazon Web Services account.

" } }, @@ -109,7 +109,7 @@ "Backup": { "base": null, "refs": { - "CreateFileSystemRequest$Backup": "

Specifies whether automatic backups are enabled on the file system that you are creating. Set the value to true to enable automatic backups. If you are creating a file system that uses One Zone storage classes, automatic backups are enabled by default. For more information, see Automatic backups in the Amazon EFS User Guide.

Default is false. However, if you specify an AvailabilityZoneName, the default is true.

Backup is not available in all Amazon Web Services Regions where Amazon EFS is available.

" + "CreateFileSystemRequest$Backup": "

Specifies whether automatic backups are enabled on the file system that you are creating. Set the value to true to enable automatic backups. If you are creating a One Zone file system, automatic backups are enabled by default. For more information, see Automatic backups in the Amazon EFS User Guide.

Default is false. However, if you specify an AvailabilityZoneName, the default is true.

Backup is not available in all Amazon Web Services Regions where Amazon EFS is available.

" } }, "BackupPolicy": { @@ -412,7 +412,7 @@ "refs": { "FileSystemDescription$FileSystemArn": "

The Amazon Resource Name (ARN) for the EFS file system, in the format arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id . Example with sample data: arn:aws:elasticfilesystem:us-west-2:1111333322228888:file-system/fs-01234567

", "ReplicationConfigurationDescription$SourceFileSystemArn": "

The Amazon Resource Name (ARN) of the current source file system in the replication configuration.

", - "ReplicationConfigurationDescription$OriginalSourceFileSystemArn": "

The Amazon Resource Name (ARN) of the original source Amazon EFS file system in the replication configuration.

" + "ReplicationConfigurationDescription$OriginalSourceFileSystemArn": "

The Amazon Resource Name (ARN) of the original source EFS file system in the replication configuration.

" } }, "FileSystemDescription": { @@ -440,7 +440,7 @@ "DeleteReplicationConfigurationRequest$SourceFileSystemId": "

The ID of the source file system in the replication configuration.

", "DeleteTagsRequest$FileSystemId": "

The ID of the file system whose tags you want to delete (String).

", "DescribeAccessPointsRequest$FileSystemId": "

(Optional) If you provide a FileSystemId, EFS returns all access points for that file system; mutually exclusive with AccessPointId.

", - "DescribeBackupPolicyRequest$FileSystemId": "

Specifies which EFS file system to retrieve the BackupPolicy for.

", + "DescribeBackupPolicyRequest$FileSystemId": "

Specifies which EFS file system for which to retrieve the BackupPolicy.

", "DescribeFileSystemPolicyRequest$FileSystemId": "

Specifies which EFS file system to retrieve the FileSystemPolicy for.

", "DescribeFileSystemsRequest$FileSystemId": "

(Optional) ID of the file system whose description you want to retrieve (String).

", "DescribeLifecycleConfigurationRequest$FileSystemId": "

The ID of the file system whose LifecycleConfiguration object you want to retrieve (String).

", @@ -478,7 +478,8 @@ "base": null, "refs": { "FileSystemSize$ValueInIA": "

The latest known metered size (in bytes) of data stored in the Infrequent Access storage class.

", - "FileSystemSize$ValueInStandard": "

The latest known metered size (in bytes) of data stored in the Standard storage class.

" + "FileSystemSize$ValueInStandard": "

The latest known metered size (in bytes) of data stored in the Standard storage class.

", + "FileSystemSize$ValueInArchive": "

The latest known metered size (in bytes) of data stored in the Archive storage class.

" } }, "FileSystemPolicyDescription": { @@ -567,11 +568,11 @@ "base": null, "refs": { "LifecycleConfigurationDescription$LifecyclePolicies": "

An array of lifecycle management policies. EFS supports a maximum of one policy per file system.

", - "PutLifecycleConfigurationRequest$LifecyclePolicies": "

An array of LifecyclePolicy objects that define the file system's LifecycleConfiguration object. A LifecycleConfiguration object informs EFS lifecycle management and EFS Intelligent-Tiering of the following:

When using the put-lifecycle-configuration CLI command or the PutLifecycleConfiguration API action, Amazon EFS requires that each LifecyclePolicy object have only a single transition. This means that in a request body, LifecyclePolicies must be structured as an array of LifecyclePolicy objects, one object for each transition, TransitionToIA, TransitionToPrimaryStorageClass. See the example requests in the following section for more information.

" + "PutLifecycleConfigurationRequest$LifecyclePolicies": "

An array of LifecyclePolicy objects that define the file system's LifecycleConfiguration object. A LifecycleConfiguration object informs EFS Lifecycle management of the following:

When using the put-lifecycle-configuration CLI command or the PutLifecycleConfiguration API action, Amazon EFS requires that each LifecyclePolicy object have only a single transition. This means that in a request body, LifecyclePolicies must be structured as an array of LifecyclePolicy objects, one object for each storage transition. See the example requests in the following section for more information.

" } }, "LifecyclePolicy": { - "base": "

Describes a policy used by EFS lifecycle management and EFS Intelligent-Tiering that specifies when to transition files into and out of the file system's Infrequent Access (IA) storage class. For more information, see EFS Intelligent‐Tiering and EFS Lifecycle Management.

When using the put-lifecycle-configuration CLI command or the PutLifecycleConfiguration API action, Amazon EFS requires that each LifecyclePolicy object have only a single transition. This means that in a request body, LifecyclePolicies must be structured as an array of LifecyclePolicy objects, one object for each transition, TransitionToIA, TransitionToPrimaryStorageClass. For more information, see the request examples in PutLifecycleConfiguration.

", + "base": "

Describes a policy used by Lifecycle management that specifies when to transition files into and out of the Infrequent Access (IA) and Archive storage classes. For more information, see Managing file system storage.

When using the put-lifecycle-configuration CLI command or the PutLifecycleConfiguration API action, Amazon EFS requires that each LifecyclePolicy object have only a single transition. This means that in a request body, LifecyclePolicies must be structured as an array of LifecyclePolicy objects, one object for each transition. For more information, see the request examples in PutLifecycleConfiguration.

", "refs": { "LifecyclePolicies$member": null } @@ -703,8 +704,8 @@ "PerformanceMode": { "base": null, "refs": { - "CreateFileSystemRequest$PerformanceMode": "

The performance mode of the file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created.

The maxIO mode is not supported on file systems using One Zone storage classes.

Default is generalPurpose.

", - "FileSystemDescription$PerformanceMode": "

The performance mode of the file system.

" + "CreateFileSystemRequest$PerformanceMode": "

The Performance mode of the file system. We recommend generalPurpose performance mode for all file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. The maxIO mode is not supported on One Zone file systems.

Due to the higher per-operation latencies with Max I/O, we recommend using General Purpose performance mode for all file systems.

Default is generalPurpose.

", + "FileSystemDescription$PerformanceMode": "

The Performance mode of the file system.

" } }, "Permissions": { @@ -770,7 +771,7 @@ "refs": { "Destination$Region": "

The Amazon Web Services Region in which the destination file system is located.

", "DestinationToCreate$Region": "

To create a file system that uses Regional storage, specify the Amazon Web Services Region in which to create the destination file system.

", - "ReplicationConfigurationDescription$SourceFileSystemRegion": "

The Amazon Web Services Region in which the source Amazon EFS file system is located.

" + "ReplicationConfigurationDescription$SourceFileSystemRegion": "

The Amazon Web Services Region in which the source EFS file system is located.

" } }, "ReplicationConfigurationDescription": { @@ -793,7 +794,7 @@ "ReplicationStatus": { "base": null, "refs": { - "Destination$Status": "

Describes the status of the destination Amazon EFS file system.

" + "Destination$Status": "

Describes the status of the destination EFS file system.

" } }, "Resource": { @@ -833,8 +834,8 @@ "RootDirectory": { "base": "

Specifies the directory on the Amazon EFS file system that the access point provides access to. The access point exposes the specified file system path as the root directory of your file system to applications using the access point. NFS clients using the access point can only access data in the access point's RootDirectory and it's subdirectories.

", "refs": { - "AccessPointDescription$RootDirectory": "

The directory on the Amazon EFS file system that the access point exposes as the root directory to NFS clients using the access point.

", - "CreateAccessPointRequest$RootDirectory": "

Specifies the directory on the Amazon EFS file system that the access point exposes as the root directory of your file system to NFS clients using the access point. The clients using the access point can only access the root directory and below. If the RootDirectory > Path specified does not exist, EFS creates it and applies the CreationInfo settings when a client connects to an access point. When specifying a RootDirectory, you must provide the Path, and the CreationInfo.

Amazon EFS creates a root directory only if you have provided the CreationInfo: OwnUid, OwnGID, and permissions for the directory. If you do not provide this information, Amazon EFS does not create the root directory. If the root directory does not exist, attempts to mount using the access point will fail.

" + "AccessPointDescription$RootDirectory": "

The directory on the EFS file system that the access point exposes as the root directory to NFS clients using the access point.

", + "CreateAccessPointRequest$RootDirectory": "

Specifies the directory on the EFS file system that the access point exposes as the root directory of your file system to NFS clients using the access point. The clients using the access point can only access the root directory and below. If the RootDirectory > Path specified does not exist, Amazon EFS creates it and applies the CreationInfo settings when a client connects to an access point. When specifying a RootDirectory, you must provide the Path, and the CreationInfo.

Amazon EFS creates a root directory only if you have provided the CreationInfo: OwnUid, OwnGID, and permissions for the directory. If you do not provide this information, Amazon EFS does not create the root directory. If the root directory does not exist, attempts to mount using the access point will fail.

" } }, "SecondaryGids": { @@ -870,13 +871,13 @@ "Status": { "base": null, "refs": { - "BackupPolicy$Status": "

Describes the status of the file system's backup policy.

" + "BackupPolicy$Status": "

Describes the status of the file system's backup policy.

" } }, "SubnetId": { "base": null, "refs": { - "CreateMountTargetRequest$SubnetId": "

The ID of the subnet to add the mount target in. For file systems that use One Zone storage classes, use the subnet that is associated with the file system's Availability Zone.

", + "CreateMountTargetRequest$SubnetId": "

The ID of the subnet to add the mount target in. For One Zone file systems, use the subnet that is associated with the file system's Availability Zone.

", "MountTargetDescription$SubnetId": "

The ID of the mount target's subnet.

" } }, @@ -943,7 +944,7 @@ "ThroughputMode": { "base": null, "refs": { - "CreateFileSystemRequest$ThroughputMode": "

Specifies the throughput mode for the file system. The mode can be bursting, provisioned, or elastic. If you set ThroughputMode to provisioned, you must also set a value for ProvisionedThroughputInMibps. After you create the file system, you can decrease your file system's throughput in Provisioned Throughput mode or change between the throughput modes, with certain time restrictions. For more information, see Specifying throughput with provisioned mode in the Amazon EFS User Guide.

Default is bursting.

", + "CreateFileSystemRequest$ThroughputMode": "

Specifies the throughput mode for the file system. The mode can be bursting, provisioned, or elastic. If you set ThroughputMode to provisioned, you must also set a value for ProvisionedThroughputInMibps. After you create the file system, you can decrease your file system's Provisioned throughput or change between the throughput modes, with certain time restrictions. For more information, see Specifying throughput with provisioned mode in the Amazon EFS User Guide.

Default is bursting.

", "FileSystemDescription$ThroughputMode": "

Displays the file system's throughput mode. For more information, see Throughput modes in the Amazon EFS User Guide.

", "UpdateFileSystemRequest$ThroughputMode": "

(Optional) Updates the file system's throughput mode. If you're not updating your throughput mode, you don't need to provide this value in your request. If you are changing the ThroughputMode to provisioned, you must also set a value for ProvisionedThroughputInMibps.

" } @@ -975,16 +976,22 @@ "refs": { } }, + "TransitionToArchiveRules": { + "base": null, + "refs": { + "LifecyclePolicy$TransitionToArchive": "

The number of days after files were last accessed in primary storage (the Standard storage class) files at which to move them to Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.

" + } + }, "TransitionToIARules": { "base": null, "refs": { - "LifecyclePolicy$TransitionToIA": "

Describes the period of time that a file is not accessed, after which it transitions to IA storage. Metadata operations such as listing the contents of a directory don't count as file access events.

" + "LifecyclePolicy$TransitionToIA": "

The number of days after files were last accessed in primary storage (the Standard storage class) at which to move them to Infrequent Access (IA) storage. Metadata operations such as listing the contents of a directory don't count as file access events.

" } }, "TransitionToPrimaryStorageClassRules": { "base": null, "refs": { - "LifecyclePolicy$TransitionToPrimaryStorageClass": "

Describes when to transition a file from IA storage to primary storage. Metadata operations such as listing the contents of a directory don't count as file access events.

" + "LifecyclePolicy$TransitionToPrimaryStorageClass": "

Whether to move files back to primary (Standard) storage after they are accessed in IA or Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.

" } }, "Uid": { diff --git a/apis/elasticfilesystem/2015-02-01/endpoint-rule-set-1.json b/apis/elasticfilesystem/2015-02-01/endpoint-rule-set-1.json index 2501aa43f99..8a7960d9832 100644 --- a/apis/elasticfilesystem/2015-02-01/endpoint-rule-set-1.json +++ b/apis/elasticfilesystem/2015-02-01/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/elasticfilesystem/2015-02-01/paginators-1.json b/apis/elasticfilesystem/2015-02-01/paginators-1.json index 418186d345b..fe17ca326ff 100644 --- a/apis/elasticfilesystem/2015-02-01/paginators-1.json +++ b/apis/elasticfilesystem/2015-02-01/paginators-1.json @@ -3,17 +3,32 @@ "DescribeAccessPoints": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "AccessPoints" }, "DescribeFileSystems": { "input_token": "Marker", "output_token": "NextMarker", - "limit_key": "MaxItems" + "limit_key": "MaxItems", + "result_key": "FileSystems" + }, + "DescribeMountTargets": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "MountTargets" + }, + "DescribeReplicationConfigurations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Replications" }, "DescribeTags": { "input_token": "Marker", "output_token": "NextMarker", - "limit_key": "MaxItems" + "limit_key": "MaxItems", + "result_key": "Tags" }, "ListTagsForResource": { "input_token": "NextToken", diff --git a/apis/elasticloadbalancingv2/2015-12-01/api-2.json b/apis/elasticloadbalancingv2/2015-12-01/api-2.json index fe40358656d..80d3c48c062 100644 --- a/apis/elasticloadbalancingv2/2015-12-01/api-2.json +++ b/apis/elasticloadbalancingv2/2015-12-01/api-2.json @@ -46,7 +46,26 @@ {"shape":"LoadBalancerNotFoundException"}, {"shape":"TargetGroupNotFoundException"}, {"shape":"ListenerNotFoundException"}, - {"shape":"RuleNotFoundException"} + {"shape":"RuleNotFoundException"}, + {"shape":"TrustStoreNotFoundException"} + ] + }, + "AddTrustStoreRevocations":{ + "name":"AddTrustStoreRevocations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AddTrustStoreRevocationsInput"}, + "output":{ + "shape":"AddTrustStoreRevocationsOutput", + "resultWrapper":"AddTrustStoreRevocationsResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"InvalidRevocationContentException"}, + {"shape":"TooManyTrustStoreRevocationEntriesException"}, + {"shape":"RevocationContentNotFoundException"} ] }, "CreateListener":{ @@ -78,7 +97,9 @@ {"shape":"InvalidLoadBalancerActionException"}, {"shape":"TooManyUniqueTargetGroupsPerLoadBalancerException"}, {"shape":"ALPNPolicyNotSupportedException"}, - {"shape":"TooManyTagsException"} + {"shape":"TooManyTagsException"}, + {"shape":"TrustStoreNotFoundException"}, + {"shape":"TrustStoreNotReadyException"} ] }, "CreateLoadBalancer":{ @@ -155,6 +176,26 @@ {"shape":"TooManyTagsException"} ] }, + "CreateTrustStore":{ + "name":"CreateTrustStore", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateTrustStoreInput"}, + "output":{ + "shape":"CreateTrustStoreOutput", + "resultWrapper":"CreateTrustStoreResult" + }, + "errors":[ + {"shape":"DuplicateTrustStoreNameException"}, + {"shape":"TooManyTrustStoresException"}, + {"shape":"InvalidCaCertificatesBundleException"}, + {"shape":"CaCertificatesBundleNotFoundException"}, + {"shape":"TooManyTagsException"}, + {"shape":"DuplicateTagKeysException"} + ] + }, "DeleteListener":{ "name":"DeleteListener", "http":{ @@ -219,6 +260,22 @@ {"shape":"ResourceInUseException"} ] }, + "DeleteTrustStore":{ + "name":"DeleteTrustStore", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteTrustStoreInput"}, + "output":{ + "shape":"DeleteTrustStoreOutput", + "resultWrapper":"DeleteTrustStoreResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"TrustStoreInUseException"} + ] + }, "DeregisterTargets":{ "name":"DeregisterTargets", "http":{ @@ -356,7 +413,8 @@ {"shape":"LoadBalancerNotFoundException"}, {"shape":"TargetGroupNotFoundException"}, {"shape":"ListenerNotFoundException"}, - {"shape":"RuleNotFoundException"} + {"shape":"RuleNotFoundException"}, + {"shape":"TrustStoreNotFoundException"} ] }, "DescribeTargetGroupAttributes":{ @@ -407,6 +465,83 @@ {"shape":"HealthUnavailableException"} ] }, + "DescribeTrustStoreAssociations":{ + "name":"DescribeTrustStoreAssociations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeTrustStoreAssociationsInput"}, + "output":{ + "shape":"DescribeTrustStoreAssociationsOutput", + "resultWrapper":"DescribeTrustStoreAssociationsResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"} + ] + }, + "DescribeTrustStoreRevocations":{ + "name":"DescribeTrustStoreRevocations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeTrustStoreRevocationsInput"}, + "output":{ + "shape":"DescribeTrustStoreRevocationsOutput", + "resultWrapper":"DescribeTrustStoreRevocationsResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"RevocationIdNotFoundException"} + ] + }, + "DescribeTrustStores":{ + "name":"DescribeTrustStores", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeTrustStoresInput"}, + "output":{ + "shape":"DescribeTrustStoresOutput", + "resultWrapper":"DescribeTrustStoresResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"} + ] + }, + "GetTrustStoreCaCertificatesBundle":{ + "name":"GetTrustStoreCaCertificatesBundle", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetTrustStoreCaCertificatesBundleInput"}, + "output":{ + "shape":"GetTrustStoreCaCertificatesBundleOutput", + "resultWrapper":"GetTrustStoreCaCertificatesBundleResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"} + ] + }, + "GetTrustStoreRevocationContent":{ + "name":"GetTrustStoreRevocationContent", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetTrustStoreRevocationContentInput"}, + "output":{ + "shape":"GetTrustStoreRevocationContentOutput", + "resultWrapper":"GetTrustStoreRevocationContentResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"RevocationIdNotFoundException"} + ] + }, "ModifyListener":{ "name":"ModifyListener", "http":{ @@ -435,7 +570,9 @@ {"shape":"TooManyActionsException"}, {"shape":"InvalidLoadBalancerActionException"}, {"shape":"TooManyUniqueTargetGroupsPerLoadBalancerException"}, - {"shape":"ALPNPolicyNotSupportedException"} + {"shape":"ALPNPolicyNotSupportedException"}, + {"shape":"TrustStoreNotFoundException"}, + {"shape":"TrustStoreNotReadyException"} ] }, "ModifyLoadBalancerAttributes":{ @@ -511,6 +648,23 @@ {"shape":"InvalidConfigurationRequestException"} ] }, + "ModifyTrustStore":{ + "name":"ModifyTrustStore", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyTrustStoreInput"}, + "output":{ + "shape":"ModifyTrustStoreOutput", + "resultWrapper":"ModifyTrustStoreResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"InvalidCaCertificatesBundleException"}, + {"shape":"CaCertificatesBundleNotFoundException"} + ] + }, "RegisterTargets":{ "name":"RegisterTargets", "http":{ @@ -561,7 +715,24 @@ {"shape":"TargetGroupNotFoundException"}, {"shape":"ListenerNotFoundException"}, {"shape":"RuleNotFoundException"}, - {"shape":"TooManyTagsException"} + {"shape":"TooManyTagsException"}, + {"shape":"TrustStoreNotFoundException"} + ] + }, + "RemoveTrustStoreRevocations":{ + "name":"RemoveTrustStoreRevocations", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RemoveTrustStoreRevocationsInput"}, + "output":{ + "shape":"RemoveTrustStoreRevocationsOutput", + "resultWrapper":"RemoveTrustStoreRevocationsResult" + }, + "errors":[ + {"shape":"TrustStoreNotFoundException"}, + {"shape":"RevocationIdNotFoundException"} ] }, "SetIpAddressType":{ @@ -714,6 +885,20 @@ "members":{ } }, + "AddTrustStoreRevocationsInput":{ + "type":"structure", + "required":["TrustStoreArn"], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationContents":{"shape":"RevocationContents"} + } + }, + "AddTrustStoreRevocationsOutput":{ + "type":"structure", + "members":{ + "TrustStoreRevocations":{"shape":"TrustStoreRevocations"} + } + }, "AllocationId":{"type":"string"}, "AllocationIdNotFoundException":{ "type":"structure", @@ -731,6 +916,20 @@ "member":{"shape":"AlpnPolicyValue"} }, "AlpnPolicyValue":{"type":"string"}, + "AnomalyDetection":{ + "type":"structure", + "members":{ + "Result":{"shape":"AnomalyResultEnum"}, + "MitigationInEffect":{"shape":"MitigationInEffectEnum"} + } + }, + "AnomalyResultEnum":{ + "type":"string", + "enum":[ + "anomalous", + "normal" + ] + }, "AuthenticateCognitoActionAuthenticationRequestExtraParams":{ "type":"map", "key":{"shape":"AuthenticateCognitoActionAuthenticationRequestParamName"}, @@ -843,6 +1042,17 @@ "type":"list", "member":{"shape":"AvailabilityZone"} }, + "CaCertificatesBundleNotFoundException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"CaCertificatesBundleNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "CanonicalHostedZoneId":{"type":"string"}, "Certificate":{ "type":"structure", @@ -898,7 +1108,8 @@ "Certificates":{"shape":"CertificateList"}, "DefaultActions":{"shape":"Actions"}, "AlpnPolicy":{"shape":"AlpnPolicyName"}, - "Tags":{"shape":"TagList"} + "Tags":{"shape":"TagList"}, + "MutualAuthentication":{"shape":"MutualAuthenticationAttributes"} } }, "CreateListenerOutput":{ @@ -979,6 +1190,27 @@ "TargetGroups":{"shape":"TargetGroups"} } }, + "CreateTrustStoreInput":{ + "type":"structure", + "required":[ + "Name", + "CaCertificatesBundleS3Bucket", + "CaCertificatesBundleS3Key" + ], + "members":{ + "Name":{"shape":"TrustStoreName"}, + "CaCertificatesBundleS3Bucket":{"shape":"S3Bucket"}, + "CaCertificatesBundleS3Key":{"shape":"S3Key"}, + "CaCertificatesBundleS3ObjectVersion":{"shape":"S3ObjectVersion"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateTrustStoreOutput":{ + "type":"structure", + "members":{ + "TrustStores":{"shape":"TrustStores"} + } + }, "CreatedTime":{"type":"timestamp"}, "CustomerOwnedIpv4Pool":{ "type":"string", @@ -1035,6 +1267,18 @@ "members":{ } }, + "DeleteTrustStoreInput":{ + "type":"structure", + "required":["TrustStoreArn"], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"} + } + }, + "DeleteTrustStoreOutput":{ + "type":"structure", + "members":{ + } + }, "DeregisterTargetsInput":{ "type":"structure", "required":[ @@ -1206,15 +1450,85 @@ "required":["TargetGroupArn"], "members":{ "TargetGroupArn":{"shape":"TargetGroupArn"}, - "Targets":{"shape":"TargetDescriptions"} + "Targets":{"shape":"TargetDescriptions"}, + "Include":{"shape":"ListOfDescribeTargetHealthIncludeOptions"} } }, + "DescribeTargetHealthInputIncludeEnum":{ + "type":"string", + "enum":[ + "AnomalyDetection", + "All" + ] + }, "DescribeTargetHealthOutput":{ "type":"structure", "members":{ "TargetHealthDescriptions":{"shape":"TargetHealthDescriptions"} } }, + "DescribeTrustStoreAssociationsInput":{ + "type":"structure", + "required":["TrustStoreArn"], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "Marker":{"shape":"Marker"}, + "PageSize":{"shape":"PageSize"} + } + }, + "DescribeTrustStoreAssociationsOutput":{ + "type":"structure", + "members":{ + "TrustStoreAssociations":{"shape":"TrustStoreAssociations"}, + "NextMarker":{"shape":"Marker"} + } + }, + "DescribeTrustStoreRevocation":{ + "type":"structure", + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationId":{"shape":"RevocationId"}, + "RevocationType":{"shape":"RevocationType"}, + "NumberOfRevokedEntries":{"shape":"NumberOfRevokedEntries"} + } + }, + "DescribeTrustStoreRevocationResponse":{ + "type":"list", + "member":{"shape":"DescribeTrustStoreRevocation"} + }, + "DescribeTrustStoreRevocationsInput":{ + "type":"structure", + "required":["TrustStoreArn"], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationIds":{"shape":"RevocationIds"}, + "Marker":{"shape":"Marker"}, + "PageSize":{"shape":"PageSize"} + } + }, + "DescribeTrustStoreRevocationsOutput":{ + "type":"structure", + "members":{ + "TrustStoreRevocations":{"shape":"DescribeTrustStoreRevocationResponse"}, + "NextMarker":{"shape":"Marker"} + } + }, + "DescribeTrustStoresInput":{ + "type":"structure", + "members":{ + "TrustStoreArns":{"shape":"TrustStoreArns"}, + "Names":{"shape":"TrustStoreNames"}, + "Marker":{"shape":"Marker"}, + "PageSize":{"shape":"PageSize"} + } + }, + "DescribeTrustStoresOutput":{ + "type":"structure", + "members":{ + "TrustStores":{"shape":"TrustStores"}, + "NextMarker":{"shape":"Marker"} + } + }, "Description":{"type":"string"}, "DuplicateListenerException":{ "type":"structure", @@ -1260,6 +1574,17 @@ }, "exception":true }, + "DuplicateTrustStoreNameException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"DuplicateTrustStoreName", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic":{"type":"string"}, "EnforceSecurityGroupInboundRulesOnPrivateLinkTrafficEnum":{ "type":"string", @@ -1298,6 +1623,36 @@ "TargetGroupStickinessConfig":{"shape":"TargetGroupStickinessConfig"} } }, + "GetTrustStoreCaCertificatesBundleInput":{ + "type":"structure", + "required":["TrustStoreArn"], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"} + } + }, + "GetTrustStoreCaCertificatesBundleOutput":{ + "type":"structure", + "members":{ + "Location":{"shape":"Location"} + } + }, + "GetTrustStoreRevocationContentInput":{ + "type":"structure", + "required":[ + "TrustStoreArn", + "RevocationId" + ], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationId":{"shape":"RevocationId"} + } + }, + "GetTrustStoreRevocationContentOutput":{ + "type":"structure", + "members":{ + "Location":{"shape":"Location"} + } + }, "GrpcCode":{"type":"string"}, "HealthCheckEnabled":{"type":"boolean"}, "HealthCheckIntervalSeconds":{ @@ -1348,6 +1703,7 @@ } }, "IPv6Address":{"type":"string"}, + "IgnoreClientCertificateExpiry":{"type":"boolean"}, "IncompatibleProtocolsException":{ "type":"structure", "members":{ @@ -1359,6 +1715,17 @@ }, "exception":true }, + "InvalidCaCertificatesBundleException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"InvalidCaCertificatesBundle", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "InvalidConfigurationRequestException":{ "type":"structure", "members":{ @@ -1381,6 +1748,17 @@ }, "exception":true }, + "InvalidRevocationContentException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"InvalidRevocationContent", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "InvalidSchemeException":{ "type":"structure", "members":{ @@ -1445,6 +1823,10 @@ "type":"list", "member":{"shape":"Limit"} }, + "ListOfDescribeTargetHealthIncludeOptions":{ + "type":"list", + "member":{"shape":"DescribeTargetHealthInputIncludeEnum"} + }, "ListOfString":{ "type":"list", "member":{"shape":"StringValue"} @@ -1459,7 +1841,8 @@ "Certificates":{"shape":"CertificateList"}, "SslPolicy":{"shape":"SslPolicyName"}, "DefaultActions":{"shape":"Actions"}, - "AlpnPolicy":{"shape":"AlpnPolicyName"} + "AlpnPolicy":{"shape":"AlpnPolicyName"}, + "MutualAuthentication":{"shape":"MutualAuthenticationAttributes"} } }, "ListenerArn":{"type":"string"}, @@ -1591,6 +1974,7 @@ "type":"list", "member":{"shape":"LoadBalancer"} }, + "Location":{"type":"string"}, "Marker":{"type":"string"}, "Matcher":{ "type":"structure", @@ -1600,6 +1984,14 @@ } }, "Max":{"type":"string"}, + "MitigationInEffectEnum":{ + "type":"string", + "enum":[ + "yes", + "no" + ] + }, + "Mode":{"type":"string"}, "ModifyListenerInput":{ "type":"structure", "required":["ListenerArn"], @@ -1610,7 +2002,8 @@ "SslPolicy":{"shape":"SslPolicyName"}, "Certificates":{"shape":"CertificateList"}, "DefaultActions":{"shape":"Actions"}, - "AlpnPolicy":{"shape":"AlpnPolicyName"} + "AlpnPolicy":{"shape":"AlpnPolicyName"}, + "MutualAuthentication":{"shape":"MutualAuthenticationAttributes"} } }, "ModifyListenerOutput":{ @@ -1690,7 +2083,37 @@ "TargetGroups":{"shape":"TargetGroups"} } }, + "ModifyTrustStoreInput":{ + "type":"structure", + "required":[ + "TrustStoreArn", + "CaCertificatesBundleS3Bucket", + "CaCertificatesBundleS3Key" + ], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "CaCertificatesBundleS3Bucket":{"shape":"S3Bucket"}, + "CaCertificatesBundleS3Key":{"shape":"S3Key"}, + "CaCertificatesBundleS3ObjectVersion":{"shape":"S3ObjectVersion"} + } + }, + "ModifyTrustStoreOutput":{ + "type":"structure", + "members":{ + "TrustStores":{"shape":"TrustStores"} + } + }, + "MutualAuthenticationAttributes":{ + "type":"structure", + "members":{ + "Mode":{"shape":"Mode"}, + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "IgnoreClientCertificateExpiry":{"shape":"IgnoreClientCertificateExpiry"} + } + }, "Name":{"type":"string"}, + "NumberOfCaCertificates":{"type":"integer"}, + "NumberOfRevokedEntries":{"type":"long"}, "OperationNotPermittedException":{ "type":"structure", "members":{ @@ -1853,6 +2276,22 @@ "members":{ } }, + "RemoveTrustStoreRevocationsInput":{ + "type":"structure", + "required":[ + "TrustStoreArn", + "RevocationIds" + ], + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationIds":{"shape":"RevocationIds"} + } + }, + "RemoveTrustStoreRevocationsOutput":{ + "type":"structure", + "members":{ + } + }, "ResourceArn":{"type":"string"}, "ResourceArns":{ "type":"list", @@ -1869,6 +2308,50 @@ }, "exception":true }, + "RevocationContent":{ + "type":"structure", + "members":{ + "S3Bucket":{"shape":"S3Bucket"}, + "S3Key":{"shape":"S3Key"}, + "S3ObjectVersion":{"shape":"S3ObjectVersion"}, + "RevocationType":{"shape":"RevocationType"} + } + }, + "RevocationContentNotFoundException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"RevocationContentNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "RevocationContents":{ + "type":"list", + "member":{"shape":"RevocationContent"} + }, + "RevocationId":{"type":"long"}, + "RevocationIdNotFoundException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"RevocationIdNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "RevocationIds":{ + "type":"list", + "member":{"shape":"RevocationId"} + }, + "RevocationType":{ + "type":"string", + "enum":["CRL"] + }, "Rule":{ "type":"structure", "members":{ @@ -1932,6 +2415,9 @@ "type":"list", "member":{"shape":"Rule"} }, + "S3Bucket":{"type":"string"}, + "S3Key":{"type":"string"}, + "S3ObjectVersion":{"type":"string"}, "SSLPolicyNotFoundException":{ "type":"structure", "members":{ @@ -2245,7 +2731,8 @@ "members":{ "Target":{"shape":"TargetDescription"}, "HealthCheckPort":{"shape":"HealthCheckPort"}, - "TargetHealth":{"shape":"TargetHealth"} + "TargetHealth":{"shape":"TargetHealth"}, + "AnomalyDetection":{"shape":"AnomalyDetection"} } }, "TargetHealthDescriptions":{ @@ -2389,6 +2876,28 @@ }, "exception":true }, + "TooManyTrustStoreRevocationEntriesException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TooManyTrustStoreRevocationEntries", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "TooManyTrustStoresException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TooManyTrustStores", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, "TooManyUniqueTargetGroupsPerLoadBalancerException":{ "type":"structure", "members":{ @@ -2400,6 +2909,100 @@ }, "exception":true }, + "TotalRevokedEntries":{"type":"long"}, + "TrustStore":{ + "type":"structure", + "members":{ + "Name":{"shape":"TrustStoreName"}, + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "Status":{"shape":"TrustStoreStatus"}, + "NumberOfCaCertificates":{"shape":"NumberOfCaCertificates"}, + "TotalRevokedEntries":{"shape":"TotalRevokedEntries"} + } + }, + "TrustStoreArn":{"type":"string"}, + "TrustStoreArns":{ + "type":"list", + "member":{"shape":"TrustStoreArn"} + }, + "TrustStoreAssociation":{ + "type":"structure", + "members":{ + "ResourceArn":{"shape":"TrustStoreAssociationResourceArn"} + } + }, + "TrustStoreAssociationResourceArn":{"type":"string"}, + "TrustStoreAssociations":{ + "type":"list", + "member":{"shape":"TrustStoreAssociation"} + }, + "TrustStoreInUseException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TrustStoreInUse", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "TrustStoreName":{ + "type":"string", + "max":32, + "min":1, + "pattern":"^([a-zA-Z0-9]+-)*[a-zA-Z0-9]+$" + }, + "TrustStoreNames":{ + "type":"list", + "member":{"shape":"TrustStoreName"} + }, + "TrustStoreNotFoundException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TrustStoreNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "TrustStoreNotReadyException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TrustStoreNotReady", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "TrustStoreRevocation":{ + "type":"structure", + "members":{ + "TrustStoreArn":{"shape":"TrustStoreArn"}, + "RevocationId":{"shape":"RevocationId"}, + "RevocationType":{"shape":"RevocationType"}, + "NumberOfRevokedEntries":{"shape":"NumberOfRevokedEntries"} + } + }, + "TrustStoreRevocations":{ + "type":"list", + "member":{"shape":"TrustStoreRevocation"} + }, + "TrustStoreStatus":{ + "type":"string", + "enum":[ + "ACTIVE", + "CREATING" + ] + }, + "TrustStores":{ + "type":"list", + "member":{"shape":"TrustStore"} + }, "UnsupportedProtocolException":{ "type":"structure", "members":{ diff --git a/apis/elasticloadbalancingv2/2015-12-01/docs-2.json b/apis/elasticloadbalancingv2/2015-12-01/docs-2.json index aae89ff1ff7..2ccf03d8af3 100644 --- a/apis/elasticloadbalancingv2/2015-12-01/docs-2.json +++ b/apis/elasticloadbalancingv2/2015-12-01/docs-2.json @@ -3,15 +3,18 @@ "service": "Elastic Load Balancing

A load balancer distributes incoming traffic across targets, such as your EC2 instances. This enables you to increase the availability of your application. The load balancer also monitors the health of its registered targets and ensures that it routes traffic only to healthy targets. You configure your load balancer to accept incoming traffic by specifying one or more listeners, which are configured with a protocol and port number for connections from clients to the load balancer. You configure a target group with a protocol and port number for connections from the load balancer to the targets, and with health check settings to be used when checking the health status of the targets.

Elastic Load Balancing supports the following types of load balancers: Application Load Balancers, Network Load Balancers, Gateway Load Balancers, and Classic Load Balancers. This reference covers the following load balancer types:

For more information, see the Elastic Load Balancing User Guide.

All Elastic Load Balancing operations are idempotent, which means that they complete at most one time. If you repeat an operation, it succeeds.

", "operations": { "AddListenerCertificates": "

Adds the specified SSL server certificate to the certificate list for the specified HTTPS or TLS listener.

If the certificate in already in the certificate list, the call is successful but the certificate is not added again.

For more information, see HTTPS listeners in the Application Load Balancers Guide or TLS listeners in the Network Load Balancers Guide.

", - "AddTags": "

Adds the specified tags to the specified Elastic Load Balancing resource. You can tag your Application Load Balancers, Network Load Balancers, Gateway Load Balancers, target groups, listeners, and rules.

Each tag consists of a key and an optional value. If a resource already has a tag with the same key, AddTags updates its value.

", + "AddTags": "

Adds the specified tags to the specified Elastic Load Balancing resource. You can tag your Application Load Balancers, Network Load Balancers, Gateway Load Balancers, target groups, trust stores, listeners, and rules.

Each tag consists of a key and an optional value. If a resource already has a tag with the same key, AddTags updates its value.

", + "AddTrustStoreRevocations": "

Adds the specified revocation file to the specified trust store.

", "CreateListener": "

Creates a listener for the specified Application Load Balancer, Network Load Balancer, or Gateway Load Balancer.

For more information, see the following:

This operation is idempotent, which means that it completes at most one time. If you attempt to create multiple listeners with the same settings, each call succeeds.

", "CreateLoadBalancer": "

Creates an Application Load Balancer, Network Load Balancer, or Gateway Load Balancer.

For more information, see the following:

This operation is idempotent, which means that it completes at most one time. If you attempt to create multiple load balancers with the same settings, each call succeeds.

", "CreateRule": "

Creates a rule for the specified listener. The listener must be associated with an Application Load Balancer.

Each rule consists of a priority, one or more actions, and one or more conditions. Rules are evaluated in priority order, from the lowest value to the highest value. When the conditions for a rule are met, its actions are performed. If the conditions for no rules are met, the actions for the default rule are performed. For more information, see Listener rules in the Application Load Balancers Guide.

", "CreateTargetGroup": "

Creates a target group.

For more information, see the following:

This operation is idempotent, which means that it completes at most one time. If you attempt to create multiple target groups with the same settings, each call succeeds.

", + "CreateTrustStore": "

Creates a trust store.

", "DeleteListener": "

Deletes the specified listener.

Alternatively, your listener is deleted when you delete the load balancer to which it is attached.

", "DeleteLoadBalancer": "

Deletes the specified Application Load Balancer, Network Load Balancer, or Gateway Load Balancer. Deleting a load balancer also deletes its listeners.

You can't delete a load balancer if deletion protection is enabled. If the load balancer does not exist or has already been deleted, the call succeeds.

Deleting a load balancer does not affect its registered targets. For example, your EC2 instances continue to run and are still registered to their target groups. If you no longer need these EC2 instances, you can stop or terminate them.

", "DeleteRule": "

Deletes the specified rule.

You can't delete the default rule.

", "DeleteTargetGroup": "

Deletes the specified target group.

You can delete a target group if it is not referenced by any actions. Deleting a target group also deletes any associated health checks. Deleting a target group does not affect its registered targets. For example, any EC2 instances continue to run until you stop or terminate them.

", + "DeleteTrustStore": "

Deletes a trust store.

", "DeregisterTargets": "

Deregisters the specified targets from the specified target group. After the targets are deregistered, they no longer receive traffic from the load balancer.

The load balancer stops sending requests to targets that are deregistering, but uses connection draining to ensure that in-flight traffic completes on the existing connections. This deregistration delay is configured by default but can be updated for each target group.

For more information, see the following:

Note: If the specified target does not exist, the action returns successfully.

", "DescribeAccountLimits": "

Describes the current Elastic Load Balancing resource limits for your Amazon Web Services account.

For more information, see the following:

", "DescribeListenerCertificates": "

Describes the default certificate and the certificate list for the specified HTTPS or TLS listener.

If the default certificate is also in the certificate list, it appears twice in the results (once with IsDefault set to true and once with IsDefault set to false).

For more information, see SSL certificates in the Application Load Balancers Guide or Server certificates in the Network Load Balancers Guide.

", @@ -24,14 +27,21 @@ "DescribeTargetGroupAttributes": "

Describes the attributes for the specified target group.

For more information, see the following:

", "DescribeTargetGroups": "

Describes the specified target groups or all of your target groups. By default, all target groups are described. Alternatively, you can specify one of the following to filter the results: the ARN of the load balancer, the names of one or more target groups, or the ARNs of one or more target groups.

", "DescribeTargetHealth": "

Describes the health of the specified targets or all of your targets.

", + "DescribeTrustStoreAssociations": "

Describes all resources associated with the specified trust store.

", + "DescribeTrustStoreRevocations": "

Describes the revocation files in use by the specified trust store arn, or revocation ID.

", + "DescribeTrustStores": "

Describes all trust stores for a given account by trust store arn’s or name.

", + "GetTrustStoreCaCertificatesBundle": "

Retrieves the ca certificate bundle.

This action returns a pre-signed S3 URI which is active for ten minutes.

", + "GetTrustStoreRevocationContent": "

Retrieves the specified revocation file.

This action returns a pre-signed S3 URI which is active for ten minutes.

", "ModifyListener": "

Replaces the specified properties of the specified listener. Any properties that you do not specify remain unchanged.

Changing the protocol from HTTPS to HTTP, or from TLS to TCP, removes the security policy and default certificate properties. If you change the protocol from HTTP to HTTPS, or from TCP to TLS, you must add the security policy and default certificate properties.

To add an item to a list, remove an item from a list, or update an item in a list, you must provide the entire list. For example, to add an action, specify a list with the current actions plus the new action.

", "ModifyLoadBalancerAttributes": "

Modifies the specified attributes of the specified Application Load Balancer, Network Load Balancer, or Gateway Load Balancer.

If any of the specified attributes can't be modified as requested, the call fails. Any existing attributes that you do not modify retain their current values.

", "ModifyRule": "

Replaces the specified properties of the specified rule. Any properties that you do not specify are unchanged.

To add an item to a list, remove an item from a list, or update an item in a list, you must provide the entire list. For example, to add an action, specify a list with the current actions plus the new action.

", "ModifyTargetGroup": "

Modifies the health checks used when evaluating the health state of the targets in the specified target group.

", "ModifyTargetGroupAttributes": "

Modifies the specified attributes of the specified target group.

", + "ModifyTrustStore": "

Update the ca certificate bundle for a given trust store.

", "RegisterTargets": "

Registers the specified targets with the specified target group.

If the target is an EC2 instance, it must be in the running state when you register it.

By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports.

With a Network Load Balancer, you cannot register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address.

", "RemoveListenerCertificates": "

Removes the specified certificate from the certificate list for the specified HTTPS or TLS listener.

", "RemoveTags": "

Removes the specified tags from the specified Elastic Load Balancing resources. You can remove the tags for one or more Application Load Balancers, Network Load Balancers, Gateway Load Balancers, target groups, listeners, or rules.

", + "RemoveTrustStoreRevocations": "

Removes the specified revocation file from the specified trust store.

", "SetIpAddressType": "

Sets the type of IP addresses used by the subnets of the specified load balancer.

", "SetRulePriorities": "

Sets the priorities of the specified rules.

You can reorder the rules as long as there are no priority conflicts in the new order. Any existing rules that you do not specify retain their current priority.

", "SetSecurityGroups": "

Associates the specified security groups with the specified Application Load Balancer or Network Load Balancer. The specified security groups override the previously associated security groups.

You can't perform this operation on a Network Load Balancer unless you specified a security group for the load balancer when you created it.

You can't associate a security group with a Gateway Load Balancer.

", @@ -92,6 +102,16 @@ "refs": { } }, + "AddTrustStoreRevocationsInput": { + "base": null, + "refs": { + } + }, + "AddTrustStoreRevocationsOutput": { + "base": null, + "refs": { + } + }, "AllocationId": { "base": null, "refs": { @@ -118,6 +138,18 @@ "AlpnPolicyName$member": null } }, + "AnomalyDetection": { + "base": "

Information about anomaly detection and mitigation.

", + "refs": { + "TargetHealthDescription$AnomalyDetection": "

The anomaly detection result for the target.

If no anomalies were detected, the result is normal.

If anomalies were detected, the result is anomalous.

" + } + }, + "AnomalyResultEnum": { + "base": null, + "refs": { + "AnomalyDetection$Result": "

The latest anomaly detection result.

" + } + }, "AuthenticateCognitoActionAuthenticationRequestExtraParams": { "base": null, "refs": { @@ -292,6 +324,11 @@ "SetSubnetsOutput$AvailabilityZones": "

Information about the subnets.

" } }, + "CaCertificatesBundleNotFoundException": { + "base": "

The specified ca certificate bundle does not exist.

", + "refs": { + } + }, "CanonicalHostedZoneId": { "base": null, "refs": { @@ -397,6 +434,16 @@ "refs": { } }, + "CreateTrustStoreInput": { + "base": null, + "refs": { + } + }, + "CreateTrustStoreOutput": { + "base": null, + "refs": { + } + }, "CreatedTime": { "base": null, "refs": { @@ -462,6 +509,16 @@ "refs": { } }, + "DeleteTrustStoreInput": { + "base": null, + "refs": { + } + }, + "DeleteTrustStoreOutput": { + "base": null, + "refs": { + } + }, "DeregisterTargetsInput": { "base": null, "refs": { @@ -577,11 +634,59 @@ "refs": { } }, + "DescribeTargetHealthInputIncludeEnum": { + "base": null, + "refs": { + "ListOfDescribeTargetHealthIncludeOptions$member": null + } + }, "DescribeTargetHealthOutput": { "base": null, "refs": { } }, + "DescribeTrustStoreAssociationsInput": { + "base": null, + "refs": { + } + }, + "DescribeTrustStoreAssociationsOutput": { + "base": null, + "refs": { + } + }, + "DescribeTrustStoreRevocation": { + "base": "

Information about the revocations used by a trust store.

", + "refs": { + "DescribeTrustStoreRevocationResponse$member": null + } + }, + "DescribeTrustStoreRevocationResponse": { + "base": null, + "refs": { + "DescribeTrustStoreRevocationsOutput$TrustStoreRevocations": "

Information about the revocation file in the trust store.

" + } + }, + "DescribeTrustStoreRevocationsInput": { + "base": null, + "refs": { + } + }, + "DescribeTrustStoreRevocationsOutput": { + "base": null, + "refs": { + } + }, + "DescribeTrustStoresInput": { + "base": null, + "refs": { + } + }, + "DescribeTrustStoresOutput": { + "base": null, + "refs": { + } + }, "Description": { "base": null, "refs": { @@ -608,6 +713,11 @@ "refs": { } }, + "DuplicateTrustStoreNameException": { + "base": "

A trust store with the specified name already exists.

", + "refs": { + } + }, "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { "base": null, "refs": { @@ -651,6 +761,26 @@ "Action$ForwardConfig": "

Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when Type is forward. If you specify both ForwardConfig and TargetGroupArn, you can specify only one target group using ForwardConfig and it must be the same target group specified in TargetGroupArn.

" } }, + "GetTrustStoreCaCertificatesBundleInput": { + "base": null, + "refs": { + } + }, + "GetTrustStoreCaCertificatesBundleOutput": { + "base": null, + "refs": { + } + }, + "GetTrustStoreRevocationContentInput": { + "base": null, + "refs": { + } + }, + "GetTrustStoreRevocationContentOutput": { + "base": null, + "refs": { + } + }, "GrpcCode": { "base": null, "refs": { @@ -743,11 +873,22 @@ "SubnetMapping$IPv6Address": "

[Network Load Balancers] The IPv6 address.

" } }, + "IgnoreClientCertificateExpiry": { + "base": null, + "refs": { + "MutualAuthenticationAttributes$IgnoreClientCertificateExpiry": "

Indicates whether expired client certificates are ignored.

" + } + }, "IncompatibleProtocolsException": { "base": "

The specified configuration is not valid with this protocol.

", "refs": { } }, + "InvalidCaCertificatesBundleException": { + "base": "

The specified ca certificate bundle is in an invalid format, or corrupt.

", + "refs": { + } + }, "InvalidConfigurationRequestException": { "base": "

The requested configuration is not valid.

", "refs": { @@ -758,6 +899,11 @@ "refs": { } }, + "InvalidRevocationContentException": { + "base": "

The provided revocation file is an invalid format, or uses an incorrect algorithm.

", + "refs": { + } + }, "InvalidSchemeException": { "base": "

The requested scheme is not valid.

", "refs": { @@ -813,6 +959,12 @@ "DescribeAccountLimitsOutput$Limits": "

Information about the limits.

" } }, + "ListOfDescribeTargetHealthIncludeOptions": { + "base": null, + "refs": { + "DescribeTargetHealthInput$Include": "

Used to inclue anomaly detection information.

" + } + }, "ListOfString": { "base": null, "refs": { @@ -915,7 +1067,7 @@ "LoadBalancerAttributeKey": { "base": null, "refs": { - "LoadBalancerAttribute$Key": "

The name of the attribute.

The following attributes are supported by all load balancers:

The following attributes are supported by both Application Load Balancers and Network Load Balancers:

The following attributes are supported by only Application Load Balancers:

The following attributes are supported by only Network Load Balancers:

" + "LoadBalancerAttribute$Key": "

The name of the attribute.

The following attributes are supported by all load balancers:

The following attributes are supported by both Application Load Balancers and Network Load Balancers:

The following attributes are supported by only Application Load Balancers:

The following attributes are supported by only Network Load Balancers:

" } }, "LoadBalancerAttributeValue": { @@ -985,6 +1137,13 @@ "DescribeLoadBalancersOutput$LoadBalancers": "

Information about the load balancers.

" } }, + "Location": { + "base": null, + "refs": { + "GetTrustStoreCaCertificatesBundleOutput$Location": "

The ca certificate bundles Amazon S3 URI.

", + "GetTrustStoreRevocationContentOutput$Location": "

The revocation files Amazon S3 URI.

" + } + }, "Marker": { "base": null, "refs": { @@ -1001,7 +1160,13 @@ "DescribeSSLPoliciesInput$Marker": "

The marker for the next set of results. (You received this marker from a previous call.)

", "DescribeSSLPoliciesOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

", "DescribeTargetGroupsInput$Marker": "

The marker for the next set of results. (You received this marker from a previous call.)

", - "DescribeTargetGroupsOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

" + "DescribeTargetGroupsOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

", + "DescribeTrustStoreAssociationsInput$Marker": "

The marker for the next set of results. (You received this marker from a previous call.)

", + "DescribeTrustStoreAssociationsOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

", + "DescribeTrustStoreRevocationsInput$Marker": "

The marker for the next set of results. (You received this marker from a previous call.)

", + "DescribeTrustStoreRevocationsOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

", + "DescribeTrustStoresInput$Marker": "

The marker for the next set of results. (You received this marker from a previous call.)

", + "DescribeTrustStoresOutput$NextMarker": "

If there are additional results, this is the marker for the next set of results. Otherwise, this is null.

" } }, "Matcher": { @@ -1018,6 +1183,18 @@ "Limit$Max": "

The maximum value of the limit.

" } }, + "MitigationInEffectEnum": { + "base": null, + "refs": { + "AnomalyDetection$MitigationInEffect": "

Indicates whether anomaly mitigation is in progress.

" + } + }, + "Mode": { + "base": null, + "refs": { + "MutualAuthenticationAttributes$Mode": "

The client certificate handling method. Options are off, passthrough or verify. The default value is off.

" + } + }, "ModifyListenerInput": { "base": null, "refs": { @@ -1068,12 +1245,43 @@ "refs": { } }, + "ModifyTrustStoreInput": { + "base": null, + "refs": { + } + }, + "ModifyTrustStoreOutput": { + "base": null, + "refs": { + } + }, + "MutualAuthenticationAttributes": { + "base": "

Information about the mutual authentication attributes of a listener.

", + "refs": { + "CreateListenerInput$MutualAuthentication": "

The mutual authentication configuration information.

", + "Listener$MutualAuthentication": "

The mutual authentication configuration information.

", + "ModifyListenerInput$MutualAuthentication": "

The mutual authentication configuration information.

" + } + }, "Name": { "base": null, "refs": { "Limit$Name": "

The name of the limit. The possible values are:

" } }, + "NumberOfCaCertificates": { + "base": null, + "refs": { + "TrustStore$NumberOfCaCertificates": "

The number of ca certificates in the trust store.

" + } + }, + "NumberOfRevokedEntries": { + "base": null, + "refs": { + "DescribeTrustStoreRevocation$NumberOfRevokedEntries": "

The number of revoked certificates.

", + "TrustStoreRevocation$NumberOfRevokedEntries": "

The number of revoked certificates.

" + } + }, "OperationNotPermittedException": { "base": "

This operation is not allowed.

", "refs": { @@ -1094,7 +1302,10 @@ "DescribeLoadBalancersInput$PageSize": "

The maximum number of results to return with this call.

", "DescribeRulesInput$PageSize": "

The maximum number of results to return with this call.

", "DescribeSSLPoliciesInput$PageSize": "

The maximum number of results to return with this call.

", - "DescribeTargetGroupsInput$PageSize": "

The maximum number of results to return with this call.

" + "DescribeTargetGroupsInput$PageSize": "

The maximum number of results to return with this call.

", + "DescribeTrustStoreAssociationsInput$PageSize": "

The maximum number of results to return with this call.

", + "DescribeTrustStoreRevocationsInput$PageSize": "

The maximum number of results to return with this call.

", + "DescribeTrustStoresInput$PageSize": "

The maximum number of results to return with this call.

" } }, "Path": { @@ -1244,6 +1455,16 @@ "refs": { } }, + "RemoveTrustStoreRevocationsInput": { + "base": null, + "refs": { + } + }, + "RemoveTrustStoreRevocationsOutput": { + "base": null, + "refs": { + } + }, "ResourceArn": { "base": null, "refs": { @@ -1264,6 +1485,52 @@ "refs": { } }, + "RevocationContent": { + "base": "

Information about a revocation file.

", + "refs": { + "RevocationContents$member": null + } + }, + "RevocationContentNotFoundException": { + "base": "

The specified revocation file does not exist.

", + "refs": { + } + }, + "RevocationContents": { + "base": null, + "refs": { + "AddTrustStoreRevocationsInput$RevocationContents": "

The revocation file to add.

" + } + }, + "RevocationId": { + "base": null, + "refs": { + "DescribeTrustStoreRevocation$RevocationId": "

The revocation ID of a revocation file in use.

", + "GetTrustStoreRevocationContentInput$RevocationId": "

The revocation ID of the revocation file.

", + "RevocationIds$member": null, + "TrustStoreRevocation$RevocationId": "

The revocation ID of the revocation file.

" + } + }, + "RevocationIdNotFoundException": { + "base": "

The specified revocation ID does not exist.

", + "refs": { + } + }, + "RevocationIds": { + "base": null, + "refs": { + "DescribeTrustStoreRevocationsInput$RevocationIds": "

The revocation IDs of the revocation files you want to describe.

", + "RemoveTrustStoreRevocationsInput$RevocationIds": "

The revocation IDs of the revocation files you want to remove.

" + } + }, + "RevocationType": { + "base": null, + "refs": { + "DescribeTrustStoreRevocation$RevocationType": "

The type of revocation file.

", + "RevocationContent$RevocationType": "

The type of revocation file.

", + "TrustStoreRevocation$RevocationType": "

The type of revocation file.

" + } + }, "Rule": { "base": "

Information about a rule.

", "refs": { @@ -1333,6 +1600,30 @@ "SetRulePrioritiesOutput$Rules": "

Information about the rules.

" } }, + "S3Bucket": { + "base": null, + "refs": { + "CreateTrustStoreInput$CaCertificatesBundleS3Bucket": "

The Amazon S3 bucket for the ca certificates bundle.

", + "ModifyTrustStoreInput$CaCertificatesBundleS3Bucket": "

The Amazon S3 bucket for the ca certificates bundle.

", + "RevocationContent$S3Bucket": "

The Amazon S3 bucket for the revocation file.

" + } + }, + "S3Key": { + "base": null, + "refs": { + "CreateTrustStoreInput$CaCertificatesBundleS3Key": "

The Amazon S3 path for the ca certificates bundle.

", + "ModifyTrustStoreInput$CaCertificatesBundleS3Key": "

The Amazon S3 path for the ca certificates bundle.

", + "RevocationContent$S3Key": "

The Amazon S3 path for the revocation file.

" + } + }, + "S3ObjectVersion": { + "base": null, + "refs": { + "CreateTrustStoreInput$CaCertificatesBundleS3ObjectVersion": "

The Amazon S3 object version for the ca certificates bundle. If undefined the current version is used.

", + "ModifyTrustStoreInput$CaCertificatesBundleS3ObjectVersion": "

The Amazon S3 object version for the ca certificates bundle. If undefined the current version is used.

", + "RevocationContent$S3ObjectVersion": "

The Amazon S3 object version of the revocation file.

" + } + }, "SSLPolicyNotFoundException": { "base": "

The specified SSL policy does not exist.

", "refs": { @@ -1531,6 +1822,7 @@ "CreateLoadBalancerInput$Tags": "

The tags to assign to the load balancer.

", "CreateRuleInput$Tags": "

The tags to assign to the rule.

", "CreateTargetGroupInput$Tags": "

The tags to assign to the target group.

", + "CreateTrustStoreInput$Tags": "

The tags to assign to the trust store.

", "TagDescription$Tags": "

Information about the tags.

" } }, @@ -1597,7 +1889,7 @@ "TargetGroupAttributeKey": { "base": null, "refs": { - "TargetGroupAttribute$Key": "

The name of the attribute.

The following attributes are supported by all load balancers:

The following attributes are supported by Application Load Balancers and Network Load Balancers:

The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address:

The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function:

The following attributes are supported only by Network Load Balancers:

The following attributes are supported only by Gateway Load Balancers:

" + "TargetGroupAttribute$Key": "

The name of the attribute.

The following attributes are supported by all load balancers:

The following attributes are supported by Application Load Balancers and Network Load Balancers:

The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address:

The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function:

The following attributes are supported only by Network Load Balancers:

The following attributes are supported only by Gateway Load Balancers:

" } }, "TargetGroupAttributeValue": { @@ -1758,7 +2050,7 @@ } }, "TooManyTagsException": { - "base": "

You've reached the limit on the number of tags per load balancer.

", + "base": "

You've reached the limit on the number of tags for this resource.

", "refs": { } }, @@ -1772,11 +2064,130 @@ "refs": { } }, + "TooManyTrustStoreRevocationEntriesException": { + "base": "

The specified trust store has too many revocation entries.

", + "refs": { + } + }, + "TooManyTrustStoresException": { + "base": "

You've reached the limit on the number of trust stores for your Amazon Web Services account.

", + "refs": { + } + }, "TooManyUniqueTargetGroupsPerLoadBalancerException": { "base": "

You've reached the limit on the number of unique target groups per load balancer across all listeners. If a target group is used by multiple actions for a load balancer, it is counted as only one use.

", "refs": { } }, + "TotalRevokedEntries": { + "base": null, + "refs": { + "TrustStore$TotalRevokedEntries": "

The number of revoked certificates in the trust store.

" + } + }, + "TrustStore": { + "base": "

Information about a trust store.

", + "refs": { + "TrustStores$member": null + } + }, + "TrustStoreArn": { + "base": null, + "refs": { + "AddTrustStoreRevocationsInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "DeleteTrustStoreInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "DescribeTrustStoreAssociationsInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "DescribeTrustStoreRevocation$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "DescribeTrustStoreRevocationsInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "GetTrustStoreCaCertificatesBundleInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "GetTrustStoreRevocationContentInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "ModifyTrustStoreInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "MutualAuthenticationAttributes$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "RemoveTrustStoreRevocationsInput$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "TrustStore$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

", + "TrustStoreArns$member": null, + "TrustStoreRevocation$TrustStoreArn": "

The Amazon Resource Name (ARN) of the trust store.

" + } + }, + "TrustStoreArns": { + "base": null, + "refs": { + "DescribeTrustStoresInput$TrustStoreArns": "

The Amazon Resource Name (ARN) of the trust store.

" + } + }, + "TrustStoreAssociation": { + "base": "

Information about the resources a trust store is associated with.

", + "refs": { + "TrustStoreAssociations$member": null + } + }, + "TrustStoreAssociationResourceArn": { + "base": null, + "refs": { + "TrustStoreAssociation$ResourceArn": "

The Amazon Resource Name (ARN) of the resource.

" + } + }, + "TrustStoreAssociations": { + "base": null, + "refs": { + "DescribeTrustStoreAssociationsOutput$TrustStoreAssociations": "

Information about the resources the trust store is associated to.

" + } + }, + "TrustStoreInUseException": { + "base": "

The specified trust store is currently in use.

", + "refs": { + } + }, + "TrustStoreName": { + "base": null, + "refs": { + "CreateTrustStoreInput$Name": "

The name of the trust store.

This name must be unique per region and cannot be changed after creation.

", + "TrustStore$Name": "

The name of the trust store.

", + "TrustStoreNames$member": null + } + }, + "TrustStoreNames": { + "base": null, + "refs": { + "DescribeTrustStoresInput$Names": "

The names of the trust stores.

" + } + }, + "TrustStoreNotFoundException": { + "base": "

The specified trust store does not exist.

", + "refs": { + } + }, + "TrustStoreNotReadyException": { + "base": "

The specified trust store is not active.

", + "refs": { + } + }, + "TrustStoreRevocation": { + "base": "

Information about a revocation file in use by a trust store.

", + "refs": { + "TrustStoreRevocations$member": null + } + }, + "TrustStoreRevocations": { + "base": null, + "refs": { + "AddTrustStoreRevocationsOutput$TrustStoreRevocations": "

Information about the revocation file added to the trust store.

" + } + }, + "TrustStoreStatus": { + "base": null, + "refs": { + "TrustStore$Status": "

The current status of the trust store.

" + } + }, + "TrustStores": { + "base": null, + "refs": { + "CreateTrustStoreOutput$TrustStores": "

Information about the trust store created.

", + "DescribeTrustStoresOutput$TrustStores": "

Information about the trust stores.

", + "ModifyTrustStoreOutput$TrustStores": "

Information about the modified trust store.

" + } + }, "UnsupportedProtocolException": { "base": "

The specified protocol is not supported.

", "refs": { diff --git a/apis/elasticloadbalancingv2/2015-12-01/endpoint-rule-set-1.json b/apis/elasticloadbalancingv2/2015-12-01/endpoint-rule-set-1.json index ac783e2300a..c840251e544 100644 --- a/apis/elasticloadbalancingv2/2015-12-01/endpoint-rule-set-1.json +++ b/apis/elasticloadbalancingv2/2015-12-01/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,18 +212,17 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "stringEquals", "argv": [ - "aws-us-gov", { "fn": "getAttr", "argv": [ @@ -236,7 +231,8 @@ }, "name" ] - } + }, + "aws-us-gov" ] } ], @@ -256,14 +252,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -277,7 +275,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -297,7 +294,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -308,14 +304,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -326,9 +324,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/elasticloadbalancingv2/2015-12-01/paginators-1.json b/apis/elasticloadbalancingv2/2015-12-01/paginators-1.json index 1a281f25c08..ec7152a2d29 100644 --- a/apis/elasticloadbalancingv2/2015-12-01/paginators-1.json +++ b/apis/elasticloadbalancingv2/2015-12-01/paginators-1.json @@ -14,6 +14,21 @@ "input_token": "Marker", "output_token": "NextMarker", "result_key": "TargetGroups" + }, + "DescribeTrustStoreAssociations": { + "input_token": "Marker", + "limit_key": "PageSize", + "output_token": "NextMarker" + }, + "DescribeTrustStoreRevocations": { + "input_token": "Marker", + "limit_key": "PageSize", + "output_token": "NextMarker" + }, + "DescribeTrustStores": { + "input_token": "Marker", + "limit_key": "PageSize", + "output_token": "NextMarker" } } } \ No newline at end of file diff --git a/apis/freetier/2023-09-07/api-2.json b/apis/freetier/2023-09-07/api-2.json new file mode 100644 index 00000000000..584be17b11a --- /dev/null +++ b/apis/freetier/2023-09-07/api-2.json @@ -0,0 +1,175 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-09-07", + "endpointPrefix":"freetier", + "jsonVersion":"1.0", + "protocol":"json", + "serviceFullName":"AWS Free Tier", + "serviceId":"FreeTier", + "signatureVersion":"v4", + "signingName":"freetier", + "targetPrefix":"AWSFreeTierService", + "uid":"freetier-2023-09-07" + }, + "operations":{ + "GetFreeTierUsage":{ + "name":"GetFreeTierUsage", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetFreeTierUsageRequest"}, + "output":{"shape":"GetFreeTierUsageResponse"}, + "errors":[ + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"ThrottlingException"} + ] + } + }, + "shapes":{ + "Dimension":{ + "type":"string", + "enum":[ + "SERVICE", + "OPERATION", + "USAGE_TYPE", + "REGION", + "FREE_TIER_TYPE", + "DESCRIPTION", + "USAGE_PERCENTAGE" + ] + }, + "DimensionValues":{ + "type":"structure", + "required":[ + "Key", + "MatchOptions", + "Values" + ], + "members":{ + "Key":{"shape":"Dimension"}, + "MatchOptions":{"shape":"MatchOptions"}, + "Values":{"shape":"Values"} + } + }, + "Expression":{ + "type":"structure", + "members":{ + "And":{"shape":"Expressions"}, + "Dimensions":{"shape":"DimensionValues"}, + "Not":{"shape":"Expression"}, + "Or":{"shape":"Expressions"} + } + }, + "Expressions":{ + "type":"list", + "member":{"shape":"Expression"} + }, + "FreeTierUsage":{ + "type":"structure", + "members":{ + "actualUsageAmount":{"shape":"GenericDouble"}, + "description":{"shape":"GenericString"}, + "forecastedUsageAmount":{"shape":"GenericDouble"}, + "freeTierType":{"shape":"GenericString"}, + "limit":{"shape":"GenericDouble"}, + "operation":{"shape":"GenericString"}, + "region":{"shape":"GenericString"}, + "service":{"shape":"GenericString"}, + "unit":{"shape":"GenericString"}, + "usageType":{"shape":"GenericString"} + } + }, + "FreeTierUsages":{ + "type":"list", + "member":{"shape":"FreeTierUsage"} + }, + "GenericDouble":{"type":"double"}, + "GenericString":{ + "type":"string", + "max":1024, + "min":0, + "pattern":"^[\\S\\s]*$" + }, + "GetFreeTierUsageRequest":{ + "type":"structure", + "members":{ + "filter":{"shape":"Expression"}, + "maxResults":{"shape":"MaxResults"}, + "nextToken":{"shape":"NextPageToken"} + } + }, + "GetFreeTierUsageResponse":{ + "type":"structure", + "required":["freeTierUsages"], + "members":{ + "freeTierUsages":{"shape":"FreeTierUsages"}, + "nextToken":{"shape":"NextPageToken"} + } + }, + "InternalServerException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"GenericString"} + }, + "exception":true, + "fault":true + }, + "MatchOption":{ + "type":"string", + "enum":[ + "EQUALS", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS", + "GREATER_THAN_OR_EQUAL" + ] + }, + "MatchOptions":{ + "type":"list", + "member":{"shape":"MatchOption"} + }, + "MaxResults":{ + "type":"integer", + "box":true, + "max":1000, + "min":1 + }, + "NextPageToken":{ + "type":"string", + "max":8192, + "min":1, + "pattern":"^[\\S\\s]*$" + }, + "ThrottlingException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"GenericString"} + }, + "exception":true + }, + "ValidationException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"GenericString"} + }, + "exception":true + }, + "Value":{ + "type":"string", + "max":20, + "min":1, + "pattern":"^[ a-zA-Z0-9\\-\\:\\.\\_\\/\\,\\$\\(\\)]*$" + }, + "Values":{ + "type":"list", + "member":{"shape":"Value"}, + "min":1 + } + } +} diff --git a/apis/freetier/2023-09-07/docs-2.json b/apis/freetier/2023-09-07/docs-2.json new file mode 100644 index 00000000000..666c04661ea --- /dev/null +++ b/apis/freetier/2023-09-07/docs-2.json @@ -0,0 +1,133 @@ +{ + "version": "2.0", + "service": "

You can use the Amazon Web Services Free Tier API to query programmatically your Free Tier usage data.

Free Tier tracks your monthly usage data for all free tier offers that are associated with your Amazon Web Services account. You can use the Free Tier API to filter and show only the data that you want.

Service endpoint

The Free Tier API provides the following endpoint:

For more information, see Using the Amazon Web Services Free Tier in the Billing User Guide.

", + "operations": { + "GetFreeTierUsage": "

Returns a list of all Free Tier usage objects that match your filters.

" + }, + "shapes": { + "Dimension": { + "base": null, + "refs": { + "DimensionValues$Key": "

The name of the dimension that you want to filter on.

" + } + }, + "DimensionValues": { + "base": "

Contains the specifications for the filters to use for your request.

", + "refs": { + "Expression$Dimensions": "

The specific dimension, values, and match type to filter objects with.

" + } + }, + "Expression": { + "base": "

Use Expression to filter in the GetFreeTierUsage API operation.

You can use the following patterns:

For simple dimension values, you can set the dimension name, values, and match type for the filters that you plan to use.

Example for simple dimension values

You can filter to match exactly for REGION==us-east-1 OR REGION==us-west-1.

The corresponding Expression appears like the following: { \"Dimensions\": { \"Key\": \"REGION\", \"Values\": [ \"us-east-1\", \"us-west-1\" ], \"MatchOptions\": [\"EQUALS\"] } }

As shown in the previous example, lists of dimension values are combined with OR when you apply the filter.

For complex expressions with logical operators, you can have nested expressions to use the logical operators and specify advanced filtering.

Example for complex expressions with logical operators

You can filter by ((REGION == us-east-1 OR REGION == us-west-1) OR (SERVICE CONTAINS AWSLambda)) AND (USAGE_TYPE !CONTAINS DataTransfer).

The corresponding Expression appears like the following: { \"And\": [ {\"Or\": [ {\"Dimensions\": { \"Key\": \"REGION\", \"Values\": [ \"us-east-1\", \"us-west-1\" ], \"MatchOptions\": [\"EQUALS\"] }}, {\"Dimensions\": { \"Key\": \"SERVICE\", \"Values\": [\"AWSLambda\"], \"MatchOptions\": [\"CONTAINS\"] } } ]}, {\"Not\": {\"Dimensions\": { \"Key\": \"USAGE_TYPE\", \"Values\": [\"DataTransfer\"], \"MatchOptions\": [\"CONTAINS\"] }}} ] }

In the following Contents, you must specify exactly one of the following root operators.

", + "refs": { + "Expression$Not": "

Return results that don’t match the Expression that you specified.

", + "Expressions$member": null, + "GetFreeTierUsageRequest$filter": "

An expression that specifies the conditions that you want each FreeTierUsage object to meet.

" + } + }, + "Expressions": { + "base": null, + "refs": { + "Expression$And": "

Return results that match all Expressions that you specified in the array.

", + "Expression$Or": "

Return results that match any of the Expressions that you specified. in the array.

" + } + }, + "FreeTierUsage": { + "base": "

Consists of a Amazon Web Services Free Tier offer’s metadata and your data usage for the offer.

", + "refs": { + "FreeTierUsages$member": null + } + }, + "FreeTierUsages": { + "base": null, + "refs": { + "GetFreeTierUsageResponse$freeTierUsages": "

The list of Free Tier usage objects that meet your filter expression.

" + } + }, + "GenericDouble": { + "base": null, + "refs": { + "FreeTierUsage$actualUsageAmount": "

Describes the actual usage accrued month-to-day (MTD) that you've used so far.

", + "FreeTierUsage$forecastedUsageAmount": "

Describes the forecasted usage by the month that you're expected to use.

", + "FreeTierUsage$limit": "

Describes the maximum usage allowed in Free Tier.

" + } + }, + "GenericString": { + "base": null, + "refs": { + "FreeTierUsage$description": "

The description of the Free Tier offer.

", + "FreeTierUsage$freeTierType": "

Describes the type of the Free Tier offer. For example, the offer can be \"12 Months Free\", \"Always Free\", and \"Free Trial\".

", + "FreeTierUsage$operation": "

Describes usageType more granularly with the specific Amazon Web Service API operation. For example, this can be the RunInstances API operation for Amazon Elastic Compute Cloud.

", + "FreeTierUsage$region": "

Describes the Amazon Web Services Region for which this offer is applicable

", + "FreeTierUsage$service": "

The name of the Amazon Web Service providing the Free Tier offer. For example, this can be Amazon Elastic Compute Cloud.

", + "FreeTierUsage$unit": "

Describes the unit of the usageType, such as Hrs.

", + "FreeTierUsage$usageType": "

Describes the usage details of the offer. For example, this might be Global-BoxUsage:freetrial.

", + "InternalServerException$message": null, + "ThrottlingException$message": null, + "ValidationException$message": null + } + }, + "GetFreeTierUsageRequest": { + "base": null, + "refs": { + } + }, + "GetFreeTierUsageResponse": { + "base": null, + "refs": { + } + }, + "InternalServerException": { + "base": "

An unexpected error occurred during the processing of your request.

", + "refs": { + } + }, + "MatchOption": { + "base": null, + "refs": { + "MatchOptions$member": null + } + }, + "MatchOptions": { + "base": null, + "refs": { + "DimensionValues$MatchOptions": "

The match options that you can use to filter your results. You can specify only one of these values in the array.

" + } + }, + "MaxResults": { + "base": null, + "refs": { + "GetFreeTierUsageRequest$maxResults": "

The maximum number of results to return in the response. MaxResults means that there can be up to the specified number of values, but there might be fewer results based on your filters.

" + } + }, + "NextPageToken": { + "base": null, + "refs": { + "GetFreeTierUsageRequest$nextToken": "

The pagination token that indicates the next set of results to retrieve.

", + "GetFreeTierUsageResponse$nextToken": "

The pagination token that indicates the next set of results to retrieve.

" + } + }, + "ThrottlingException": { + "base": "

The request was denied due to request throttling.

", + "refs": { + } + }, + "ValidationException": { + "base": "

The input fails to satisfy the constraints specified by an Amazon Web Service.

", + "refs": { + } + }, + "Value": { + "base": null, + "refs": { + "Values$member": null + } + }, + "Values": { + "base": null, + "refs": { + "DimensionValues$Values": "

The metadata values you can specify to filter upon, so that the results all match at least one of the specified values.

" + } + } + } +} diff --git a/apis/freetier/2023-09-07/endpoint-rule-set-1.json b/apis/freetier/2023-09-07/endpoint-rule-set-1.json new file mode 100644 index 00000000000..1d469532530 --- /dev/null +++ b/apis/freetier/2023-09-07/endpoint-rule-set-1.json @@ -0,0 +1,392 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] + }, + "aws" + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://freetier-fips.{Region}.api.aws", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://freetier.us-east-1.api.aws", + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://freetier-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-cn-global" + ] + } + ], + "endpoint": { + "url": "https://freetier.cn-northwest-1.api.amazonwebservices.com.cn", + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "cn-northwest-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://freetier.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://freetier-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-cn-global" + ] + } + ], + "endpoint": { + "url": "https://freetier.cn-northwest-1.api.amazonwebservices.com.cn", + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "cn-northwest-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://freetier.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ] +} \ No newline at end of file diff --git a/apis/freetier/2023-09-07/endpoint-tests-1.json b/apis/freetier/2023-09-07/endpoint-tests-1.json new file mode 100644 index 00000000000..7d15539bb5b --- /dev/null +++ b/apis/freetier/2023-09-07/endpoint-tests-1.json @@ -0,0 +1,170 @@ +{ + "testCases": [ + { + "documentation": "For region aws-global with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "us-east-1" + } + ] + }, + "url": "https://freetier.us-east-1.api.aws" + } + }, + "params": { + "Region": "aws-global", + "UseFIPS": false + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://freetier-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "us-east-1" + } + ] + }, + "url": "https://freetier.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For region aws-cn-global with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "freetier", + "signingRegion": "cn-northwest-1" + } + ] + }, + "url": "https://freetier.cn-northwest-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "aws-cn-global", + "UseFIPS": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://freetier-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://freetier.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://freetier-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://freetier.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/freetier/2023-09-07/examples-1.json b/apis/freetier/2023-09-07/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/freetier/2023-09-07/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/freetier/2023-09-07/paginators-1.json b/apis/freetier/2023-09-07/paginators-1.json new file mode 100644 index 00000000000..2ccdd2b7008 --- /dev/null +++ b/apis/freetier/2023-09-07/paginators-1.json @@ -0,0 +1,10 @@ +{ + "pagination": { + "GetFreeTierUsage": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "freeTierUsages" + } + } +} diff --git a/apis/fsx/2018-03-01/api-2.json b/apis/fsx/2018-03-01/api-2.json index 7f9a284bb53..13f147daf22 100644 --- a/apis/fsx/2018-03-01/api-2.json +++ b/apis/fsx/2018-03-01/api-2.json @@ -67,6 +67,22 @@ ], "idempotent":true }, + "CopySnapshotAndUpdateVolume":{ + "name":"CopySnapshotAndUpdateVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CopySnapshotAndUpdateVolumeRequest"}, + "output":{"shape":"CopySnapshotAndUpdateVolumeResponse"}, + "errors":[ + {"shape":"BadRequest"}, + {"shape":"IncompatibleParameterError"}, + {"shape":"InternalServerError"}, + {"shape":"ServiceLimitExceeded"} + ], + "idempotent":true + }, "CreateBackup":{ "name":"CreateBackup", "http":{ @@ -463,6 +479,19 @@ {"shape":"InternalServerError"} ] }, + "DescribeSharedVpcConfiguration":{ + "name":"DescribeSharedVpcConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSharedVpcConfigurationRequest"}, + "output":{"shape":"DescribeSharedVpcConfigurationResponse"}, + "errors":[ + {"shape":"BadRequest"}, + {"shape":"InternalServerError"} + ] + }, "DescribeSnapshots":{ "name":"DescribeSnapshots", "http":{ @@ -670,6 +699,20 @@ {"shape":"ServiceLimitExceeded"} ] }, + "UpdateSharedVpcConfiguration":{ + "name":"UpdateSharedVpcConfiguration", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateSharedVpcConfigurationRequest"}, + "output":{"shape":"UpdateSharedVpcConfigurationResponse"}, + "errors":[ + {"shape":"BadRequest"}, + {"shape":"IncompatibleParameterError"}, + {"shape":"InternalServerError"} + ] + }, "UpdateSnapshot":{ "name":"UpdateSnapshot", "http":{ @@ -775,7 +818,9 @@ "TargetFileSystemValues":{"shape":"FileSystem"}, "FailureDetails":{"shape":"AdministrativeActionFailureDetails"}, "TargetVolumeValues":{"shape":"Volume"}, - "TargetSnapshotValues":{"shape":"Snapshot"} + "TargetSnapshotValues":{"shape":"Snapshot"}, + "TotalTransferBytes":{"shape":"TotalTransferBytes"}, + "RemainingTransferBytes":{"shape":"RemainingTransferBytes"} } }, "AdministrativeActionFailureDetails":{ @@ -798,7 +843,9 @@ "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", - "MISCONFIGURED_STATE_RECOVERY" + "MISCONFIGURED_STATE_RECOVERY", + "VOLUME_UPDATE_WITH_SNAPSHOT", + "VOLUME_INITIALIZE_WITH_SNAPSHOT" ] }, "AdministrativeActions":{ @@ -806,6 +853,29 @@ "member":{"shape":"AdministrativeAction"}, "max":50 }, + "Aggregate":{ + "type":"string", + "max":6, + "min":5, + "pattern":"^(aggr[0-9]{1,2})$" + }, + "AggregateConfiguration":{ + "type":"structure", + "members":{ + "Aggregates":{"shape":"Aggregates"}, + "TotalConstituents":{"shape":"TotalConstituents"} + } + }, + "AggregateListMultiplier":{ + "type":"integer", + "max":200, + "min":1 + }, + "Aggregates":{ + "type":"list", + "member":{"shape":"Aggregate"}, + "max":6 + }, "Alias":{ "type":"structure", "members":{ @@ -1085,7 +1155,39 @@ "Backup":{"shape":"Backup"} } }, + "CopySnapshotAndUpdateVolumeRequest":{ + "type":"structure", + "required":[ + "VolumeId", + "SourceSnapshotARN" + ], + "members":{ + "ClientRequestToken":{ + "shape":"ClientRequestToken", + "idempotencyToken":true + }, + "VolumeId":{"shape":"VolumeId"}, + "SourceSnapshotARN":{"shape":"ResourceARN"}, + "CopyStrategy":{"shape":"OpenZFSCopyStrategy"}, + "Options":{"shape":"UpdateOpenZFSVolumeOptions"} + } + }, + "CopySnapshotAndUpdateVolumeResponse":{ + "type":"structure", + "members":{ + "VolumeId":{"shape":"VolumeId"}, + "Lifecycle":{"shape":"VolumeLifecycle"}, + "AdministrativeActions":{"shape":"AdministrativeActions"} + } + }, "CopyTagsToDataRepositoryAssociations":{"type":"boolean"}, + "CreateAggregateConfiguration":{ + "type":"structure", + "members":{ + "Aggregates":{"shape":"Aggregates"}, + "ConstituentsPerAggregate":{"shape":"AggregateListMultiplier"} + } + }, "CreateBackupRequest":{ "type":"structure", "members":{ @@ -1258,10 +1360,7 @@ }, "CreateFileSystemOntapConfiguration":{ "type":"structure", - "required":[ - "DeploymentType", - "ThroughputCapacity" - ], + "required":["DeploymentType"], "members":{ "AutomaticBackupRetentionDays":{"shape":"AutomaticBackupRetentionDays"}, "DailyAutomaticBackupStartTime":{"shape":"DailyTime"}, @@ -1272,7 +1371,9 @@ "PreferredSubnetId":{"shape":"SubnetId"}, "RouteTableIds":{"shape":"RouteTableIds"}, "ThroughputCapacity":{"shape":"MegabytesPerSecond"}, - "WeeklyMaintenanceStartTime":{"shape":"WeeklyTime"} + "WeeklyMaintenanceStartTime":{"shape":"WeeklyTime"}, + "HAPairs":{"shape":"HAPairs"}, + "ThroughputCapacityPerHAPair":{"shape":"ThroughputCapacityPerHAPair"} } }, "CreateFileSystemOpenZFSConfiguration":{ @@ -1348,21 +1449,25 @@ }, "CreateOntapVolumeConfiguration":{ "type":"structure", - "required":[ - "SizeInMegabytes", - "StorageVirtualMachineId" - ], + "required":["StorageVirtualMachineId"], "members":{ "JunctionPath":{"shape":"JunctionPath"}, "SecurityStyle":{"shape":"SecurityStyle"}, - "SizeInMegabytes":{"shape":"VolumeCapacity"}, + "SizeInMegabytes":{ + "shape":"VolumeCapacity", + "deprecated":true, + "deprecatedMessage":"This property is deprecated, use SizeInBytes instead" + }, "StorageEfficiencyEnabled":{"shape":"Flag"}, "StorageVirtualMachineId":{"shape":"StorageVirtualMachineId"}, "TieringPolicy":{"shape":"TieringPolicy"}, "OntapVolumeType":{"shape":"InputOntapVolumeType"}, "SnapshotPolicy":{"shape":"SnapshotPolicy"}, "CopyTagsToBackups":{"shape":"Flag"}, - "SnaplockConfiguration":{"shape":"CreateSnaplockConfiguration"} + "SnaplockConfiguration":{"shape":"CreateSnaplockConfiguration"}, + "VolumeStyle":{"shape":"VolumeStyle"}, + "AggregateConfiguration":{"shape":"CreateAggregateConfiguration"}, + "SizeInBytes":{"shape":"VolumeCapacityBytes"} } }, "CreateOpenZFSOriginSnapshotConfiguration":{ @@ -2048,6 +2153,17 @@ "NextToken":{"shape":"NextToken"} } }, + "DescribeSharedVpcConfigurationRequest":{ + "type":"structure", + "members":{ + } + }, + "DescribeSharedVpcConfigurationResponse":{ + "type":"structure", + "members":{ + "EnableFsxRouteTableUpdatesFromParticipantAccounts":{"shape":"VerboseFlag"} + } + }, "DescribeSnapshotsRequest":{ "type":"structure", "members":{ @@ -2484,6 +2600,11 @@ "min":8, "pattern":"^arn:[^:]{1,63}:[^:]{0,63}:[^:]{0,63}:(?:|\\d{12}):[^/].{0,1023}$" }, + "HAPairs":{ + "type":"integer", + "max":6, + "min":1 + }, "IncompatibleParameterError":{ "type":"structure", "required":["Parameter"], @@ -2591,7 +2712,7 @@ }, "Iops":{ "type":"long", - "max":1000000, + "max":2400000, "min":0 }, "IpAddress":{ @@ -2823,13 +2944,14 @@ "type":"string", "enum":[ "MULTI_AZ_1", - "SINGLE_AZ_1" + "SINGLE_AZ_1", + "SINGLE_AZ_2" ] }, "OntapEndpointIpAddresses":{ "type":"list", "member":{"shape":"IpAddress"}, - "max":2, + "max":24, "min":1 }, "OntapFileSystemConfiguration":{ @@ -2845,7 +2967,9 @@ "RouteTableIds":{"shape":"RouteTableIds"}, "ThroughputCapacity":{"shape":"MegabytesPerSecond"}, "WeeklyMaintenanceStartTime":{"shape":"WeeklyTime"}, - "FsxAdminPassword":{"shape":"AdminPassword"} + "FsxAdminPassword":{"shape":"AdminPassword"}, + "HAPairs":{"shape":"HAPairs"}, + "ThroughputCapacityPerHAPair":{"shape":"ThroughputCapacityPerHAPair"} } }, "OntapVolumeConfiguration":{ @@ -2863,7 +2987,10 @@ "OntapVolumeType":{"shape":"OntapVolumeType"}, "SnapshotPolicy":{"shape":"SnapshotPolicy"}, "CopyTagsToBackups":{"shape":"Flag"}, - "SnaplockConfiguration":{"shape":"SnaplockConfiguration"} + "SnaplockConfiguration":{"shape":"SnaplockConfiguration"}, + "VolumeStyle":{"shape":"VolumeStyle"}, + "AggregateConfiguration":{"shape":"AggregateConfiguration"}, + "SizeInBytes":{"shape":"VolumeCapacityBytes"} } }, "OntapVolumeType":{ @@ -2900,7 +3027,8 @@ "type":"string", "enum":[ "CLONE", - "FULL_COPY" + "FULL_COPY", + "INCREMENTAL_COPY" ] }, "OpenZFSCreateRootVolumeConfiguration":{ @@ -3020,7 +3148,10 @@ "UserAndGroupQuotas":{"shape":"OpenZFSUserAndGroupQuotas"}, "RestoreToSnapshot":{"shape":"SnapshotId"}, "DeleteIntermediateSnaphots":{"shape":"Flag"}, - "DeleteClonedVolumes":{"shape":"Flag"} + "DeleteClonedVolumes":{"shape":"Flag"}, + "DeleteIntermediateData":{"shape":"Flag"}, + "SourceSnapshotARN":{"shape":"ResourceARN"}, + "DestinationSnapshot":{"shape":"SnapshotId"} } }, "OrganizationalUnitDistinguishedName":{ @@ -3082,6 +3213,10 @@ } }, "ReleasedCapacity":{"type":"long"}, + "RemainingTransferBytes":{ + "type":"long", + "min":0 + }, "ReportFormat":{ "type":"string", "enum":["REPORT_CSV_20191124"] @@ -3664,6 +3799,11 @@ "member":{"shape":"TaskId"}, "max":50 }, + "ThroughputCapacityPerHAPair":{ + "type":"integer", + "max":6144, + "min":128 + }, "TieringPolicy":{ "type":"structure", "members":{ @@ -3680,7 +3820,16 @@ "NONE" ] }, + "TotalConstituents":{ + "type":"integer", + "max":200, + "min":1 + }, "TotalCount":{"type":"long"}, + "TotalTransferBytes":{ + "type":"long", + "min":0 + }, "UUID":{ "type":"string", "max":36, @@ -3779,7 +3928,8 @@ "DiskIopsConfiguration":{"shape":"DiskIopsConfiguration"}, "ThroughputCapacity":{"shape":"MegabytesPerSecond"}, "AddRouteTableIds":{"shape":"RouteTableIds"}, - "RemoveRouteTableIds":{"shape":"RouteTableIds"} + "RemoveRouteTableIds":{"shape":"RouteTableIds"}, + "ThroughputCapacityPerHAPair":{"shape":"ThroughputCapacityPerHAPair"} } }, "UpdateFileSystemOpenZFSConfiguration":{ @@ -3841,7 +3991,8 @@ "TieringPolicy":{"shape":"TieringPolicy"}, "SnapshotPolicy":{"shape":"SnapshotPolicy"}, "CopyTagsToBackups":{"shape":"Flag"}, - "SnaplockConfiguration":{"shape":"UpdateSnaplockConfiguration"} + "SnaplockConfiguration":{"shape":"UpdateSnaplockConfiguration"}, + "SizeInBytes":{"shape":"VolumeCapacityBytes"} } }, "UpdateOpenZFSVolumeConfiguration":{ @@ -3856,6 +4007,34 @@ "ReadOnly":{"shape":"ReadOnly"} } }, + "UpdateOpenZFSVolumeOption":{ + "type":"string", + "enum":[ + "DELETE_INTERMEDIATE_SNAPSHOTS", + "DELETE_CLONED_VOLUMES", + "DELETE_INTERMEDIATE_DATA" + ] + }, + "UpdateOpenZFSVolumeOptions":{ + "type":"list", + "member":{"shape":"UpdateOpenZFSVolumeOption"} + }, + "UpdateSharedVpcConfigurationRequest":{ + "type":"structure", + "members":{ + "EnableFsxRouteTableUpdatesFromParticipantAccounts":{"shape":"VerboseFlag"}, + "ClientRequestToken":{ + "shape":"ClientRequestToken", + "idempotencyToken":true + } + } + }, + "UpdateSharedVpcConfigurationResponse":{ + "type":"structure", + "members":{ + "EnableFsxRouteTableUpdatesFromParticipantAccounts":{"shape":"VerboseFlag"} + } + }, "UpdateSnaplockConfiguration":{ "type":"structure", "members":{ @@ -3937,6 +4116,12 @@ "type":"long", "min":0 }, + "VerboseFlag":{ + "type":"string", + "max":5, + "min":4, + "pattern":"^(?i)(true|false)$" + }, "Volume":{ "type":"structure", "members":{ @@ -3956,7 +4141,12 @@ }, "VolumeCapacity":{ "type":"integer", - "max":314572800, + "max":2147483647, + "min":0 + }, + "VolumeCapacityBytes":{ + "type":"long", + "max":22517998000000000, "min":0 }, "VolumeFilter":{ @@ -4031,6 +4221,13 @@ "min":1, "pattern":"^[A-za-z0-9\\_\\.\\:\\-\\/]*$" }, + "VolumeStyle":{ + "type":"string", + "enum":[ + "FLEXVOL", + "FLEXGROUP" + ] + }, "VolumeType":{ "type":"string", "enum":[ diff --git a/apis/fsx/2018-03-01/docs-2.json b/apis/fsx/2018-03-01/docs-2.json index c98a1ea9762..7de31768747 100644 --- a/apis/fsx/2018-03-01/docs-2.json +++ b/apis/fsx/2018-03-01/docs-2.json @@ -5,6 +5,7 @@ "AssociateFileSystemAliases": "

Use this action to associate one or more Domain Name Server (DNS) aliases with an existing Amazon FSx for Windows File Server file system. A file system can have a maximum of 50 DNS aliases associated with it at any one time. If you try to associate a DNS alias that is already associated with the file system, FSx takes no action on that alias in the request. For more information, see Working with DNS Aliases and Walkthrough 5: Using DNS aliases to access your file system, including additional steps you must take to be able to access your file system using a DNS alias.

The system response shows the DNS aliases that Amazon FSx is attempting to associate with the file system. Use the API operation to monitor the status of the aliases Amazon FSx is associating with the file system.

", "CancelDataRepositoryTask": "

Cancels an existing Amazon FSx for Lustre data repository task if that task is in either the PENDING or EXECUTING state. When you cancel am export task, Amazon FSx does the following.

For a release task, Amazon FSx will stop releasing files upon cancellation. Any files that have already been released will remain in the released state.

", "CopyBackup": "

Copies an existing backup within the same Amazon Web Services account to another Amazon Web Services Region (cross-Region copy) or within the same Amazon Web Services Region (in-Region copy). You can have up to five backup copy requests in progress to a single destination Region per account.

You can use cross-Region backup copies for cross-Region disaster recovery. You can periodically take backups and copy them to another Region so that in the event of a disaster in the primary Region, you can restore from backup and recover availability quickly in the other Region. You can make cross-Region copies only within your Amazon Web Services partition. A partition is a grouping of Regions. Amazon Web Services currently has three partitions: aws (Standard Regions), aws-cn (China Regions), and aws-us-gov (Amazon Web Services GovCloud [US] Regions).

You can also use backup copies to clone your file dataset to another Region or within the same Region.

You can use the SourceRegion parameter to specify the Amazon Web Services Region from which the backup will be copied. For example, if you make the call from the us-west-1 Region and want to copy a backup from the us-east-2 Region, you specify us-east-2 in the SourceRegion parameter to make a cross-Region copy. If you don't specify a Region, the backup copy is created in the same Region where the request is sent from (in-Region copy).

For more information about creating backup copies, see Copying backups in the Amazon FSx for Windows User Guide, Copying backups in the Amazon FSx for Lustre User Guide, and Copying backups in the Amazon FSx for OpenZFS User Guide.

", + "CopySnapshotAndUpdateVolume": "

Updates an existing volume by using a snapshot from another Amazon FSx for OpenZFS file system. For more information, see on-demand data replication in the Amazon FSx for OpenZFS User Guide.

", "CreateBackup": "

Creates a backup of an existing Amazon FSx for Windows File Server file system, Amazon FSx for Lustre file system, Amazon FSx for NetApp ONTAP volume, or Amazon FSx for OpenZFS file system. We recommend creating regular backups so that you can restore a file system or volume from a backup if an issue arises with the original file system or volume.

For Amazon FSx for Lustre file systems, you can create a backup only for file systems that have the following configuration:

For more information about backups, see the following:

If a backup with the specified client request token exists and the parameters match, this operation returns the description of the existing backup. If a backup with the specified client request token exists and the parameters don't match, this operation returns IncompatibleParameterError. If a backup with the specified client request token doesn't exist, CreateBackup does the following:

By using the idempotent operation, you can retry a CreateBackup operation without the risk of creating an extra backup. This approach can be useful when an initial call fails in a way that makes it unclear whether a backup was created. If you use the same client request token and the initial call created a backup, the operation returns a successful result because all the parameters are the same.

The CreateBackup operation returns while the backup's lifecycle state is still CREATING. You can check the backup creation status by calling the DescribeBackups operation, which returns the backup state along with other information.

", "CreateDataRepositoryAssociation": "

Creates an Amazon FSx for Lustre data repository association (DRA). A data repository association is a link between a directory on the file system and an Amazon S3 bucket or prefix. You can have a maximum of 8 data repository associations on a file system. Data repository associations are supported on all FSx for Lustre 2.12 and 2.15 file systems, excluding scratch_1 deployment type.

Each data repository association must have a unique Amazon FSx file system directory and a unique S3 bucket or prefix associated with it. You can configure a data repository association for automatic import only, for automatic export only, or for both. To learn more about linking a data repository to your file system, see Linking your file system to an S3 bucket.

CreateDataRepositoryAssociation isn't supported on Amazon File Cache resources. To create a DRA on Amazon File Cache, use the CreateFileCache operation.

", "CreateDataRepositoryTask": "

Creates an Amazon FSx for Lustre data repository task. A CreateDataRepositoryTask operation will fail if a data repository is not linked to the FSx file system.

You use import and export data repository tasks to perform bulk operations between your FSx for Lustre file system and its linked data repositories. An example of a data repository task is exporting any data and metadata changes, including POSIX metadata, to files, directories, and symbolic links (symlinks) from your FSx file system to a linked data repository.

You use release data repository tasks to release data from your file system for files that are exported to S3. The metadata of released files remains on the file system so users or applications can still access released files by reading the files again, which will restore data from Amazon S3 to the FSx for Lustre file system.

To learn more about data repository tasks, see Data Repository Tasks. To learn more about linking a data repository to your file system, see Linking your file system to an S3 bucket.

", @@ -28,10 +29,11 @@ "DescribeFileCaches": "

Returns the description of a specific Amazon File Cache resource, if a FileCacheIds value is provided for that cache. Otherwise, it returns descriptions of all caches owned by your Amazon Web Services account in the Amazon Web Services Region of the endpoint that you're calling.

When retrieving all cache descriptions, you can optionally specify the MaxResults parameter to limit the number of descriptions in a response. If more cache descriptions remain, the operation returns a NextToken value in the response. In this case, send a later request with the NextToken request parameter set to the value of NextToken from the last response.

This operation is used in an iterative process to retrieve a list of your cache descriptions. DescribeFileCaches is called first without a NextTokenvalue. Then the operation continues to be called with the NextToken parameter set to the value of the last NextToken value until a response has no NextToken.

When using this operation, keep the following in mind:

", "DescribeFileSystemAliases": "

Returns the DNS aliases that are associated with the specified Amazon FSx for Windows File Server file system. A history of all DNS aliases that have been associated with and disassociated from the file system is available in the list of AdministrativeAction provided in the DescribeFileSystems operation response.

", "DescribeFileSystems": "

Returns the description of specific Amazon FSx file systems, if a FileSystemIds value is provided for that file system. Otherwise, it returns descriptions of all file systems owned by your Amazon Web Services account in the Amazon Web Services Region of the endpoint that you're calling.

When retrieving all file system descriptions, you can optionally specify the MaxResults parameter to limit the number of descriptions in a response. If more file system descriptions remain, Amazon FSx returns a NextToken value in the response. In this case, send a later request with the NextToken request parameter set to the value of NextToken from the last response.

This operation is used in an iterative process to retrieve a list of your file system descriptions. DescribeFileSystems is called first without a NextTokenvalue. Then the operation continues to be called with the NextToken parameter set to the value of the last NextToken value until a response has no NextToken.

When using this operation, keep the following in mind:

", + "DescribeSharedVpcConfiguration": "

Indicates whether participant accounts in your organization can create Amazon FSx for NetApp ONTAP Multi-AZ file systems in subnets that are shared by a virtual private cloud (VPC) owner. For more information, see the Amazon FSx for NetApp ONTAP User Guide.

", "DescribeSnapshots": "

Returns the description of specific Amazon FSx for OpenZFS snapshots, if a SnapshotIds value is provided. Otherwise, this operation returns all snapshots owned by your Amazon Web Services account in the Amazon Web Services Region of the endpoint that you're calling.

When retrieving all snapshots, you can optionally specify the MaxResults parameter to limit the number of snapshots in a response. If more backups remain, Amazon FSx returns a NextToken value in the response. In this case, send a later request with the NextToken request parameter set to the value of NextToken from the last response.

Use this operation in an iterative process to retrieve a list of your snapshots. DescribeSnapshots is called first without a NextToken value. Then the operation continues to be called with the NextToken parameter set to the value of the last NextToken value until a response has no NextToken value.

When using this operation, keep the following in mind:

", "DescribeStorageVirtualMachines": "

Describes one or more Amazon FSx for NetApp ONTAP storage virtual machines (SVMs).

", "DescribeVolumes": "

Describes one or more Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS volumes.

", - "DisassociateFileSystemAliases": "

Use this action to disassociate, or remove, one or more Domain Name Service (DNS) aliases from an Amazon FSx for Windows File Server file system. If you attempt to disassociate a DNS alias that is not associated with the file system, Amazon FSx responds with a 400 Bad Request. For more information, see Working with DNS Aliases.

The system generated response showing the DNS aliases that Amazon FSx is attempting to disassociate from the file system. Use the API operation to monitor the status of the aliases Amazon FSx is disassociating with the file system.

", + "DisassociateFileSystemAliases": "

Use this action to disassociate, or remove, one or more Domain Name Service (DNS) aliases from an Amazon FSx for Windows File Server file system. If you attempt to disassociate a DNS alias that is not associated with the file system, Amazon FSx responds with an HTTP status code 400 (Bad Request). For more information, see Working with DNS Aliases.

The system generated response showing the DNS aliases that Amazon FSx is attempting to disassociate from the file system. Use the API operation to monitor the status of the aliases Amazon FSx is disassociating with the file system.

", "ListTagsForResource": "

Lists tags for Amazon FSx resources.

When retrieving all tags, you can optionally specify the MaxResults parameter to limit the number of tags in a response. If more tags remain, Amazon FSx returns a NextToken value in the response. In this case, send a later request with the NextToken request parameter set to the value of NextToken from the last response.

This action is used in an iterative process to retrieve a list of your tags. ListTagsForResource is called first without a NextTokenvalue. Then the action continues to be called with the NextToken parameter set to the value of the last NextToken value until a response has no NextToken.

When using this action, keep the following in mind:

", "ReleaseFileSystemNfsV3Locks": "

Releases the file system lock from an Amazon FSx for OpenZFS file system.

", "RestoreVolumeFromSnapshot": "

Returns an Amazon FSx for OpenZFS volume to the state saved by the specified snapshot.

", @@ -40,7 +42,8 @@ "UntagResource": "

This action removes a tag from an Amazon FSx resource.

", "UpdateDataRepositoryAssociation": "

Updates the configuration of an existing data repository association on an Amazon FSx for Lustre file system. Data repository associations are supported on all FSx for Lustre 2.12 and 2.15 file systems, excluding scratch_1 deployment type.

", "UpdateFileCache": "

Updates the configuration of an existing Amazon File Cache resource. You can update multiple properties in a single request.

", - "UpdateFileSystem": "

Use this operation to update the configuration of an existing Amazon FSx file system. You can update multiple properties in a single request.

For FSx for Windows File Server file systems, you can update the following properties:

For FSx for Lustre file systems, you can update the following properties:

For FSx for ONTAP file systems, you can update the following properties:

For FSx for OpenZFS file systems, you can update the following properties:

", + "UpdateFileSystem": "

Use this operation to update the configuration of an existing Amazon FSx file system. You can update multiple properties in a single request.

For FSx for Windows File Server file systems, you can update the following properties:

For FSx for Lustre file systems, you can update the following properties:

For FSx for ONTAP file systems, you can update the following properties:

For FSx for OpenZFS file systems, you can update the following properties:

", + "UpdateSharedVpcConfiguration": "

Configures whether participant accounts in your organization can create Amazon FSx for NetApp ONTAP Multi-AZ file systems in subnets that are shared by a virtual private cloud (VPC) owner. For more information, see the Amazon FSx for NetApp ONTAP User Guide.

We strongly recommend that participant-created Multi-AZ file systems in the shared VPC are deleted before you disable this feature. Once the feature is disabled, these file systems will enter a MISCONFIGURED state and behave like Single-AZ file systems. For more information, see Important considerations before disabling shared VPC support for Multi-AZ file systems.

", "UpdateSnapshot": "

Updates the name of an Amazon FSx for OpenZFS snapshot.

", "UpdateStorageVirtualMachine": "

Updates an FSx for ONTAP storage virtual machine (SVM).

", "UpdateVolume": "

Updates the configuration of an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS volume.

" @@ -92,7 +95,7 @@ } }, "AdministrativeAction": { - "base": "

Describes a specific Amazon FSx administrative action for the current Windows, Lustre, or OpenZFS file system.

", + "base": "

Describes a specific Amazon FSx administrative action for the current Windows, Lustre, OpenZFS, or ONTAP file system or volume.

", "refs": { "AdministrativeActions$member": null } @@ -104,7 +107,7 @@ } }, "AdministrativeActionType": { - "base": "

Describes the type of administrative action, as follows:

", + "base": "

Describes the type of administrative action, as follows:

", "refs": { "AdministrativeAction$AdministrativeActionType": null } @@ -112,12 +115,38 @@ "AdministrativeActions": { "base": null, "refs": { + "CopySnapshotAndUpdateVolumeResponse$AdministrativeActions": "

A list of administrative actions for the file system that are in process or waiting to be processed. Administrative actions describe changes to the Amazon FSx system.

", "FileSystem$AdministrativeActions": "

A list of administrative actions for the file system that are in process or waiting to be processed. Administrative actions describe changes to the Amazon FSx system that you have initiated using the UpdateFileSystem operation.

", "RestoreVolumeFromSnapshotResponse$AdministrativeActions": "

A list of administrative actions for the file system that are in process or waiting to be processed. Administrative actions describe changes to the Amazon FSx system.

", "Snapshot$AdministrativeActions": "

A list of administrative actions for the file system that are in process or waiting to be processed. Administrative actions describe changes to the Amazon FSx system.

", "Volume$AdministrativeActions": "

A list of administrative actions for the volume that are in process or waiting to be processed. Administrative actions describe changes to the volume that you have initiated using the UpdateVolume action.

" } }, + "Aggregate": { + "base": null, + "refs": { + "Aggregates$member": null + } + }, + "AggregateConfiguration": { + "base": "

Used to specify configuration options for a volume’s storage aggregate or aggregates.

", + "refs": { + "OntapVolumeConfiguration$AggregateConfiguration": "

This structure specifies configuration options for a volume’s storage aggregate or aggregates.

" + } + }, + "AggregateListMultiplier": { + "base": null, + "refs": { + "CreateAggregateConfiguration$ConstituentsPerAggregate": "

Used to explicitly set the number of constituents within the FlexGroup per storage aggregate. This field is optional when creating a FlexGroup volume. If unspecified, the default value will be 8. This field cannot be provided when creating a FlexVol volume.

" + } + }, + "Aggregates": { + "base": null, + "refs": { + "AggregateConfiguration$Aggregates": "

The list of aggregates that this volume resides on. Aggregates are storage pools which make up your primary storage tier. Each high-availability (HA) pair has one aggregate. The names of the aggregates map to the names of the aggregates in the ONTAP CLI and REST API. For FlexVols, there will always be a single entry.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", + "CreateAggregateConfiguration$Aggregates": "

Used to specify the names of aggregates on which the volume will be created.

" + } + }, "Alias": { "base": "

A DNS alias that is associated with the file system. You can use a DNS alias to access a file system using user-defined DNS names, in addition to the default DNS name that Amazon FSx assigns to the file system. For more information, see DNS aliases in the FSx for Windows File Server User Guide.

", "refs": { @@ -346,6 +375,7 @@ "refs": { "AssociateFileSystemAliasesRequest$ClientRequestToken": null, "CopyBackupRequest$ClientRequestToken": null, + "CopySnapshotAndUpdateVolumeRequest$ClientRequestToken": null, "CreateBackupRequest$ClientRequestToken": "

(Optional) A string of up to 63 ASCII characters that Amazon FSx uses to ensure idempotent creation. This string is automatically filled on your behalf when you use the Command Line Interface (CLI) or an Amazon Web Services SDK.

", "CreateDataRepositoryAssociationRequest$ClientRequestToken": null, "CreateDataRepositoryTaskRequest$ClientRequestToken": null, @@ -371,6 +401,7 @@ "UpdateDataRepositoryAssociationRequest$ClientRequestToken": null, "UpdateFileCacheRequest$ClientRequestToken": null, "UpdateFileSystemRequest$ClientRequestToken": "

A string of up to 63 ASCII characters that Amazon FSx uses to ensure idempotent updates. This string is automatically filled on your behalf when you use the Command Line Interface (CLI) or an Amazon Web Services SDK.

", + "UpdateSharedVpcConfigurationRequest$ClientRequestToken": null, "UpdateSnapshotRequest$ClientRequestToken": null, "UpdateStorageVirtualMachineRequest$ClientRequestToken": null, "UpdateVolumeRequest$ClientRequestToken": null @@ -399,6 +430,16 @@ "refs": { } }, + "CopySnapshotAndUpdateVolumeRequest": { + "base": null, + "refs": { + } + }, + "CopySnapshotAndUpdateVolumeResponse": { + "base": null, + "refs": { + } + }, "CopyTagsToDataRepositoryAssociations": { "base": null, "refs": { @@ -406,6 +447,12 @@ "FileCacheCreating$CopyTagsToDataRepositoryAssociations": "

A boolean flag indicating whether tags for the cache should be copied to data repository associations.

" } }, + "CreateAggregateConfiguration": { + "base": "

Used to specify the configuration options for a volume's storage aggregate or aggregates.

", + "refs": { + "CreateOntapVolumeConfiguration$AggregateConfiguration": "

Use to specify configuration options for a volume’s storage aggregate or aggregates.

" + } + }, "CreateBackupRequest": { "base": "

The request object for the CreateBackup operation.

", "refs": { @@ -513,7 +560,7 @@ } }, "CreateOpenZFSOriginSnapshotConfiguration": { - "base": "

The snapshot configuration to use when creating an OpenZFS volume from a snapshot.

", + "base": "

The snapshot configuration to use when creating an Amazon FSx for OpenZFS volume from a snapshot.

", "refs": { "CreateOpenZFSVolumeConfiguration$OriginSnapshot": "

The configuration object that specifies the snapshot to use as the origin of the data for the volume.

" } @@ -996,6 +1043,16 @@ "refs": { } }, + "DescribeSharedVpcConfigurationRequest": { + "base": null, + "refs": { + } + }, + "DescribeSharedVpcConfigurationResponse": { + "base": null, + "refs": { + } + }, "DescribeSnapshotsRequest": { "base": null, "refs": { @@ -1275,7 +1332,7 @@ "FileSystem": { "base": "

A description of a specific Amazon FSx file system.

", "refs": { - "AdministrativeAction$TargetFileSystemValues": "

Describes the target value for the administration action, provided in the UpdateFileSystem operation. Returned for FILE_SYSTEM_UPDATE administrative actions.

", + "AdministrativeAction$TargetFileSystemValues": "

The target value for the administration action, provided in the UpdateFileSystem operation. Returned for FILE_SYSTEM_UPDATE administrative actions.

", "Backup$FileSystem": "

The metadata of the file system associated with the backup. This metadata is persisted even if the file system is deleted.

", "CreateFileSystemFromBackupResponse$FileSystem": "

A description of the file system.

", "CreateFileSystemResponse$FileSystem": "

The configuration of the file system that was created.

", @@ -1450,6 +1507,7 @@ "OpenZFSVolumeConfiguration$CopyTagsToSnapshots": "

A Boolean value indicating whether tags for the volume should be copied to snapshots. This value defaults to false. If it's set to true, all tags for the volume are copied to snapshots where the user doesn't specify tags. If this value is true and you specify one or more tags, only the specified tags are copied to snapshots. If you specify one or more tags when creating the snapshot, no tags are copied from the volume, regardless of this value.

", "OpenZFSVolumeConfiguration$DeleteIntermediateSnaphots": "

A Boolean value indicating whether snapshots between the current state and the specified snapshot should be deleted when a volume is restored from snapshot.

", "OpenZFSVolumeConfiguration$DeleteClonedVolumes": "

A Boolean value indicating whether dependent clone volumes created from intermediate snapshots should be deleted when a volume is restored from snapshot.

", + "OpenZFSVolumeConfiguration$DeleteIntermediateData": "

A Boolean value indicating whether snapshot data that differs between the current state and the specified snapshot should be overwritten when a volume is restored from a snapshot.

", "SnaplockConfiguration$AuditLogVolume": "

Enables or disables the audit log volume for an FSx for ONTAP SnapLock volume. The default value is false. If you set AuditLogVolume to true, the SnapLock volume is created as an audit log volume. The minimum retention period for an audit log volume is six months.

For more information, see SnapLock audit log volumes.

", "SnaplockConfiguration$VolumeAppendModeEnabled": "

Enables or disables volume-append mode on an FSx for ONTAP SnapLock volume. Volume-append mode allows you to create WORM-appendable files and write data to them incrementally. The default value is false.

For more information, see Volume-append mode.

", "UpdateFileSystemOpenZFSConfiguration$CopyTagsToBackups": "

A Boolean value indicating whether tags for the file system should be copied to backups. This value defaults to false. If it's set to true, all tags for the file system are copied to all automatic and user-initiated backups where the user doesn't specify tags. If this value is true and you specify one or more tags, only the specified tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system, regardless of this value.

", @@ -1476,6 +1534,13 @@ "WindowsAuditLogCreateConfiguration$AuditLogDestination": "

The Amazon Resource Name (ARN) that specifies the destination of the audit logs.

The destination can be any Amazon CloudWatch Logs log group ARN or Amazon Kinesis Data Firehose delivery stream ARN, with the following requirements:

" } }, + "HAPairs": { + "base": null, + "refs": { + "CreateFileSystemOntapConfiguration$HAPairs": "

Specifies how many high-availability (HA) pairs the file system will have. The default value is 1. The value of this property affects the values of StorageCapacity, Iops, and ThroughputCapacity. For more information, see High-availability (HA) pairs in the FSx for ONTAP user guide.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", + "OntapFileSystemConfiguration$HAPairs": "

Specifies how many high-availability (HA) file server pairs the file system will have. The default value is 1. The value of this property affects the values of StorageCapacity, Iops, and ThroughputCapacity. For more information, see High-availability (HA) pairs in the FSx for ONTAP user guide.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

" + } + }, "IncompatibleParameterError": { "base": "

The error returned when a second request is received with the same client request token but different parameters settings. A client request token should always uniquely identify a single request.

", "refs": { @@ -1567,7 +1632,7 @@ "Iops": { "base": null, "refs": { - "DiskIopsConfiguration$Iops": "

The total number of SSD IOPS provisioned for the file system.

" + "DiskIopsConfiguration$Iops": "

The total number of SSD IOPS provisioned for the file system.

The minimum and maximum values for this property depend on the value of HAPairs and StorageCapacity. The minimum value is calculated as StorageCapacity * 3 * HAPairs (3 IOPS per GB of StorageCapacity). The maximum value is calculated as 200,000 * HAPairs.

Amazon FSx responds with an HTTP status code 400 (Bad Request) if the value of Iops is outside of the minimum or maximum values.

" } }, "IpAddress": { @@ -1734,12 +1799,12 @@ "MegabytesPerSecond": { "base": "

The sustained throughput of an Amazon FSx file system in Megabytes per second (MBps).

", "refs": { - "CreateFileSystemOntapConfiguration$ThroughputCapacity": "

Sets the throughput capacity for the file system that you're creating. Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.

", + "CreateFileSystemOntapConfiguration$ThroughputCapacity": "

Sets the throughput capacity for the file system that you're creating in megabytes per second (MBps). For more information, see Managing throughput capacity in the FSx for ONTAP User Guide.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", "CreateFileSystemOpenZFSConfiguration$ThroughputCapacity": "

Specifies the throughput of an Amazon FSx for OpenZFS file system, measured in megabytes per second (MBps). Valid values depend on the DeploymentType you choose, as follows:

You pay for additional throughput capacity that you provision.

", "CreateFileSystemWindowsConfiguration$ThroughputCapacity": "

Sets the throughput capacity of an Amazon FSx file system, measured in megabytes per second (MB/s), in 2 to the nth increments, between 2^3 (8) and 2^11 (2048).

", "OntapFileSystemConfiguration$ThroughputCapacity": null, "OpenZFSFileSystemConfiguration$ThroughputCapacity": "

The throughput of an Amazon FSx file system, measured in megabytes per second (MBps).

", - "UpdateFileSystemOntapConfiguration$ThroughputCapacity": "

Enter a new value to change the amount of throughput capacity for the file system. Throughput capacity is measured in megabytes per second (MBps). Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps. For more information, see Managing throughput capacity in the FSx for ONTAP User Guide.

", + "UpdateFileSystemOntapConfiguration$ThroughputCapacity": "

Enter a new value to change the amount of throughput capacity for the file system in megabytes per second (MBps). For more information, see Managing throughput capacity in the FSx for ONTAP User Guide.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", "UpdateFileSystemOpenZFSConfiguration$ThroughputCapacity": "

The throughput of an Amazon FSx for OpenZFS file system, measured in megabytes per second
 (MB/s). Valid values depend on the DeploymentType you choose, as follows:

", "UpdateFileSystemWindowsConfiguration$ThroughputCapacity": "

Sets the target value for a file system's throughput capacity, in MB/s, that you are updating the file system to. Valid values are 8, 16, 32, 64, 128, 256, 512, 1024, 2048. You cannot make a throughput capacity update request if there is an existing throughput capacity update request in progress. For more information, see Managing Throughput Capacity.

", "WindowsFileSystemConfiguration$ThroughputCapacity": "

The throughput of the Amazon FSx file system, measured in megabytes per second.

" @@ -1844,8 +1909,8 @@ "OntapDeploymentType": { "base": null, "refs": { - "CreateFileSystemOntapConfiguration$DeploymentType": "

Specifies the FSx for ONTAP file system deployment type to use in creating the file system.

For information about the use cases for Multi-AZ and Single-AZ deployments, refer to Choosing a file system deployment type.

", - "OntapFileSystemConfiguration$DeploymentType": "

Specifies the FSx for ONTAP file system deployment type in use in the file system.

For information about the use cases for Multi-AZ and Single-AZ deployments, refer to Choosing Multi-AZ or Single-AZ file system deployment.

" + "CreateFileSystemOntapConfiguration$DeploymentType": "

Specifies the FSx for ONTAP file system deployment type to use in creating the file system.

For information about the use cases for Multi-AZ and Single-AZ deployments, refer to Choosing a file system deployment type.

", + "OntapFileSystemConfiguration$DeploymentType": "

Specifies the FSx for ONTAP file system deployment type in use in the file system.

For information about the use cases for Multi-AZ and Single-AZ deployments, refer to Choosing Multi-AZ or Single-AZ file system deployment.

" } }, "OntapEndpointIpAddresses": { @@ -1894,8 +1959,9 @@ "OpenZFSCopyStrategy": { "base": null, "refs": { - "CreateOpenZFSOriginSnapshotConfiguration$CopyStrategy": "

The strategy used when copying data from the snapshot to the new volume.

", - "OpenZFSOriginSnapshotConfiguration$CopyStrategy": "

The strategy used when copying data from the snapshot to the new volume.

" + "CopySnapshotAndUpdateVolumeRequest$CopyStrategy": "

Specifies the strategy to use when copying data from a snapshot to the volume.

CLONE isn't a valid copy strategy option for the CopySnapshotAndUpdateVolume operation.

", + "CreateOpenZFSOriginSnapshotConfiguration$CopyStrategy": "

Specifies the strategy used when copying data from the snapshot to the new volume.

The INCREMENTAL_COPY option is only for updating an existing volume by using a snapshot from another FSx for OpenZFS file system. For more information, see CopySnapshotAndUpdateVolume.

", + "OpenZFSOriginSnapshotConfiguration$CopyStrategy": "

The strategy used when copying data from the snapshot to the new volume.

The INCREMENTAL_COPY option is only for updating an existing volume by using a snapshot from another FSx for OpenZFS file system. For more information, see CopySnapshotAndUpdateVolume.

" } }, "OpenZFSCreateRootVolumeConfiguration": { @@ -1954,7 +2020,7 @@ } }, "OpenZFSOriginSnapshotConfiguration": { - "base": "

The snapshot configuration to use when creating an OpenZFS volume from a snapshot.

", + "base": "

The snapshot configuration used when creating an Amazon FSx for OpenZFS volume from a snapshot.

", "refs": { "OpenZFSVolumeConfiguration$OriginSnapshot": "

The configuration object that specifies the snapshot to use as the origin of the data for the volume.

" } @@ -2064,6 +2130,12 @@ "DataRepositoryTaskStatus$ReleasedCapacity": "

The total amount of data, in GiB, released by an Amazon File Cache AUTO_RELEASE_DATA task that automatically releases files from the cache.

" } }, + "RemainingTransferBytes": { + "base": null, + "refs": { + "AdministrativeAction$RemainingTransferBytes": "

The remaining bytes to transfer for the FSx for OpenZFS snapshot that you're copying.

" + } + }, "ReportFormat": { "base": null, "refs": { @@ -2094,6 +2166,7 @@ "refs": { "ActiveDirectoryBackupAttributes$ResourceARN": null, "Backup$ResourceARN": "

The Amazon Resource Name (ARN) for the backup resource.

", + "CopySnapshotAndUpdateVolumeRequest$SourceSnapshotARN": null, "CreateOpenZFSOriginSnapshotConfiguration$SnapshotARN": null, "DataRepositoryAssociation$ResourceARN": null, "DataRepositoryTask$ResourceARN": null, @@ -2103,6 +2176,7 @@ "ListTagsForResourceRequest$ResourceARN": "

The ARN of the Amazon FSx resource that will have its tags listed.

", "NotServiceResourceError$ResourceARN": "

The Amazon Resource Name (ARN) of the non-Amazon FSx resource.

", "OpenZFSOriginSnapshotConfiguration$SnapshotARN": null, + "OpenZFSVolumeConfiguration$SourceSnapshotARN": null, "ResourceDoesNotSupportTagging$ResourceARN": "

The Amazon Resource Name (ARN) of the resource that doesn't support tagging.

", "ResourceNotFound$ResourceARN": "

The resource ARN of the resource that can't be found.

", "Snapshot$ResourceARN": null, @@ -2319,6 +2393,7 @@ "DeleteSnapshotRequest$SnapshotId": "

The ID of the snapshot that you want to delete.

", "DeleteSnapshotResponse$SnapshotId": "

The ID of the deleted snapshot.

", "OpenZFSVolumeConfiguration$RestoreToSnapshot": "

Specifies the ID of the snapshot to which the volume was restored.

", + "OpenZFSVolumeConfiguration$DestinationSnapshot": "

The ID of the snapshot that's being copied or was most recently copied to the destination volume.

", "RestoreVolumeFromSnapshotRequest$SnapshotId": "

The ID of the source snapshot. Specifies the snapshot that you are restoring from.

", "Snapshot$SnapshotId": "

The ID of the snapshot.

", "SnapshotIds$member": null, @@ -2355,7 +2430,7 @@ "base": null, "refs": { "CreateOntapVolumeConfiguration$SnapshotPolicy": "

Specifies the snapshot policy for the volume. There are three built-in snapshot policies:

You can also provide the name of a custom policy that you created with the ONTAP CLI or REST API.

For more information, see Snapshot policies in the Amazon FSx for NetApp ONTAP User Guide.

", - "OntapVolumeConfiguration$SnapshotPolicy": "

Specifies the snapshot policy for the volume. There are three built-in snapshot policies:

You can also provide the name of a custom policy that you created with the ONTAP CLI or REST API.

For more information, see Snapshot policies in the Amazon FSx for NetApp ONTAP User Guide.

", + "OntapVolumeConfiguration$SnapshotPolicy": "

Specifies the snapshot policy for the volume. There are three built-in snapshot policies:

You can also provide the name of a custom policy that you created with the ONTAP CLI or REST API.

For more information, see Snapshot policies in the Amazon FSx for NetApp ONTAP User Guide.

", "UpdateOntapVolumeConfiguration$SnapshotPolicy": "

Specifies the snapshot policy for the volume. There are three built-in snapshot policies:

You can also provide the name of a custom policy that you created with the ONTAP CLI or REST API.

For more information, see Snapshot policies in the Amazon FSx for NetApp ONTAP User Guide.

" } }, @@ -2395,18 +2470,18 @@ "Status": { "base": null, "refs": { - "AdministrativeAction$Status": "

Describes the status of the administrative action, as follows:

" + "AdministrativeAction$Status": "

The status of the administrative action, as follows:

" } }, "StorageCapacity": { "base": "

Specifies the file system's storage capacity, in gibibytes (GiB).

", "refs": { "CreateFileCacheRequest$StorageCapacity": "

The storage capacity of the cache in gibibytes (GiB). Valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.

", - "CreateFileSystemFromBackupRequest$StorageCapacity": "

Sets the storage capacity of the OpenZFS file system that you're creating from a backup, in gibibytes (GiB). Valid values are from 64 GiB up to 524,288 GiB (512 TiB). However, the value that you specify must be equal to or greater than the backup's storage capacity value. If you don't use the StorageCapacity parameter, the default is the backup's StorageCapacity value.

If used to create a file system other than OpenZFS, you must provide a value that matches the backup's StorageCapacity value. If you provide any other value, Amazon FSx responds with a 400 Bad Request.

", - "CreateFileSystemRequest$StorageCapacity": "

Sets the storage capacity of the file system that you're creating, in gibibytes (GiB).

FSx for Lustre file systems - The amount of storage capacity that you can configure depends on the value that you set for StorageType and the Lustre DeploymentType, as follows:

FSx for ONTAP file systems - The amount of storage capacity that you can configure is from 1024 GiB up to 196,608 GiB (192 TiB).

FSx for OpenZFS file systems - The amount of storage capacity that you can configure is from 64 GiB up to 524,288 GiB (512 TiB).

FSx for Windows File Server file systems - The amount of storage capacity that you can configure depends on the value that you set for StorageType as follows:

", + "CreateFileSystemFromBackupRequest$StorageCapacity": "

Sets the storage capacity of the OpenZFS file system that you're creating from a backup, in gibibytes (GiB). Valid values are from 64 GiB up to 524,288 GiB (512 TiB). However, the value that you specify must be equal to or greater than the backup's storage capacity value. If you don't use the StorageCapacity parameter, the default is the backup's StorageCapacity value.

If used to create a file system other than OpenZFS, you must provide a value that matches the backup's StorageCapacity value. If you provide any other value, Amazon FSx responds with with an HTTP status code 400 Bad Request.

", + "CreateFileSystemRequest$StorageCapacity": "

Sets the storage capacity of the file system that you're creating, in gibibytes (GiB).

FSx for Lustre file systems - The amount of storage capacity that you can configure depends on the value that you set for StorageType and the Lustre DeploymentType, as follows:

FSx for ONTAP file systems - The amount of storage capacity that you can configure depends on the value of the HAPairs property. The minimum value is calculated as 1,024 * HAPairs and the maxium is calculated as 524,288 * HAPairs..

FSx for OpenZFS file systems - The amount of storage capacity that you can configure is from 64 GiB up to 524,288 GiB (512 TiB).

FSx for Windows File Server file systems - The amount of storage capacity that you can configure depends on the value that you set for StorageType as follows:

", "FileCache$StorageCapacity": "

The storage capacity of the cache in gibibytes (GiB).

", "FileCacheCreating$StorageCapacity": "

The storage capacity of the cache in gibibytes (GiB).

", - "FileSystem$StorageCapacity": "

The storage capacity of the file system in gibibytes (GiB).

", + "FileSystem$StorageCapacity": "

The storage capacity of the file system in gibibytes (GiB).

Amazon FSx responds with an HTTP status code 400 (Bad Request) if the value of StorageCapacity is outside of the minimum or maximum values.

", "UpdateFileSystemRequest$StorageCapacity": "

Use this parameter to increase the storage capacity of an FSx for Windows File Server, FSx for Lustre, FSx for OpenZFS, or FSx for ONTAP file system. Specifies the storage capacity target value, in GiB, to increase the storage capacity for the file system that you're updating.

You can't make a storage capacity increase request if there is an existing storage capacity increase request in progress.

For Lustre file systems, the storage capacity target value can be the following:

For more information, see Managing storage and throughput capacity in the FSx for Lustre User Guide.

For FSx for OpenZFS file systems, the storage capacity target value must be at least 10 percent greater than the current storage capacity value. For more information, see Managing storage capacity in the FSx for OpenZFS User Guide.

For Windows file systems, the storage capacity target value must be at least 10 percent greater than the current storage capacity value. To increase storage capacity, the file system must have at least 16 MBps of throughput capacity. For more information, see Managing storage capacity in the Amazon FSxfor Windows File Server User Guide.

For ONTAP file systems, the storage capacity target value must be at least 10 percent greater than the current storage capacity value. For more information, see Managing storage capacity and provisioned IOPS in the Amazon FSx for NetApp ONTAP User Guide.

" } }, @@ -2655,6 +2730,14 @@ "DescribeDataRepositoryTasksRequest$TaskIds": "

(Optional) IDs of the tasks whose descriptions you want to retrieve (String).

" } }, + "ThroughputCapacityPerHAPair": { + "base": null, + "refs": { + "CreateFileSystemOntapConfiguration$ThroughputCapacityPerHAPair": "

Use to choose the throughput capacity per HA pair, rather than the total throughput for the file system.

This field and ThroughputCapacity cannot be defined in the same API call, but one is required.

This field and ThroughputCapacity are the same for file systems with one HA pair.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", + "OntapFileSystemConfiguration$ThroughputCapacityPerHAPair": "

Use to choose the throughput capacity per HA pair. When the value of HAPairs is equal to 1, the value of ThroughputCapacityPerHAPair is the total throughput for the file system.

This field and ThroughputCapacity cannot be defined in the same API call, but one is required.

This field and ThroughputCapacity are the same for file systems with one HA pair.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

", + "UpdateFileSystemOntapConfiguration$ThroughputCapacityPerHAPair": "

Use to choose the throughput capacity per HA pair, rather than the total throughput for the file system.

This field and ThroughputCapacity cannot be defined in the same API call, but one is required.

This field and ThroughputCapacity are the same for file systems with one HA pair.

Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions:

The value of ThroughputCapacity and ThroughputCapacityPerHAPair are not the same value.

The value of ThroughputCapacityPerHAPair is not a valid value.

" + } + }, "TieringPolicy": { "base": "

Describes the data tiering policy for an ONTAP volume. When enabled, Amazon FSx for ONTAP's intelligent tiering automatically transitions a volume's data between the file system's primary storage and capacity pool storage based on your access patterns.

Valid tiering policies are the following:

", "refs": { @@ -2669,12 +2752,24 @@ "TieringPolicy$Name": "

Specifies the tiering policy used to transition data. Default value is SNAPSHOT_ONLY.

" } }, + "TotalConstituents": { + "base": null, + "refs": { + "AggregateConfiguration$TotalConstituents": "

The total number of constituents this FlexGroup volume has. Not applicable for FlexVols.

" + } + }, "TotalCount": { "base": null, "refs": { "DataRepositoryTaskStatus$TotalCount": "

The total number of files that the task will process. While a task is executing, the sum of SucceededCount plus FailedCount may not equal TotalCount. When the task is complete, TotalCount equals the sum of SucceededCount plus FailedCount.

" } }, + "TotalTransferBytes": { + "base": null, + "refs": { + "AdministrativeAction$TotalTransferBytes": "

The number of bytes that have transferred for the FSx for OpenZFS snapshot that you're copying.

" + } + }, "UUID": { "base": null, "refs": { @@ -2775,6 +2870,28 @@ "UpdateVolumeRequest$OpenZFSConfiguration": "

The configuration of the OpenZFS volume that you are updating.

" } }, + "UpdateOpenZFSVolumeOption": { + "base": null, + "refs": { + "UpdateOpenZFSVolumeOptions$member": null + } + }, + "UpdateOpenZFSVolumeOptions": { + "base": null, + "refs": { + "CopySnapshotAndUpdateVolumeRequest$Options": "

Confirms that you want to delete data on the destination volume that wasn’t there during the previous snapshot replication.

Your replication will fail if you don’t include an option for a specific type of data and that data is on your destination. For example, if you don’t include DELETE_INTERMEDIATE_SNAPSHOTS and there are intermediate snapshots on the destination, you can’t copy the snapshot.

" + } + }, + "UpdateSharedVpcConfigurationRequest": { + "base": null, + "refs": { + } + }, + "UpdateSharedVpcConfigurationResponse": { + "base": null, + "refs": { + } + }, "UpdateSnaplockConfiguration": { "base": "

Updates the SnapLock configuration for an existing FSx for ONTAP volume.

", "refs": { @@ -2823,8 +2940,16 @@ "DurationSinceLastAccess$Value": "

An integer that represents the minimum amount of time (in days) since a file was last accessed in the file system. Only exported files with a MAX(atime, ctime, mtime) timestamp that is more than this amount of time in the past (relative to the task create time) will be released. The default of Value is 0. This is a required parameter.

If an exported file meets the last accessed time criteria, its file or directory path must also be specified in the Paths parameter of the operation in order for the file to be released.

" } }, + "VerboseFlag": { + "base": null, + "refs": { + "DescribeSharedVpcConfigurationResponse$EnableFsxRouteTableUpdatesFromParticipantAccounts": "

Indicates whether participant accounts can create FSx for ONTAP Multi-AZ file systems in shared subnets.

", + "UpdateSharedVpcConfigurationRequest$EnableFsxRouteTableUpdatesFromParticipantAccounts": "

Specifies whether participant accounts can create FSx for ONTAP Multi-AZ file systems in shared subnets. Set to true to enable or false to disable.

", + "UpdateSharedVpcConfigurationResponse$EnableFsxRouteTableUpdatesFromParticipantAccounts": "

Indicates whether participant accounts can create FSx for ONTAP Multi-AZ file systems in shared subnets.

" + } + }, "Volume": { - "base": "

Describes an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS volume.

", + "base": "

Describes an Amazon FSx volume.

", "refs": { "AdministrativeAction$TargetVolumeValues": null, "Backup$Volume": null, @@ -2842,6 +2967,14 @@ "UpdateOntapVolumeConfiguration$SizeInMegabytes": "

Specifies the size of the volume in megabytes.

" } }, + "VolumeCapacityBytes": { + "base": null, + "refs": { + "CreateOntapVolumeConfiguration$SizeInBytes": "

The configured size of the volume, in bytes.

", + "OntapVolumeConfiguration$SizeInBytes": "

The configured size of the volume, in bytes.

", + "UpdateOntapVolumeConfiguration$SizeInBytes": "

The configured size of the volume, in bytes.

" + } + }, "VolumeFilter": { "base": "

A filter used to restrict the results of describe calls for Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS volumes. You can use multiple filters to return results that meet all applied filter requirements.

", "refs": { @@ -2875,6 +3008,8 @@ "VolumeId": { "base": null, "refs": { + "CopySnapshotAndUpdateVolumeRequest$VolumeId": "

Specifies the ID of the volume that you are copying the snapshot to.

", + "CopySnapshotAndUpdateVolumeResponse$VolumeId": "

The ID of the volume that you copied the snapshot to.

", "CreateBackupRequest$VolumeId": "

(Optional) The ID of the FSx for ONTAP volume to back up.

", "CreateOpenZFSVolumeConfiguration$ParentVolumeId": "

The ID of the volume to use as the parent volume of the volume that you are creating.

", "CreateSnapshotRequest$VolumeId": "

The ID of the volume that you are taking a snapshot of.

", @@ -2899,6 +3034,7 @@ "VolumeLifecycle": { "base": null, "refs": { + "CopySnapshotAndUpdateVolumeResponse$Lifecycle": "

The lifecycle state of the destination volume.

", "DeleteVolumeResponse$Lifecycle": "

The lifecycle state of the volume being deleted. If the DeleteVolume operation is successful, this value is DELETING.

", "RestoreVolumeFromSnapshotResponse$Lifecycle": "

The lifecycle state of the volume being restored.

", "Volume$Lifecycle": "

The lifecycle status of the volume.

" @@ -2924,6 +3060,13 @@ "OpenZFSVolumeConfiguration$VolumePath": "

The path to the volume from the root volume. For example, fsx/parentVolume/volume1.

" } }, + "VolumeStyle": { + "base": null, + "refs": { + "CreateOntapVolumeConfiguration$VolumeStyle": "

Use to specify the style of an ONTAP volume. For more information about FlexVols and FlexGroups, see Volume types in Amazon FSx for NetApp ONTAP User Guide.

", + "OntapVolumeConfiguration$VolumeStyle": "

Use to specify the style of an ONTAP volume. For more information about FlexVols and FlexGroups, see Volume types in Amazon FSx for NetApp ONTAP User Guide.

" + } + }, "VolumeType": { "base": null, "refs": { diff --git a/apis/guardduty/2017-11-28/api-2.json b/apis/guardduty/2017-11-28/api-2.json index 1234f2beee5..d270a8e1730 100644 --- a/apis/guardduty/2017-11-28/api-2.json +++ b/apis/guardduty/2017-11-28/api-2.json @@ -1263,6 +1263,15 @@ "key":{"shape":"String"}, "value":{"shape":"String"} }, + "AgentDetails":{ + "type":"structure", + "members":{ + "Version":{ + "shape":"String", + "locationName":"version" + } + } + }, "Anomaly":{ "type":"structure", "members":{ @@ -1596,6 +1605,19 @@ } } }, + "ContainerInstanceDetails":{ + "type":"structure", + "members":{ + "CoveredContainerInstances":{ + "shape":"Long", + "locationName":"coveredContainerInstances" + }, + "CompatibleContainerInstances":{ + "shape":"Long", + "locationName":"compatibleContainerInstances" + } + } + }, "Containers":{ "type":"list", "member":{"shape":"Container"} @@ -1628,6 +1650,48 @@ } } }, + "CoverageEc2InstanceDetails":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "locationName":"instanceId" + }, + "InstanceType":{ + "shape":"String", + "locationName":"instanceType" + }, + "ClusterArn":{ + "shape":"String", + "locationName":"clusterArn" + }, + "AgentDetails":{ + "shape":"AgentDetails", + "locationName":"agentDetails" + }, + "ManagementType":{ + "shape":"ManagementType", + "locationName":"managementType" + } + } + }, + "CoverageEcsClusterDetails":{ + "type":"structure", + "members":{ + "ClusterName":{ + "shape":"String", + "locationName":"clusterName" + }, + "FargateDetails":{ + "shape":"FargateDetails", + "locationName":"fargateDetails" + }, + "ContainerInstanceDetails":{ + "shape":"ContainerInstanceDetails", + "locationName":"containerInstanceDetails" + } + } + }, "CoverageEksClusterDetails":{ "type":"structure", "members":{ @@ -1697,7 +1761,11 @@ "COVERAGE_STATUS", "ADDON_VERSION", "MANAGEMENT_TYPE", - "EKS_CLUSTER_NAME" + "EKS_CLUSTER_NAME", + "ECS_CLUSTER_NAME", + "AGENT_VERSION", + "INSTANCE_ID", + "CLUSTER_ARN" ] }, "CoverageFilterCriterionList":{ @@ -1749,6 +1817,14 @@ "ResourceType":{ "shape":"ResourceType", "locationName":"resourceType" + }, + "EcsClusterDetails":{ + "shape":"CoverageEcsClusterDetails", + "locationName":"ecsClusterDetails" + }, + "Ec2InstanceDetails":{ + "shape":"CoverageEc2InstanceDetails", + "locationName":"ec2InstanceDetails" } } }, @@ -1778,7 +1854,9 @@ "ISSUE", "ADDON_VERSION", "UPDATED_AT", - "EKS_CLUSTER_NAME" + "EKS_CLUSTER_NAME", + "ECS_CLUSTER_NAME", + "INSTANCE_ID" ] }, "CoverageStatistics":{ @@ -2683,7 +2761,8 @@ "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", - "LAMBDA_NETWORK_LOGS" + "LAMBDA_NETWORK_LOGS", + "RUNTIME_MONITORING" ] }, "DetectorFeatureConfiguration":{ @@ -2743,7 +2822,8 @@ "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", - "LAMBDA_NETWORK_LOGS" + "LAMBDA_NETWORK_LOGS", + "RUNTIME_MONITORING" ] }, "DetectorId":{ @@ -3090,9 +3170,25 @@ } } }, + "FargateDetails":{ + "type":"structure", + "members":{ + "Issues":{ + "shape":"Issues", + "locationName":"issues" + }, + "ManagementType":{ + "shape":"ManagementType", + "locationName":"managementType" + } + } + }, "FeatureAdditionalConfiguration":{ "type":"string", - "enum":["EKS_ADDON_MANAGEMENT"] + "enum":[ + "EKS_ADDON_MANAGEMENT", + "ECS_FARGATE_AGENT_MANAGEMENT" + ] }, "FeatureStatus":{ "type":"string", @@ -3370,7 +3466,9 @@ "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", - "LAMBDA_NETWORK_LOGS" + "LAMBDA_NETWORK_LOGS", + "FARGATE_RUNTIME_MONITORING", + "EC2_RUNTIME_MONITORING" ] }, "GeoLocation":{ @@ -4160,6 +4258,12 @@ "type":"list", "member":{"shape":"String"} }, + "Issues":{ + "type":"list", + "member":{"shape":"String"}, + "max":50, + "min":0 + }, "KubernetesApiCallAction":{ "type":"structure", "members":{ @@ -4945,7 +5049,8 @@ "type":"string", "enum":[ "AUTO_MANAGED", - "MANUAL" + "MANUAL", + "DISABLED" ] }, "MapEquals":{ @@ -5270,12 +5375,16 @@ "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", - "LAMBDA_NETWORK_LOGS" + "LAMBDA_NETWORK_LOGS", + "RUNTIME_MONITORING" ] }, "OrgFeatureAdditionalConfiguration":{ "type":"string", - "enum":["EKS_ADDON_MANAGEMENT"] + "enum":[ + "EKS_ADDON_MANAGEMENT", + "ECS_FARGATE_AGENT_MANAGEMENT" + ] }, "OrgFeatureStatus":{ "type":"string", @@ -5906,7 +6015,11 @@ }, "ResourceType":{ "type":"string", - "enum":["EKS"] + "enum":[ + "EKS", + "ECS", + "EC2" + ] }, "RuntimeContext":{ "type":"structure", @@ -7159,7 +7272,9 @@ "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "LAMBDA_NETWORK_LOGS", - "EKS_RUNTIME_MONITORING" + "EKS_RUNTIME_MONITORING", + "FARGATE_RUNTIME_MONITORING", + "EC2_RUNTIME_MONITORING" ] }, "UsageFeatureList":{ diff --git a/apis/guardduty/2017-11-28/docs-2.json b/apis/guardduty/2017-11-28/docs-2.json index c37c7cab8e2..e1a9f8cf4f0 100644 --- a/apis/guardduty/2017-11-28/docs-2.json +++ b/apis/guardduty/2017-11-28/docs-2.json @@ -1,6 +1,6 @@ { "version": "2.0", - "service": "

Amazon GuardDuty is a continuous security monitoring service that analyzes and processes the following data sources: VPC flow logs, Amazon Web Services CloudTrail management event logs, CloudTrail S3 data event logs, EKS audit logs, DNS logs, and Amazon EBS volume data. It uses threat intelligence feeds, such as lists of malicious IPs and domains, and machine learning to identify unexpected, potentially unauthorized, and malicious activity within your Amazon Web Services environment. This can include issues like escalations of privileges, uses of exposed credentials, or communication with malicious IPs, domains, or presence of malware on your Amazon EC2 instances and container workloads. For example, GuardDuty can detect compromised EC2 instances and container workloads serving malware, or mining bitcoin.

GuardDuty also monitors Amazon Web Services account access behavior for signs of compromise, such as unauthorized infrastructure deployments like EC2 instances deployed in a Region that has never been used, or unusual API calls like a password policy change to reduce password strength.

GuardDuty informs you about the status of your Amazon Web Services environment by producing security findings that you can view in the GuardDuty console or through Amazon EventBridge. For more information, see the Amazon GuardDuty User Guide .

", + "service": "

Amazon GuardDuty is a continuous security monitoring service that analyzes and processes the following foundational data sources - VPC flow logs, Amazon Web Services CloudTrail management event logs, CloudTrail S3 data event logs, EKS audit logs, DNS logs, Amazon EBS volume data, runtime activity belonging to container workloads, such as Amazon EKS, Amazon ECS (including Amazon Web Services Fargate), and Amazon EC2 instances. It uses threat intelligence feeds, such as lists of malicious IPs and domains, and machine learning to identify unexpected, potentially unauthorized, and malicious activity within your Amazon Web Services environment. This can include issues like escalations of privileges, uses of exposed credentials, or communication with malicious IPs, domains, or presence of malware on your Amazon EC2 instances and container workloads. For example, GuardDuty can detect compromised EC2 instances and container workloads serving malware, or mining bitcoin.

GuardDuty also monitors Amazon Web Services account access behavior for signs of compromise, such as unauthorized infrastructure deployments like EC2 instances deployed in a Region that has never been used, or unusual API calls like a password policy change to reduce password strength.

GuardDuty informs you about the status of your Amazon Web Services environment by producing security findings that you can view in the GuardDuty console or through Amazon EventBridge. For more information, see the Amazon GuardDuty User Guide .

", "operations": { "AcceptAdministratorInvitation": "

Accepts the invitation to be a member account and get monitored by a GuardDuty administrator account that sent the invitation.

", "AcceptInvitation": "

Accepts the invitation to be monitored by a GuardDuty administrator account.

", @@ -214,6 +214,12 @@ "AwsApiCallAction$AffectedResources": "

The details of the Amazon Web Services account that made the API call. This field identifies the resources that were affected by this API call.

" } }, + "AgentDetails": { + "base": "

Information about the installed GuardDuty security agent.

", + "refs": { + "CoverageEc2InstanceDetails$AgentDetails": "

Information about the installed security agent.

" + } + }, "Anomaly": { "base": "

Contains information about the anomalies.

", "refs": { @@ -394,6 +400,12 @@ "Resource$ContainerDetails": null } }, + "ContainerInstanceDetails": { + "base": "

Contains information about the Amazon EC2 instance that is running the Amazon ECS container.

", + "refs": { + "CoverageEcsClusterDetails$ContainerInstanceDetails": "

Information about the Amazon ECS container running on Amazon EC2 instance.

" + } + }, "Containers": { "base": null, "refs": { @@ -425,6 +437,18 @@ "RemoteIpDetails$Country": "

The country code of the remote IP address.

" } }, + "CoverageEc2InstanceDetails": { + "base": "

This API is also used when you use GuardDuty Runtime Monitoring for your Amazon EC2 instances (currently in preview release) and is subject to change.

Contains information about the Amazon EC2 instance runtime coverage details.

", + "refs": { + "CoverageResourceDetails$Ec2InstanceDetails": "

This API is also used when you use GuardDuty Runtime Monitoring for your Amazon EC2 instances (currently in preview release) and is subject to change.

Information about the Amazon EC2 instance assessed for runtime coverage.

" + } + }, + "CoverageEcsClusterDetails": { + "base": "

Contains information about Amazon ECS cluster runtime coverage details.

", + "refs": { + "CoverageResourceDetails$EcsClusterDetails": "

Information about the Amazon ECS cluster that is assessed for runtime coverage.

" + } + }, "CoverageEksClusterDetails": { "base": "

Information about the EKS cluster that has a coverage status.

", "refs": { @@ -1091,6 +1115,12 @@ "Service$Evidence": "

An evidence object associated with the service.

" } }, + "FargateDetails": { + "base": "

Contains information about AWS Fargate details associated with an Amazon ECS cluster.

", + "refs": { + "CoverageEcsClusterDetails$FargateDetails": "

Information about the Fargate details associated with the Amazon ECS cluster.

" + } + }, "FeatureAdditionalConfiguration": { "base": null, "refs": { @@ -1599,6 +1629,12 @@ "NetworkInterface$Ipv6Addresses": "

A list of IPv6 addresses for the EC2 instance.

" } }, + "Issues": { + "base": null, + "refs": { + "FargateDetails$Issues": "

Runtime coverage issues identified for the resource running on AWS Fargate.

" + } + }, "KubernetesApiCallAction": { "base": "

Information about the Kubernetes API call action described in this finding.

", "refs": { @@ -1843,6 +1879,8 @@ "Condition$GreaterThanOrEqual": "

Represents a greater than or equal condition to be applied to a single field when querying for findings.

", "Condition$LessThan": "

Represents a less than condition to be applied to a single field when querying for findings.

", "Condition$LessThanOrEqual": "

Represents a less than or equal condition to be applied to a single field when querying for findings.

", + "ContainerInstanceDetails$CoveredContainerInstances": "

Represents the nodes in the Amazon ECS cluster that has a HEALTHY coverage status.

", + "ContainerInstanceDetails$CompatibleContainerInstances": "

Represents total number of nodes in the Amazon ECS cluster.

", "CountByCoverageStatus$value": null, "CountByResourceType$value": null, "CoverageEksClusterDetails$CoveredNodes": "

Represents the nodes within the EKS cluster that have a HEALTHY coverage status.

", @@ -1879,7 +1917,9 @@ "ManagementType": { "base": null, "refs": { - "CoverageEksClusterDetails$ManagementType": "

Indicates how the Amazon EKS add-on GuardDuty agent is managed for this EKS cluster.

AUTO_MANAGED indicates GuardDuty deploys and manages updates for this resource.

MANUAL indicates that you are responsible to deploy, update, and manage the Amazon EKS add-on GuardDuty agent for this resource.

" + "CoverageEc2InstanceDetails$ManagementType": "

Indicates how the GuardDuty security agent is managed for this resource.

The DISABLED status doesn't apply to Amazon EC2 instances and Amazon EKS clusters that run on Amazon EC2 instances.

", + "CoverageEksClusterDetails$ManagementType": "

Indicates how the Amazon EKS add-on GuardDuty agent is managed for this EKS cluster.

AUTO_MANAGED indicates GuardDuty deploys and manages updates for this resource.

MANUAL indicates that you are responsible to deploy, update, and manage the Amazon EKS add-on GuardDuty agent for this resource.

", + "FargateDetails$ManagementType": "

Indicates how the GuardDuty security agent is managed for this resource.

" } }, "MapEquals": { @@ -2649,6 +2689,7 @@ "Administrator$InvitedAt": "

The timestamp when the invitation was sent.

", "AffectedResources$key": null, "AffectedResources$value": null, + "AgentDetails$Version": "

Version of the installed GuardDuty security agent.

", "AnomalyProfileFeatures$key": null, "AnomalyProfiles$key": null, "AnomalyUnusualBehaviorFeature$key": null, @@ -2671,6 +2712,10 @@ "CountBySeverity$key": null, "Country$CountryCode": "

The country code of the remote IP address.

", "Country$CountryName": "

The country name of the remote IP address.

", + "CoverageEc2InstanceDetails$InstanceId": "

The Amazon EC2 instance ID.

", + "CoverageEc2InstanceDetails$InstanceType": "

The instance type of the Amazon EC2 instance.

", + "CoverageEc2InstanceDetails$ClusterArn": "

The cluster ARN of the Amazon ECS cluster running on the Amazon EC2 instance.

", + "CoverageEcsClusterDetails$ClusterName": "

The name of the Amazon ECS cluster.

", "CoverageEksClusterDetails$ClusterName": "

Name of the EKS cluster.

", "CoverageResource$ResourceId": "

The unique ID of the resource.

", "CoverageResource$Issue": "

Represents the reason why a coverage status was UNHEALTHY for the EKS cluster.

", @@ -2760,6 +2805,7 @@ "InviteMembersRequest$Message": "

The invitation message that you want to send to the accounts that you're inviting to GuardDuty as members.

", "IpSetIds$member": null, "Ipv6Addresses$member": null, + "Issues$member": null, "KubernetesApiCallAction$RequestUri": "

The Kubernetes API request URI.

", "KubernetesApiCallAction$Verb": "

The Kubernetes API request HTTP verb.

", "KubernetesApiCallAction$UserAgent": "

The user agent of the caller of the Kubernetes API.

", diff --git a/apis/iotfleetwise/2021-06-17/api-2.json b/apis/iotfleetwise/2021-06-17/api-2.json index 790c4b6328c..a355ccc9df7 100644 --- a/apis/iotfleetwise/2021-06-17/api-2.json +++ b/apis/iotfleetwise/2021-06-17/api-2.json @@ -24,6 +24,7 @@ "errors":[ {"shape":"InternalServerException"}, {"shape":"ResourceNotFoundException"}, + {"shape":"LimitExceededException"}, {"shape":"ThrottlingException"}, {"shape":"ValidationException"}, {"shape":"AccessDeniedException"} @@ -922,7 +923,8 @@ "deprecatedMessage":"assignedValue is no longer in use" }, "deprecationMessage":{"shape":"message"}, - "comment":{"shape":"message"} + "comment":{"shape":"message"}, + "structFullyQualifiedName":{"shape":"NodePath"} } }, "AmazonResourceName":{ @@ -1073,8 +1075,8 @@ ], "members":{ "messageId":{"shape":"nonNegativeInteger"}, - "isBigEndian":{"shape":"boolean"}, - "isSigned":{"shape":"boolean"}, + "isBigEndian":{"shape":"PrimitiveBoolean"}, + "isSigned":{"shape":"PrimitiveBoolean"}, "startBit":{"shape":"nonNegativeInteger"}, "offset":{"shape":"double"}, "factor":{"shape":"double"}, @@ -1327,6 +1329,32 @@ "thingArn":{"shape":"arn"} } }, + "CustomProperty":{ + "type":"structure", + "required":[ + "fullyQualifiedName", + "dataType" + ], + "members":{ + "fullyQualifiedName":{"shape":"string"}, + "dataType":{"shape":"NodeDataType"}, + "dataEncoding":{"shape":"NodeDataEncoding"}, + "description":{"shape":"description"}, + "deprecationMessage":{"shape":"message"}, + "comment":{"shape":"message"}, + "structFullyQualifiedName":{"shape":"NodePath"} + } + }, + "CustomStruct":{ + "type":"structure", + "required":["fullyQualifiedName"], + "members":{ + "fullyQualifiedName":{"shape":"string"}, + "description":{"shape":"description"}, + "deprecationMessage":{"shape":"message"}, + "comment":{"shape":"message"} + } + }, "DataDestinationConfig":{ "type":"structure", "members":{ @@ -1367,7 +1395,8 @@ "description":{"shape":"description"}, "status":{"shape":"ManifestStatus"}, "creationTime":{"shape":"timestamp"}, - "lastModificationTime":{"shape":"timestamp"} + "lastModificationTime":{"shape":"timestamp"}, + "message":{"shape":"message"} } }, "DecoderManifestValidationException":{ @@ -1605,7 +1634,8 @@ "modelManifestArn":{"shape":"arn"}, "status":{"shape":"ManifestStatus"}, "creationTime":{"shape":"timestamp"}, - "lastModificationTime":{"shape":"timestamp"} + "lastModificationTime":{"shape":"timestamp"}, + "message":{"shape":"message"} } }, "GetEncryptionConfigurationRequest":{ @@ -1892,7 +1922,8 @@ "type":"structure", "members":{ "name":{"shape":"FullyQualifiedName"}, - "reason":{"shape":"SignalDecoderFailureReason"} + "reason":{"shape":"SignalDecoderFailureReason"}, + "hint":{"shape":"message"} } }, "InvalidSignalDecoders":{ @@ -2133,9 +2164,22 @@ "type":"string", "enum":[ "ACTIVE", - "DRAFT" + "DRAFT", + "INVALID", + "VALIDATING" ] }, + "MessageSignal":{ + "type":"structure", + "required":[ + "topicName", + "structuredMessage" + ], + "members":{ + "topicName":{"shape":"TopicName"}, + "structuredMessage":{"shape":"StructuredMessage"} + } + }, "ModelManifestSummary":{ "type":"structure", "required":[ @@ -2157,7 +2201,11 @@ "key":{"shape":"string"}, "value":{"shape":"string"} }, - "NetworkFileBlob":{"type":"blob"}, + "NetworkFileBlob":{ + "type":"blob", + "max":200000000, + "min":0 + }, "NetworkFileDefinition":{ "type":"structure", "members":{ @@ -2185,7 +2233,8 @@ "interfaceId":{"shape":"InterfaceId"}, "type":{"shape":"NetworkInterfaceType"}, "canInterface":{"shape":"CanInterface"}, - "obdInterface":{"shape":"ObdInterface"} + "obdInterface":{"shape":"ObdInterface"}, + "vehicleMiddleware":{"shape":"VehicleMiddleware"} } }, "NetworkInterfaceFailureReason":{ @@ -2196,14 +2245,18 @@ "NETWORK_INTERFACE_TO_ADD_ALREADY_EXISTS", "CAN_NETWORK_INTERFACE_INFO_IS_NULL", "OBD_NETWORK_INTERFACE_INFO_IS_NULL", - "NETWORK_INTERFACE_TO_REMOVE_ASSOCIATED_WITH_SIGNALS" + "NETWORK_INTERFACE_TO_REMOVE_ASSOCIATED_WITH_SIGNALS", + "VEHICLE_MIDDLEWARE_NETWORK_INTERFACE_INFO_IS_NULL", + "CUSTOMER_DECODED_SIGNAL_NETWORK_INTERFACE_INFO_IS_NULL" ] }, "NetworkInterfaceType":{ "type":"string", "enum":[ "CAN_INTERFACE", - "OBD_INTERFACE" + "OBD_INTERFACE", + "VEHICLE_MIDDLEWARE", + "CUSTOMER_DECODED_INTERFACE" ] }, "NetworkInterfaces":{ @@ -2218,7 +2271,9 @@ "branch":{"shape":"Branch"}, "sensor":{"shape":"Sensor"}, "actuator":{"shape":"Actuator"}, - "attribute":{"shape":"Attribute"} + "attribute":{"shape":"Attribute"}, + "struct":{"shape":"CustomStruct"}, + "property":{"shape":"CustomProperty"} }, "union":true }, @@ -2229,9 +2284,18 @@ "totalBranches":{"shape":"number"}, "totalSensors":{"shape":"number"}, "totalAttributes":{"shape":"number"}, - "totalActuators":{"shape":"number"} + "totalActuators":{"shape":"number"}, + "totalStructs":{"shape":"number"}, + "totalProperties":{"shape":"number"} } }, + "NodeDataEncoding":{ + "type":"string", + "enum":[ + "BINARY", + "TYPED" + ] + }, "NodeDataType":{ "type":"string", "enum":[ @@ -2261,7 +2325,9 @@ "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", - "UNKNOWN" + "UNKNOWN", + "STRUCT", + "STRUCT_ARRAY" ] }, "NodePath":{ @@ -2306,8 +2372,8 @@ "obdStandard":{"shape":"ObdStandard"}, "pidRequestIntervalSeconds":{"shape":"nonNegativeInteger"}, "dtcRequestIntervalSeconds":{"shape":"nonNegativeInteger"}, - "useExtendedIds":{"shape":"boolean"}, - "hasTransmissionEcu":{"shape":"boolean"} + "useExtendedIds":{"shape":"PrimitiveBoolean"}, + "hasTransmissionEcu":{"shape":"PrimitiveBoolean"} } }, "ObdInterfaceName":{ @@ -2349,6 +2415,14 @@ "min":1, "pattern":"[a-zA-Z0-9-_:./!*'()]+" }, + "PrimitiveBoolean":{"type":"boolean"}, + "PrimitiveMessageDefinition":{ + "type":"structure", + "members":{ + "ros2PrimitiveMessageDefinition":{"shape":"ROS2PrimitiveMessageDefinition"} + }, + "union":true + }, "ProtocolName":{ "type":"string", "max":50, @@ -2363,10 +2437,15 @@ "type":"structure", "required":["encryptionType"], "members":{ - "kmsKeyId":{"shape":"String"}, + "kmsKeyId":{"shape":"PutEncryptionConfigurationRequestKmsKeyIdString"}, "encryptionType":{"shape":"EncryptionType"} } }, + "PutEncryptionConfigurationRequestKmsKeyIdString":{ + "type":"string", + "max":2048, + "min":0 + }, "PutEncryptionConfigurationResponse":{ "type":"structure", "required":[ @@ -2391,6 +2470,42 @@ "members":{ } }, + "ROS2PrimitiveMessageDefinition":{ + "type":"structure", + "required":["primitiveType"], + "members":{ + "primitiveType":{"shape":"ROS2PrimitiveType"}, + "offset":{"shape":"double"}, + "scaling":{"shape":"double"}, + "upperBound":{"shape":"ROS2PrimitiveMessageDefinitionUpperBoundLong"} + } + }, + "ROS2PrimitiveMessageDefinitionUpperBoundLong":{ + "type":"long", + "box":true, + "max":2048, + "min":0 + }, + "ROS2PrimitiveType":{ + "type":"string", + "enum":[ + "BOOL", + "BYTE", + "CHAR", + "FLOAT32", + "FLOAT64", + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "STRING", + "WSTRING" + ] + }, "RegisterAccountRequest":{ "type":"structure", "members":{ @@ -2476,7 +2591,8 @@ "min":{"shape":"double"}, "max":{"shape":"double"}, "deprecationMessage":{"shape":"message"}, - "comment":{"shape":"message"} + "comment":{"shape":"message"}, + "structFullyQualifiedName":{"shape":"NodePath"} } }, "SignalCatalogSummary":{ @@ -2500,7 +2616,8 @@ "type":{"shape":"SignalDecoderType"}, "interfaceId":{"shape":"InterfaceId"}, "canSignal":{"shape":"CanSignal"}, - "obdSignal":{"shape":"ObdSignal"} + "obdSignal":{"shape":"ObdSignal"}, + "messageSignal":{"shape":"MessageSignal"} } }, "SignalDecoderFailureReason":{ @@ -2514,14 +2631,23 @@ "SIGNAL_NOT_IN_MODEL", "CAN_SIGNAL_INFO_IS_NULL", "OBD_SIGNAL_INFO_IS_NULL", - "NO_DECODER_INFO_FOR_SIGNAL_IN_MODEL" + "NO_DECODER_INFO_FOR_SIGNAL_IN_MODEL", + "MESSAGE_SIGNAL_INFO_IS_NULL", + "SIGNAL_DECODER_TYPE_INCOMPATIBLE_WITH_MESSAGE_SIGNAL_TYPE", + "STRUCT_SIZE_MISMATCH", + "NO_SIGNAL_IN_CATALOG_FOR_DECODER_SIGNAL", + "SIGNAL_DECODER_INCOMPATIBLE_WITH_SIGNAL_CATALOG", + "EMPTY_MESSAGE_SIGNAL", + "CUSTOMER_DECODED_SIGNAL_INFO_IS_NULL" ] }, "SignalDecoderType":{ "type":"string", "enum":[ "CAN_SIGNAL", - "OBD_SIGNAL" + "OBD_SIGNAL", + "MESSAGE_SIGNAL", + "CUSTOMER_DECODED_SIGNAL" ] }, "SignalDecoders":{ @@ -2560,6 +2686,59 @@ ] }, "String":{"type":"string"}, + "StructureMessageName":{ + "type":"string", + "max":150, + "min":1 + }, + "StructuredMessage":{ + "type":"structure", + "members":{ + "primitiveMessageDefinition":{"shape":"PrimitiveMessageDefinition"}, + "structuredMessageListDefinition":{"shape":"StructuredMessageListDefinition"}, + "structuredMessageDefinition":{"shape":"StructuredMessageDefinition"} + }, + "union":true + }, + "StructuredMessageDefinition":{ + "type":"list", + "member":{"shape":"StructuredMessageFieldNameAndDataTypePair"}, + "max":500, + "min":1 + }, + "StructuredMessageFieldNameAndDataTypePair":{ + "type":"structure", + "required":[ + "fieldName", + "dataType" + ], + "members":{ + "fieldName":{"shape":"StructureMessageName"}, + "dataType":{"shape":"StructuredMessage"} + } + }, + "StructuredMessageListDefinition":{ + "type":"structure", + "required":[ + "name", + "memberType", + "listType" + ], + "members":{ + "name":{"shape":"StructureMessageName"}, + "memberType":{"shape":"StructuredMessage"}, + "listType":{"shape":"StructuredMessageListType"}, + "capacity":{"shape":"nonNegativeInteger"} + } + }, + "StructuredMessageListType":{ + "type":"string", + "enum":[ + "FIXED_CAPACITY", + "DYNAMIC_UNBOUNDED_CAPACITY", + "DYNAMIC_BOUNDED_CAPACITY" + ] + }, "Tag":{ "type":"structure", "required":[ @@ -2683,6 +2862,12 @@ "min":3, "pattern":"[a-zA-Z0-9_.-]+" }, + "TopicName":{ + "type":"string", + "max":150, + "min":1, + "pattern":"[a-zA-Z0-9_\\-#:./]+" + }, "TriggerMode":{ "type":"string", "enum":[ @@ -2913,6 +3098,26 @@ "ValidateIotThingExists" ] }, + "VehicleMiddleware":{ + "type":"structure", + "required":[ + "name", + "protocolName" + ], + "members":{ + "name":{"shape":"VehicleMiddlewareName"}, + "protocolName":{"shape":"VehicleMiddlewareProtocol"} + } + }, + "VehicleMiddlewareName":{ + "type":"string", + "max":100, + "min":1 + }, + "VehicleMiddlewareProtocol":{ + "type":"string", + "enum":["ROS_2"] + }, "VehicleState":{ "type":"string", "enum":[ @@ -2967,7 +3172,6 @@ "key":{"shape":"attributeName"}, "value":{"shape":"attributeValue"} }, - "boolean":{"type":"boolean"}, "campaignName":{ "type":"string", "max":100, @@ -3081,6 +3285,7 @@ "number":{"type":"integer"}, "positiveInteger":{ "type":"integer", + "box":true, "min":1 }, "priority":{ diff --git a/apis/iotfleetwise/2021-06-17/docs-2.json b/apis/iotfleetwise/2021-06-17/docs-2.json index 4bf230d2bdc..21e7c230ef9 100644 --- a/apis/iotfleetwise/2021-06-17/docs-2.json +++ b/apis/iotfleetwise/2021-06-17/docs-2.json @@ -45,7 +45,7 @@ "ListVehiclesInFleet": "

Retrieves a list of summaries of all vehicles associated with a fleet.

This API operation uses pagination. Specify the nextToken parameter in the request to return more results.

", "PutEncryptionConfiguration": "

Creates or updates the encryption configuration. Amazon Web Services IoT FleetWise can encrypt your data and resources using an Amazon Web Services managed key. Or, you can use a KMS key that you own and manage. For more information, see Data encryption in the Amazon Web Services IoT FleetWise Developer Guide.

", "PutLoggingOptions": "

Creates or updates the logging option.

", - "RegisterAccount": "

This API operation contains deprecated parameters. Register your account again without the Timestream resources parameter so that Amazon Web Services IoT FleetWise can remove the Timestream metadata stored. You should then pass the data destination into the CreateCampaign API operation.

You must delete any existing campaigns that include an empty data destination before you register your account again. For more information, see the DeleteCampaign API operation.

If you want to delete the Timestream inline policy from the service-linked role, such as to mitigate an overly permissive policy, you must first delete any existing campaigns. Then delete the service-linked role and register your account again to enable CloudWatch metrics. For more information, see DeleteServiceLinkedRole in the Identity and Access Management API Reference.

 <p>Registers your Amazon Web Services account, IAM, and Amazon Timestream resources so Amazon Web Services IoT FleetWise can transfer your vehicle data to the Amazon Web Services Cloud. For more information, including step-by-step procedures, see <a href="https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/setting-up.html">Setting up Amazon Web Services IoT FleetWise</a>. </p> <note> <p>An Amazon Web Services account is <b>not</b> the same thing as a "user." An <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-users">Amazon Web Services user</a> is an identity that you create using Identity and Access Management (IAM) and takes the form of either an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html">IAM user</a> or an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM role, both with credentials</a>. A single Amazon Web Services account can, and typically does, contain many users and roles.</p> </note> 
", + "RegisterAccount": "

This API operation contains deprecated parameters. Register your account again without the Timestream resources parameter so that Amazon Web Services IoT FleetWise can remove the Timestream metadata stored. You should then pass the data destination into the CreateCampaign API operation.

You must delete any existing campaigns that include an empty data destination before you register your account again. For more information, see the DeleteCampaign API operation.

If you want to delete the Timestream inline policy from the service-linked role, such as to mitigate an overly permissive policy, you must first delete any existing campaigns. Then delete the service-linked role and register your account again to enable CloudWatch metrics. For more information, see DeleteServiceLinkedRole in the Identity and Access Management API Reference.

Registers your Amazon Web Services account, IAM, and Amazon Timestream resources so Amazon Web Services IoT FleetWise can transfer your vehicle data to the Amazon Web Services Cloud. For more information, including step-by-step procedures, see Setting up Amazon Web Services IoT FleetWise.

An Amazon Web Services account is not the same thing as a \"user.\" An Amazon Web Services user is an identity that you create using Identity and Access Management (IAM) and takes the form of either an IAM user or an IAM role, both with credentials. A single Amazon Web Services account can, and typically does, contain many users and roles.

", "TagResource": "

Adds to or modifies the tags of the given resource. Tags are metadata which can be used to manage a resource.

", "UntagResource": "

Removes the given tags (metadata) from the resource.

", "UpdateCampaign": "

Updates a campaign.

", @@ -277,6 +277,18 @@ "createVehicleResponses$member": null } }, + "CustomProperty": { + "base": "

Represents a member of the complex data structure. The data type of the property can be either primitive or another struct.

", + "refs": { + "Node$property": "

Represents a member of the complex data structure. The datatype of the property can be either primitive or another struct.

" + } + }, + "CustomStruct": { + "base": "

The custom structure represents a complex or higher-order data structure.

", + "refs": { + "Node$struct": "

Represents a complex or higher-order data structure.

" + } + }, "DataDestinationConfig": { "base": "

The destination where the Amazon Web Services IoT FleetWise campaign sends data. You can send data to be stored in Amazon S3 or Amazon Timestream.

", "refs": { @@ -402,7 +414,7 @@ "EncryptionType": { "base": null, "refs": { - "GetEncryptionConfigurationResponse$encryptionType": "

The type of encryption. Set to KMS_BASED_ENCRYPTION to use an KMS key that you own and manage. Set to FLEETWISE_DEFAULT_ENCRYPTION to use an Amazon Web Services managed key that is owned by the Amazon Web Services IoT FleetWise service account.

", + "GetEncryptionConfigurationResponse$encryptionType": "

The type of encryption. Set to KMS_BASED_ENCRYPTION to use a KMS key that you own and manage. Set to FLEETWISE_DEFAULT_ENCRYPTION to use an Amazon Web Services managed key that is owned by the Amazon Web Services IoT FleetWise service account.

", "PutEncryptionConfigurationRequest$encryptionType": "

The type of encryption. Choose KMS_BASED_ENCRYPTION to use a KMS key or FLEETWISE_DEFAULT_ENCRYPTION to use an Amazon Web Services managed key.

", "PutEncryptionConfigurationResponse$encryptionType": "

The type of encryption. Set to KMS_BASED_ENCRYPTION to use an KMS key that you own and manage. Set to FLEETWISE_DEFAULT_ENCRYPTION to use an Amazon Web Services managed key that is owned by the Amazon Web Services IoT FleetWise service account.

" } @@ -793,6 +805,12 @@ "UpdateModelManifestRequest$status": "

The state of the vehicle model. If the status is ACTIVE, the vehicle model can't be edited. If the status is DRAFT, you can edit the vehicle model.

" } }, + "MessageSignal": { + "base": "

The decoding information for a specific message which support higher order data types.

", + "refs": { + "SignalDecoder$messageSignal": "

The decoding information for a specific message which supports higher order data types.

" + } + }, "ModelManifestSummary": { "base": "

Information about a vehicle model (model manifest). You can use the API operation to return this information about multiple vehicle models.

", "refs": { @@ -826,7 +844,7 @@ "NetworkFilesList": { "base": null, "refs": { - "CanDbcDefinition$canDbcFiles": "

A list of DBC files. You can upload only one DBC file for each network interface and specify up to five (inclusive) files in the list.

" + "CanDbcDefinition$canDbcFiles": "

A list of DBC files. You can upload only one DBC file for each network interface and specify up to five (inclusive) files in the list. The DBC file can be a maximum size of 200 MB.

" } }, "NetworkInterface": { @@ -868,19 +886,29 @@ "GetSignalCatalogResponse$nodeCounts": "

The total number of network nodes specified in a signal catalog.

" } }, + "NodeDataEncoding": { + "base": null, + "refs": { + "CustomProperty$dataEncoding": "

Indicates whether the property is binary data.

" + } + }, "NodeDataType": { "base": null, "refs": { "Actuator$dataType": "

The specified data type of the actuator.

", "Attribute$dataType": "

The specified data type of the attribute.

", + "CustomProperty$dataType": "

The data type for the custom property.

", "Sensor$dataType": "

The specified data type of the sensor.

" } }, "NodePath": { "base": null, "refs": { + "Actuator$structFullyQualifiedName": "

The fully qualified name of the struct node for the actuator if the data type of the actuator is Struct or StructArray. For example, the struct fully qualified name of an actuator might be Vehicle.Door.LockStruct.

", + "CustomProperty$structFullyQualifiedName": "

The fully qualified name of the struct node for the custom property if the data type of the custom property is Struct or StructArray.

", "DataExtraDimensionNodePathList$member": null, - "NodePaths$member": null + "NodePaths$member": null, + "Sensor$structFullyQualifiedName": "

The fully qualified name of the struct node for a sensor if the data type of the actuator is Struct or StructArray. For example, the struct fully qualified name of a sensor might be Vehicle.ADAS.CameraStruct.

" } }, "NodePaths": { @@ -944,6 +972,21 @@ "S3Config$prefix": "

(Optional) Enter an S3 bucket prefix. The prefix is the string of characters after the bucket name and before the object name. You can use the prefix to organize data stored in Amazon S3 buckets. For more information, see Organizing objects using prefixes in the Amazon Simple Storage Service User Guide.

By default, Amazon Web Services IoT FleetWise sets the prefix processed-data/year=YY/month=MM/date=DD/hour=HH/ (in UTC) to data it delivers to Amazon S3. You can enter a prefix to append it to this default prefix. For example, if you enter the prefix vehicles, the prefix will be vehicles/processed-data/year=YY/month=MM/date=DD/hour=HH/.

" } }, + "PrimitiveBoolean": { + "base": null, + "refs": { + "CanSignal$isBigEndian": "

Whether the byte ordering of a CAN message is big-endian.

", + "CanSignal$isSigned": "

Whether the message data is specified as a signed value.

", + "ObdInterface$useExtendedIds": "

Whether to use extended IDs in the message.

", + "ObdInterface$hasTransmissionEcu": "

Whether the vehicle has a transmission control module (TCM).

" + } + }, + "PrimitiveMessageDefinition": { + "base": "

Represents a primitive type node of the complex data structure.

", + "refs": { + "StructuredMessage$primitiveMessageDefinition": "

Represents a primitive type node of the complex data structure.

" + } + }, "ProtocolName": { "base": null, "refs": { @@ -961,6 +1004,12 @@ "refs": { } }, + "PutEncryptionConfigurationRequestKmsKeyIdString": { + "base": null, + "refs": { + "PutEncryptionConfigurationRequest$kmsKeyId": "

The ID of the KMS key that is used for encryption.

" + } + }, "PutEncryptionConfigurationResponse": { "base": null, "refs": { @@ -976,6 +1025,24 @@ "refs": { } }, + "ROS2PrimitiveMessageDefinition": { + "base": "

Represents a ROS 2 compliant primitive type message of the complex data structure.

", + "refs": { + "PrimitiveMessageDefinition$ros2PrimitiveMessageDefinition": "

Information about a PrimitiveMessage using a ROS 2 compliant primitive type message of the complex data structure.

" + } + }, + "ROS2PrimitiveMessageDefinitionUpperBoundLong": { + "base": null, + "refs": { + "ROS2PrimitiveMessageDefinition$upperBound": "

An optional attribute specifying the upper bound for STRING and WSTRING.

" + } + }, + "ROS2PrimitiveType": { + "base": null, + "refs": { + "ROS2PrimitiveMessageDefinition$primitiveType": "

The primitive type (integer, floating point, boolean, etc.) for the ROS 2 primitive message definition.

" + } + }, "RegisterAccountRequest": { "base": null, "refs": { @@ -1089,12 +1156,50 @@ "refs": { "FormattedVss$vssJson": "

Provides the VSS in JSON format.

", "GetEncryptionConfigurationResponse$kmsKeyId": "

The ID of the KMS key that is used for encryption.

", - "PutEncryptionConfigurationRequest$kmsKeyId": "

The ID of the KMS key that is used for encryption.

", "PutEncryptionConfigurationResponse$kmsKeyId": "

The ID of the KMS key that is used for encryption.

", "ValidationExceptionField$name": "

The name of the parameter field with the validation error.

", "ValidationExceptionField$message": "

A message about the validation error.

" } }, + "StructureMessageName": { + "base": null, + "refs": { + "StructuredMessageFieldNameAndDataTypePair$fieldName": "

The field name of the structured message. It determines how a data value is referenced in the target language.

", + "StructuredMessageListDefinition$name": "

The name of the structured message list definition.

" + } + }, + "StructuredMessage": { + "base": "

The structured message for the message signal. It can be defined with either a primitiveMessageDefinition, structuredMessageListDefinition, or structuredMessageDefinition recursively.

", + "refs": { + "MessageSignal$structuredMessage": "

The structured message for the message signal. It can be defined with either a primitiveMessageDefinition, structuredMessageListDefinition, or structuredMessageDefinition recursively.

", + "StructuredMessageFieldNameAndDataTypePair$dataType": "

The data type.

", + "StructuredMessageListDefinition$memberType": "

The member type of the structured message list definition.

" + } + }, + "StructuredMessageDefinition": { + "base": null, + "refs": { + "StructuredMessage$structuredMessageDefinition": "

Represents a struct type node of the complex data structure.

" + } + }, + "StructuredMessageFieldNameAndDataTypePair": { + "base": "

Represents a StructureMessageName to DataType map element.

", + "refs": { + "StructuredMessageDefinition$member": null + } + }, + "StructuredMessageListDefinition": { + "base": "

Represents a list type node of the complex data structure.

", + "refs": { + "StructuredMessage$structuredMessageListDefinition": "

Represents a list type node of the complex data structure.

" + } + }, + "StructuredMessageListType": { + "base": null, + "refs": { + "StructuredMessageListDefinition$listType": "

The type of list of the structured message list definition.

" + } + }, "Tag": { "base": "

A set of key/value pairs that are used to manage the resource.

", "refs": { @@ -1195,6 +1300,12 @@ "TimestreamResources$timestreamTableName": "

The name of the registered Amazon Timestream database table.

" } }, + "TopicName": { + "base": null, + "refs": { + "MessageSignal$topicName": "

The topic name for the message signal. It corresponds to topics in ROS 2.

" + } + }, "TriggerMode": { "base": null, "refs": { @@ -1332,6 +1443,24 @@ "CreateVehicleRequestItem$associationBehavior": "

An option to create a new Amazon Web Services IoT thing when creating a vehicle, or to validate an existing thing as a vehicle.

" } }, + "VehicleMiddleware": { + "base": "

The vehicle middleware defined as a type of network interface. Examples of vehicle middleware include ROS2 and SOME/IP.

", + "refs": { + "NetworkInterface$vehicleMiddleware": "

The vehicle middleware defined as a type of network interface. Examples of vehicle middleware include ROS2 and SOME/IP.

" + } + }, + "VehicleMiddlewareName": { + "base": null, + "refs": { + "VehicleMiddleware$name": "

The name of the vehicle middleware.

" + } + }, + "VehicleMiddlewareProtocol": { + "base": null, + "refs": { + "VehicleMiddleware$protocolName": "

The protocol name of the vehicle middleware.

" + } + }, "VehicleState": { "base": null, "refs": { @@ -1452,15 +1581,6 @@ "UpdateVehicleRequestItem$attributes": "

Static information about a vehicle in a key-value pair. For example:

\"engineType\" : \"1.3 L R2\"

" } }, - "boolean": { - "base": null, - "refs": { - "CanSignal$isBigEndian": "

Whether the byte ordering of a CAN message is big-endian.

", - "CanSignal$isSigned": "

Whether the message data is specified as a signed value.

", - "ObdInterface$useExtendedIds": "

Whether to use extended IDs in the message.

", - "ObdInterface$hasTransmissionEcu": "

Whether the vehicle has a transmission control module (TCM).

" - } - }, "campaignName": { "base": null, "refs": { @@ -1529,6 +1649,8 @@ "CreateFleetRequest$description": "

A brief description of the fleet to create.

", "CreateModelManifestRequest$description": "

A brief description of the vehicle model.

", "CreateSignalCatalogRequest$description": "

A brief description of the signal catalog.

", + "CustomProperty$description": "

A brief description of the custom property.

", + "CustomStruct$description": "

A brief description of the custom structure.

", "DecoderManifestSummary$description": "

A brief description of the decoder manifest.

", "FleetSummary$description": "

A brief description of the fleet.

", "GetCampaignResponse$description": "

The description of the campaign.

", @@ -1557,6 +1679,8 @@ "CanSignal$factor": "

A multiplier used to decode the CAN message.

", "ObdSignal$scaling": "

A multiplier used to decode the message.

", "ObdSignal$offset": "

The offset used to calculate the signal value. Combined with scaling, the calculation is value = raw_value * scaling + offset.

", + "ROS2PrimitiveMessageDefinition$offset": "

The offset used to calculate the signal value. Combined with scaling, the calculation is value = raw_value * scaling + offset.

", + "ROS2PrimitiveMessageDefinition$scaling": "

A multiplier used to decode the message.

", "Sensor$min": "

The specified possible minimum value of the sensor.

", "Sensor$max": "

The specified possible maximum value of the sensor.

" } @@ -1658,6 +1782,13 @@ "Attribute$comment": "

A comment in addition to the description.

", "Branch$deprecationMessage": "

The deprecation message for the node or the branch that was moved or deleted.

", "Branch$comment": "

A comment in addition to the description.

", + "CustomProperty$deprecationMessage": "

The deprecation message for the node or the branch that was moved or deleted.

", + "CustomProperty$comment": "

A comment in addition to the description.

", + "CustomStruct$deprecationMessage": "

The deprecation message for the node or the branch that was moved or deleted.

", + "CustomStruct$comment": "

A comment in addition to the description.

", + "DecoderManifestSummary$message": "

The detailed message for the decoder manifest. When a decoder manifest is in an INVALID status, the message contains detailed reason and help information.

", + "GetDecoderManifestResponse$message": "

The detailed message for the decoder manifest. When a decoder manifest is in an INVALID status, the message contains detailed reason and help information.

", + "InvalidSignalDecoder$hint": "

The possible cause for the invalid signal decoder.

", "Sensor$deprecationMessage": "

The deprecation message for the node or the branch that was moved or deleted.

", "Sensor$comment": "

A comment in addition to the description.

" } @@ -1711,7 +1842,8 @@ "ObdSignal$serviceMode": "

The mode of operation (diagnostic service) in a message.

", "ObdSignal$pid": "

The diagnostic code used to request data from a vehicle for this signal.

", "ObdSignal$startByte": "

Indicates the beginning of the message.

", - "ObdSignal$bitRightShift": "

The number of positions to shift bits in the message.

" + "ObdSignal$bitRightShift": "

The number of positions to shift bits in the message.

", + "StructuredMessageListDefinition$capacity": "

The capacity of the structured message list definition when the list type is FIXED_CAPACITY or DYNAMIC_BOUNDED_CAPACITY.

" } }, "number": { @@ -1722,6 +1854,8 @@ "NodeCounts$totalSensors": "

The total number of nodes in a vehicle network that represent sensors.

", "NodeCounts$totalAttributes": "

The total number of nodes in a vehicle network that represent attributes.

", "NodeCounts$totalActuators": "

The total number of nodes in a vehicle network that represent actuators.

", + "NodeCounts$totalStructs": "

The total structure for the node.

", + "NodeCounts$totalProperties": "

The total properties for the node.

", "UpdateVehicleError$code": "

The relevant HTTP error code (400+).

" } }, @@ -1803,6 +1937,8 @@ "ConflictException$resourceType": "

The type of resource on which there are conflicting operations..

", "CreateVehicleError$code": "

An HTTP error code.

", "CreateVehicleError$message": "

A description of the HTTP error.

", + "CustomProperty$fullyQualifiedName": "

The fully qualified name of the custom property. For example, the fully qualified name of a custom property might be ComplexDataTypes.VehicleDataTypes.SVMCamera.FPS.

", + "CustomStruct$fullyQualifiedName": "

The fully qualified name of the custom structure. For example, the fully qualified name of a custom structure might be ComplexDataTypes.VehicleDataTypes.SVMCamera.

", "DecoderManifestSummary$name": "

The name of the decoder manifest.

", "DecoderManifestValidationException$message": null, "GetDecoderManifestResponse$name": "

The name of the decoder manifest.

", diff --git a/apis/iotfleetwise/2021-06-17/endpoint-rule-set-1.json b/apis/iotfleetwise/2021-06-17/endpoint-rule-set-1.json index 0daee2ea366..c3642aa0445 100644 --- a/apis/iotfleetwise/2021-06-17/endpoint-rule-set-1.json +++ b/apis/iotfleetwise/2021-06-17/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/lakeformation/2017-03-31/api-2.json b/apis/lakeformation/2017-03-31/api-2.json index 63c122a62c3..d0727bd0d30 100644 --- a/apis/lakeformation/2017-03-31/api-2.json +++ b/apis/lakeformation/2017-03-31/api-2.json @@ -141,6 +141,23 @@ {"shape":"AccessDeniedException"} ] }, + "CreateLakeFormationIdentityCenterConfiguration":{ + "name":"CreateLakeFormationIdentityCenterConfiguration", + "http":{ + "method":"POST", + "requestUri":"/CreateLakeFormationIdentityCenterConfiguration" + }, + "input":{"shape":"CreateLakeFormationIdentityCenterConfigurationRequest"}, + "output":{"shape":"CreateLakeFormationIdentityCenterConfigurationResponse"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"AlreadyExistsException"}, + {"shape":"InternalServiceException"}, + {"shape":"OperationTimeoutException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"} + ] + }, "CreateLakeFormationOptIn":{ "name":"CreateLakeFormationOptIn", "http":{ @@ -190,6 +207,23 @@ {"shape":"AccessDeniedException"} ] }, + "DeleteLakeFormationIdentityCenterConfiguration":{ + "name":"DeleteLakeFormationIdentityCenterConfiguration", + "http":{ + "method":"POST", + "requestUri":"/DeleteLakeFormationIdentityCenterConfiguration" + }, + "input":{"shape":"DeleteLakeFormationIdentityCenterConfigurationRequest"}, + "output":{"shape":"DeleteLakeFormationIdentityCenterConfigurationResponse"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InternalServiceException"}, + {"shape":"OperationTimeoutException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"} + ] + }, "DeleteLakeFormationOptIn":{ "name":"DeleteLakeFormationOptIn", "http":{ @@ -241,6 +275,22 @@ {"shape":"EntityNotFoundException"} ] }, + "DescribeLakeFormationIdentityCenterConfiguration":{ + "name":"DescribeLakeFormationIdentityCenterConfiguration", + "http":{ + "method":"POST", + "requestUri":"/DescribeLakeFormationIdentityCenterConfiguration" + }, + "input":{"shape":"DescribeLakeFormationIdentityCenterConfigurationRequest"}, + "output":{"shape":"DescribeLakeFormationIdentityCenterConfigurationResponse"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InternalServiceException"}, + {"shape":"OperationTimeoutException"}, + {"shape":"AccessDeniedException"} + ] + }, "DescribeResource":{ "name":"DescribeResource", "http":{ @@ -768,6 +818,23 @@ {"shape":"AccessDeniedException"} ] }, + "UpdateLakeFormationIdentityCenterConfiguration":{ + "name":"UpdateLakeFormationIdentityCenterConfiguration", + "http":{ + "method":"POST", + "requestUri":"/UpdateLakeFormationIdentityCenterConfiguration" + }, + "input":{"shape":"UpdateLakeFormationIdentityCenterConfigurationRequest"}, + "output":{"shape":"UpdateLakeFormationIdentityCenterConfigurationResponse"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"EntityNotFoundException"}, + {"shape":"InternalServiceException"}, + {"shape":"OperationTimeoutException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConcurrentModificationException"} + ] + }, "UpdateResource":{ "name":"UpdateResource", "http":{ @@ -876,6 +943,14 @@ }, "exception":true }, + "ApplicationArn":{"type":"string"}, + "ApplicationStatus":{ + "type":"string", + "enum":[ + "ENABLED", + "DISABLED" + ] + }, "AssumeDecoratedRoleWithSAMLRequest":{ "type":"structure", "required":[ @@ -1079,6 +1154,20 @@ "members":{ } }, + "CreateLakeFormationIdentityCenterConfigurationRequest":{ + "type":"structure", + "members":{ + "CatalogId":{"shape":"CatalogIdString"}, + "InstanceArn":{"shape":"IdentityCenterInstanceArn"}, + "ExternalFiltering":{"shape":"ExternalFilteringConfiguration"} + } + }, + "CreateLakeFormationIdentityCenterConfigurationResponse":{ + "type":"structure", + "members":{ + "ApplicationArn":{"shape":"ApplicationArn"} + } + }, "CreateLakeFormationOptInRequest":{ "type":"structure", "required":[ @@ -1229,6 +1318,17 @@ "members":{ } }, + "DeleteLakeFormationIdentityCenterConfigurationRequest":{ + "type":"structure", + "members":{ + "CatalogId":{"shape":"CatalogIdString"} + } + }, + "DeleteLakeFormationIdentityCenterConfigurationResponse":{ + "type":"structure", + "members":{ + } + }, "DeleteLakeFormationOptInRequest":{ "type":"structure", "required":[ @@ -1287,6 +1387,21 @@ "members":{ } }, + "DescribeLakeFormationIdentityCenterConfigurationRequest":{ + "type":"structure", + "members":{ + "CatalogId":{"shape":"CatalogIdString"} + } + }, + "DescribeLakeFormationIdentityCenterConfigurationResponse":{ + "type":"structure", + "members":{ + "CatalogId":{"shape":"CatalogIdString"}, + "InstanceArn":{"shape":"IdentityCenterInstanceArn"}, + "ApplicationArn":{"shape":"ApplicationArn"}, + "ExternalFiltering":{"shape":"ExternalFilteringConfiguration"} + } + }, "DescribeResourceRequest":{ "type":"structure", "required":["ResourceArn"], @@ -1331,6 +1446,13 @@ "min":1, "pattern":"[\\p{L}\\p{N}\\p{P}]*" }, + "EnableStatus":{ + "type":"string", + "enum":[ + "ENABLED", + "DISABLED" + ] + }, "EntityNotFoundException":{ "type":"structure", "members":{ @@ -1381,6 +1503,17 @@ "members":{ } }, + "ExternalFilteringConfiguration":{ + "type":"structure", + "required":[ + "Status", + "AuthorizedTargets" + ], + "members":{ + "Status":{"shape":"EnableStatus"}, + "AuthorizedTargets":{"shape":"ScopeTargets"} + } + }, "FieldNameString":{ "type":"string", "enum":[ @@ -1689,6 +1822,7 @@ "max":255, "min":1 }, + "IdentityCenterInstanceArn":{"type":"string"}, "Integer":{ "type":"integer", "box":true @@ -2265,6 +2399,11 @@ "max":100000, "min":4 }, + "ScopeTarget":{"type":"string"}, + "ScopeTargets":{ + "type":"list", + "member":{"shape":"ScopeTarget"} + }, "SearchDatabasesByLFTagsRequest":{ "type":"structure", "required":["Expression"], @@ -2587,6 +2726,19 @@ "members":{ } }, + "UpdateLakeFormationIdentityCenterConfigurationRequest":{ + "type":"structure", + "members":{ + "CatalogId":{"shape":"CatalogIdString"}, + "ApplicationStatus":{"shape":"ApplicationStatus"}, + "ExternalFiltering":{"shape":"ExternalFilteringConfiguration"} + } + }, + "UpdateLakeFormationIdentityCenterConfigurationResponse":{ + "type":"structure", + "members":{ + } + }, "UpdateResourceRequest":{ "type":"structure", "required":[ diff --git a/apis/lakeformation/2017-03-31/docs-2.json b/apis/lakeformation/2017-03-31/docs-2.json index 7b4629a244b..f2ae734fa2a 100644 --- a/apis/lakeformation/2017-03-31/docs-2.json +++ b/apis/lakeformation/2017-03-31/docs-2.json @@ -10,12 +10,15 @@ "CommitTransaction": "

Attempts to commit the specified transaction. Returns an exception if the transaction was previously aborted. This API action is idempotent if called multiple times for the same transaction.

", "CreateDataCellsFilter": "

Creates a data cell filter to allow one to grant access to certain columns on certain rows.

", "CreateLFTag": "

Creates an LF-tag with the specified name and values.

", + "CreateLakeFormationIdentityCenterConfiguration": "

Creates an IAM Identity Center connection with Lake Formation to allow IAM Identity Center users and groups to access Data Catalog resources.

", "CreateLakeFormationOptIn": "

Enforce Lake Formation permissions for the given databases, tables, and principals.

", "DeleteDataCellsFilter": "

Deletes a data cell filter.

", "DeleteLFTag": "

Deletes the specified LF-tag given a key name. If the input parameter tag key was not found, then the operation will throw an exception. When you delete an LF-tag, the LFTagPolicy attached to the LF-tag becomes invalid. If the deleted LF-tag was still assigned to any resource, the tag policy attach to the deleted LF-tag will no longer be applied to the resource.

", + "DeleteLakeFormationIdentityCenterConfiguration": "

Deletes an IAM Identity Center connection with Lake Formation.

", "DeleteLakeFormationOptIn": "

Remove the Lake Formation permissions enforcement of the given databases, tables, and principals.

", "DeleteObjectsOnCancel": "

For a specific governed table, provides a list of Amazon S3 objects that will be written during the current transaction and that can be automatically deleted if the transaction is canceled. Without this call, no Amazon S3 objects are automatically deleted when a transaction cancels.

The Glue ETL library function write_dynamic_frame.from_catalog() includes an option to automatically call DeleteObjectsOnCancel before writes. For more information, see Rolling Back Amazon S3 Writes.

", "DeregisterResource": "

Deregisters the resource as managed by the Data Catalog.

When you deregister a path, Lake Formation removes the path from the inline policy attached to your service-linked role.

", + "DescribeLakeFormationIdentityCenterConfiguration": "

Retrieves the instance ARN and application ARN for the connection.

", "DescribeResource": "

Retrieves the current data access role for the given resource registered in Lake Formation.

", "DescribeTransaction": "

Returns the details of a single transaction.

", "ExtendTransaction": "

Indicates to the service that the specified transaction is still active and should not be treated as idle and aborted.

Write transactions that remain idle for a long period are automatically aborted unless explicitly extended.

", @@ -49,6 +52,7 @@ "StartTransaction": "

Starts a new transaction and returns its transaction ID. Transaction IDs are opaque objects that you can use to identify a transaction.

", "UpdateDataCellsFilter": "

Updates a data cell filter.

", "UpdateLFTag": "

Updates the list of possible values for the specified LF-tag key. If the LF-tag does not exist, the operation throws an EntityNotFoundException. The values in the delete key values will be deleted from list of possible values. If any value in the delete key values is attached to a resource, then API errors out with a 400 Exception - \"Update not allowed\". Untag the attribute before deleting the LF-tag key's value.

", + "UpdateLakeFormationIdentityCenterConfiguration": "

Updates the IAM Identity Center connection parameters.

", "UpdateResource": "

Updates the data access role used for vending access to the given (registered) resource in Lake Formation.

", "UpdateTableObjects": "

Updates the manifest of Amazon S3 objects that make up the specified governed table.

", "UpdateTableStorageOptimizer": "

Updates the configuration of the storage optimizers for a table.

" @@ -94,6 +98,19 @@ "refs": { } }, + "ApplicationArn": { + "base": null, + "refs": { + "CreateLakeFormationIdentityCenterConfigurationResponse$ApplicationArn": "

The Amazon Resource Name (ARN) of the integrated application.

", + "DescribeLakeFormationIdentityCenterConfigurationResponse$ApplicationArn": "

The Amazon Resource Name (ARN) of the integrated application.

" + } + }, + "ApplicationStatus": { + "base": null, + "refs": { + "UpdateLakeFormationIdentityCenterConfigurationRequest$ApplicationStatus": "

Allows to enable or disable the IAM Identity Center connection.

" + } + }, "AssumeDecoratedRoleWithSAMLRequest": { "base": null, "refs": { @@ -193,13 +210,17 @@ "BatchGrantPermissionsRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", "BatchRevokePermissionsRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", "CreateLFTagRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", + "CreateLakeFormationIdentityCenterConfigurationRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, view definitions, and other control information to manage your Lake Formation environment.

", "DataCellsFilter$TableCatalogId": "

The ID of the catalog to which the table belongs.

", "DataCellsFilterResource$TableCatalogId": "

The ID of the catalog to which the table belongs.

", "DataLocationResource$CatalogId": "

The identifier for the Data Catalog where the location is registered with Lake Formation. By default, it is the account ID of the caller.

", "DatabaseResource$CatalogId": "

The identifier for the Data Catalog. By default, it is the account ID of the caller.

", "DeleteDataCellsFilterRequest$TableCatalogId": "

The ID of the catalog to which the table belongs.

", "DeleteLFTagRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", + "DeleteLakeFormationIdentityCenterConfigurationRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, view definition, and other control information to manage your Lake Formation environment.

", "DeleteObjectsOnCancelRequest$CatalogId": "

The Glue data catalog that contains the governed table. Defaults to the current account ID.

", + "DescribeLakeFormationIdentityCenterConfigurationRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", + "DescribeLakeFormationIdentityCenterConfigurationResponse$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", "GetDataCellsFilterRequest$TableCatalogId": "

The ID of the catalog to which the table belongs.

", "GetDataLakeSettingsRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", "GetEffectivePermissionsForPathRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", @@ -225,6 +246,7 @@ "TableWithColumnsResource$CatalogId": "

The identifier for the Data Catalog. By default, it is the account ID of the caller.

", "TrustedResourceOwners$member": null, "UpdateLFTagRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment.

", + "UpdateLakeFormationIdentityCenterConfigurationRequest$CatalogId": "

The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, view definitions, and other control information to manage your Lake Formation environment.

", "UpdateTableObjectsRequest$CatalogId": "

The catalog containing the governed table to update. Defaults to the caller’s account ID.

", "UpdateTableStorageOptimizerRequest$CatalogId": "

The Catalog ID of the table.

" } @@ -304,6 +326,16 @@ "refs": { } }, + "CreateLakeFormationIdentityCenterConfigurationRequest": { + "base": null, + "refs": { + } + }, + "CreateLakeFormationIdentityCenterConfigurationResponse": { + "base": null, + "refs": { + } + }, "CreateLakeFormationOptInRequest": { "base": null, "refs": { @@ -431,6 +463,16 @@ "refs": { } }, + "DeleteLakeFormationIdentityCenterConfigurationRequest": { + "base": null, + "refs": { + } + }, + "DeleteLakeFormationIdentityCenterConfigurationResponse": { + "base": null, + "refs": { + } + }, "DeleteLakeFormationOptInRequest": { "base": null, "refs": { @@ -467,6 +509,16 @@ "refs": { } }, + "DescribeLakeFormationIdentityCenterConfigurationRequest": { + "base": null, + "refs": { + } + }, + "DescribeLakeFormationIdentityCenterConfigurationResponse": { + "base": null, + "refs": { + } + }, "DescribeResourceRequest": { "base": null, "refs": { @@ -508,6 +560,12 @@ "VirtualObject$ETag": "

The ETag of the Amazon S3 object.

" } }, + "EnableStatus": { + "base": null, + "refs": { + "ExternalFilteringConfiguration$Status": "

Allows to enable or disable the third-party applications that are allowed to access data managed by Lake Formation.

" + } + }, "EntityNotFoundException": { "base": "

A specified entity does not exist.

", "refs": { @@ -563,6 +621,14 @@ "refs": { } }, + "ExternalFilteringConfiguration": { + "base": "

Configuration for enabling external data filtering for third-party applications to access data managed by Lake Formation .

", + "refs": { + "CreateLakeFormationIdentityCenterConfigurationRequest$ExternalFiltering": "

A list of the account IDs of Amazon Web Services accounts of third-party applications that are allowed to to access data managed by Lake Formation.

", + "DescribeLakeFormationIdentityCenterConfigurationResponse$ExternalFiltering": "

Indicates if external filtering is enabled.

", + "UpdateLakeFormationIdentityCenterConfigurationRequest$ExternalFiltering": "

A list of the account IDs of Amazon Web Services accounts of third-party applications that are allowed to access data managed by Lake Formation.

" + } + }, "FieldNameString": { "base": null, "refs": { @@ -767,6 +833,13 @@ "BatchPermissionsRequestEntry$Id": "

A unique identifier for the batch permissions request entry.

" } }, + "IdentityCenterInstanceArn": { + "base": null, + "refs": { + "CreateLakeFormationIdentityCenterConfigurationRequest$InstanceArn": "

The ARN of the IAM Identity Center instance for which the operation will be executed. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces in the Amazon Web Services General Reference.

", + "DescribeLakeFormationIdentityCenterConfigurationResponse$InstanceArn": "

The Amazon Resource Name (ARN) of the connection.

" + } + }, "Integer": { "base": null, "refs": { @@ -1087,7 +1160,7 @@ "ParametersMap": { "base": null, "refs": { - "DataLakeSettings$Parameters": "

A key-value map that provides an additional configuration on your data lake. CrossAccountVersion is the key you can configure in the Parameters field. Accepted values for the CrossAccountVersion key are 1, 2, and 3.

" + "DataLakeSettings$Parameters": "

A key-value map that provides an additional configuration on your data lake. CROSS_ACCOUNT_VERSION is the key you can configure in the Parameters field. Accepted values for the CrossAccountVersion key are 1, 2, 3, and 4.

" } }, "ParametersMapValue": { @@ -1380,6 +1453,18 @@ "AssumeDecoratedRoleWithSAMLRequest$SAMLAssertion": "

A SAML assertion consisting of an assertion statement for the user who needs temporary credentials. This must match the SAML assertion that was issued to IAM. This must be Base64 encoded.

" } }, + "ScopeTarget": { + "base": null, + "refs": { + "ScopeTargets$member": null + } + }, + "ScopeTargets": { + "base": null, + "refs": { + "ExternalFilteringConfiguration$AuthorizedTargets": "

List of third-party application ARNs integrated with Lake Formation.

" + } + }, "SearchDatabasesByLFTagsRequest": { "base": null, "refs": { @@ -1614,7 +1699,7 @@ "SearchDatabasesByLFTagsRequest$NextToken": "

A continuation token, if this is not the first call to retrieve this list.

", "SearchDatabasesByLFTagsResponse$NextToken": "

A continuation token, present if the current list segment is not the last.

", "SearchTablesByLFTagsRequest$NextToken": "

A continuation token, if this is not the first call to retrieve this list.

", - "SearchTablesByLFTagsResponse$NextToken": "

A continuation token, present if the current list segment is not the last.

" + "SearchTablesByLFTagsResponse$NextToken": "

A continuation token, present if the current list segment is not the last. On the first run, if you include a not null (a value) token you can get empty pages.

" } }, "TokenString": { @@ -1729,6 +1814,16 @@ "refs": { } }, + "UpdateLakeFormationIdentityCenterConfigurationRequest": { + "base": null, + "refs": { + } + }, + "UpdateLakeFormationIdentityCenterConfigurationResponse": { + "base": null, + "refs": { + } + }, "UpdateResourceRequest": { "base": null, "refs": { diff --git a/apis/lakeformation/2017-03-31/endpoint-rule-set-1.json b/apis/lakeformation/2017-03-31/endpoint-rule-set-1.json index 363a3917c99..ecbdf12a7a4 100644 --- a/apis/lakeformation/2017-03-31/endpoint-rule-set-1.json +++ b/apis/lakeformation/2017-03-31/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/logs/2014-03-28/api-2.json b/apis/logs/2014-03-28/api-2.json index efb057f957e..9429c4d7256 100644 --- a/apis/logs/2014-03-28/api-2.json +++ b/apis/logs/2014-03-28/api-2.json @@ -75,6 +75,22 @@ {"shape":"ResourceAlreadyExistsException"} ] }, + "CreateLogAnomalyDetector":{ + "name":"CreateLogAnomalyDetector", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateLogAnomalyDetectorRequest"}, + "output":{"shape":"CreateLogAnomalyDetectorResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"}, + {"shape":"LimitExceededException"} + ] + }, "CreateLogGroup":{ "name":"CreateLogGroup", "http":{ @@ -208,6 +224,20 @@ {"shape":"ServiceUnavailableException"} ] }, + "DeleteLogAnomalyDetector":{ + "name":"DeleteLogAnomalyDetector", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteLogAnomalyDetectorRequest"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] + }, "DeleteLogGroup":{ "name":"DeleteLogGroup", "http":{ @@ -591,6 +621,21 @@ {"shape":"ThrottlingException"} ] }, + "GetLogAnomalyDetector":{ + "name":"GetLogAnomalyDetector", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetLogAnomalyDetectorRequest"}, + "output":{"shape":"GetLogAnomalyDetectorResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] + }, "GetLogEvents":{ "name":"GetLogEvents", "http":{ @@ -649,6 +694,36 @@ {"shape":"ServiceUnavailableException"} ] }, + "ListAnomalies":{ + "name":"ListAnomalies", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListAnomaliesRequest"}, + "output":{"shape":"ListAnomaliesResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] + }, + "ListLogAnomalyDetectors":{ + "name":"ListLogAnomalyDetectors", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListLogAnomalyDetectorsRequest"}, + "output":{"shape":"ListLogAnomalyDetectorsResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -971,6 +1046,34 @@ {"shape":"ResourceNotFoundException"}, {"shape":"ServiceUnavailableException"} ] + }, + "UpdateAnomaly":{ + "name":"UpdateAnomaly", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateAnomalyRequest"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] + }, + "UpdateLogAnomalyDetector":{ + "name":"UpdateLogAnomalyDetector", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateLogAnomalyDetectorRequest"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"OperationAbortedException"} + ] } }, "shapes":{ @@ -1018,6 +1121,94 @@ "min":1, "pattern":"[\\w+=/:,.@-]*" }, + "Anomalies":{ + "type":"list", + "member":{"shape":"Anomaly"} + }, + "Anomaly":{ + "type":"structure", + "required":[ + "anomalyId", + "patternId", + "anomalyDetectorArn", + "patternString", + "firstSeen", + "lastSeen", + "description", + "active", + "state", + "histogram", + "logSamples", + "patternTokens", + "logGroupArnList" + ], + "members":{ + "anomalyId":{"shape":"AnomalyId"}, + "patternId":{"shape":"PatternId"}, + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"}, + "patternString":{"shape":"PatternString"}, + "patternRegex":{"shape":"PatternRegex"}, + "priority":{"shape":"Priority"}, + "firstSeen":{"shape":"EpochMillis"}, + "lastSeen":{"shape":"EpochMillis"}, + "description":{"shape":"Description"}, + "active":{"shape":"Boolean"}, + "state":{"shape":"State"}, + "histogram":{"shape":"Histogram"}, + "logSamples":{"shape":"LogSamples"}, + "patternTokens":{"shape":"PatternTokens"}, + "logGroupArnList":{"shape":"LogGroupArnList"}, + "suppressed":{"shape":"Boolean"}, + "suppressedDate":{"shape":"EpochMillis"}, + "suppressedUntil":{"shape":"EpochMillis"}, + "isPatternLevelSuppression":{"shape":"Boolean"} + } + }, + "AnomalyDetector":{ + "type":"structure", + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"}, + "detectorName":{"shape":"DetectorName"}, + "logGroupArnList":{"shape":"LogGroupArnList"}, + "evaluationFrequency":{"shape":"EvaluationFrequency"}, + "filterPattern":{"shape":"FilterPattern"}, + "anomalyDetectorStatus":{"shape":"AnomalyDetectorStatus"}, + "kmsKeyId":{"shape":"KmsKeyId"}, + "creationTimeStamp":{"shape":"EpochMillis"}, + "lastModifiedTimeStamp":{"shape":"EpochMillis"}, + "anomalyVisibilityTime":{"shape":"AnomalyVisibilityTime"} + } + }, + "AnomalyDetectorArn":{ + "type":"string", + "min":1, + "pattern":"[\\w#+=/:,.@-]*" + }, + "AnomalyDetectorStatus":{ + "type":"string", + "enum":[ + "INITIALIZING", + "TRAINING", + "ANALYZING", + "FAILED", + "DELETED", + "PAUSED" + ] + }, + "AnomalyDetectors":{ + "type":"list", + "member":{"shape":"AnomalyDetector"} + }, + "AnomalyId":{ + "type":"string", + "max":36, + "min":36 + }, + "AnomalyVisibilityTime":{ + "type":"long", + "max":90, + "min":7 + }, "Arn":{"type":"string"}, "AssociateKmsKeyRequest":{ "type":"structure", @@ -1028,6 +1219,7 @@ "resourceIdentifier":{"shape":"ResourceIdentifier"} } }, + "Boolean":{"type":"boolean"}, "CancelExportTaskRequest":{ "type":"structure", "required":["taskId"], @@ -1047,6 +1239,7 @@ }, "exception":true }, + "Count":{"type":"long"}, "CreateDeliveryRequest":{ "type":"structure", "required":[ @@ -1089,13 +1282,33 @@ "taskId":{"shape":"ExportTaskId"} } }, + "CreateLogAnomalyDetectorRequest":{ + "type":"structure", + "required":["logGroupArnList"], + "members":{ + "logGroupArnList":{"shape":"LogGroupArnList"}, + "detectorName":{"shape":"DetectorName"}, + "evaluationFrequency":{"shape":"EvaluationFrequency"}, + "filterPattern":{"shape":"FilterPattern"}, + "kmsKeyId":{"shape":"KmsKeyId"}, + "anomalyVisibilityTime":{"shape":"AnomalyVisibilityTime"}, + "tags":{"shape":"Tags"} + } + }, + "CreateLogAnomalyDetectorResponse":{ + "type":"structure", + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"} + } + }, "CreateLogGroupRequest":{ "type":"structure", "required":["logGroupName"], "members":{ "logGroupName":{"shape":"LogGroupName"}, "kmsKeyId":{"shape":"KmsKeyId"}, - "tags":{"shape":"Tags"} + "tags":{"shape":"Tags"}, + "logGroupClass":{"shape":"LogGroupClass"} } }, "CreateLogStreamRequest":{ @@ -1181,6 +1394,13 @@ "destinationName":{"shape":"DestinationName"} } }, + "DeleteLogAnomalyDetectorRequest":{ + "type":"structure", + "required":["anomalyDetectorArn"], + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"} + } + }, "DeleteLogGroupRequest":{ "type":"structure", "required":["logGroupName"], @@ -1432,7 +1652,8 @@ "logGroupNamePattern":{"shape":"LogGroupNamePattern"}, "nextToken":{"shape":"NextToken"}, "limit":{"shape":"DescribeLimit"}, - "includeLinkedAccounts":{"shape":"IncludeLinkedAccounts"} + "includeLinkedAccounts":{"shape":"IncludeLinkedAccounts"}, + "logGroupClass":{"shape":"LogGroupClass"} } }, "DescribeLogGroupsResponse":{ @@ -1546,6 +1767,10 @@ "nextToken":{"shape":"NextToken"} } }, + "Description":{ + "type":"string", + "min":1 + }, "Destination":{ "type":"structure", "members":{ @@ -1571,6 +1796,10 @@ "type":"list", "member":{"shape":"Destination"} }, + "DetectorName":{ + "type":"string", + "min":1 + }, "Dimensions":{ "type":"map", "key":{"shape":"DimensionsKey"}, @@ -1598,10 +1827,31 @@ "ByLogStream" ] }, + "DynamicTokenPosition":{"type":"integer"}, "EncryptionKey":{ "type":"string", "max":256 }, + "Enumerations":{ + "type":"map", + "key":{"shape":"TokenString"}, + "value":{"shape":"TokenValue"} + }, + "EpochMillis":{ + "type":"long", + "min":0 + }, + "EvaluationFrequency":{ + "type":"string", + "enum":[ + "ONE_MIN", + "FIVE_MIN", + "TEN_MIN", + "FIFTEEN_MIN", + "THIRTY_MIN", + "ONE_HOUR" + ] + }, "EventId":{"type":"string"}, "EventMessage":{ "type":"string", @@ -1801,6 +2051,27 @@ "deliverySource":{"shape":"DeliverySource"} } }, + "GetLogAnomalyDetectorRequest":{ + "type":"structure", + "required":["anomalyDetectorArn"], + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"} + } + }, + "GetLogAnomalyDetectorResponse":{ + "type":"structure", + "members":{ + "detectorName":{"shape":"DetectorName"}, + "logGroupArnList":{"shape":"LogGroupArnList"}, + "evaluationFrequency":{"shape":"EvaluationFrequency"}, + "filterPattern":{"shape":"FilterPattern"}, + "anomalyDetectorStatus":{"shape":"AnomalyDetectorStatus"}, + "kmsKeyId":{"shape":"KmsKeyId"}, + "creationTimeStamp":{"shape":"EpochMillis"}, + "lastModifiedTimeStamp":{"shape":"EpochMillis"}, + "anomalyVisibilityTime":{"shape":"AnomalyVisibilityTime"} + } + }, "GetLogEventsRequest":{ "type":"structure", "required":["logStreamName"], @@ -1868,6 +2139,11 @@ "encryptionKey":{"shape":"EncryptionKey"} } }, + "Histogram":{ + "type":"map", + "key":{"shape":"Time"}, + "value":{"shape":"Count"} + }, "IncludeLinkedAccounts":{"type":"boolean"}, "InheritedProperties":{ "type":"list", @@ -1900,6 +2176,7 @@ "max":100, "min":1 }, + "Integer":{"type":"integer"}, "Interleaved":{"type":"boolean"}, "InvalidOperationException":{ "type":"structure", @@ -1930,6 +2207,47 @@ }, "exception":true }, + "ListAnomaliesLimit":{ + "type":"integer", + "max":50, + "min":1 + }, + "ListAnomaliesRequest":{ + "type":"structure", + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"}, + "suppressionState":{"shape":"SuppressionState"}, + "limit":{"shape":"ListAnomaliesLimit"}, + "nextToken":{"shape":"NextToken"} + } + }, + "ListAnomaliesResponse":{ + "type":"structure", + "members":{ + "anomalies":{"shape":"Anomalies"}, + "nextToken":{"shape":"NextToken"} + } + }, + "ListLogAnomalyDetectorsLimit":{ + "type":"integer", + "max":50, + "min":1 + }, + "ListLogAnomalyDetectorsRequest":{ + "type":"structure", + "members":{ + "filterLogGroupArn":{"shape":"LogGroupArn"}, + "limit":{"shape":"ListLogAnomalyDetectorsLimit"}, + "nextToken":{"shape":"NextToken"} + } + }, + "ListLogAnomalyDetectorsResponse":{ + "type":"structure", + "members":{ + "anomalyDetectors":{"shape":"AnomalyDetectors"}, + "nextToken":{"shape":"NextToken"} + } + }, "ListTagsForResourceRequest":{ "type":"structure", "required":["resourceArn"], @@ -1960,6 +2278,10 @@ "deprecated":true, "deprecatedMessage":"Please use the generic tagging API model ListTagsForResourceRequest and ListTagsForResourceResponse" }, + "LogEvent":{ + "type":"string", + "min":1 + }, "LogEventIndex":{"type":"integer"}, "LogGroup":{ "type":"structure", @@ -1972,9 +2294,27 @@ "storedBytes":{"shape":"StoredBytes"}, "kmsKeyId":{"shape":"KmsKeyId"}, "dataProtectionStatus":{"shape":"DataProtectionStatus"}, - "inheritedProperties":{"shape":"InheritedProperties"} + "inheritedProperties":{"shape":"InheritedProperties"}, + "logGroupClass":{"shape":"LogGroupClass"} } }, + "LogGroupArn":{ + "type":"string", + "max":2048, + "min":1, + "pattern":"[\\w#+=/:,.@-]*" + }, + "LogGroupArnList":{ + "type":"list", + "member":{"shape":"LogGroupArn"} + }, + "LogGroupClass":{ + "type":"string", + "enum":[ + "STANDARD", + "INFREQUENT_ACCESS" + ] + }, "LogGroupField":{ "type":"structure", "members":{ @@ -2022,6 +2362,10 @@ "value":{"shape":"Value"} }, "LogRecordPointer":{"type":"string"}, + "LogSamples":{ + "type":"list", + "member":{"shape":"LogEvent"} + }, "LogStream":{ "type":"structure", "members":{ @@ -2165,6 +2509,32 @@ "type":"list", "member":{"shape":"OutputLogEvent"} }, + "PatternId":{ + "type":"string", + "max":32, + "min":32 + }, + "PatternRegex":{ + "type":"string", + "min":1 + }, + "PatternString":{ + "type":"string", + "min":1 + }, + "PatternToken":{ + "type":"structure", + "members":{ + "dynamicTokenPosition":{"shape":"DynamicTokenPosition"}, + "isDynamic":{"shape":"Boolean"}, + "tokenString":{"shape":"TokenString"}, + "enumerations":{"shape":"Enumerations"} + } + }, + "PatternTokens":{ + "type":"list", + "member":{"shape":"PatternToken"} + }, "Percentage":{ "type":"integer", "max":100, @@ -2186,6 +2556,10 @@ "type":"string", "enum":["DATA_PROTECTION_POLICY"] }, + "Priority":{ + "type":"string", + "min":1 + }, "PutAccountPolicyRequest":{ "type":"structure", "required":[ @@ -2656,6 +3030,14 @@ "queryId":{"shape":"QueryId"} } }, + "State":{ + "type":"string", + "enum":[ + "Active", + "Suppressed", + "Baseline" + ] + }, "StatsValue":{"type":"double"}, "StopQueryRequest":{ "type":"structure", @@ -2691,6 +3073,35 @@ "member":{"shape":"SubscriptionFilter"} }, "Success":{"type":"boolean"}, + "SuppressionPeriod":{ + "type":"structure", + "members":{ + "value":{"shape":"Integer"}, + "suppressionUnit":{"shape":"SuppressionUnit"} + } + }, + "SuppressionState":{ + "type":"string", + "enum":[ + "SUPPRESSED", + "UNSUPPRESSED" + ] + }, + "SuppressionType":{ + "type":"string", + "enum":[ + "LIMITED", + "INFINITE" + ] + }, + "SuppressionUnit":{ + "type":"string", + "enum":[ + "SECONDS", + "MINUTES", + "HOURS" + ] + }, "TagKey":{ "type":"string", "max":128, @@ -2777,11 +3188,20 @@ }, "exception":true }, + "Time":{ + "type":"string", + "min":1 + }, "Timestamp":{ "type":"long", "min":0 }, "Token":{"type":"string"}, + "TokenString":{ + "type":"string", + "min":1 + }, + "TokenValue":{"type":"long"}, "TooManyTagsException":{ "type":"structure", "members":{ @@ -2821,6 +3241,31 @@ "tagKeys":{"shape":"TagKeyList"} } }, + "UpdateAnomalyRequest":{ + "type":"structure", + "required":["anomalyDetectorArn"], + "members":{ + "anomalyId":{"shape":"AnomalyId"}, + "patternId":{"shape":"PatternId"}, + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"}, + "suppressionType":{"shape":"SuppressionType"}, + "suppressionPeriod":{"shape":"SuppressionPeriod"} + } + }, + "UpdateLogAnomalyDetectorRequest":{ + "type":"structure", + "required":[ + "anomalyDetectorArn", + "enabled" + ], + "members":{ + "anomalyDetectorArn":{"shape":"AnomalyDetectorArn"}, + "evaluationFrequency":{"shape":"EvaluationFrequency"}, + "filterPattern":{"shape":"FilterPattern"}, + "anomalyVisibilityTime":{"shape":"AnomalyVisibilityTime"}, + "enabled":{"shape":"Boolean"} + } + }, "ValidationException":{ "type":"structure", "members":{ diff --git a/apis/logs/2014-03-28/docs-2.json b/apis/logs/2014-03-28/docs-2.json index 8943c983a36..226e97dd5c5 100644 --- a/apis/logs/2014-03-28/docs-2.json +++ b/apis/logs/2014-03-28/docs-2.json @@ -4,8 +4,9 @@ "operations": { "AssociateKmsKey": "

Associates the specified KMS key with either one log group in the account, or with all stored CloudWatch Logs query insights results in the account.

When you use AssociateKmsKey, you specify either the logGroupName parameter or the resourceIdentifier parameter. You can't specify both of those parameters in the same operation.

If you delete the key that is used to encrypt log events or log group query results, then all the associated stored log events or query results that were encrypted with that key will be unencryptable and unusable.

CloudWatch Logs supports only symmetric KMS keys. Do not use an associate an asymmetric KMS key with your log group or query results. For more information, see Using Symmetric and Asymmetric Keys.

It can take up to 5 minutes for this operation to take effect.

If you attempt to associate a KMS key with a log group but the KMS key does not exist or the KMS key is disabled, you receive an InvalidParameterException error.

", "CancelExportTask": "

Cancels the specified export task.

The task must be in the PENDING or RUNNING state.

", - "CreateDelivery": "

Creates a delivery. A delivery is a connection between a logical delivery source and a logical delivery destination that you have already created.

Only some Amazon Web Services services support being configured as a delivery source using this operation. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

A delivery destination can represent a log group in CloudWatch Logs, an Amazon S3 bucket, or a delivery stream in Kinesis Data Firehose.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

You can't update an existing delivery. You can only create and delete deliveries.

", + "CreateDelivery": "

Creates a delivery. A delivery is a connection between a logical delivery source and a logical delivery destination that you have already created.

Only some Amazon Web Services services support being configured as a delivery source using this operation. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

A delivery destination can represent a log group in CloudWatch Logs, an Amazon S3 bucket, or a delivery stream in Kinesis Data Firehose.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

You can't update an existing delivery. You can only create and delete deliveries.

", "CreateExportTask": "

Creates an export task so that you can efficiently export data from a log group to an Amazon S3 bucket. When you perform a CreateExportTask operation, you must use credentials that have permission to write to the S3 bucket that you specify as the destination.

Exporting log data to S3 buckets that are encrypted by KMS is supported. Exporting log data to Amazon S3 buckets that have S3 Object Lock enabled with a retention period is also supported.

Exporting to S3 buckets that are encrypted with AES-256 is supported.

This is an asynchronous call. If all the required information is provided, this operation initiates an export task and responds with the ID of the task. After the task has started, you can use DescribeExportTasks to get the status of the export task. Each account can only have one active (RUNNING or PENDING) export task at a time. To cancel an export task, use CancelExportTask.

You can export logs from multiple log groups or multiple time ranges to the same S3 bucket. To separate log data for each export task, specify a prefix to be used as the Amazon S3 key prefix for all exported objects.

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can sort the exported log field data by using Linux utilities.

", + "CreateLogAnomalyDetector": "

Creates an anomaly detector that regularly scans one or more log groups and look for patterns and anomalies in the logs.

An anomaly detector can help surface issues by automatically discovering anomalies in your log event traffic. An anomaly detector uses machine learning algorithms to scan log events and find patterns. A pattern is a shared text structure that recurs among your log fields. Patterns provide a useful tool for analyzing large sets of logs because a large number of log events can often be compressed into a few patterns.

The anomaly detector uses pattern recognition to find anomalies, which are unusual log events. It uses the evaluationFrequency to compare current log events and patterns with trained baselines.

Fields within a pattern are called tokens. Fields that vary within a pattern, such as a request ID or timestamp, are referred to as dynamic tokens and represented by <*>.

The following is an example of a pattern:

[INFO] Request time: <*> ms

This pattern represents log events like [INFO] Request time: 327 ms and other similar log events that differ only by the number, in this csse 327. When the pattern is displayed, the different numbers are replaced by <*>

Any parts of log events that are masked as sensitive data are not scanned for anomalies. For more information about masking sensitive data, see Help protect sensitive log data with masking.

", "CreateLogGroup": "

Creates a log group with the specified name. You can create up to 1,000,000 log groups per Region per account.

You must use the following guidelines when naming a log group:

When you create a log group, by default the log events in the log group do not expire. To set a retention policy so that events expire and are deleted after a specified time, use PutRetentionPolicy.

If you associate an KMS key with the log group, ingested data is encrypted using the KMS key. This association is stored as long as the data encrypted with the KMS key is still within CloudWatch Logs. This enables CloudWatch Logs to decrypt this data whenever it is requested.

If you attempt to associate a KMS key with the log group but the KMS key does not exist or the KMS key is disabled, you receive an InvalidParameterException error.

CloudWatch Logs supports only symmetric KMS keys. Do not associate an asymmetric KMS key with your log group. For more information, see Using Symmetric and Asymmetric Keys.

", "CreateLogStream": "

Creates a log stream for the specified log group. A log stream is a sequence of log events that originate from a single source, such as an application instance or a resource that is being monitored.

There is no limit on the number of log streams that you can create for a log group. There is a limit of 50 TPS on CreateLogStream operations, after which transactions are throttled.

You must use the following guidelines when naming a log stream:

", "DeleteAccountPolicy": "

Deletes a CloudWatch Logs account policy.

To use this operation, you must be signed on with the logs:DeleteDataProtectionPolicy and logs:DeleteAccountPolicy permissions.

", @@ -15,6 +16,7 @@ "DeleteDeliveryDestinationPolicy": "

Deletes a delivery destination policy. For more information about these policies, see PutDeliveryDestinationPolicy.

", "DeleteDeliverySource": "

Deletes a delivery source. A delivery is a connection between a logical delivery source and a logical delivery destination.

You can't delete a delivery source if any current deliveries are associated with it. To find whether any deliveries are associated with this delivery source, use the DescribeDeliveries operation and check the deliverySourceName field in the results.

", "DeleteDestination": "

Deletes the specified destination, and eventually disables all the subscription filters that publish to it. This operation does not delete the physical resource encapsulated by the destination.

", + "DeleteLogAnomalyDetector": "

Deletes the specified CloudWatch Logs anomaly detector.

", "DeleteLogGroup": "

Deletes the specified log group and permanently deletes all the archived log events associated with the log group.

", "DeleteLogStream": "

Deletes the specified log stream and permanently deletes all the archived log events associated with the log stream.

", "DeleteMetricFilter": "

Deletes the specified metric filter.

", @@ -42,17 +44,20 @@ "GetDeliveryDestination": "

Retrieves complete information about one delivery destination.

", "GetDeliveryDestinationPolicy": "

Retrieves the delivery destination policy assigned to the delivery destination that you specify. For more information about delivery destinations and their policies, see PutDeliveryDestinationPolicy.

", "GetDeliverySource": "

Retrieves complete information about one delivery source.

", + "GetLogAnomalyDetector": "

Retrieves information about the log anomaly detector that you specify.

", "GetLogEvents": "

Lists log events from the specified log stream. You can list all of the log events or filter using a time range.

By default, this operation returns as many log events as can fit in a response size of 1MB (up to 10,000 log events). You can get additional log events by specifying one of the tokens in a subsequent call. This operation can return empty results while there are more log events available through the token.

If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account and view data from the linked source accounts. For more information, see CloudWatch cross-account observability.

You can specify the log group to search by using either logGroupIdentifier or logGroupName. You must include one of these two parameters, but you can't include both.

", "GetLogGroupFields": "

Returns a list of the fields that are included in log events in the specified log group. Includes the percentage of log events that contain each field. The search is limited to a time period that you specify.

You can specify the log group to search by using either logGroupIdentifier or logGroupName. You must specify one of these parameters, but you can't specify both.

In the results, fields that start with @ are fields generated by CloudWatch Logs. For example, @timestamp is the timestamp of each log event. For more information about the fields that are generated by CloudWatch logs, see Supported Logs and Discovered Fields.

The response results are sorted by the frequency percentage, starting with the highest percentage.

If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account and view data from the linked source accounts. For more information, see CloudWatch cross-account observability.

", "GetLogRecord": "

Retrieves all of the fields and values of a single log event. All fields are retrieved, even if the original query that produced the logRecordPointer retrieved only a subset of fields. Fields are returned as field name/field value pairs.

The full unparsed log event is returned within @message.

", "GetQueryResults": "

Returns the results from the specified query.

Only the fields requested in the query are returned, along with a @ptr field, which is the identifier for the log record. You can use the value of @ptr in a GetLogRecord operation to get the full log record.

GetQueryResults does not start running a query. To run a query, use StartQuery. For more information about how long results of previous queries are available, see CloudWatch Logs quotas.

If the value of the Status field in the output is Running, this operation returns only partial results. If you see a value of Scheduled or Running for the status, you can retry the operation later to see the final results.

If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account to start queries in linked source accounts. For more information, see CloudWatch cross-account observability.

", + "ListAnomalies": "

Returns a list of anomalies that log anomaly detectors have found. For details about the structure format of each anomaly object that is returned, see the example in this section.

", + "ListLogAnomalyDetectors": "

Retrieves a list of the log anomaly detectors in the account.

", "ListTagsForResource": "

Displays the tags associated with a CloudWatch Logs resource. Currently, log groups and destinations support tagging.

", "ListTagsLogGroup": "

The ListTagsLogGroup operation is on the path to deprecation. We recommend that you use ListTagsForResource instead.

Lists the tags for the specified log group.

", "PutAccountPolicy": "

Creates an account-level data protection policy that applies to all log groups in the account. A data protection policy can help safeguard sensitive data that's ingested by your log groups by auditing and masking the sensitive log data. Each account can have only one account-level policy.

Sensitive data is detected and masked when it is ingested into a log group. When you set a data protection policy, log events ingested into the log groups before that time are not masked.

If you use PutAccountPolicy to create a data protection policy for your whole account, it applies to both existing log groups and all log groups that are created later in this account. The account policy is applied to existing log groups with eventual consistency. It might take up to 5 minutes before sensitive data in existing log groups begins to be masked.

By default, when a user views a log event that includes masked data, the sensitive data is replaced by asterisks. A user who has the logs:Unmask permission can use a GetLogEvents or FilterLogEvents operation with the unmask parameter set to true to view the unmasked log events. Users with the logs:Unmask can also view unmasked data in the CloudWatch Logs console by running a CloudWatch Logs Insights query with the unmask query command.

For more information, including a list of types of data that can be audited and masked, see Protect sensitive log data with masking.

To use the PutAccountPolicy operation, you must be signed on with the logs:PutDataProtectionPolicy and logs:PutAccountPolicy permissions.

The PutAccountPolicy operation applies to all log groups in the account. You can also use PutDataProtectionPolicy to create a data protection policy that applies to just one log group. If a log group has its own data protection policy and the account also has an account-level data protection policy, then the two policies are cumulative. Any sensitive term specified in either policy is masked.

", "PutDataProtectionPolicy": "

Creates a data protection policy for the specified log group. A data protection policy can help safeguard sensitive data that's ingested by the log group by auditing and masking the sensitive log data.

Sensitive data is detected and masked when it is ingested into the log group. When you set a data protection policy, log events ingested into the log group before that time are not masked.

By default, when a user views a log event that includes masked data, the sensitive data is replaced by asterisks. A user who has the logs:Unmask permission can use a GetLogEvents or FilterLogEvents operation with the unmask parameter set to true to view the unmasked log events. Users with the logs:Unmask can also view unmasked data in the CloudWatch Logs console by running a CloudWatch Logs Insights query with the unmask query command.

For more information, including a list of types of data that can be audited and masked, see Protect sensitive log data with masking.

The PutDataProtectionPolicy operation applies to only the specified log group. You can also use PutAccountPolicy to create an account-level data protection policy that applies to all log groups in the account, including both existing log groups and log groups that are created level. If a log group has its own data protection policy and the account also has an account-level data protection policy, then the two policies are cumulative. Any sensitive term specified in either policy is masked.

", - "PutDeliveryDestination": "

Creates or updates a logical delivery destination. A delivery destination is an Amazon Web Services resource that represents an Amazon Web Services service that logs can be sent to. CloudWatch Logs, Amazon S3, and Kinesis Data Firehose are supported as logs delivery destinations.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

If you use this operation to update an existing delivery destination, all the current delivery destination parameters are overwritten with the new parameter values that you specify.

", - "PutDeliveryDestinationPolicy": "

Creates and assigns an IAM policy that grants permissions to CloudWatch Logs to deliver logs cross-account to a specified destination in this account. To configure the delivery of logs from an Amazon Web Services service in another account to a logs delivery destination in the current account, you must do the following:

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

The contents of the policy must include two statements. One statement enables general logs delivery, and the other allows delivery to the chosen destination. See the examples for the needed policies.

", - "PutDeliverySource": "

Creates or updates a logical delivery source. A delivery source represents an Amazon Web Services resource that sends logs to an logs delivery destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.

To configure logs delivery between a delivery destination and an Amazon Web Services service that is supported as a delivery source, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

If you use this operation to update an existing delivery source, all the current delivery source parameters are overwritten with the new parameter values that you specify.

", + "PutDeliveryDestination": "

Creates or updates a logical delivery destination. A delivery destination is an Amazon Web Services resource that represents an Amazon Web Services service that logs can be sent to. CloudWatch Logs, Amazon S3, and Kinesis Data Firehose are supported as logs delivery destinations.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

If you use this operation to update an existing delivery destination, all the current delivery destination parameters are overwritten with the new parameter values that you specify.

", + "PutDeliveryDestinationPolicy": "

Creates and assigns an IAM policy that grants permissions to CloudWatch Logs to deliver logs cross-account to a specified destination in this account. To configure the delivery of logs from an Amazon Web Services service in another account to a logs delivery destination in the current account, you must do the following:

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

The contents of the policy must include two statements. One statement enables general logs delivery, and the other allows delivery to the chosen destination. See the examples for the needed policies.

", + "PutDeliverySource": "

Creates or updates a logical delivery source. A delivery source represents an Amazon Web Services resource that sends logs to an logs delivery destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.

To configure logs delivery between a delivery destination and an Amazon Web Services service that is supported as a delivery source, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

If you use this operation to update an existing delivery source, all the current delivery source parameters are overwritten with the new parameter values that you specify.

", "PutDestination": "

Creates or updates a destination. This operation is used only to create destinations for cross-account subscriptions.

A destination encapsulates a physical resource (such as an Amazon Kinesis stream). With a destination, you can subscribe to a real-time stream of log events for a different account, ingested using PutLogEvents.

Through an access policy, a destination controls what is written to it. By default, PutDestination does not set any access policy with the destination, which means a cross-account user cannot call PutSubscriptionFilter against this destination. To enable this, the destination owner must call PutDestinationPolicy after PutDestination.

To perform a PutDestination operation, you must also have the iam:PassRole permission.

", "PutDestinationPolicy": "

Creates or updates an access policy associated with an existing destination. An access policy is an IAM policy document that is used to authorize claims to register a subscription filter against a given destination.

", "PutLogEvents": "

Uploads a batch of log events to the specified log stream.

The sequence token is now ignored in PutLogEvents actions. PutLogEvents actions are always accepted and never return InvalidSequenceTokenException or DataAlreadyAcceptedException even if the sequence token is not valid. You can use parallel PutLogEvents actions on the same log stream.

The batch of events must satisfy the following constraints:

If a call to PutLogEvents returns \"UnrecognizedClientException\" the most likely cause is a non-valid Amazon Web Services access key ID or secret key.

", @@ -67,7 +72,9 @@ "TagResource": "

Assigns one or more tags (key-value pairs) to the specified CloudWatch Logs resource. Currently, the only CloudWatch Logs resources that can be tagged are log groups and destinations.

Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.

Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.

You can use the TagResource action with a resource that already has tags. If you specify a new tag key for the alarm, this tag is appended to the list of tags associated with the alarm. If you specify a tag key that is already associated with the alarm, the new tag value that you specify replaces the previous value for that tag.

You can associate as many as 50 tags with a CloudWatch Logs resource.

", "TestMetricFilter": "

Tests the filter pattern of a metric filter against a sample of log event messages. You can use this operation to validate the correctness of a metric filter pattern.

", "UntagLogGroup": "

The UntagLogGroup operation is on the path to deprecation. We recommend that you use UntagResource instead.

Removes the specified tags from the specified log group.

To list the tags for a log group, use ListTagsForResource. To add tags, use TagResource.

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to log groups using the aws:Resource/key-name or aws:TagKeys condition keys.

", - "UntagResource": "

Removes one or more tags from the specified resource.

" + "UntagResource": "

Removes one or more tags from the specified resource.

", + "UpdateAnomaly": "

Use this operation to suppress anomaly detection for a specified anomaly or pattern. If you suppress an anomaly, CloudWatch Logs won’t report new occurrences of that anomaly and won't update that anomaly with new data. If you suppress a pattern, CloudWatch Logs won’t report any anomalies related to that pattern.

You must specify either anomalyId or patternId, but you can't specify both parameters in the same operation.

If you have previously used this operation to suppress detection of a pattern or anomaly, you can use it again to cause CloudWatch Logs to end the suppression. To do this, use this operation and specify the anomaly or pattern to stop suppressing, and omit the suppressionType and suppressionPeriod parameters.

", + "UpdateLogAnomalyDetector": "

Updates an existing log anomaly detector.

" }, "shapes": { "AccessDeniedException": { @@ -125,6 +132,66 @@ "UntagResourceRequest$resourceArn": "

The ARN of the CloudWatch Logs resource that you're removing tags from.

The ARN format of a log group is arn:aws:logs:Region:account-id:log-group:log-group-name

The ARN format of a destination is arn:aws:logs:Region:account-id:destination:destination-name

For more information about ARN format, see CloudWatch Logs resources and operations.

" } }, + "Anomalies": { + "base": null, + "refs": { + "ListAnomaliesResponse$anomalies": "

An array of structures, where each structure contains information about one anomaly that a log anomaly detector has found.

" + } + }, + "Anomaly": { + "base": "

This structure represents one anomaly that has been found by a logs anomaly detector.

For more information about patterns and anomalies, see CreateLogAnomalyDetector.

", + "refs": { + "Anomalies$member": null + } + }, + "AnomalyDetector": { + "base": "

Contains information about one anomaly detector in the account.

", + "refs": { + "AnomalyDetectors$member": null + } + }, + "AnomalyDetectorArn": { + "base": null, + "refs": { + "Anomaly$anomalyDetectorArn": "

The ARN of the anomaly detector that identified this anomaly.

", + "AnomalyDetector$anomalyDetectorArn": "

The ARN of the anomaly detector.

", + "CreateLogAnomalyDetectorResponse$anomalyDetectorArn": "

The ARN of the log anomaly detector that you just created.

", + "DeleteLogAnomalyDetectorRequest$anomalyDetectorArn": "

The ARN of the anomaly detector to delete. You can find the ARNs of log anomaly detectors in your account by using the ListLogAnomalyDetectors operation.

", + "GetLogAnomalyDetectorRequest$anomalyDetectorArn": "

The ARN of the anomaly detector to retrieve information about. You can find the ARNs of log anomaly detectors in your account by using the ListLogAnomalyDetectors operation.

", + "ListAnomaliesRequest$anomalyDetectorArn": "

Use this to optionally limit the results to only the anomalies found by a certain anomaly detector.

", + "UpdateAnomalyRequest$anomalyDetectorArn": "

The ARN of the anomaly detector that this operation is to act on.

", + "UpdateLogAnomalyDetectorRequest$anomalyDetectorArn": "

The ARN of the anomaly detector that you want to update.

" + } + }, + "AnomalyDetectorStatus": { + "base": null, + "refs": { + "AnomalyDetector$anomalyDetectorStatus": "

Specifies the current status of the anomaly detector. To pause an anomaly detector, use the enabled parameter in the UpdateLogAnomalyDetector operation.

", + "GetLogAnomalyDetectorResponse$anomalyDetectorStatus": "

Specifies whether the anomaly detector is currently active. To change its status, use the enabled parameter in the UpdateLogAnomalyDetector operation.

" + } + }, + "AnomalyDetectors": { + "base": null, + "refs": { + "ListLogAnomalyDetectorsResponse$anomalyDetectors": "

An array of structures, where each structure in the array contains information about one anomaly detector.

" + } + }, + "AnomalyId": { + "base": null, + "refs": { + "Anomaly$anomalyId": "

The unique ID that CloudWatch Logs assigned to this anomaly.

", + "UpdateAnomalyRequest$anomalyId": "

If you are suppressing or unsuppressing an anomaly, specify its unique ID here. You can find anomaly IDs by using the ListAnomalies operation.

" + } + }, + "AnomalyVisibilityTime": { + "base": null, + "refs": { + "AnomalyDetector$anomalyVisibilityTime": "

The number of days used as the life cycle of anomalies. After this time, anomalies are automatically baselined and the anomaly detector model will treat new occurrences of similar event as normal.

", + "CreateLogAnomalyDetectorRequest$anomalyVisibilityTime": "

The number of days to have visibility on an anomaly. After this time period has elapsed for an anomaly, it will be automatically baselined and the anomaly detector will treat new occurrences of a similar anomaly as normal. Therefore, if you do not correct the cause of an anomaly during the time period specified in anomalyVisibilityTime, it will be considered normal going forward and will not be detected as an anomaly.

", + "GetLogAnomalyDetectorResponse$anomalyVisibilityTime": "

The number of days used as the life cycle of anomalies. After this time, anomalies are automatically baselined and the anomaly detector model will treat new occurrences of similar event as normal.

", + "UpdateLogAnomalyDetectorRequest$anomalyVisibilityTime": "

The number of days to use as the life cycle of anomalies. After this time, anomalies are automatically baselined and the anomaly detector model will treat new occurrences of similar event as normal. Therefore, if you do not correct the cause of an anomaly during this time, it will be considered normal going forward and will not be detected.

" + } + }, "Arn": { "base": null, "refs": { @@ -146,6 +213,16 @@ "refs": { } }, + "Boolean": { + "base": null, + "refs": { + "Anomaly$active": "

Specifies whether this anomaly is still ongoing.

", + "Anomaly$suppressed": "

Indicates whether this anomaly is currently suppressed. To suppress an anomaly, use UpdateAnomaly.

", + "Anomaly$isPatternLevelSuppression": "

If this anomaly is suppressed, this field is true if the suppression is because the pattern is suppressed. If false, then only this particular anomaly is suppressed.

", + "PatternToken$isDynamic": "

Specifies whether this is a dynamic token.

", + "UpdateLogAnomalyDetectorRequest$enabled": "

Use this parameter to pause or restart the anomaly detector.

" + } + }, "CancelExportTaskRequest": { "base": null, "refs": { @@ -162,6 +239,12 @@ "refs": { } }, + "Count": { + "base": null, + "refs": { + "Histogram$value": null + } + }, "CreateDeliveryRequest": { "base": null, "refs": { @@ -182,6 +265,16 @@ "refs": { } }, + "CreateLogAnomalyDetectorRequest": { + "base": null, + "refs": { + } + }, + "CreateLogAnomalyDetectorResponse": { + "base": null, + "refs": { + } + }, "CreateLogGroupRequest": { "base": null, "refs": { @@ -259,6 +352,11 @@ "refs": { } }, + "DeleteLogAnomalyDetectorRequest": { + "base": null, + "refs": { + } + }, "DeleteLogGroupRequest": { "base": null, "refs": { @@ -314,7 +412,7 @@ } }, "DeliveryDestination": { - "base": "

This structure contains information about one delivery destination in your account. A delivery destination is an Amazon Web Services resource that represents an shared id=\"AWS\"/> service that logs can be sent to. CloudWatch Logs, Amazon S3, are supported as Kinesis Data Firehose delivery destinations.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

", + "base": "

This structure contains information about one delivery destination in your account. A delivery destination is an Amazon Web Services resource that represents an Amazon Web Services service that logs can be sent to. CloudWatch Logs, Amazon S3, are supported as Kinesis Data Firehose delivery destinations.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

", "refs": { "DeliveryDestinations$member": null, "GetDeliveryDestinationResponse$deliveryDestination": "

A structure containing information about the delivery destination.

", @@ -369,7 +467,7 @@ } }, "DeliverySource": { - "base": "

This structure contains information about one delivery source in your account. A delivery source is an Amazon Web Services resource that sends logs to an Amazon Web Services destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

", + "base": "

This structure contains information about one delivery source in your account. A delivery source is an Amazon Web Services resource that sends logs to an Amazon Web Services destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.

Only some Amazon Web Services services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at Enabling logging from Amazon Web Services services.

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

", "refs": { "DeliverySources$member": null, "GetDeliverySourceResponse$deliverySource": "

A structure containing information about the delivery source.

", @@ -550,6 +648,12 @@ "refs": { } }, + "Description": { + "base": null, + "refs": { + "Anomaly$description": "

A human-readable description of the anomaly. This description is generated by CloudWatch Logs.

" + } + }, "Destination": { "base": "

Represents a cross-account destination that receives subscription log events.

", "refs": { @@ -580,6 +684,14 @@ "DescribeDestinationsResponse$destinations": "

The destinations.

" } }, + "DetectorName": { + "base": null, + "refs": { + "AnomalyDetector$detectorName": "

The name of the anomaly detector.

", + "CreateLogAnomalyDetectorRequest$detectorName": "

A name for this anomaly detector.

", + "GetLogAnomalyDetectorResponse$detectorName": "

The name of the log anomaly detector

" + } + }, "Dimensions": { "base": null, "refs": { @@ -610,12 +722,46 @@ "SubscriptionFilter$distribution": null } }, + "DynamicTokenPosition": { + "base": null, + "refs": { + "PatternToken$dynamicTokenPosition": "

For a dynamic token, this indicates where in the pattern that this token appears, related to other dynamic tokens. The dynamic token that appears first has a value of 1, the one that appears second is 2, and so on.

" + } + }, "EncryptionKey": { "base": null, "refs": { "GetQueryResultsResponse$encryptionKey": "

If you associated an KMS key with the CloudWatch Logs Insights query results in this account, this field displays the ARN of the key that's used to encrypt the query results when StartQuery stores them.

" } }, + "Enumerations": { + "base": null, + "refs": { + "PatternToken$enumerations": "

Contains the values found for a dynamic token, and the number of times each value was found.

" + } + }, + "EpochMillis": { + "base": null, + "refs": { + "Anomaly$firstSeen": "

The date and time when the anomaly detector first saw this anomaly. It is specified as epoch time, which is the number of seconds since January 1, 1970, 00:00:00 UTC.

", + "Anomaly$lastSeen": "

The date and time when the anomaly detector most recently saw this anomaly. It is specified as epoch time, which is the number of seconds since January 1, 1970, 00:00:00 UTC.

", + "Anomaly$suppressedDate": "

If the anomaly is suppressed, this indicates when it was suppressed.

", + "Anomaly$suppressedUntil": "

If the anomaly is suppressed, this indicates when the suppression will end. If this value is 0, the anomaly was suppressed with no expiration, with the INFINITE value.

", + "AnomalyDetector$creationTimeStamp": "

The date and time when this anomaly detector was created.

", + "AnomalyDetector$lastModifiedTimeStamp": "

The date and time when this anomaly detector was most recently modified.

", + "GetLogAnomalyDetectorResponse$creationTimeStamp": "

The date and time when this anomaly detector was created.

", + "GetLogAnomalyDetectorResponse$lastModifiedTimeStamp": "

The date and time when this anomaly detector was most recently modified.

" + } + }, + "EvaluationFrequency": { + "base": null, + "refs": { + "AnomalyDetector$evaluationFrequency": "

Specifies how often the anomaly detector runs and look for anomalies.

", + "CreateLogAnomalyDetectorRequest$evaluationFrequency": "

Specifies how often the anomaly detector is to run and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then 15 minutes might be a good setting for evaluationFrequency .

", + "GetLogAnomalyDetectorResponse$evaluationFrequency": "

Specifies how often the anomaly detector runs and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then setting evaluationFrequency to FIFTEEN_MIN might be appropriate.

", + "UpdateLogAnomalyDetectorRequest$evaluationFrequency": "

Specifies how often the anomaly detector runs and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then setting evaluationFrequency to FIFTEEN_MIN might be appropriate.

" + } + }, "EventId": { "base": null, "refs": { @@ -759,12 +905,16 @@ "FilterPattern": { "base": "

A symbolic description of how CloudWatch Logs should interpret the data in each log event. For example, a log event can contain timestamps, IP addresses, strings, and so on. You use the filter pattern to specify what to look for in the log event message.

", "refs": { + "AnomalyDetector$filterPattern": null, + "CreateLogAnomalyDetectorRequest$filterPattern": "

You can use this parameter to limit the anomaly detection model to examine only log events that match the pattern you specify here. For more information, see Filter and Pattern Syntax.

", "FilterLogEventsRequest$filterPattern": "

The filter pattern to use. For more information, see Filter and Pattern Syntax.

If not provided, all the events are matched.

", + "GetLogAnomalyDetectorResponse$filterPattern": null, "MetricFilter$filterPattern": null, "PutMetricFilterRequest$filterPattern": "

A filter pattern for extracting metric data out of ingested log events.

", "PutSubscriptionFilterRequest$filterPattern": "

A filter pattern for subscribing to a filtered stream of log events.

", "SubscriptionFilter$filterPattern": null, - "TestMetricFilterRequest$filterPattern": null + "TestMetricFilterRequest$filterPattern": null, + "UpdateLogAnomalyDetectorRequest$filterPattern": null } }, "FilteredLogEvent": { @@ -835,6 +985,16 @@ "refs": { } }, + "GetLogAnomalyDetectorRequest": { + "base": null, + "refs": { + } + }, + "GetLogAnomalyDetectorResponse": { + "base": null, + "refs": { + } + }, "GetLogEventsRequest": { "base": null, "refs": { @@ -875,6 +1035,12 @@ "refs": { } }, + "Histogram": { + "base": null, + "refs": { + "Anomaly$histogram": "

A map showing times when the anomaly detector ran, and the number of occurrences of this anomaly that were detected at each of those runs. The times are specified in epoch time, which is the number of seconds since January 1, 1970, 00:00:00 UTC.

" + } + }, "IncludeLinkedAccounts": { "base": null, "refs": { @@ -911,6 +1077,12 @@ "FilterLogEventsRequest$logStreamNames": "

Filters the results to only logs from the log streams in this list.

If you specify a value for both logStreamNamePrefix and logStreamNames, the action returns an InvalidParameterException error.

" } }, + "Integer": { + "base": null, + "refs": { + "SuppressionPeriod$value": "

Specifies the number of seconds, minutes or hours to suppress this anomaly. There is no maximum.

" + } + }, "Interleaved": { "base": null, "refs": { @@ -935,8 +1107,11 @@ "KmsKeyId": { "base": null, "refs": { + "AnomalyDetector$kmsKeyId": "

The ID of the KMS key assigned to this anomaly detector, if any.

", "AssociateKmsKeyRequest$kmsKeyId": "

The Amazon Resource Name (ARN) of the KMS key to use when encrypting log data. This must be a symmetric KMS key. For more information, see Amazon Resource Names and Using Symmetric and Asymmetric Keys.

", + "CreateLogAnomalyDetectorRequest$kmsKeyId": "

Optionally assigns a KMS key to secure this anomaly detector and its findings. If a key is assigned, the anomalies found and the model used by this detector are encrypted at rest with the key. If a key is assigned to an anomaly detector, a user must have permissions for both this key and for the anomaly detector to retrieve information about the anomalies that it finds.

For more information about using a KMS key and to see the required IAM policy, see Use a KMS key with an anomaly detector.

", "CreateLogGroupRequest$kmsKeyId": "

The Amazon Resource Name (ARN) of the KMS key to use when encrypting log data. For more information, see Amazon Resource Names.

", + "GetLogAnomalyDetectorResponse$kmsKeyId": "

The ID of the KMS key assigned to this anomaly detector, if any.

", "LogGroup$kmsKeyId": "

The Amazon Resource Name (ARN) of the KMS key to use when encrypting log data.

" } }, @@ -945,6 +1120,38 @@ "refs": { } }, + "ListAnomaliesLimit": { + "base": null, + "refs": { + "ListAnomaliesRequest$limit": "

The maximum number of items to return. If you don't specify a value, the default maximum value of 50 items is used.

" + } + }, + "ListAnomaliesRequest": { + "base": null, + "refs": { + } + }, + "ListAnomaliesResponse": { + "base": null, + "refs": { + } + }, + "ListLogAnomalyDetectorsLimit": { + "base": null, + "refs": { + "ListLogAnomalyDetectorsRequest$limit": "

The maximum number of items to return. If you don't specify a value, the default maximum value of 50 items is used.

" + } + }, + "ListLogAnomalyDetectorsRequest": { + "base": null, + "refs": { + } + }, + "ListLogAnomalyDetectorsResponse": { + "base": null, + "refs": { + } + }, "ListTagsForResourceRequest": { "base": null, "refs": { @@ -965,6 +1172,12 @@ "refs": { } }, + "LogEvent": { + "base": null, + "refs": { + "LogSamples$member": null + } + }, "LogEventIndex": { "base": null, "refs": { @@ -979,6 +1192,30 @@ "LogGroups$member": null } }, + "LogGroupArn": { + "base": null, + "refs": { + "ListLogAnomalyDetectorsRequest$filterLogGroupArn": "

Use this to optionally filter the results to only include anomaly detectors that are associated with the specified log group.

", + "LogGroupArnList$member": null + } + }, + "LogGroupArnList": { + "base": null, + "refs": { + "Anomaly$logGroupArnList": "

An array of ARNS of the log groups that contained log events considered to be part of this anomaly.

", + "AnomalyDetector$logGroupArnList": "

A list of the ARNs of the log groups that this anomaly detector watches.

", + "CreateLogAnomalyDetectorRequest$logGroupArnList": "

An array containing the ARNs of the log groups that this anomaly detector will watch. You must specify at least one ARN.

", + "GetLogAnomalyDetectorResponse$logGroupArnList": "

An array of structures, where each structure contains the ARN of a log group associated with this anomaly detector.

" + } + }, + "LogGroupClass": { + "base": null, + "refs": { + "CreateLogGroupRequest$logGroupClass": "

Use this parameter to specify the log group class for this log group. There are two classes:

If you omit this parameter, the default of STANDARD is used.

For details about the features supported by each class, see Log classes

", + "DescribeLogGroupsRequest$logGroupClass": "

Specifies the log group class for this log group. There are two classes:

For details about the features supported by each class, see Log classes

", + "LogGroup$logGroupClass": "

This specifies the log group class for this log group. There are two classes:

For details about the features supported by each class, see Log classes

" + } + }, "LogGroupField": { "base": "

The fields contained in log events found by a GetLogGroupFields operation, along with the percentage of queried log events in which each field appears.

", "refs": { @@ -1017,7 +1254,7 @@ "refs": { "AssociateKmsKeyRequest$logGroupName": "

The name of the log group.

In your AssociateKmsKey operation, you must specify either the resourceIdentifier parameter or the logGroup parameter, but you can't specify both.

", "CreateExportTaskRequest$logGroupName": "

The name of the log group.

", - "CreateLogGroupRequest$logGroupName": "

The name of the log group.

", + "CreateLogGroupRequest$logGroupName": "

A name for the log group.

", "CreateLogStreamRequest$logGroupName": "

The name of the log group.

", "DeleteLogGroupRequest$logGroupName": "

The name of the log group.

", "DeleteLogStreamRequest$logGroupName": "

The name of the log group.

", @@ -1081,6 +1318,12 @@ "GetLogRecordRequest$logRecordPointer": "

The pointer corresponding to the log event record you want to retrieve. You get this from the response of a GetQueryResults operation. In that response, the value of the @ptr field for a log event is the value to use as logRecordPointer to retrieve that complete log event record.

" } }, + "LogSamples": { + "base": null, + "refs": { + "Anomaly$logSamples": "

An array of sample log event messages that are considered to be part of this anomaly.

" + } + }, "LogStream": { "base": "

Represents a log stream, which is a sequence of log events from a single emitter of logs.

", "refs": { @@ -1222,7 +1465,11 @@ "FilterLogEventsResponse$nextToken": "

The token to use when requesting the next set of items. The token expires after 24 hours.

", "GetLogEventsRequest$nextToken": "

The token for the next set of items to return. (You received this token from a previous call.)

", "GetLogEventsResponse$nextForwardToken": "

The token for the next set of items in the forward direction. The token expires after 24 hours. If you have reached the end of the stream, it returns the same token you passed in.

", - "GetLogEventsResponse$nextBackwardToken": "

The token for the next set of items in the backward direction. The token expires after 24 hours. This token is not null. If you have reached the end of the stream, it returns the same token you passed in.

" + "GetLogEventsResponse$nextBackwardToken": "

The token for the next set of items in the backward direction. The token expires after 24 hours. This token is not null. If you have reached the end of the stream, it returns the same token you passed in.

", + "ListAnomaliesRequest$nextToken": null, + "ListAnomaliesResponse$nextToken": null, + "ListLogAnomalyDetectorsRequest$nextToken": null, + "ListLogAnomalyDetectorsResponse$nextToken": null } }, "OperationAbortedException": { @@ -1255,6 +1502,37 @@ "GetLogEventsResponse$events": "

The events.

" } }, + "PatternId": { + "base": null, + "refs": { + "Anomaly$patternId": "

The ID of the pattern used to help identify this anomaly.

", + "UpdateAnomalyRequest$patternId": "

If you are suppressing or unsuppressing an pattern, specify its unique ID here. You can find pattern IDs by using the ListAnomalies operation.

" + } + }, + "PatternRegex": { + "base": null, + "refs": { + "Anomaly$patternRegex": "

The pattern used to help identify this anomaly, in regular expression format.

" + } + }, + "PatternString": { + "base": null, + "refs": { + "Anomaly$patternString": "

The pattern used to help identify this anomaly, in string format.

" + } + }, + "PatternToken": { + "base": "

A tructures that contains information about one pattern token related to an anomaly.

For more information about patterns and tokens, see CreateLogAnomalyDetector.

", + "refs": { + "PatternTokens$member": null + } + }, + "PatternTokens": { + "base": null, + "refs": { + "Anomaly$patternTokens": "

An array of structures where each structure contains information about one token that makes up the pattern.

" + } + }, "Percentage": { "base": null, "refs": { @@ -1296,6 +1574,12 @@ "PutAccountPolicyRequest$policyType": "

Currently the only valid value for this parameter is DATA_PROTECTION_POLICY.

" } }, + "Priority": { + "base": null, + "refs": { + "Anomaly$priority": "

The priority level of this anomaly, as determined by CloudWatch Logs. Priority is computed based on log severity labels such as FATAL and ERROR and the amount of deviation from the baseline. Possible values are HIGH, MEDIUM, and LOW.

" + } + }, "PutAccountPolicyRequest": { "base": null, "refs": { @@ -1640,6 +1924,12 @@ "refs": { } }, + "State": { + "base": null, + "refs": { + "Anomaly$state": "

Indicates the current state of this anomaly. If it is still being treated as an anomaly, the value is Active. If you have suppressed this anomaly by using the UpdateAnomaly operation, the value is Suppressed. If this behavior is now considered to be normal, the value is Baseline.

" + } + }, "StatsValue": { "base": null, "refs": { @@ -1684,6 +1974,30 @@ "StopQueryResponse$success": "

This is true if the query was stopped by the StopQuery operation.

" } }, + "SuppressionPeriod": { + "base": "

If you are suppressing an anomaly temporariliy, this structure defines how long the suppression period is to be.

", + "refs": { + "UpdateAnomalyRequest$suppressionPeriod": "

If you are temporarily suppressing an anomaly or pattern, use this structure to specify how long the suppression is to last.

" + } + }, + "SuppressionState": { + "base": null, + "refs": { + "ListAnomaliesRequest$suppressionState": "

You can specify this parameter if you want to the operation to return only anomalies that are currently either suppressed or unsuppressed.

" + } + }, + "SuppressionType": { + "base": null, + "refs": { + "UpdateAnomalyRequest$suppressionType": "

Use this to specify whether the suppression to be temporary or infinite. If you specify LIMITED, you must also specify a suppressionPeriod. If you specify INFINITE, any value for suppressionPeriod is ignored.

" + } + }, + "SuppressionUnit": { + "base": null, + "refs": { + "SuppressionPeriod$suppressionUnit": "

Specifies whether the value of value is in seconds, minutes, or hours.

" + } + }, "TagKey": { "base": null, "refs": { @@ -1724,6 +2038,7 @@ "base": null, "refs": { "CreateDeliveryRequest$tags": "

An optional list of key-value pairs to associate with the resource.

For more information about tagging, see Tagging Amazon Web Services resources

", + "CreateLogAnomalyDetectorRequest$tags": "

An optional list of key-value pairs to associate with the resource.

For more information about tagging, see Tagging Amazon Web Services resources

", "CreateLogGroupRequest$tags": "

The key-value pairs to use for the tags.

You can grant users access to certain log groups while preventing them from accessing other log groups. To do so, tag your groups and use IAM policies that refer to those tags. To assign tags when you create a log group, you must have either the logs:TagResource or logs:TagLogGroup permission. For more information about tagging, see Tagging Amazon Web Services resources. For more information about using tags to control access, see Controlling access to Amazon Web Services resources using tags.

", "Delivery$tags": "

The tags that have been assigned to this delivery.

", "DeliveryDestination$tags": "

The tags that have been assigned to this delivery destination.

", @@ -1765,6 +2080,12 @@ "refs": { } }, + "Time": { + "base": null, + "refs": { + "Histogram$key": null + } + }, "Timestamp": { "base": null, "refs": { @@ -1808,6 +2129,19 @@ "ExtractedValues$key": null } }, + "TokenString": { + "base": null, + "refs": { + "Enumerations$key": null, + "PatternToken$tokenString": "

The string represented by this token. If this is a dynamic token, the value will be <*>

" + } + }, + "TokenValue": { + "base": null, + "refs": { + "Enumerations$value": null + } + }, "TooManyTagsException": { "base": "

A resource can have no more than 50 tags.

", "refs": { @@ -1836,6 +2170,16 @@ "refs": { } }, + "UpdateAnomalyRequest": { + "base": null, + "refs": { + } + }, + "UpdateLogAnomalyDetectorRequest": { + "base": null, + "refs": { + } + }, "ValidationException": { "base": "

One of the parameters for the request is not valid.

", "refs": { diff --git a/apis/logs/2014-03-28/paginators-1.json b/apis/logs/2014-03-28/paginators-1.json index 523ced1c604..392595c6ccb 100644 --- a/apis/logs/2014-03-28/paginators-1.json +++ b/apis/logs/2014-03-28/paginators-1.json @@ -62,6 +62,18 @@ "limit_key": "limit", "output_token": "nextForwardToken", "result_key": "events" + }, + "ListAnomalies": { + "input_token": "nextToken", + "limit_key": "limit", + "output_token": "nextToken", + "result_key": "anomalies" + }, + "ListLogAnomalyDetectors": { + "input_token": "nextToken", + "limit_key": "limit", + "output_token": "nextToken", + "result_key": "anomalyDetectors" } } } \ No newline at end of file diff --git a/apis/managedblockchain/2018-09-24/api-2.json b/apis/managedblockchain/2018-09-24/api-2.json index a6d2ba0e71d..9737c3fa9d7 100644 --- a/apis/managedblockchain/2018-09-24/api-2.json +++ b/apis/managedblockchain/2018-09-24/api-2.json @@ -476,7 +476,8 @@ "Status":{"shape":"AccessorStatus"}, "CreationDate":{"shape":"Timestamp"}, "Arn":{"shape":"ArnString"}, - "Tags":{"shape":"OutputTagMap"} + "Tags":{"shape":"OutputTagMap"}, + "NetworkType":{"shape":"AccessorNetworkType"} } }, "AccessorBillingTokenString":{ @@ -490,6 +491,16 @@ "max":50, "min":1 }, + "AccessorNetworkType":{ + "type":"string", + "enum":[ + "ETHEREUM_GOERLI", + "ETHEREUM_MAINNET", + "ETHEREUM_MAINNET_AND_GOERLI", + "POLYGON_MAINNET", + "POLYGON_MUMBAI" + ] + }, "AccessorStatus":{ "type":"string", "enum":[ @@ -505,7 +516,8 @@ "Type":{"shape":"AccessorType"}, "Status":{"shape":"AccessorStatus"}, "CreationDate":{"shape":"Timestamp"}, - "Arn":{"shape":"ArnString"} + "Arn":{"shape":"ArnString"}, + "NetworkType":{"shape":"AccessorNetworkType"} } }, "AccessorSummaryList":{ @@ -548,14 +560,16 @@ "idempotencyToken":true }, "AccessorType":{"shape":"AccessorType"}, - "Tags":{"shape":"InputTagMap"} + "Tags":{"shape":"InputTagMap"}, + "NetworkType":{"shape":"AccessorNetworkType"} } }, "CreateAccessorOutput":{ "type":"structure", "members":{ "AccessorId":{"shape":"ResourceIdString"}, - "BillingToken":{"shape":"AccessorBillingTokenString"} + "BillingToken":{"shape":"AccessorBillingTokenString"}, + "NetworkType":{"shape":"AccessorNetworkType"} } }, "CreateMemberInput":{ @@ -970,6 +984,11 @@ "shape":"PaginationToken", "location":"querystring", "locationName":"nextToken" + }, + "NetworkType":{ + "shape":"AccessorNetworkType", + "location":"querystring", + "locationName":"networkType" } } }, diff --git a/apis/managedblockchain/2018-09-24/docs-2.json b/apis/managedblockchain/2018-09-24/docs-2.json index 95d600748cb..0c32707fd5a 100644 --- a/apis/managedblockchain/2018-09-24/docs-2.json +++ b/apis/managedblockchain/2018-09-24/docs-2.json @@ -2,7 +2,7 @@ "version": "2.0", "service": "

Amazon Managed Blockchain is a fully managed service for creating and managing blockchain networks using open-source frameworks. Blockchain allows you to build applications where multiple parties can securely and transparently run transactions and share data without the need for a trusted, central authority.

Managed Blockchain supports the Hyperledger Fabric and Ethereum open-source frameworks. Because of fundamental differences between the frameworks, some API actions or data types may only apply in the context of one framework and not the other. For example, actions related to Hyperledger Fabric network members such as CreateMember and DeleteMember don't apply to Ethereum.

The description for each action indicates the framework or frameworks to which it applies. Data types and properties that apply only in the context of a particular framework are similarly indicated.

", "operations": { - "CreateAccessor": "

Creates a new accessor for use with Managed Blockchain Ethereum nodes. An accessor contains information required for token based access to your Ethereum nodes.

", + "CreateAccessor": "

Creates a new accessor for use with Amazon Managed Blockchain service that supports token based access. The accessor contains information required for token based access.

", "CreateMember": "

Creates a member within a Managed Blockchain network.

Applies only to Hyperledger Fabric.

", "CreateNetwork": "

Creates a new blockchain network using Amazon Managed Blockchain.

Applies only to Hyperledger Fabric.

", "CreateNode": "

Creates a node on the specified blockchain network.

Applies to Hyperledger Fabric and Ethereum.

", @@ -45,8 +45,8 @@ "AccessorBillingTokenString": { "base": null, "refs": { - "Accessor$BillingToken": "

The billing token is a property of the accessor. Use this token to make Ethereum API calls to your Ethereum node. The billing token is used to track your accessor object for billing Ethereum API requests made to your Ethereum nodes.

", - "CreateAccessorOutput$BillingToken": "

The billing token is a property of the Accessor. Use this token to make Ethereum API calls to your Ethereum node. The billing token is used to track your accessor object for billing Ethereum API requests made to your Ethereum nodes.

" + "Accessor$BillingToken": "

The billing token is a property of the Accessor. Use this token to when making calls to the blockchain network. The billing token is used to track your accessor token for billing requests.

", + "CreateAccessorOutput$BillingToken": "

The billing token is a property of the Accessor. Use this token to when making calls to the blockchain network. The billing token is used to track your accessor token for billing requests.

" } }, "AccessorListMaxResults": { @@ -55,6 +55,16 @@ "ListAccessorsInput$MaxResults": "

The maximum number of accessors to list.

" } }, + "AccessorNetworkType": { + "base": null, + "refs": { + "Accessor$NetworkType": "

The blockchain network that the Accessor token is created for.

", + "AccessorSummary$NetworkType": "

The blockchain network that the Accessor token is created for.

", + "CreateAccessorInput$NetworkType": "

The blockchain network that the Accessor token is created for.

We recommend using the appropriate networkType value for the blockchain network that you are creating the Accessor token for. You cannnot use the value ETHEREUM_MAINNET_AND_GOERLI to specify a networkType for your Accessor token.

The default value of ETHEREUM_MAINNET_AND_GOERLI is only applied:

", + "CreateAccessorOutput$NetworkType": "

The blockchain network that the accessor token is created for.

", + "ListAccessorsInput$NetworkType": "

The blockchain network that the Accessor token is created for.

Use the value ETHEREUM_MAINNET_AND_GOERLI for all existing Accessors tokens that were created before the networkType property was introduced.

" + } + }, "AccessorStatus": { "base": null, "refs": { @@ -969,7 +979,7 @@ "ThresholdComparator": { "base": null, "refs": { - "ApprovalThresholdPolicy$ThresholdComparator": "

Determines whether the vote percentage must be greater than the ThresholdPercentage or must be greater than or equal to the ThreholdPercentage to be approved.

" + "ApprovalThresholdPolicy$ThresholdComparator": "

Determines whether the vote percentage must be greater than the ThresholdPercentage or must be greater than or equal to the ThresholdPercentage to be approved.

" } }, "ThresholdPercentageInt": { diff --git a/apis/managedblockchain/2018-09-24/endpoint-rule-set-1.json b/apis/managedblockchain/2018-09-24/endpoint-rule-set-1.json index 0859f591678..5fccadcf17d 100644 --- a/apis/managedblockchain/2018-09-24/endpoint-rule-set-1.json +++ b/apis/managedblockchain/2018-09-24/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/models.lex.v2/2020-08-07/api-2.json b/apis/models.lex.v2/2020-08-07/api-2.json index 0565bba8cb7..26eef62b894 100644 --- a/apis/models.lex.v2/2020-08-07/api-2.json +++ b/apis/models.lex.v2/2020-08-07/api-2.json @@ -605,6 +605,22 @@ {"shape":"InternalServerException"} ] }, + "DescribeBotResourceGeneration":{ + "name":"DescribeBotResourceGeneration", + "http":{ + "method":"GET", + "requestUri":"/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generations/{generationId}", + "responseCode":200 + }, + "input":{"shape":"DescribeBotResourceGenerationRequest"}, + "output":{"shape":"DescribeBotResourceGenerationResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServerException"} + ] + }, "DescribeBotVersion":{ "name":"DescribeBotVersion", "http":{ @@ -805,6 +821,26 @@ {"shape":"InternalServerException"} ] }, + "GenerateBotElement":{ + "name":"GenerateBotElement", + "http":{ + "method":"POST", + "requestUri":"/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generate", + "responseCode":202 + }, + "input":{"shape":"GenerateBotElementRequest"}, + "output":{"shape":"GenerateBotElementResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ServiceQuotaExceededException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ConflictException"}, + {"shape":"PreconditionFailedException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ] + }, "GetTestExecutionArtifactsUrl":{ "name":"GetTestExecutionArtifactsUrl", "http":{ @@ -886,6 +922,22 @@ {"shape":"ResourceNotFoundException"} ] }, + "ListBotResourceGenerations":{ + "name":"ListBotResourceGenerations", + "http":{ + "method":"POST", + "requestUri":"/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generations", + "responseCode":200 + }, + "input":{"shape":"ListBotResourceGenerationsRequest"}, + "output":{"shape":"ListBotResourceGenerationsResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"InternalServerException"}, + {"shape":"ResourceNotFoundException"} + ] + }, "ListBotVersions":{ "name":"ListBotVersions", "http":{ @@ -1300,6 +1352,25 @@ {"shape":"InternalServerException"} ] }, + "StartBotResourceGeneration":{ + "name":"StartBotResourceGeneration", + "http":{ + "method":"PUT", + "requestUri":"/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/startgeneration", + "responseCode":202 + }, + "input":{"shape":"StartBotResourceGenerationRequest"}, + "output":{"shape":"StartBotResourceGenerationResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ServiceQuotaExceededException"}, + {"shape":"ValidationException"}, + {"shape":"PreconditionFailedException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, "StartImport":{ "name":"StartImport", "http":{ @@ -2592,6 +2663,17 @@ "resources":{"shape":"CustomVocabularyItems"} } }, + "BedrockModelArn":{ + "type":"string", + "pattern":"^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}$" + }, + "BedrockModelSpecification":{ + "type":"structure", + "required":["modelArn"], + "members":{ + "modelArn":{"shape":"BedrockModelArn"} + } + }, "Boolean":{"type":"boolean"}, "BotAliasHistoryEvent":{ "type":"structure", @@ -3055,6 +3137,13 @@ "lastBuildSubmittedDateTime":{"shape":"Timestamp"} } }, + "BuildtimeSettings":{ + "type":"structure", + "members":{ + "descriptiveBotBuilder":{"shape":"DescriptiveBotBuilderSpecification"}, + "sampleUtteranceGeneration":{"shape":"SampleUtteranceGenerationSpecification"} + } + }, "BuiltInIntentSortAttribute":{ "type":"string", "enum":["IntentSignature"] @@ -3461,7 +3550,8 @@ "localeId":{"shape":"LocaleId"}, "description":{"shape":"Description"}, "nluIntentConfidenceThreshold":{"shape":"ConfidenceThreshold"}, - "voiceSettings":{"shape":"VoiceSettings"} + "voiceSettings":{"shape":"VoiceSettings"}, + "generativeAISettings":{"shape":"GenerativeAISettings"} } }, "CreateBotLocaleResponse":{ @@ -3475,7 +3565,8 @@ "nluIntentConfidenceThreshold":{"shape":"ConfidenceThreshold"}, "voiceSettings":{"shape":"VoiceSettings"}, "botLocaleStatus":{"shape":"BotLocaleStatus"}, - "creationDateTime":{"shape":"Timestamp"} + "creationDateTime":{"shape":"Timestamp"}, + "generativeAISettings":{"shape":"GenerativeAISettings"} } }, "CreateBotRequest":{ @@ -4418,7 +4509,8 @@ "lastUpdatedDateTime":{"shape":"Timestamp"}, "lastBuildSubmittedDateTime":{"shape":"Timestamp"}, "botLocaleHistoryEvents":{"shape":"BotLocaleHistoryEventsList"}, - "recommendedActions":{"shape":"RecommendedActions"} + "recommendedActions":{"shape":"RecommendedActions"}, + "generativeAISettings":{"shape":"GenerativeAISettings"} } }, "DescribeBotRecommendationRequest":{ @@ -4479,6 +4571,53 @@ } } }, + "DescribeBotResourceGenerationRequest":{ + "type":"structure", + "required":[ + "botId", + "botVersion", + "localeId", + "generationId" + ], + "members":{ + "botId":{ + "shape":"Id", + "location":"uri", + "locationName":"botId" + }, + "botVersion":{ + "shape":"BotVersion", + "location":"uri", + "locationName":"botVersion" + }, + "localeId":{ + "shape":"LocaleId", + "location":"uri", + "locationName":"localeId" + }, + "generationId":{ + "shape":"Id", + "location":"uri", + "locationName":"generationId" + } + } + }, + "DescribeBotResourceGenerationResponse":{ + "type":"structure", + "members":{ + "botId":{"shape":"Id"}, + "botVersion":{"shape":"BotVersion"}, + "localeId":{"shape":"LocaleId"}, + "generationId":{"shape":"Id"}, + "failureReasons":{"shape":"FailureReasons"}, + "generationStatus":{"shape":"GenerationStatus"}, + "generationInputPrompt":{"shape":"GenerationInput"}, + "generatedBotLocaleUrl":{"shape":"PresignedS3Url"}, + "creationDateTime":{"shape":"Timestamp"}, + "modelArn":{"shape":"BedrockModelArn"}, + "lastUpdatedDateTime":{"shape":"Timestamp"} + } + }, "DescribeBotResponse":{ "type":"structure", "members":{ @@ -4906,6 +5045,14 @@ "max":200, "min":0 }, + "DescriptiveBotBuilderSpecification":{ + "type":"structure", + "required":["enabled"], + "members":{ + "enabled":{"shape":"Boolean"}, + "bedrockModelSpecification":{"shape":"BedrockModelSpecification"} + } + }, "DialogAction":{ "type":"structure", "required":["type"], @@ -4979,6 +5126,7 @@ "invocationLabel":{"shape":"Name"} } }, + "Enabled":{"type":"boolean"}, "EncryptionSetting":{ "type":"structure", "members":{ @@ -5187,6 +5335,94 @@ "timeoutInSeconds":{"shape":"FulfillmentTimeout"} } }, + "GenerateBotElementRequest":{ + "type":"structure", + "required":[ + "intentId", + "botId", + "botVersion", + "localeId" + ], + "members":{ + "intentId":{"shape":"Id"}, + "botId":{ + "shape":"Id", + "location":"uri", + "locationName":"botId" + }, + "botVersion":{ + "shape":"BotVersion", + "location":"uri", + "locationName":"botVersion" + }, + "localeId":{ + "shape":"LocaleId", + "location":"uri", + "locationName":"localeId" + } + } + }, + "GenerateBotElementResponse":{ + "type":"structure", + "members":{ + "botId":{"shape":"Id"}, + "botVersion":{"shape":"DraftBotVersion"}, + "localeId":{"shape":"LocaleId"}, + "intentId":{"shape":"Id"}, + "sampleUtterances":{"shape":"SampleUtterancesList"} + } + }, + "GenerationInput":{ + "type":"string", + "max":2000, + "min":100 + }, + "GenerationSortBy":{ + "type":"structure", + "required":[ + "attribute", + "order" + ], + "members":{ + "attribute":{"shape":"GenerationSortByAttribute"}, + "order":{"shape":"SortOrder"} + } + }, + "GenerationSortByAttribute":{ + "type":"string", + "enum":[ + "creationStartTime", + "lastUpdatedTime" + ] + }, + "GenerationStatus":{ + "type":"string", + "enum":[ + "Failed", + "Complete", + "InProgress" + ] + }, + "GenerationSummary":{ + "type":"structure", + "members":{ + "generationId":{"shape":"Id"}, + "generationStatus":{"shape":"GenerationStatus"}, + "creationDateTime":{"shape":"Timestamp"}, + "lastUpdatedDateTime":{"shape":"Timestamp"} + } + }, + "GenerationSummaryList":{ + "type":"list", + "member":{"shape":"GenerationSummary"} + }, + "GenerativeAISettings":{ + "type":"structure", + "members":{ + "runtimeSettings":{"shape":"RuntimeSettings"}, + "buildtimeSettings":{"shape":"BuildtimeSettings"} + } + }, "GetTestExecutionArtifactsUrlRequest":{ "type":"structure", "required":["testExecutionId"], @@ -5752,6 +5988,44 @@ "nextToken":{"shape":"NextToken"} } }, + "ListBotResourceGenerationsRequest":{ + "type":"structure", + "required":[ + "botId", + "botVersion", + "localeId" + ], + "members":{ + "botId":{ + "shape":"Id", + "location":"uri", + "locationName":"botId" + }, + "botVersion":{ + "shape":"BotVersion", + "location":"uri", + "locationName":"botVersion" + }, + "localeId":{ + "shape":"LocaleId", + "location":"uri", + "locationName":"localeId" + }, + "sortBy":{"shape":"GenerationSortBy"}, + "maxResults":{"shape":"MaxResults"}, + "nextToken":{"shape":"NextToken"} + } + }, + "ListBotResourceGenerationsResponse":{ + "type":"structure", + "members":{ + "botId":{"shape":"Id"}, + "botVersion":{"shape":"BotVersion"}, + "localeId":{"shape":"LocaleId"}, + "generationSummaries":{"shape":"GenerationSummaryList"}, + "nextToken":{"shape":"NextToken"} + } + }, "ListBotVersionsRequest":{ "type":"structure", "required":["botId"], @@ -6822,6 +7096,12 @@ "slotHints":{"shape":"SlotHintsIntentMap"} } }, + "RuntimeSettings":{ + "type":"structure", + "members":{ + "slotResolutionImprovement":{"shape":"SlotResolutionImprovementSpecification"} + } + }, "S3BucketArn":{ "type":"string", "max":2048, @@ -6885,6 +7165,14 @@ "utterance":{"shape":"Utterance"} } }, + "SampleUtteranceGenerationSpecification":{ + "type":"structure", + "required":["enabled"], + "members":{ + "enabled":{"shape":"Boolean"}, + "bedrockModelSpecification":{"shape":"BedrockModelSpecification"} + } + }, "SampleUtterancesCount":{"type":"integer"}, "SampleUtterancesList":{ "type":"list", @@ -7118,6 +7406,28 @@ "slotId":{"shape":"Id"} } }, + "SlotResolutionImprovementSpecification":{ + "type":"structure", + "required":["enabled"], + "members":{ + "enabled":{"shape":"Enabled"}, + "bedrockModelSpecification":{"shape":"BedrockModelSpecification"} + } + }, + "SlotResolutionSetting":{ + "type":"structure", + "required":["slotResolutionStrategy"], + "members":{ + "slotResolutionStrategy":{"shape":"SlotResolutionStrategy"} + } + }, + "SlotResolutionStrategy":{ + "type":"string", + "enum":[ + "EnhancedFallback", + "Default" + ] + }, "SlotResolutionTestResultItem":{ "type":"structure", "required":[ @@ -7296,7 +7606,8 @@ "promptSpecification":{"shape":"PromptSpecification"}, "sampleUtterances":{"shape":"SampleUtterancesList"}, "waitAndContinueSpecification":{"shape":"WaitAndContinueSpecification"}, - "slotCaptureSetting":{"shape":"SlotCaptureSetting"} + "slotCaptureSetting":{"shape":"SlotCaptureSetting"}, + "slotResolutionSetting":{"shape":"SlotResolutionSetting"} } }, "SlotValueOverride":{ @@ -7399,6 +7710,45 @@ "encryptionSetting":{"shape":"EncryptionSetting"} } }, + "StartBotResourceGenerationRequest":{ + "type":"structure", + "required":[ + "generationInputPrompt", + "botId", + "botVersion", + "localeId" + ], + "members":{ + "generationInputPrompt":{"shape":"GenerationInput"}, + "botId":{ + "shape":"Id", + "location":"uri", + "locationName":"botId" + }, + "botVersion":{ + "shape":"BotVersion", + "location":"uri", + "locationName":"botVersion" + }, + "localeId":{ + "shape":"LocaleId", + "location":"uri", + "locationName":"localeId" + } + } + }, + "StartBotResourceGenerationResponse":{ + "type":"structure", + "members":{ + "generationInputPrompt":{"shape":"GenerationInput"}, + "generationId":{"shape":"Id"}, + "botId":{"shape":"Id"}, + "botVersion":{"shape":"BotVersion"}, + "localeId":{"shape":"LocaleId"}, + "generationStatus":{"shape":"GenerationStatus"}, + "creationDateTime":{"shape":"Timestamp"} + } + }, "StartImportRequest":{ "type":"structure", "required":[ @@ -8182,7 +8532,8 @@ }, "description":{"shape":"Description"}, "nluIntentConfidenceThreshold":{"shape":"ConfidenceThreshold"}, - "voiceSettings":{"shape":"VoiceSettings"} + "voiceSettings":{"shape":"VoiceSettings"}, + "generativeAISettings":{"shape":"GenerativeAISettings"} } }, "UpdateBotLocaleResponse":{ @@ -8199,7 +8550,8 @@ "failureReasons":{"shape":"FailureReasons"}, "creationDateTime":{"shape":"Timestamp"}, "lastUpdatedDateTime":{"shape":"Timestamp"}, - "recommendedActions":{"shape":"RecommendedActions"} + "recommendedActions":{"shape":"RecommendedActions"}, + "generativeAISettings":{"shape":"GenerativeAISettings"} } }, "UpdateBotRecommendationRequest":{ diff --git a/apis/models.lex.v2/2020-08-07/docs-2.json b/apis/models.lex.v2/2020-08-07/docs-2.json index 685169959a0..94feee5baa3 100644 --- a/apis/models.lex.v2/2020-08-07/docs-2.json +++ b/apis/models.lex.v2/2020-08-07/docs-2.json @@ -9,7 +9,7 @@ "CreateBot": "

Creates an Amazon Lex conversational bot.

", "CreateBotAlias": "

Creates an alias for the specified version of a bot. Use an alias to enable you to change the version of a bot without updating applications that use the bot.

For example, you can create an alias called \"PROD\" that your applications use to call the Amazon Lex bot.

", "CreateBotLocale": "

Creates a locale in the bot. The locale contains the intents and slot types that the bot uses in conversations with users in the specified language and locale. You must add a locale to a bot before you can add intents and slot types to the bot.

", - "CreateBotVersion": "

Creates a new version of the bot based on the DRAFT version. If the DRAFT version of this resource hasn't changed since you created the last version, Amazon Lex doesn't create a new version, it returns the last created version.

When you create the first version of a bot, Amazon Lex sets the version to 1. Subsequent versions increment by 1.

", + "CreateBotVersion": "

Creates an immutable version of the bot. When you create the first version of a bot, Amazon Lex sets the version number to 1. Subsequent bot versions increase in an increment of 1. The version number will always represent the total number of versions created of the bot, not the current number of versions. If a bot version is deleted, that bot version number will not be reused.

", "CreateExport": "

Creates a zip archive containing the contents of a bot or a bot locale. The archive contains a directory structure that contains JSON files that define the bot.

You can create an archive that contains the complete definition of a bot, or you can specify that the archive contain only the definition of a single bot locale.

For more information about exporting bots, and about the structure of the export archive, see Importing and exporting bots

", "CreateIntent": "

Creates an intent.

To define the interaction between the user and your bot, you define one or more intents. For example, for a pizza ordering bot you would create an OrderPizza intent.

When you create an intent, you must provide a name. You can optionally provide the following:

", "CreateResourcePolicy": "

Creates a new resource policy with the specified policy statements.

", @@ -36,6 +36,7 @@ "DescribeBotAlias": "

Get information about a specific bot alias.

", "DescribeBotLocale": "

Describes the settings that a bot has for a specific locale.

", "DescribeBotRecommendation": "

Provides metadata information about a bot recommendation. This information will enable you to get a description on the request inputs, to download associated transcripts after processing is complete, and to download intents and slot-types generated by the bot recommendation.

", + "DescribeBotResourceGeneration": "

Returns information about a request to generate a bot through natural language description, made through the StartBotResource API. Use the generatedBotLocaleUrl to retrieve the Amazon S3 object containing the bot locale configuration. You can then modify and import this configuration.

", "DescribeBotVersion": "

Provides metadata about a version of a bot.

", "DescribeCustomVocabularyMetadata": "

Provides metadata information about a custom vocabulary.

", "DescribeExport": "

Gets information about a specific export.

", @@ -48,11 +49,13 @@ "DescribeTestSet": "

Gets metadata information about the test set.

", "DescribeTestSetDiscrepancyReport": "

Gets metadata information about the test set discrepancy report.

", "DescribeTestSetGeneration": "

Gets metadata information about the test set generation.

", + "GenerateBotElement": "

Generates sample utterances for an intent.

", "GetTestExecutionArtifactsUrl": "

The pre-signed Amazon S3 URL to download the test execution result artifacts.

", "ListAggregatedUtterances": "

Provides a list of utterances that users have sent to the bot.

Utterances are aggregated by the text of the utterance. For example, all instances where customers used the phrase \"I want to order pizza\" are aggregated into the same line in the response.

You can see both detected utterances and missed utterances. A detected utterance is where the bot properly recognized the utterance and activated the associated intent. A missed utterance was not recognized by the bot and didn't activate an intent.

Utterances can be aggregated for a bot alias or for a bot version, but not both at the same time.

Utterances statistics are not generated under the following conditions:

", "ListBotAliases": "

Gets a list of aliases for the specified bot.

", "ListBotLocales": "

Gets a list of locales for the specified bot.

", "ListBotRecommendations": "

Get a list of bot recommendations that meet the specified criteria.

", + "ListBotResourceGenerations": "

Lists the generation requests made for a bot locale.

", "ListBotVersions": "

Gets information about all of the versions of a bot.

The ListBotVersions operation returns a summary of each version of a bot. For example, if a bot has three numbered versions, the ListBotVersions operation returns for summaries, one for each numbered version and one for the DRAFT version.

The ListBotVersions operation always returns at least one version, the DRAFT version.

", "ListBots": "

Gets a list of available bots.

", "ListBuiltInIntents": "

Gets a list of built-in intents provided by Amazon Lex that you can use in your bot.

To use a built-in intent as a the base for your own intent, include the built-in intent signature in the parentIntentSignature parameter when you call the CreateIntent operation. For more information, see CreateIntent.

", @@ -78,6 +81,7 @@ "ListUtteranceMetrics": "

To use this API operation, your IAM role must have permissions to perform the ListAggregatedUtterances operation, which provides access to utterance-related analytics. See Viewing utterance statistics for the IAM policy to apply to the IAM role.

Retrieves summary metrics for the utterances in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. Currently, you can specify it in either field, but not in both.

", "SearchAssociatedTranscripts": "

Search for associated transcripts that meet the specified criteria.

", "StartBotRecommendation": "

Use this to provide your transcript data, and to start the bot recommendation process.

", + "StartBotResourceGeneration": "

Starts a request for the descriptive bot builder to generate a bot locale configuration based on the prompt you provide it. After you make this call, use the DescribeBotResourceGeneration operation to check on the status of the generation and for the generatedBotLocaleUrl when the generation is complete. Use that value to retrieve the Amazon S3 object containing the bot locale configuration. You can then modify and import this configuration.

", "StartImport": "

Starts importing a bot, bot locale, or custom vocabulary from a zip archive that you uploaded to an S3 bucket.

", "StartTestExecution": "

The action to start test set execution.

", "StartTestSetGeneration": "

The action to start the generation of test set.

", @@ -942,11 +946,27 @@ "refs": { } }, + "BedrockModelArn": { + "base": null, + "refs": { + "BedrockModelSpecification$modelArn": "

The ARN of the foundation model used in descriptive bot building.

", + "DescribeBotResourceGenerationResponse$modelArn": "

The ARN of the model used to generate the bot resources.

" + } + }, + "BedrockModelSpecification": { + "base": "

Contains information about the Amazon Bedrock model used to interpret the prompt used in descriptive bot building.

", + "refs": { + "DescriptiveBotBuilderSpecification$bedrockModelSpecification": "

An object containing information about the Amazon Bedrock model used to interpret the prompt used in descriptive bot building.

", + "SampleUtteranceGenerationSpecification$bedrockModelSpecification": null, + "SlotResolutionImprovementSpecification$bedrockModelSpecification": "

An object containing information about the Amazon Bedrock model used to assist slot resolution.

" + } + }, "Boolean": { "base": null, "refs": { "AudioLogSetting$enabled": "

Determines whether audio logging in enabled for the bot.

", "BotAliasLocaleSettings$enabled": "

Determines whether the locale is enabled for the bot. If the value is false, the locale isn't available for use.

", + "DescriptiveBotBuilderSpecification$enabled": "

Specifies whether the descriptive bot building feature is activated or not.

", "DialogCodeHookSettings$enabled": "

Enables the dialog code hook so that it processes user requests.

", "FulfillmentCodeHookSettings$enabled": "

Indicates whether a Lambda function should be invoked to fulfill a specific intent.

", "IntentClassificationTestResultItem$multiTurnConversation": "

Indicates whether the conversation involves multiple turns or not.

", @@ -954,6 +974,7 @@ "KendraConfiguration$queryFilterStringEnabled": "

Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.

", "MultipleValuesSetting$allowMultipleValues": "

Indicates whether a slot can return multiple values. When true, the slot may return more than one value in a response. When false, the slot returns only a single value.

Multi-value slots are only available in the en-US locale. If you set this value to true in any other locale, Amazon Lex throws a ValidationException.

If the allowMutlipleValues is not set, the default value is false.

", "OverallTestResultItem$multiTurnConversation": "

Indicates whether the conversation contains multiple turns or not.

", + "SampleUtteranceGenerationSpecification$enabled": "

Specifies whether to enable sample utterance generation or not.

", "SentimentAnalysisSettings$detectSentiment": "

Sets whether Amazon Lex uses Amazon Comprehend to detect the sentiment of user utterances.

", "TextLogSetting$enabled": "

Determines whether conversation logs should be stored for an alias.

" } @@ -1287,6 +1308,8 @@ "DescribeBotAliasResponse$botVersion": "

The version of the bot associated with the bot alias.

", "DescribeBotLocaleRequest$botVersion": "

The version of the bot associated with the locale.

", "DescribeBotLocaleResponse$botVersion": "

The version of the bot associated with the locale.

", + "DescribeBotResourceGenerationRequest$botVersion": "

The version of the bot for which to return the generation details.

", + "DescribeBotResourceGenerationResponse$botVersion": "

The version of the bot for which the generation request was made.

", "DescribeCustomVocabularyMetadataRequest$botVersion": "

The bot version of the bot to return metadata for.

", "DescribeCustomVocabularyMetadataResponse$botVersion": "

The version of the bot that contains the custom vocabulary to describe.

", "DescribeIntentRequest$botVersion": "

The version of the bot associated with the intent.

", @@ -1294,10 +1317,13 @@ "DescribeSlotResponse$botVersion": "

The version of the bot associated with the slot.

", "DescribeSlotTypeRequest$botVersion": "

The version of the bot associated with the slot type.

", "DescribeSlotTypeResponse$botVersion": "

The version of the bot associated with the slot type.

", + "GenerateBotElementRequest$botVersion": "

The bot version for the bot request to generate utterances.

", "ListAggregatedUtterancesRequest$botVersion": "

The identifier of the bot version associated with this request. If you specify the bot version, you can't specify the bot alias.

", "ListAggregatedUtterancesResponse$botVersion": "

The identifier of the bot version that contains the utterances. If you specified the bot alias, the bot version isn't returned.

", "ListBotLocalesRequest$botVersion": "

The version of the bot to list locales for.

", "ListBotLocalesResponse$botVersion": "

The version of the bot.

", + "ListBotResourceGenerationsRequest$botVersion": "

The version of the bot whose generation requests you want to view.

", + "ListBotResourceGenerationsResponse$botVersion": "

The version of the bot for which the generation requests were made.

", "ListCustomVocabularyItemsRequest$botVersion": "

The bot version of the bot to the list custom vocabulary request.

", "ListCustomVocabularyItemsResponse$botVersion": "

The identifier of the version of the bot associated with this custom vocabulary.

", "ListExportsRequest$botVersion": "

The version of the bot to list exports for.

", @@ -1311,6 +1337,8 @@ "ParentBotNetwork$botVersion": "

The version of the network of bots.

", "SearchAssociatedTranscriptsRequest$botVersion": "

The version of the bot containing the transcripts that you are searching.

", "SearchAssociatedTranscriptsResponse$botVersion": "

The version of the bot containing the transcripts that you are searching.

", + "StartBotResourceGenerationRequest$botVersion": "

The version of the bot for which to generate intents and slot types.

", + "StartBotResourceGenerationResponse$botVersion": "

The version of the bot for which the generation request was made.

", "UpdateBotAliasRequest$botVersion": "

The new bot version to assign to the bot alias.

", "UpdateBotAliasResponse$botVersion": "

The updated version of the bot that the alias points to.

" } @@ -1388,6 +1416,12 @@ "refs": { } }, + "BuildtimeSettings": { + "base": "

Contains specifications about the Amazon Lex build time generative AI capabilities from Amazon Bedrock that you can turn on for your bot.

", + "refs": { + "GenerativeAISettings$buildtimeSettings": null + } + }, "BuiltInIntentSortAttribute": { "base": null, "refs": { @@ -2099,6 +2133,16 @@ "refs": { } }, + "DescribeBotResourceGenerationRequest": { + "base": null, + "refs": { + } + }, + "DescribeBotResourceGenerationResponse": { + "base": null, + "refs": { + } + }, "DescribeBotResponse": { "base": null, "refs": { @@ -2279,6 +2323,12 @@ "UpdateTestSetResponse$description": "

The test set description for the updated test set.

" } }, + "DescriptiveBotBuilderSpecification": { + "base": "

Contains specifications for the descriptive bot building feature.

", + "refs": { + "BuildtimeSettings$descriptiveBotBuilder": "

An object containing specifications for the descriptive bot building feature.

" + } + }, "DialogAction": { "base": "

Defines the action that the bot executes at runtime when the conversation reaches this step.

", "refs": { @@ -2354,6 +2404,7 @@ "DescribeBotRecommendationRequest$botVersion": "

The version of the bot associated with the bot recommendation.

", "DescribeBotRecommendationResponse$botVersion": "

The version of the bot associated with the bot recommendation.

", "DescribeIntentResponse$botVersion": "

The version of the bot associated with the intent.

", + "GenerateBotElementResponse$botVersion": "

The unique bot version for the bot which received the response.

", "ListBotRecommendationsRequest$botVersion": "

The version of the bot that contains the bot recommendation list.

", "ListBotRecommendationsResponse$botVersion": "

The version of the bot that contains the bot recommendation list.

", "ListImportsRequest$botVersion": "

The version of the bot to list imports for.

", @@ -2389,6 +2440,12 @@ "SlotCaptureSetting$elicitationCodeHook": "

Code hook called when Amazon Lex doesn't capture a slot value.

" } }, + "Enabled": { + "base": null, + "refs": { + "SlotResolutionImprovementSpecification$enabled": "

Specifies whether assisted slot resolution is turned on or off.

" + } + }, "EncryptionSetting": { "base": "

The object representing the passwords that were used to encrypt the data related to the bot recommendation, as well as the KMS key ARN used to encrypt the associated metadata.

", "refs": { @@ -2533,6 +2590,7 @@ "refs": { "DescribeBotLocaleResponse$failureReasons": "

if botLocaleStatus is Failed, Amazon Lex explains why it failed to build the bot.

", "DescribeBotRecommendationResponse$failureReasons": "

If botRecommendationStatus is Failed, Amazon Lex explains why.

", + "DescribeBotResourceGenerationResponse$failureReasons": "

A list of reasons why the generation of bot resources through natural language description failed.

", "DescribeBotResponse$failureReasons": "

If the botStatus is Failed, this contains a list of reasons that the bot couldn't be built.

", "DescribeBotVersionResponse$failureReasons": "

If the botStatus is Failed, this contains a list of reasons that the version couldn't be built.

", "DescribeExportResponse$failureReasons": "

If the exportStatus is failed, contains one or more reasons why the export could not be completed.

", @@ -2616,6 +2674,66 @@ "FulfillmentCodeHookSettings$fulfillmentUpdatesSpecification": "

Provides settings for update messages sent to the user for long-running Lambda fulfillment functions. Fulfillment updates can be used only with streaming conversations.

" } }, + "GenerateBotElementRequest": { + "base": null, + "refs": { + } + }, + "GenerateBotElementResponse": { + "base": null, + "refs": { + } + }, + "GenerationInput": { + "base": null, + "refs": { + "DescribeBotResourceGenerationResponse$generationInputPrompt": "

The prompt used in the generation request.

", + "StartBotResourceGenerationRequest$generationInputPrompt": "

The prompt to generate intents and slot types for the bot locale. Your description should be both detailed and precise to help generate appropriate and sufficient intents for your bot. Include a list of actions to improve the intent creation process.

", + "StartBotResourceGenerationResponse$generationInputPrompt": "

The prompt that was used generate intents and slot types for the bot locale.

" + } + }, + "GenerationSortBy": { + "base": "

Specifies the attribute and method by which to sort the generation request information.

", + "refs": { + "ListBotResourceGenerationsRequest$sortBy": "

An object containing information about the attribute and the method by which to sort the results

" + } + }, + "GenerationSortByAttribute": { + "base": null, + "refs": { + "GenerationSortBy$attribute": "

The attribute by which to sort the generation request information. You can sort by the following attributes.

" + } + }, + "GenerationStatus": { + "base": null, + "refs": { + "DescribeBotResourceGenerationResponse$generationStatus": "

The status of the generation request.

", + "GenerationSummary$generationStatus": "

The status of the generation request.

", + "StartBotResourceGenerationResponse$generationStatus": "

The status of the generation request.

" + } + }, + "GenerationSummary": { + "base": "

Contains information about a generation request made for the bot locale.

", + "refs": { + "GenerationSummaryList$member": null + } + }, + "GenerationSummaryList": { + "base": null, + "refs": { + "ListBotResourceGenerationsResponse$generationSummaries": "

A list of objects, each containing information about a generation request for the bot locale.

" + } + }, + "GenerativeAISettings": { + "base": "

Contains specifications about the generative AI capabilities from Amazon Bedrock that you can turn on for your bot.

", + "refs": { + "CreateBotLocaleRequest$generativeAISettings": null, + "CreateBotLocaleResponse$generativeAISettings": null, + "DescribeBotLocaleResponse$generativeAISettings": "

Contains settings for Amazon Bedrock's generative AI features for your bot locale.

", + "UpdateBotLocaleRequest$generativeAISettings": "

Contains settings for generative AI features powered by Amazon Bedrock for your bot locale. Use this object to turn generative AI features on and off. Pricing may differ if you turn a feature on. For more information, see LINK.

", + "UpdateBotLocaleResponse$generativeAISettings": "

Contains settings for generative AI features powered by Amazon Bedrock for your bot locale.

" + } + }, "GetTestExecutionArtifactsUrlRequest": { "base": null, "refs": { @@ -2720,6 +2838,10 @@ "DescribeBotRecommendationResponse$botId": "

The identifier of the bot associated with the bot recommendation.

", "DescribeBotRecommendationResponse$botRecommendationId": "

The identifier of the bot recommendation being described.

", "DescribeBotRequest$botId": "

The unique identifier of the bot to describe.

", + "DescribeBotResourceGenerationRequest$botId": "

The unique identifier of the bot for which to return the generation details.

", + "DescribeBotResourceGenerationRequest$generationId": "

The unique identifier of the generation request for which to return the generation details.

", + "DescribeBotResourceGenerationResponse$botId": "

The unique identifier of the bot for which the generation request was made.

", + "DescribeBotResourceGenerationResponse$generationId": "

The generation ID for which to return the generation details.

", "DescribeBotResponse$botId": "

The unique identifier of the bot.

", "DescribeBotVersionRequest$botId": "

The identifier of the bot containing the version to return metadata for.

", "DescribeBotVersionResponse$botId": "

The identifier of the bot that contains the version.

", @@ -2755,6 +2877,11 @@ "DescribeTestSetRequest$testSetId": "

The test set Id for the test set request.

", "DescribeTestSetResponse$testSetId": "

The test set Id for the test set response.

", "ExportSummary$exportId": "

The unique identifier that Amazon Lex assigned to the export.

", + "GenerateBotElementRequest$intentId": "

The intent unique Id for the bot request to generate utterances.

", + "GenerateBotElementRequest$botId": "

The bot unique Id for the bot request to generate utterances.

", + "GenerateBotElementResponse$botId": "

The unique bot Id for the bot which received the response.

", + "GenerateBotElementResponse$intentId": "

The unique intent Id for the bot which received the response.

", + "GenerationSummary$generationId": "

The unique identifier of the generation request.

", "GetTestExecutionArtifactsUrlRequest$testExecutionId": "

The unique identifier of the completed test execution.

", "GetTestExecutionArtifactsUrlResponse$testExecutionId": "

The unique identifier of the completed test execution.

", "ImportSummary$importId": "

The unique identifier that Amazon Lex assigned to the import.

", @@ -2767,6 +2894,8 @@ "ListBotLocalesResponse$botId": "

The identifier of the bot to list locales for.

", "ListBotRecommendationsRequest$botId": "

The unique identifier of the bot that contains the bot recommendation list.

", "ListBotRecommendationsResponse$botId": "

The unique identifier of the bot that contains the bot recommendation list.

", + "ListBotResourceGenerationsRequest$botId": "

The unique identifier of the bot whose generation requests you want to view.

", + "ListBotResourceGenerationsResponse$botId": "

The unique identifier of the bot for which the generation requests were made.

", "ListBotVersionsRequest$botId": "

The identifier of the bot to list versions for.

", "ListBotVersionsResponse$botId": "

The identifier of the bot to list versions for.

", "ListCustomVocabularyItemsRequest$botId": "

The identifier of the version of the bot associated with this custom vocabulary.

", @@ -2814,6 +2943,9 @@ "StartBotRecommendationRequest$botId": "

The unique identifier of the bot containing the bot recommendation.

", "StartBotRecommendationResponse$botId": "

The unique identifier of the bot containing the bot recommendation.

", "StartBotRecommendationResponse$botRecommendationId": "

The identifier of the bot recommendation that you have created.

", + "StartBotResourceGenerationRequest$botId": "

The unique identifier of the bot for which to generate intents and slot types.

", + "StartBotResourceGenerationResponse$generationId": "

The unique identifier of the generation request.

", + "StartBotResourceGenerationResponse$botId": "

The unique identifier of the bot for which the generation request was made.

", "StartImportRequest$importId": "

The unique identifier for the import. It is included in the response from the CreateUploadUrl operation.

", "StartImportResponse$importId": "

A unique identifier for the import.

", "StartTestExecutionRequest$testSetId": "

The test set Id for the test set execution.

", @@ -3245,6 +3377,16 @@ "refs": { } }, + "ListBotResourceGenerationsRequest": { + "base": null, + "refs": { + } + }, + "ListBotResourceGenerationsResponse": { + "base": null, + "refs": { + } + }, "ListBotVersionsRequest": { "base": null, "refs": { @@ -3515,6 +3657,8 @@ "DescribeBotLocaleResponse$localeId": "

The unique identifier of the described locale.

", "DescribeBotRecommendationRequest$localeId": "

The identifier of the language and locale of the bot recommendation to describe. The string must match one of the supported locales. For more information, see Supported languages.

", "DescribeBotRecommendationResponse$localeId": "

The identifier of the language and locale of the bot recommendation to describe.

", + "DescribeBotResourceGenerationRequest$localeId": "

The locale of the bot for which to return the generation details.

", + "DescribeBotResourceGenerationResponse$localeId": "

The locale of the bot for which the generation request was made.

", "DescribeCustomVocabularyMetadataRequest$localeId": "

The locale to return the custom vocabulary information for. The locale must be en_GB.

", "DescribeCustomVocabularyMetadataResponse$localeId": "

The locale that contains the custom vocabulary to describe.

", "DescribeIntentRequest$localeId": "

The identifier of the language and locale of the intent to describe. The string must match one of the supported locales. For more information, see Supported languages.

", @@ -3523,10 +3667,14 @@ "DescribeSlotResponse$localeId": "

The language and locale specified for the slot.

", "DescribeSlotTypeRequest$localeId": "

The identifier of the language and locale of the slot type to describe. The string must match one of the supported locales. For more information, see Supported languages.

", "DescribeSlotTypeResponse$localeId": "

The language and locale specified for the slot type.

", + "GenerateBotElementRequest$localeId": "

The unique locale Id for the bot request to generate utterances.

", + "GenerateBotElementResponse$localeId": "

The unique locale Id for the bot which received the response.

", "ListAggregatedUtterancesRequest$localeId": "

The identifier of the language and locale where the utterances were collected. For more information, see Supported languages.

", "ListAggregatedUtterancesResponse$localeId": "

The identifier of the language and locale that the utterances are in.

", "ListBotRecommendationsRequest$localeId": "

The identifier of the language and locale of the bot recommendation list.

", "ListBotRecommendationsResponse$localeId": "

The identifier of the language and locale of the bot recommendation list.

", + "ListBotResourceGenerationsRequest$localeId": "

The locale of the bot whose generation requests you want to view.

", + "ListBotResourceGenerationsResponse$localeId": "

The locale of the bot for which the generation requests were made.

", "ListBuiltInIntentsRequest$localeId": "

The identifier of the language and locale of the intents to list. The string must match one of the supported locales. For more information, see Supported languages.

", "ListBuiltInIntentsResponse$localeId": "

The language and locale of the intents in the list.

", "ListBuiltInSlotTypesRequest$localeId": "

The identifier of the language and locale of the slot types to list. The string must match one of the supported locales. For more information, see Supported languages.

", @@ -3550,6 +3698,8 @@ "SessionSpecification$localeId": "

The locale of the bot that the session was held with.

", "StartBotRecommendationRequest$localeId": "

The identifier of the language and locale of the bot recommendation to start. The string must match one of the supported locales. For more information, see Supported languages

", "StartBotRecommendationResponse$localeId": "

The identifier of the language and locale of the bot recommendation to start. The string must match one of the supported locales. For more information, see Supported languages

", + "StartBotResourceGenerationRequest$localeId": "

The locale of the bot for which to generate intents and slot types.

", + "StartBotResourceGenerationResponse$localeId": "

The locale of the bot for which the generation request was made.

", "StopBotRecommendationRequest$localeId": "

The identifier of the language and locale of the bot recommendation to stop. The string must match one of the supported locales. For more information, see Supported languages

", "StopBotRecommendationResponse$localeId": "

The identifier of the language and locale of the bot response to stop. The string must match one of the supported locales. For more information, see Supported languages

", "TestSetDiscrepancyReportBotAliasTarget$localeId": "

The unique identifier of the locale associated with the bot alias.

", @@ -3589,6 +3739,7 @@ "ListBotAliasesRequest$maxResults": "

The maximum number of aliases to return in each page of results. If there are fewer results than the max page size, only the actual number of results are returned.

", "ListBotLocalesRequest$maxResults": "

The maximum number of aliases to return in each page of results. If there are fewer results than the max page size, only the actual number of results are returned.

", "ListBotRecommendationsRequest$maxResults": "

The maximum number of bot recommendations to return in each page of results. If there are fewer results than the max page size, only the actual number of results are returned.

", + "ListBotResourceGenerationsRequest$maxResults": "

The maximum number of results to return in the response.

", "ListBotVersionsRequest$maxResults": "

The maximum number of versions to return in each page of results. If there are fewer results than the max page size, only the actual number of results are returned.

", "ListBotsRequest$maxResults": "

The maximum number of bots to return in each page of results. If there are fewer results than the maximum page size, only the actual number of results are returned.

", "ListCustomVocabularyItemsRequest$maxResults": "

The maximum number of items returned by the list operation.

", @@ -3783,6 +3934,8 @@ "ListBotLocalesResponse$nextToken": "

A token that indicates whether there are more results to return in a response to the ListBotLocales operation. If the nextToken field is present, you send the contents as the nextToken parameter of a ListBotLocales operation request to get the next page of results.

", "ListBotRecommendationsRequest$nextToken": "

If the response from the ListBotRecommendation operation contains more results than specified in the maxResults parameter, a token is returned in the response. Use that token in the nextToken parameter to return the next page of results.

", "ListBotRecommendationsResponse$nextToken": "

A token that indicates whether there are more results to return in a response to the ListBotRecommendations operation. If the nextToken field is present, you send the contents as the nextToken parameter of a ListBotRecommendations operation request to get the next page of results.

", + "ListBotResourceGenerationsRequest$nextToken": "

If the total number of results is greater than the number specified in the maxResults, the response returns a token in the nextToken field. Use this token when making a request to return the next batch of results.

", + "ListBotResourceGenerationsResponse$nextToken": "

If the total number of results is greater than the number specified in the maxResults, the response returns a token in the nextToken field. Use this token when making a request to return the next batch of results.

", "ListBotVersionsRequest$nextToken": "

If the response to the ListBotVersion operation contains more results than specified in the maxResults parameter, a token is returned in the response. Use that token in the nextToken parameter to return the next page of results.

", "ListBotVersionsResponse$nextToken": "

A token that indicates whether there are more results to return in a response to the ListBotVersions operation. If the nextToken field is present, you send the contents as the nextToken parameter of a ListBotAliases operation request to get the next page of results.

", "ListBotsRequest$nextToken": "

If the response from the ListBots operation contains more results than specified in the maxResults parameter, a token is returned in the response.

Use the returned token in the nextToken parameter of a ListBots request to return the next page of results. For a complete set of results, call the ListBots operation until the nextToken returned in the response is null.

", @@ -3998,6 +4151,7 @@ "BotRecommendationResults$botLocaleExportUrl": "

The presigned URL link of the recommended bot definition.

", "BotRecommendationResults$associatedTranscriptsUrl": "

The presigned url link of the associated transcript.

", "CreateUploadUrlResponse$uploadUrl": "

A pre-signed S3 write URL. Upload the zip archive file that contains the definition of your bot or bot locale.

", + "DescribeBotResourceGenerationResponse$generatedBotLocaleUrl": "

The Amazon S3 location of the generated bot locale configuration.

", "DescribeExportResponse$downloadUrl": "

A pre-signed S3 URL that points to the bot or bot locale archive. The URL is only available for 5 minutes after calling the DescribeExport operation.

", "DescribeTestSetDiscrepancyReportResponse$testSetDiscrepancyRawOutputUrl": "

Pre-signed Amazon S3 URL to download the test set discrepancy report.

", "GetTestExecutionArtifactsUrlResponse$downloadArtifactsUrl": "

The pre-signed Amazon S3 URL to download completed test execution.

" @@ -4214,6 +4368,12 @@ "InputSessionStateSpecification$runtimeHints": "

Runtime hints for the session state.

" } }, + "RuntimeSettings": { + "base": "

Contains specifications about the Amazon Lex runtime generative AI capabilities from Amazon Bedrock that you can turn on for your bot.

", + "refs": { + "GenerativeAISettings$runtimeSettings": null + } + }, "S3BucketArn": { "base": null, "refs": { @@ -4267,6 +4427,12 @@ "SampleUtterancesList$member": null } }, + "SampleUtteranceGenerationSpecification": { + "base": "

Contains specifications for the sample utterance generation feature.

", + "refs": { + "BuildtimeSettings$sampleUtteranceGeneration": null + } + }, "SampleUtterancesCount": { "base": null, "refs": { @@ -4279,6 +4445,7 @@ "CreateIntentRequest$sampleUtterances": "

An array of strings that a user might say to signal the intent. For example, \"I want a pizza\", or \"I want a {PizzaSize} pizza\".

In an utterance, slot names are enclosed in curly braces (\"{\", \"}\") to indicate where they should be displayed in the utterance shown to the user..

", "CreateIntentResponse$sampleUtterances": "

The sample utterances specified for the intent.

", "DescribeIntentResponse$sampleUtterances": "

User utterances that trigger this intent.

", + "GenerateBotElementResponse$sampleUtterances": "

The sample utterances for the bot which received the response.

", "SlotValueElicitationSetting$sampleUtterances": "

If you know a specific pattern that users might respond to an Amazon Lex request for a slot value, you can provide those utterances to improve accuracy. This is optional. In most cases, Amazon Lex is capable of understanding user utterances.

", "SubSlotValueElicitationSetting$sampleUtterances": "

If you know a specific pattern that users might respond to an Amazon Lex request for a sub slot value, you can provide those utterances to improve accuracy. This is optional. In most cases Amazon Lex is capable of understanding user utterances. This is similar to SampleUtterances for slots.

", "UpdateIntentRequest$sampleUtterances": "

New utterances used to invoke the intent.

", @@ -4463,6 +4630,24 @@ "SlotPrioritiesList$member": null } }, + "SlotResolutionImprovementSpecification": { + "base": "

Contains specifications for the assisted slot resolution feature.

", + "refs": { + "RuntimeSettings$slotResolutionImprovement": "

An object containing specifications for the assisted slot resolution feature.

" + } + }, + "SlotResolutionSetting": { + "base": "

Contains information about whether assisted slot resolution is turned on for the slot or not.

", + "refs": { + "SlotValueElicitationSetting$slotResolutionSetting": "

An object containing information about whether assisted slot resolution is turned on for the slot or not.

" + } + }, + "SlotResolutionStrategy": { + "base": null, + "refs": { + "SlotResolutionSetting$slotResolutionStrategy": "

Specifies whether assisted slot resolution is turned on for the slot or not. If the value is EnhancedFallback, assisted slot resolution is activated when Amazon Lex defaults to the AMAZON.FallbackIntent. If the value is Default, assisted slot resolution is turned off.

" + } + }, "SlotResolutionTestResultItem": { "base": "

Information about the success and failure rate of slot resolution in the results of a test execution.

", "refs": { @@ -4666,6 +4851,7 @@ "BuiltInIntentSortBy$order": "

The order to sort the list. You can specify ascending or descending order.

", "BuiltInSlotTypeSortBy$order": "

The order to sort the list. You can choose ascending or descending.

", "ExportSortBy$order": "

The order to sort the list.

", + "GenerationSortBy$order": "

The order by which to sort the generation request information.

", "ImportSortBy$order": "

The order to sort the list.

", "IntentSortBy$order": "

The order to sort the list. You can choose ascending or descending.

", "SlotSortBy$order": "

The order to sort the list. You can choose ascending or descending.

", @@ -4690,6 +4876,16 @@ "refs": { } }, + "StartBotResourceGenerationRequest": { + "base": null, + "refs": { + } + }, + "StartBotResourceGenerationResponse": { + "base": null, + "refs": { + } + }, "StartImportRequest": { "base": null, "refs": { @@ -5241,6 +5437,8 @@ "DescribeBotLocaleResponse$lastBuildSubmittedDateTime": "

The date and time that the locale was last submitted for building.

", "DescribeBotRecommendationResponse$creationDateTime": "

The date and time that the bot recommendation was created.

", "DescribeBotRecommendationResponse$lastUpdatedDateTime": "

The date and time that the bot recommendation was last updated.

", + "DescribeBotResourceGenerationResponse$creationDateTime": "

The date and time at which the item was generated.

", + "DescribeBotResourceGenerationResponse$lastUpdatedDateTime": "

The date and time at which the generated item was updated.

", "DescribeBotResponse$creationDateTime": "

A timestamp of the date and time that the bot was created.

", "DescribeBotResponse$lastUpdatedDateTime": "

A timestamp of the date and time that the bot was last updated.

", "DescribeBotVersionResponse$creationDateTime": "

A timestamp of the date and time that the bot version was created.

", @@ -5266,6 +5464,8 @@ "DescribeTestSetResponse$lastUpdatedDateTime": "

The date and time for the last update of the test set data.

", "ExportSummary$creationDateTime": "

The date and time that the export was created.

", "ExportSummary$lastUpdatedDateTime": "

The date and time that the export was last updated.

", + "GenerationSummary$creationDateTime": "

The date and time at which the generation request was made.

", + "GenerationSummary$lastUpdatedDateTime": "

The date and time at which the generation request was last updated.

", "ImportSummary$creationDateTime": "

The date and time that the import was created.

", "ImportSummary$lastUpdatedDateTime": "

The date and time that the import was last updated.

", "IntentSummary$lastUpdatedDateTime": "

The timestamp of the date and time that the intent was last updated.

", @@ -5291,6 +5491,7 @@ "SlotSummary$lastUpdatedDateTime": "

The timestamp of the last date and time that the slot was updated.

", "SlotTypeSummary$lastUpdatedDateTime": "

A timestamp of the date and time that the slot type was last updated.

", "StartBotRecommendationResponse$creationDateTime": "

A timestamp of the date and time that the bot recommendation was created.

", + "StartBotResourceGenerationResponse$creationDateTime": "

The date and time at which the generation request was made.

", "StartImportResponse$creationDateTime": "

The date and time that the import request was created.

", "StartTestExecutionResponse$creationDateTime": "

The creation date and time for the test set execution.

", "StartTestSetGenerationResponse$creationDateTime": "

The creation date and time for the test set generation.

", diff --git a/apis/models.lex.v2/2020-08-07/paginators-1.json b/apis/models.lex.v2/2020-08-07/paginators-1.json index 086ef701af8..3ccc0d6b5e2 100644 --- a/apis/models.lex.v2/2020-08-07/paginators-1.json +++ b/apis/models.lex.v2/2020-08-07/paginators-1.json @@ -20,6 +20,11 @@ "output_token": "nextToken", "limit_key": "maxResults" }, + "ListBotResourceGenerations": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults" + }, "ListBotVersions": { "input_token": "nextToken", "output_token": "nextToken", diff --git a/apis/personalize-events/2018-03-22/api-2.json b/apis/personalize-events/2018-03-22/api-2.json index 883471e056f..7af7c0a16db 100644 --- a/apis/personalize-events/2018-03-22/api-2.json +++ b/apis/personalize-events/2018-03-22/api-2.json @@ -12,6 +12,32 @@ "uid":"personalize-events-2018-03-22" }, "operations":{ + "PutActionInteractions":{ + "name":"PutActionInteractions", + "http":{ + "method":"POST", + "requestUri":"/action-interactions" + }, + "input":{"shape":"PutActionInteractionsRequest"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ResourceInUseException"} + ] + }, + "PutActions":{ + "name":"PutActions", + "http":{ + "method":"POST", + "requestUri":"/actions" + }, + "input":{"shape":"PutActionsRequest"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ResourceInUseException"} + ] + }, "PutEvents":{ "name":"PutEvents", "http":{ @@ -51,6 +77,76 @@ } }, "shapes":{ + "Action":{ + "type":"structure", + "required":["actionId"], + "members":{ + "actionId":{"shape":"StringType"}, + "properties":{ + "shape":"ActionProperties", + "jsonvalue":true + } + } + }, + "ActionId":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "ActionImpression":{ + "type":"list", + "member":{"shape":"ActionId"}, + "max":25, + "min":1 + }, + "ActionInteraction":{ + "type":"structure", + "required":[ + "actionId", + "sessionId", + "timestamp", + "eventType" + ], + "members":{ + "actionId":{"shape":"ActionId"}, + "userId":{"shape":"UserId"}, + "sessionId":{"shape":"StringType"}, + "timestamp":{"shape":"Date"}, + "eventType":{"shape":"StringType"}, + "eventId":{"shape":"StringType"}, + "recommendationId":{"shape":"RecommendationId"}, + "impression":{"shape":"ActionImpression"}, + "properties":{ + "shape":"ActionInteractionProperties", + "jsonvalue":true + } + } + }, + "ActionInteractionProperties":{ + "type":"string", + "max":1024, + "min":1, + "sensitive":true + }, + "ActionInteractionsList":{ + "type":"list", + "member":{"shape":"ActionInteraction"}, + "max":10, + "min":1 + }, + "ActionList":{ + "type":"list", + "member":{"shape":"Action"}, + "max":10, + "min":1 + }, + "ActionProperties":{ + "type":"string", + "max":32000, + "min":1, + "sensitive":true + }, "Arn":{ "type":"string", "max":256, @@ -137,7 +233,7 @@ }, "ItemProperties":{ "type":"string", - "max":24262, + "max":32000, "min":1, "sensitive":true }, @@ -148,6 +244,28 @@ "eventAttributionSource":{"shape":"EventAttributionSource"} } }, + "PutActionInteractionsRequest":{ + "type":"structure", + "required":[ + "trackingId", + "actionInteractions" + ], + "members":{ + "trackingId":{"shape":"StringType"}, + "actionInteractions":{"shape":"ActionInteractionsList"} + } + }, + "PutActionsRequest":{ + "type":"structure", + "required":[ + "datasetArn", + "actions" + ], + "members":{ + "datasetArn":{"shape":"Arn"}, + "actions":{"shape":"ActionList"} + } + }, "PutEventsRequest":{ "type":"structure", "required":[ @@ -235,7 +353,7 @@ }, "UserProperties":{ "type":"string", - "max":4096, + "max":24000, "min":1, "sensitive":true } diff --git a/apis/personalize-events/2018-03-22/docs-2.json b/apis/personalize-events/2018-03-22/docs-2.json index e48336a5058..ec6d16a60f6 100644 --- a/apis/personalize-events/2018-03-22/docs-2.json +++ b/apis/personalize-events/2018-03-22/docs-2.json @@ -1,15 +1,67 @@ { "version": "2.0", - "service": "

Amazon Personalize can consume real-time user event data, such as stream or click data, and use it for model training either alone or combined with historical data. For more information see Recording Events.

", + "service": "

Amazon Personalize can consume real-time user event data, such as stream or click data, and use it for model training either alone or combined with historical data. For more information see Recording item interaction events.

", "operations": { - "PutEvents": "

Records user interaction event data. For more information see Recording Events.

", - "PutItems": "

Adds one or more items to an Items dataset. For more information see Importing Items Incrementally.

", - "PutUsers": "

Adds one or more users to a Users dataset. For more information see Importing Users Incrementally.

" + "PutActionInteractions": "

Records action interaction event data. An action interaction event is an interaction between a user and an action. For example, a user taking an action, such a enrolling in a membership program or downloading your app.

For more information about recording action interactions, see Recording action interaction events. For more information about actions in an Actions dataset, see Actions dataset.

", + "PutActions": "

Adds one or more actions to an Actions dataset. For more information see Importing actions individually.

", + "PutEvents": "

Records item interaction event data. For more information see Recording item interaction events.

", + "PutItems": "

Adds one or more items to an Items dataset. For more information see Importing items individually.

", + "PutUsers": "

Adds one or more users to a Users dataset. For more information see Importing users individually.

" }, "shapes": { + "Action": { + "base": "

Represents action metadata added to an Action dataset using the PutActions API. For more information see Importing actions individually.

", + "refs": { + "ActionList$member": null + } + }, + "ActionId": { + "base": null, + "refs": { + "ActionImpression$member": null, + "ActionInteraction$actionId": "

The ID of the action the user interacted with. This corresponds to the ACTION_ID field of the Action interaction schema.

" + } + }, + "ActionImpression": { + "base": null, + "refs": { + "ActionInteraction$impression": "

A list of action IDs that represents the sequence of actions you have shown the user. For example, [\"actionId1\", \"actionId2\", \"actionId3\"]. Amazon Personalize doesn't use impressions data from action interaction events. Instead, record multiple events for each action and use the Viewed event type.

" + } + }, + "ActionInteraction": { + "base": "

Represents an action interaction event sent using the PutActionInteractions API.

", + "refs": { + "ActionInteractionsList$member": null + } + }, + "ActionInteractionProperties": { + "base": null, + "refs": { + "ActionInteraction$properties": "

A string map of event-specific data that you might choose to record. For example, if a user takes an action, other than the action ID, you might also send the number of actions taken by the user.

Each item in the map consists of a key-value pair. For example,

{\"numberOfActions\": \"12\"}

The keys use camel case names that match the fields in the Action interactions schema. In the above example, the numberOfActions would match the 'NUMBER_OF_ACTIONS' field defined in the Action interactions schema.

The following can't be included as a keyword for properties (case insensitive).

" + } + }, + "ActionInteractionsList": { + "base": null, + "refs": { + "PutActionInteractionsRequest$actionInteractions": "

A list of action interaction events from the session.

" + } + }, + "ActionList": { + "base": null, + "refs": { + "PutActionsRequest$actions": "

A list of action data.

" + } + }, + "ActionProperties": { + "base": null, + "refs": { + "Action$properties": "

A string map of action-specific metadata. Each element in the map consists of a key-value pair. For example, {\"value\": \"100\"}.

The keys use camel case names that match the fields in the schema for the Actions dataset. In the previous example, the value matches the 'VALUE' field defined in the Actions schema. For categorical string data, to include multiple categories for a single action, separate each category with a pipe separator (|). For example, \\\"Deluxe|Premium\\\".

" + } + }, "Arn": { "base": null, "refs": { + "PutActionsRequest$datasetArn": "

The Amazon Resource Name (ARN) of the Actions dataset you are adding the action or actions to.

", "PutItemsRequest$datasetArn": "

The Amazon Resource Name (ARN) of the Items dataset you are adding the item or items to.

", "PutUsersRequest$datasetArn": "

The Amazon Resource Name (ARN) of the Users dataset you are adding the user or users to.

" } @@ -17,6 +69,7 @@ "Date": { "base": null, "refs": { + "ActionInteraction$timestamp": "

The timestamp for when the action interaction event occurred. Timestamps must be in Unix epoch time format, in seconds.

", "Event$sentAt": "

The timestamp (in Unix time) on the client side when the event occurred.

" } }, @@ -29,7 +82,7 @@ } }, "Event": { - "base": "

Represents user interaction event information sent using the PutEvents API.

", + "base": "

Represents item interaction event information sent using the PutEvents API.

", "refs": { "EventList$member": null } @@ -49,13 +102,13 @@ "EventPropertiesJSON": { "base": null, "refs": { - "Event$properties": "

A string map of event-specific data that you might choose to record. For example, if a user rates a movie on your site, other than movie ID (itemId) and rating (eventValue) , you might also send the number of movie ratings made by the user.

Each item in the map consists of a key-value pair. For example,

{\"numberOfRatings\": \"12\"}

The keys use camel case names that match the fields in the Interactions schema. In the above example, the numberOfRatings would match the 'NUMBER_OF_RATINGS' field defined in the Interactions schema.

" + "Event$properties": "

A string map of event-specific data that you might choose to record. For example, if a user rates a movie on your site, other than movie ID (itemId) and rating (eventValue) , you might also send the number of movie ratings made by the user.

Each item in the map consists of a key-value pair. For example,

{\"numberOfRatings\": \"12\"}

The keys use camel case names that match the fields in the Item interactions dataset's schema. In the above example, the numberOfRatings would match the 'NUMBER_OF_RATINGS' field defined in the Item interactions dataset's schema.

The following can't be included as a keyword for properties (case insensitive).

" } }, "FloatType": { "base": null, "refs": { - "Event$eventValue": "

The event value that corresponds to the EVENT_VALUE field of the Interactions schema.

" + "Event$eventValue": "

The event value that corresponds to the EVENT_VALUE field of the Item interactions schema.

" } }, "Impression": { @@ -70,7 +123,7 @@ } }, "Item": { - "base": "

Represents item metadata added to an Items dataset using the PutItems API. For more information see Importing Items Incrementally.

", + "base": "

Represents item metadata added to an Items dataset using the PutItems API. For more information see Importing items individually.

", "refs": { "ItemList$member": null } @@ -78,7 +131,7 @@ "ItemId": { "base": null, "refs": { - "Event$itemId": "

The item ID key that corresponds to the ITEM_ID field of the Interactions schema.

", + "Event$itemId": "

The item ID key that corresponds to the ITEM_ID field of the Item interactions dataset's schema.

", "Impression$member": null } }, @@ -100,6 +153,16 @@ "Event$metricAttribution": "

Contains information about the metric attribution associated with an event. For more information about metric attributions, see Measuring impact of recommendations.

" } }, + "PutActionInteractionsRequest": { + "base": null, + "refs": { + } + }, + "PutActionsRequest": { + "base": null, + "refs": { + } + }, "PutEventsRequest": { "base": null, "refs": { @@ -118,6 +181,7 @@ "RecommendationId": { "base": null, "refs": { + "ActionInteraction$recommendationId": "

The ID of the list of recommendations that contains the action the user interacted with.

", "Event$recommendationId": "

The ID of the list of recommendations that contains the item the user interacted with. Provide a recommendationId to have Amazon Personalize implicitly record the recommendations you show your user as impressions data. Or provide a recommendationId if you use a metric attribution to measure the impact of recommendations.

For more information on recording impressions data, see Recording impressions data. For more information on creating a metric attribution see Measuring impact of recommendations.

" } }, @@ -134,16 +198,21 @@ "StringType": { "base": null, "refs": { - "Event$eventId": "

An ID associated with the event. If an event ID is not provided, Amazon Personalize generates a unique ID for the event. An event ID is not used as an input to the model. Amazon Personalize uses the event ID to distinquish unique events. Any subsequent events after the first with the same event ID are not used in model training.

", - "Event$eventType": "

The type of event, such as click or download. This property corresponds to the EVENT_TYPE field of your Interactions schema and depends on the types of events you are tracking.

", + "Action$actionId": "

The ID associated with the action.

", + "ActionInteraction$sessionId": "

The ID associated with the user's visit. Your application generates a unique sessionId when a user first visits your website or uses your application.

", + "ActionInteraction$eventType": "

The type of action interaction event. You can specify Viewed, Taken, and Not Taken event types. For more information about action interaction event type data, see Event type data.

", + "ActionInteraction$eventId": "

An ID associated with the event. If an event ID is not provided, Amazon Personalize generates a unique ID for the event. An event ID is not used as an input to the model. Amazon Personalize uses the event ID to distinguish unique events. Any subsequent events after the first with the same event ID are not used in model training.

", + "Event$eventId": "

An ID associated with the event. If an event ID is not provided, Amazon Personalize generates a unique ID for the event. An event ID is not used as an input to the model. Amazon Personalize uses the event ID to distinguish unique events. Any subsequent events after the first with the same event ID are not used in model training.

", + "Event$eventType": "

The type of event, such as click or download. This property corresponds to the EVENT_TYPE field of your Item interactions dataset's schema and depends on the types of events you are tracking.

", "Item$itemId": "

The ID associated with the item.

", + "PutActionInteractionsRequest$trackingId": "

The ID of your action interaction event tracker. When you create an Action interactions dataset, Amazon Personalize creates an action interaction event tracker for you. For more information, see Action interaction event tracker ID.

", "PutEventsRequest$trackingId": "

The tracking ID for the event. The ID is generated by a call to the CreateEventTracker API.

", - "PutEventsRequest$sessionId": "

The session ID associated with the user's visit. Your application generates the sessionId when a user first visits your website or uses your application. Amazon Personalize uses the sessionId to associate events with the user before they log in. For more information, see Recording Events.

", + "PutEventsRequest$sessionId": "

The session ID associated with the user's visit. Your application generates the sessionId when a user first visits your website or uses your application. Amazon Personalize uses the sessionId to associate events with the user before they log in. For more information, see Recording item interaction events.

", "User$userId": "

The ID associated with the user.

" } }, "User": { - "base": "

Represents user metadata added to a Users dataset using the PutUsers API. For more information see Importing Users Incrementally.

", + "base": "

Represents user metadata added to a Users dataset using the PutUsers API. For more information see Importing users individually.

", "refs": { "UserList$member": null } @@ -151,6 +220,7 @@ "UserId": { "base": null, "refs": { + "ActionInteraction$userId": "

The ID of the user who interacted with the action. This corresponds to the USER_ID field of the Action interaction schema.

", "PutEventsRequest$userId": "

The user associated with the event.

" } }, diff --git a/apis/personalize-events/2018-03-22/endpoint-rule-set-1.json b/apis/personalize-events/2018-03-22/endpoint-rule-set-1.json index f25902a7af7..c96082c6d7d 100644 --- a/apis/personalize-events/2018-03-22/endpoint-rule-set-1.json +++ b/apis/personalize-events/2018-03-22/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/personalize-runtime/2018-05-22/api-2.json b/apis/personalize-runtime/2018-05-22/api-2.json index 4e0c1962316..bbf06e017c3 100644 --- a/apis/personalize-runtime/2018-05-22/api-2.json +++ b/apis/personalize-runtime/2018-05-22/api-2.json @@ -12,6 +12,20 @@ "uid":"personalize-runtime-2018-05-22" }, "operations":{ + "GetActionRecommendations":{ + "name":"GetActionRecommendations", + "http":{ + "method":"POST", + "requestUri":"/action-recommendations" + }, + "input":{"shape":"GetActionRecommendationsRequest"}, + "output":{"shape":"GetActionRecommendationsResponse"}, + "errors":[ + {"shape":"InvalidInputException"}, + {"shape":"ResourceNotFoundException"} + ], + "idempotent":true + }, "GetPersonalizedRanking":{ "name":"GetPersonalizedRanking", "http":{ @@ -42,6 +56,14 @@ } }, "shapes":{ + "ActionID":{ + "type":"string", + "max":256 + }, + "ActionList":{ + "type":"list", + "member":{"shape":"PredictedAction"} + }, "Arn":{ "type":"string", "max":256, @@ -57,12 +79,29 @@ "max":1000, "sensitive":true }, + "ColumnName":{ + "type":"string", + "max":150 + }, + "ColumnNamesList":{ + "type":"list", + "member":{"shape":"ColumnName"}, + "max":99 + }, + "ColumnValue":{ + "type":"string", + "max":20000 + }, "Context":{ "type":"map", "key":{"shape":"AttributeName"}, "value":{"shape":"AttributeValue"}, "max":150 }, + "DatasetType":{ + "type":"string", + "max":256 + }, "ErrorMessage":{"type":"string"}, "FilterAttributeName":{ "type":"string", @@ -80,6 +119,23 @@ "value":{"shape":"FilterAttributeValue"}, "max":25 }, + "GetActionRecommendationsRequest":{ + "type":"structure", + "members":{ + "campaignArn":{"shape":"Arn"}, + "userId":{"shape":"UserID"}, + "numResults":{"shape":"NumResults"}, + "filterArn":{"shape":"Arn"}, + "filterValues":{"shape":"FilterValues"} + } + }, + "GetActionRecommendationsResponse":{ + "type":"structure", + "members":{ + "actionList":{"shape":"ActionList"}, + "recommendationId":{"shape":"RecommendationID"} + } + }, "GetPersonalizedRankingRequest":{ "type":"structure", "required":[ @@ -93,7 +149,8 @@ "userId":{"shape":"UserID"}, "context":{"shape":"Context"}, "filterArn":{"shape":"Arn"}, - "filterValues":{"shape":"FilterValues"} + "filterValues":{"shape":"FilterValues"}, + "metadataColumns":{"shape":"MetadataColumns"} } }, "GetPersonalizedRankingResponse":{ @@ -114,7 +171,8 @@ "filterArn":{"shape":"Arn"}, "filterValues":{"shape":"FilterValues"}, "recommenderArn":{"shape":"Arn"}, - "promotions":{"shape":"PromotionList"} + "promotions":{"shape":"PromotionList"}, + "metadataColumns":{"shape":"MetadataColumns"} } }, "GetRecommendationsResponse":{ @@ -144,6 +202,17 @@ "type":"list", "member":{"shape":"PredictedItem"} }, + "Metadata":{ + "type":"map", + "key":{"shape":"ColumnName"}, + "value":{"shape":"ColumnValue"} + }, + "MetadataColumns":{ + "type":"map", + "key":{"shape":"DatasetType"}, + "value":{"shape":"ColumnNamesList"}, + "max":1 + }, "Name":{ "type":"string", "max":63, @@ -159,12 +228,20 @@ "max":100, "min":1 }, + "PredictedAction":{ + "type":"structure", + "members":{ + "actionId":{"shape":"ActionID"}, + "score":{"shape":"Score"} + } + }, "PredictedItem":{ "type":"structure", "members":{ "itemId":{"shape":"ItemID"}, "score":{"shape":"Score"}, - "promotionName":{"shape":"Name"} + "promotionName":{"shape":"Name"}, + "metadata":{"shape":"Metadata"} } }, "Promotion":{ diff --git a/apis/personalize-runtime/2018-05-22/docs-2.json b/apis/personalize-runtime/2018-05-22/docs-2.json index 7013754dbfd..3e2ee50730a 100644 --- a/apis/personalize-runtime/2018-05-22/docs-2.json +++ b/apis/personalize-runtime/2018-05-22/docs-2.json @@ -2,13 +2,28 @@ "version": "2.0", "service": "

", "operations": { + "GetActionRecommendations": "

Returns a list of recommended actions in sorted in descending order by prediction score. Use the GetActionRecommendations API if you have a custom campaign that deploys a solution version trained with a PERSONALIZED_ACTIONS recipe.

For more information about PERSONALIZED_ACTIONS recipes, see PERSONALIZED_ACTIONS recipes. For more information about getting action recommendations, see Getting action recommendations.

", "GetPersonalizedRanking": "

Re-ranks a list of recommended items for the given user. The first item in the list is deemed the most likely item to be of interest to the user.

The solution backing the campaign must have been created using a recipe of type PERSONALIZED_RANKING.

", "GetRecommendations": "

Returns a list of recommended items. For campaigns, the campaign's Amazon Resource Name (ARN) is required and the required user and item input depends on the recipe type used to create the solution backing the campaign as follows:

Campaigns that are backed by a solution created using a recipe of type PERSONALIZED_RANKING use the API.

For recommenders, the recommender's ARN is required and the required item and user input depends on the use case (domain-based recipe) backing the recommender. For information on use case requirements see Choosing recommender use cases.

" }, "shapes": { + "ActionID": { + "base": null, + "refs": { + "PredictedAction$actionId": "

The ID of the recommended action.

" + } + }, + "ActionList": { + "base": null, + "refs": { + "GetActionRecommendationsResponse$actionList": "

A list of action recommendations sorted in descending order by prediction score. There can be a maximum of 100 actions in the list. For information about action scores, see How action recommendation scoring works.

" + } + }, "Arn": { "base": null, "refs": { + "GetActionRecommendationsRequest$campaignArn": "

The Amazon Resource Name (ARN) of the campaign to use for getting action recommendations. This campaign must deploy a solution version trained with a PERSONALIZED_ACTIONS recipe.

", + "GetActionRecommendationsRequest$filterArn": "

The ARN of the filter to apply to the returned recommendations. For more information, see Filtering Recommendations.

When using this parameter, be sure the filter resource is ACTIVE.

", "GetPersonalizedRankingRequest$campaignArn": "

The Amazon Resource Name (ARN) of the campaign to use for generating the personalized ranking.

", "GetPersonalizedRankingRequest$filterArn": "

The Amazon Resource Name (ARN) of a filter you created to include items or exclude items from recommendations for a given user. For more information, see Filtering Recommendations.

", "GetRecommendationsRequest$campaignArn": "

The Amazon Resource Name (ARN) of the campaign to use for getting recommendations.

", @@ -29,6 +44,25 @@ "Context$value": null } }, + "ColumnName": { + "base": null, + "refs": { + "ColumnNamesList$member": null, + "Metadata$key": null + } + }, + "ColumnNamesList": { + "base": null, + "refs": { + "MetadataColumns$value": null + } + }, + "ColumnValue": { + "base": null, + "refs": { + "Metadata$value": null + } + }, "Context": { "base": null, "refs": { @@ -36,6 +70,12 @@ "GetRecommendationsRequest$context": "

The contextual metadata to use when getting recommendations. Contextual metadata includes any interaction information that might be relevant when getting a user's recommendations, such as the user's current location or device type.

" } }, + "DatasetType": { + "base": null, + "refs": { + "MetadataColumns$key": null + } + }, "ErrorMessage": { "base": null, "refs": { @@ -58,11 +98,22 @@ "FilterValues": { "base": null, "refs": { + "GetActionRecommendationsRequest$filterValues": "

The values to use when filtering recommendations. For each placeholder parameter in your filter expression, provide the parameter name (in matching case) as a key and the filter value(s) as the corresponding value. Separate multiple values for one parameter with a comma.

For filter expressions that use an INCLUDE element to include actions, you must provide values for all parameters that are defined in the expression. For filters with expressions that use an EXCLUDE element to exclude actions, you can omit the filter-values. In this case, Amazon Personalize doesn't use that portion of the expression to filter recommendations.

For more information, see Filtering recommendations and user segments.

", "GetPersonalizedRankingRequest$filterValues": "

The values to use when filtering recommendations. For each placeholder parameter in your filter expression, provide the parameter name (in matching case) as a key and the filter value(s) as the corresponding value. Separate multiple values for one parameter with a comma.

For filter expressions that use an INCLUDE element to include items, you must provide values for all parameters that are defined in the expression. For filters with expressions that use an EXCLUDE element to exclude items, you can omit the filter-values.In this case, Amazon Personalize doesn't use that portion of the expression to filter recommendations.

For more information, see Filtering Recommendations.

", "GetRecommendationsRequest$filterValues": "

The values to use when filtering recommendations. For each placeholder parameter in your filter expression, provide the parameter name (in matching case) as a key and the filter value(s) as the corresponding value. Separate multiple values for one parameter with a comma.

For filter expressions that use an INCLUDE element to include items, you must provide values for all parameters that are defined in the expression. For filters with expressions that use an EXCLUDE element to exclude items, you can omit the filter-values.In this case, Amazon Personalize doesn't use that portion of the expression to filter recommendations.

For more information, see Filtering recommendations and user segments.

", "Promotion$filterValues": "

The values to use when promoting items. For each placeholder parameter in your promotion's filter expression, provide the parameter name (in matching case) as a key and the filter value(s) as the corresponding value. Separate multiple values for one parameter with a comma.

For filter expressions that use an INCLUDE element to include items, you must provide values for all parameters that are defined in the expression. For filters with expressions that use an EXCLUDE element to exclude items, you can omit the filter-values. In this case, Amazon Personalize doesn't use that portion of the expression to filter recommendations.

For more information on creating filters, see Filtering recommendations and user segments.

" } }, + "GetActionRecommendationsRequest": { + "base": null, + "refs": { + } + }, + "GetActionRecommendationsResponse": { + "base": null, + "refs": { + } + }, "GetPersonalizedRankingRequest": { "base": null, "refs": { @@ -86,7 +137,7 @@ "InputList": { "base": null, "refs": { - "GetPersonalizedRankingRequest$inputList": "

A list of items (by itemId) to rank. If an item was not included in the training dataset, the item is appended to the end of the reranked list. The maximum is 500.

" + "GetPersonalizedRankingRequest$inputList": "

A list of items (by itemId) to rank. If an item was not included in the training dataset, the item is appended to the end of the reranked list. If you are including metadata in recommendations, the maximum is 50. Otherwise, the maximum is 500.

" } }, "InvalidInputException": { @@ -109,6 +160,19 @@ "GetRecommendationsResponse$itemList": "

A list of recommendations sorted in descending order by prediction score. There can be a maximum of 500 items in the list.

" } }, + "Metadata": { + "base": null, + "refs": { + "PredictedItem$metadata": "

Metadata about the item from your Items dataset.

" + } + }, + "MetadataColumns": { + "base": null, + "refs": { + "GetPersonalizedRankingRequest$metadataColumns": "

If you enabled metadata in recommendations when you created or updated the campaign, specify metadata columns from your Items dataset to include in the personalized ranking. The map key is ITEMS and the value is a list of column names from your Items dataset. The maximum number of columns you can provide is 10.

For information about enabling metadata for a campaign, see Enabling metadata in recommendations for a campaign.

", + "GetRecommendationsRequest$metadataColumns": "

If you enabled metadata in recommendations when you created or updated the campaign or recommender, specify the metadata columns from your Items dataset to include in item recommendations. The map key is ITEMS and the value is a list of column names from your Items dataset. The maximum number of columns you can provide is 10.

For information about enabling metadata for a campaign, see Enabling metadata in recommendations for a campaign. For information about enabling metadata for a recommender, see Enabling metadata in recommendations for a recommender.

" + } + }, "Name": { "base": null, "refs": { @@ -119,7 +183,8 @@ "NumResults": { "base": null, "refs": { - "GetRecommendationsRequest$numResults": "

The number of results to return. The default is 25. The maximum is 500.

" + "GetActionRecommendationsRequest$numResults": "

The number of results to return. The default is 5. The maximum is 100.

", + "GetRecommendationsRequest$numResults": "

The number of results to return. The default is 25. If you are including metadata in recommendations, the maximum is 50. Otherwise, the maximum is 500.

" } }, "PercentPromotedItems": { @@ -128,6 +193,12 @@ "Promotion$percentPromotedItems": "

The percentage of recommended items to apply the promotion to.

" } }, + "PredictedAction": { + "base": "

An object that identifies an action.

The API returns a list of PredictedActions.

", + "refs": { + "ActionList$member": null + } + }, "PredictedItem": { "base": "

An object that identifies an item.

The and APIs return a list of PredictedItems.

", "refs": { @@ -149,6 +220,7 @@ "RecommendationID": { "base": null, "refs": { + "GetActionRecommendationsResponse$recommendationId": "

The ID of the recommendation.

", "GetPersonalizedRankingResponse$recommendationId": "

The ID of the recommendation.

", "GetRecommendationsResponse$recommendationId": "

The ID of the recommendation.

" } @@ -161,12 +233,14 @@ "Score": { "base": null, "refs": { + "PredictedAction$score": "

The score of the recommended action. For information about action scores, see How action recommendation scoring works.

", "PredictedItem$score": "

A numeric representation of the model's certainty that the item will be the next user selection. For more information on scoring logic, see how-scores-work.

" } }, "UserID": { "base": null, "refs": { + "GetActionRecommendationsRequest$userId": "

The user ID of the user to provide action recommendations for.

", "GetPersonalizedRankingRequest$userId": "

The user for which you want the campaign to provide a personalized ranking.

", "GetRecommendationsRequest$userId": "

The user ID to provide recommendations for.

Required for USER_PERSONALIZATION recipe type.

" } diff --git a/apis/personalize-runtime/2018-05-22/endpoint-rule-set-1.json b/apis/personalize-runtime/2018-05-22/endpoint-rule-set-1.json index da8140298c4..e95366eff80 100644 --- a/apis/personalize-runtime/2018-05-22/endpoint-rule-set-1.json +++ b/apis/personalize-runtime/2018-05-22/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/personalize/2018-05-22/api-2.json b/apis/personalize/2018-05-22/api-2.json index 0a1d7476e4f..d4eff98be89 100644 --- a/apis/personalize/2018-05-22/api-2.json +++ b/apis/personalize/2018-05-22/api-2.json @@ -1052,7 +1052,7 @@ }, "AvroSchema":{ "type":"string", - "max":10000 + "max":20000 }, "BatchInferenceJob":{ "type":"structure", @@ -1067,6 +1067,8 @@ "jobOutput":{"shape":"BatchInferenceJobOutput"}, "batchInferenceJobConfig":{"shape":"BatchInferenceJobConfig"}, "roleArn":{"shape":"RoleArn"}, + "batchInferenceJobMode":{"shape":"BatchInferenceJobMode"}, + "themeGenerationConfig":{"shape":"ThemeGenerationConfig"}, "status":{"shape":"Status"}, "creationDateTime":{"shape":"Date"}, "lastUpdatedDateTime":{"shape":"Date"} @@ -1085,6 +1087,13 @@ "s3DataSource":{"shape":"S3DataConfig"} } }, + "BatchInferenceJobMode":{ + "type":"string", + "enum":[ + "BATCH_INFERENCE", + "THEME_GENERATION" + ] + }, "BatchInferenceJobOutput":{ "type":"structure", "required":["s3DataDestination"], @@ -1101,7 +1110,8 @@ "creationDateTime":{"shape":"Date"}, "lastUpdatedDateTime":{"shape":"Date"}, "failureReason":{"shape":"FailureReason"}, - "solutionVersionArn":{"shape":"Arn"} + "solutionVersionArn":{"shape":"Arn"}, + "batchInferenceJobMode":{"shape":"BatchInferenceJobMode"} } }, "BatchInferenceJobs":{ @@ -1176,7 +1186,8 @@ "CampaignConfig":{ "type":"structure", "members":{ - "itemExplorationConfig":{"shape":"HyperParameters"} + "itemExplorationConfig":{"shape":"HyperParameters"}, + "enableMetadataWithRecommendations":{"shape":"Boolean"} } }, "CampaignSummary":{ @@ -1276,7 +1287,9 @@ "jobOutput":{"shape":"BatchInferenceJobOutput"}, "roleArn":{"shape":"RoleArn"}, "batchInferenceJobConfig":{"shape":"BatchInferenceJobConfig"}, - "tags":{"shape":"Tags"} + "tags":{"shape":"Tags"}, + "batchInferenceJobMode":{"shape":"BatchInferenceJobMode"}, + "themeGenerationConfig":{"shape":"ThemeGenerationConfig"} } }, "CreateBatchInferenceJobResponse":{ @@ -1573,7 +1586,8 @@ "status":{"shape":"Status"}, "creationDateTime":{"shape":"Date"}, "lastUpdatedDateTime":{"shape":"Date"}, - "latestDatasetUpdate":{"shape":"DatasetUpdateSummary"} + "latestDatasetUpdate":{"shape":"DatasetUpdateSummary"}, + "trackingId":{"shape":"TrackingId"} } }, "DatasetExportJob":{ @@ -2142,6 +2156,13 @@ "value":{"shape":"ParameterValue"}, "max":100 }, + "FieldsForThemeGeneration":{ + "type":"structure", + "required":["itemName"], + "members":{ + "itemName":{"shape":"ColumnName"} + } + }, "Filter":{ "type":"structure", "members":{ @@ -2736,7 +2757,8 @@ "members":{ "itemExplorationConfig":{"shape":"HyperParameters"}, "minRecommendationRequestsPerSecond":{"shape":"TransactionsPerSecond"}, - "trainingDataConfig":{"shape":"TrainingDataConfig"} + "trainingDataConfig":{"shape":"TrainingDataConfig"}, + "enableMetadataWithRecommendations":{"shape":"Boolean"} } }, "RecommenderSummary":{ @@ -2987,6 +3009,13 @@ "max":200, "min":0 }, + "ThemeGenerationConfig":{ + "type":"structure", + "required":["fieldsForThemeGeneration"], + "members":{ + "fieldsForThemeGeneration":{"shape":"FieldsForThemeGeneration"} + } + }, "TooManyTagKeysException":{ "type":"structure", "members":{ diff --git a/apis/personalize/2018-05-22/docs-2.json b/apis/personalize/2018-05-22/docs-2.json index f301d1c5c00..7c192e333fc 100644 --- a/apis/personalize/2018-05-22/docs-2.json +++ b/apis/personalize/2018-05-22/docs-2.json @@ -2,14 +2,14 @@ "version": "2.0", "service": "

Amazon Personalize is a machine learning service that makes it easy to add individualized recommendations to customers.

", "operations": { - "CreateBatchInferenceJob": "

Creates a batch inference job. The operation can handle up to 50 million records and the input file must be in JSON format. For more information, see Creating a batch inference job.

", + "CreateBatchInferenceJob": "

Generates batch recommendations based on a list of items or users stored in Amazon S3 and exports the recommendations to an Amazon S3 bucket.

To generate batch recommendations, specify the ARN of a solution version and an Amazon S3 URI for the input and output data. For user personalization, popular items, and personalized ranking solutions, the batch inference job generates a list of recommended items for each user ID in the input file. For related items solutions, the job generates a list of recommended items for each item ID in the input file.

For more information, see Creating a batch inference job .

If you use the Similar-Items recipe, Amazon Personalize can add descriptive themes to batch recommendations. To generate themes, set the job's mode to THEME_GENERATION and specify the name of the field that contains item names in the input data.

For more information about generating themes, see Batch recommendations with themes from Content Generator .

You can't get batch recommendations with the Trending-Now or Next-Best-Action recipes.

", "CreateBatchSegmentJob": "

Creates a batch segment job. The operation can handle up to 50 million records and the input file must be in JSON format. For more information, see Getting batch recommendations and user segments.

", "CreateCampaign": "

Creates a campaign that deploys a solution version. When a client calls the GetRecommendations and GetPersonalizedRanking APIs, a campaign is specified in the request.

Minimum Provisioned TPS and Auto-Scaling

A high minProvisionedTPS will increase your bill. We recommend starting with 1 for minProvisionedTPS (the default). Track your usage using Amazon CloudWatch metrics, and increase the minProvisionedTPS as necessary.

A transaction is a single GetRecommendations or GetPersonalizedRanking call. Transactions per second (TPS) is the throughput and unit of billing for Amazon Personalize. The minimum provisioned TPS (minProvisionedTPS) specifies the baseline throughput provisioned by Amazon Personalize, and thus, the minimum billing charge.

If your TPS increases beyond minProvisionedTPS, Amazon Personalize auto-scales the provisioned capacity up and down, but never below minProvisionedTPS. There's a short time delay while the capacity is increased that might cause loss of transactions.

The actual TPS used is calculated as the average requests/second within a 5-minute window. You pay for maximum of either the minimum provisioned TPS or the actual TPS. We recommend starting with a low minProvisionedTPS, track your usage using Amazon CloudWatch metrics, and then increase the minProvisionedTPS as necessary.

Status

A campaign can be in one of the following states:

To get the campaign status, call DescribeCampaign.

Wait until the status of the campaign is ACTIVE before asking the campaign for recommendations.

Related APIs

", - "CreateDataset": "

Creates an empty dataset and adds it to the specified dataset group. Use CreateDatasetImportJob to import your training data to a dataset.

There are three types of datasets:

Each dataset type has an associated schema with required field types. Only the Interactions dataset is required in order to train a model (also referred to as creating a solution).

A dataset can be in one of the following states:

To get the status of the dataset, call DescribeDataset.

Related APIs

", + "CreateDataset": "

Creates an empty dataset and adds it to the specified dataset group. Use CreateDatasetImportJob to import your training data to a dataset.

There are 5 types of datasets:

Each dataset type has an associated schema with required field types. Only the Item interactions dataset is required in order to train a model (also referred to as creating a solution).

A dataset can be in one of the following states:

To get the status of the dataset, call DescribeDataset.

Related APIs

", "CreateDatasetExportJob": "

Creates a job that exports data from your dataset to an Amazon S3 bucket. To allow Amazon Personalize to export the training data, you must specify an service-linked IAM role that gives Amazon Personalize PutObject permissions for your Amazon S3 bucket. For information, see Exporting a dataset in the Amazon Personalize developer guide.

Status

A dataset export job can be in one of the following states:

To get the status of the export job, call DescribeDatasetExportJob, and specify the Amazon Resource Name (ARN) of the dataset export job. The dataset export is complete when the status shows as ACTIVE. If the status shows as CREATE FAILED, the response includes a failureReason key, which describes why the job failed.

", - "CreateDatasetGroup": "

Creates an empty dataset group. A dataset group is a container for Amazon Personalize resources. A dataset group can contain at most three datasets, one for each type of dataset:

A dataset group can be a Domain dataset group, where you specify a domain and use pre-configured resources like recommenders, or a Custom dataset group, where you use custom resources, such as a solution with a solution version, that you deploy with a campaign. If you start with a Domain dataset group, you can still add custom resources such as solutions and solution versions trained with recipes for custom use cases and deployed with campaigns.

A dataset group can be in one of the following states:

To get the status of the dataset group, call DescribeDatasetGroup. If the status shows as CREATE FAILED, the response includes a failureReason key, which describes why the creation failed.

You must wait until the status of the dataset group is ACTIVE before adding a dataset to the group.

You can specify an Key Management Service (KMS) key to encrypt the datasets in the group. If you specify a KMS key, you must also include an Identity and Access Management (IAM) role that has permission to access the key.

APIs that require a dataset group ARN in the request

Related APIs

", - "CreateDatasetImportJob": "

Creates a job that imports training data from your data source (an Amazon S3 bucket) to an Amazon Personalize dataset. To allow Amazon Personalize to import the training data, you must specify an IAM service role that has permission to read from the data source, as Amazon Personalize makes a copy of your data and processes it internally. For information on granting access to your Amazon S3 bucket, see Giving Amazon Personalize Access to Amazon S3 Resources.

By default, a dataset import job replaces any existing data in the dataset that you imported in bulk. To add new records without replacing existing data, specify INCREMENTAL for the import mode in the CreateDatasetImportJob operation.

Status

A dataset import job can be in one of the following states:

To get the status of the import job, call DescribeDatasetImportJob, providing the Amazon Resource Name (ARN) of the dataset import job. The dataset import is complete when the status shows as ACTIVE. If the status shows as CREATE FAILED, the response includes a failureReason key, which describes why the job failed.

Importing takes time. You must wait until the status shows as ACTIVE before training a model using the dataset.

Related APIs

", - "CreateEventTracker": "

Creates an event tracker that you use when adding event data to a specified dataset group using the PutEvents API.

Only one event tracker can be associated with a dataset group. You will get an error if you call CreateEventTracker using the same dataset group as an existing event tracker.

When you create an event tracker, the response includes a tracking ID, which you pass as a parameter when you use the PutEvents operation. Amazon Personalize then appends the event data to the Interactions dataset of the dataset group you specify in your event tracker.

The event tracker can be in one of the following states:

To get the status of the event tracker, call DescribeEventTracker.

The event tracker must be in the ACTIVE state before using the tracking ID.

Related APIs

", + "CreateDatasetGroup": "

Creates an empty dataset group. A dataset group is a container for Amazon Personalize resources. A dataset group can contain at most three datasets, one for each type of dataset:

A dataset group can be a Domain dataset group, where you specify a domain and use pre-configured resources like recommenders, or a Custom dataset group, where you use custom resources, such as a solution with a solution version, that you deploy with a campaign. If you start with a Domain dataset group, you can still add custom resources such as solutions and solution versions trained with recipes for custom use cases and deployed with campaigns.

A dataset group can be in one of the following states:

To get the status of the dataset group, call DescribeDatasetGroup. If the status shows as CREATE FAILED, the response includes a failureReason key, which describes why the creation failed.

You must wait until the status of the dataset group is ACTIVE before adding a dataset to the group.

You can specify an Key Management Service (KMS) key to encrypt the datasets in the group. If you specify a KMS key, you must also include an Identity and Access Management (IAM) role that has permission to access the key.

APIs that require a dataset group ARN in the request

Related APIs

", + "CreateDatasetImportJob": "

Creates a job that imports training data from your data source (an Amazon S3 bucket) to an Amazon Personalize dataset. To allow Amazon Personalize to import the training data, you must specify an IAM service role that has permission to read from the data source, as Amazon Personalize makes a copy of your data and processes it internally. For information on granting access to your Amazon S3 bucket, see Giving Amazon Personalize Access to Amazon S3 Resources.

If you already created a recommender or deployed a custom solution version with a campaign, how new bulk records influence recommendations depends on the domain use case or recipe that you use. For more information, see How new data influences real-time recommendations.

By default, a dataset import job replaces any existing data in the dataset that you imported in bulk. To add new records without replacing existing data, specify INCREMENTAL for the import mode in the CreateDatasetImportJob operation.

Status

A dataset import job can be in one of the following states:

To get the status of the import job, call DescribeDatasetImportJob, providing the Amazon Resource Name (ARN) of the dataset import job. The dataset import is complete when the status shows as ACTIVE. If the status shows as CREATE FAILED, the response includes a failureReason key, which describes why the job failed.

Importing takes time. You must wait until the status shows as ACTIVE before training a model using the dataset.

Related APIs

", + "CreateEventTracker": "

Creates an event tracker that you use when adding event data to a specified dataset group using the PutEvents API.

Only one event tracker can be associated with a dataset group. You will get an error if you call CreateEventTracker using the same dataset group as an existing event tracker.

When you create an event tracker, the response includes a tracking ID, which you pass as a parameter when you use the PutEvents operation. Amazon Personalize then appends the event data to the Item interactions dataset of the dataset group you specify in your event tracker.

The event tracker can be in one of the following states:

To get the status of the event tracker, call DescribeEventTracker.

The event tracker must be in the ACTIVE state before using the tracking ID.

Related APIs

", "CreateFilter": "

Creates a recommendation filter. For more information, see Filtering recommendations and user segments.

", "CreateMetricAttribution": "

Creates a metric attribution. A metric attribution creates reports on the data that you import into Amazon Personalize. Depending on how you imported the data, you can view reports in Amazon CloudWatch or Amazon S3. For more information, see Measuring impact of recommendations.

", "CreateRecommender": "

Creates a recommender with the recipe (a Domain dataset group use case) you specify. You create recommenders for a Domain dataset group and specify the recommender's Amazon Resource Name (ARN) when you make a GetRecommendations request.

Minimum recommendation requests per second

A high minRecommendationRequestsPerSecond will increase your bill. We recommend starting with 1 for minRecommendationRequestsPerSecond (the default). Track your usage using Amazon CloudWatch metrics, and increase the minRecommendationRequestsPerSecond as necessary.

When you create a recommender, you can configure the recommender's minimum recommendation requests per second. The minimum recommendation requests per second (minRecommendationRequestsPerSecond) specifies the baseline recommendation request throughput provisioned by Amazon Personalize. The default minRecommendationRequestsPerSecond is 1. A recommendation request is a single GetRecommendations operation. Request throughput is measured in requests per second and Amazon Personalize uses your requests per second to derive your requests per hour and the price of your recommender usage.

If your requests per second increases beyond minRecommendationRequestsPerSecond, Amazon Personalize auto-scales the provisioned capacity up and down, but never below minRecommendationRequestsPerSecond. There's a short time delay while the capacity is increased that might cause loss of requests.

Your bill is the greater of either the minimum requests per hour (based on minRecommendationRequestsPerSecond) or the actual number of requests. The actual request throughput used is calculated as the average requests/second within a one-hour window. We recommend starting with the default minRecommendationRequestsPerSecond, track your usage using Amazon CloudWatch metrics, and then increase the minRecommendationRequestsPerSecond as necessary.

Status

A recommender can be in one of the following states:

To get the recommender status, call DescribeRecommender.

Wait until the status of the recommender is ACTIVE before asking the recommender for recommendations.

Related APIs

", @@ -19,7 +19,7 @@ "DeleteCampaign": "

Removes a campaign by deleting the solution deployment. The solution that the campaign is based on is not deleted and can be redeployed when needed. A deleted campaign can no longer be specified in a GetRecommendations request. For information on creating campaigns, see CreateCampaign.

", "DeleteDataset": "

Deletes a dataset. You can't delete a dataset if an associated DatasetImportJob or SolutionVersion is in the CREATE PENDING or IN PROGRESS state. For more information on datasets, see CreateDataset.

", "DeleteDatasetGroup": "

Deletes a dataset group. Before you delete a dataset group, you must delete the following:

", - "DeleteEventTracker": "

Deletes the event tracker. Does not delete the event-interactions dataset from the associated dataset group. For more information on event trackers, see CreateEventTracker.

", + "DeleteEventTracker": "

Deletes the event tracker. Does not delete the dataset from the dataset group. For more information on event trackers, see CreateEventTracker.

", "DeleteFilter": "

Deletes a filter.

", "DeleteMetricAttribution": "

Deletes a metric attribution.

", "DeleteRecommender": "

Deactivates and removes a recommender. A deleted recommender can no longer be specified in a GetRecommendations request.

", @@ -65,7 +65,7 @@ "StopSolutionVersionCreation": "

Stops creating a solution version that is in a state of CREATE_PENDING or CREATE IN_PROGRESS.

Depending on the current state of the solution version, the solution version state changes as follows:

You are billed for all of the training completed up until you stop the solution version creation. You cannot resume creating a solution version once it has been stopped.

", "TagResource": "

Add a list of tags to a resource.

", "UntagResource": "

Remove tags that are attached to a resource.

", - "UpdateCampaign": "

Updates a campaign by either deploying a new solution or changing the value of the campaign's minProvisionedTPS parameter.

To update a campaign, the campaign status must be ACTIVE or CREATE FAILED. Check the campaign status using the DescribeCampaign operation.

You can still get recommendations from a campaign while an update is in progress. The campaign will use the previous solution version and campaign configuration to generate recommendations until the latest campaign update status is Active.

For more information on campaigns, see CreateCampaign.

", + "UpdateCampaign": "

Updates a campaign to deploy a retrained solution version with an existing campaign, change your campaign's minProvisionedTPS, or modify your campaign's configuration, such as the exploration configuration.

To update a campaign, the campaign status must be ACTIVE or CREATE FAILED. Check the campaign status using the DescribeCampaign operation.

You can still get recommendations from a campaign while an update is in progress. The campaign will use the previous solution version and campaign configuration to generate recommendations until the latest campaign update status is Active.

For more information about updating a campaign, including code samples, see Updating a campaign. For more information about campaigns, see Creating a campaign.

", "UpdateDataset": "

Update a dataset to replace its schema with a new or existing one. For more information, see Replacing a dataset's schema.

", "UpdateMetricAttribution": "

Updates a metric attribution.

", "UpdateRecommender": "

Updates the recommender to modify the recommender configuration. If you update the recommender to modify the columns used in training, Amazon Personalize automatically starts a full retraining of the models backing your recommender. While the update completes, you can still get recommendations from the recommender. The recommender uses the previous configuration until the update completes. To track the status of this update, use the latestRecommenderUpdate returned in the DescribeRecommender operation.

" @@ -295,6 +295,14 @@ "CreateBatchInferenceJobRequest$jobInput": "

The Amazon S3 path that leads to the input file to base your recommendations on. The input material must be in JSON format.

" } }, + "BatchInferenceJobMode": { + "base": null, + "refs": { + "BatchInferenceJob$batchInferenceJobMode": "

The job's mode.

", + "BatchInferenceJobSummary$batchInferenceJobMode": "

The job's mode.

", + "CreateBatchInferenceJobRequest$batchInferenceJobMode": "

The mode of the batch inference job. To generate descriptive themes for groups of similar items, set the job mode to THEME_GENERATION. If you don't want to generate themes, use the default BATCH_INFERENCE.

When you get batch recommendations with themes, you will incur additional costs. For more information, see Amazon Personalize pricing.

" + } + }, "BatchInferenceJobOutput": { "base": "

The output configuration parameters of a batch inference job.

", "refs": { @@ -349,9 +357,11 @@ "Boolean": { "base": null, "refs": { + "CampaignConfig$enableMetadataWithRecommendations": "

Whether metadata with recommendations is enabled for the campaign. If enabled, you can specify the columns from your Items dataset in your request for recommendations. Amazon Personalize returns this data for each item in the recommendation response.

If you enable metadata in recommendations, you will incur additional costs. For more information, see Amazon Personalize pricing.

", "CreateDatasetImportJobRequest$publishAttributionMetricsToS3": "

If you created a metric attribution, specify whether to publish metrics for this import job to Amazon S3

", "CreateSolutionRequest$performHPO": "

Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is false.

When performing AutoML, this parameter is always true and you should not set it to false.

", - "DatasetImportJob$publishAttributionMetricsToS3": "

Whether the job publishes metrics to Amazon S3 for a metric attribution.

" + "DatasetImportJob$publishAttributionMetricsToS3": "

Whether the job publishes metrics to Amazon S3 for a metric attribution.

", + "RecommenderConfig$enableMetadataWithRecommendations": "

Whether metadata with recommendations is enabled for the recommender. If enabled, you can specify the columns from your Items dataset in your request for recommendations. Amazon Personalize returns this data for each item in the recommendation response.

If you enable metadata in recommendations, you will incur additional costs. For more information, see Amazon Personalize pricing.

" } }, "Campaign": { @@ -415,7 +425,8 @@ "ColumnName": { "base": null, "refs": { - "ColumnNamesList$member": null + "ColumnNamesList$member": null, + "FieldsForThemeGeneration$itemName": "

The name of the Items dataset column that stores the name of each item in the dataset.

" } }, "ColumnNamesList": { @@ -629,7 +640,7 @@ } }, "DatasetGroup": { - "base": "

A dataset group is a collection of related datasets (Interactions, User, and Item). You create a dataset group by calling CreateDatasetGroup. You then create a dataset and add it to a dataset group by calling CreateDataset. The dataset group is used to create and train a solution by calling CreateSolution. A dataset group can contain only one of each type of dataset.

You can specify an Key Management Service (KMS) key to encrypt the datasets in the group.

", + "base": "

A dataset group is a collection of related datasets (Item interactions, Users, Items, Actions, Action interactions). You create a dataset group by calling CreateDatasetGroup. You then create a dataset and add it to a dataset group by calling CreateDataset. The dataset group is used to create and train a solution by calling CreateSolution. A dataset group can contain only one of each type of dataset.

You can specify an Key Management Service (KMS) key to encrypt the datasets in the group.

", "refs": { "DescribeDatasetGroupResponse$datasetGroup": "

A listing of the dataset group's properties.

" } @@ -685,8 +696,8 @@ "DatasetType": { "base": null, "refs": { - "CreateDatasetRequest$datasetType": "

The type of dataset.

One of the following (case insensitive) values:

", - "Dataset$datasetType": "

One of the following values:

", + "CreateDatasetRequest$datasetType": "

The type of dataset.

One of the following (case insensitive) values:

", + "Dataset$datasetType": "

One of the following values:

", "DatasetSummary$datasetType": "

The dataset type. One of the following values:

", "ExcludedDatasetColumns$key": null } @@ -1158,6 +1169,12 @@ "FeatureTransformation$defaultParameters": "

Provides the default parameters for feature transformation.

" } }, + "FieldsForThemeGeneration": { + "base": "

A string to string map of the configuration details for theme generation.

", + "refs": { + "ThemeGenerationConfig$fieldsForThemeGeneration": "

Fields used to generate descriptive themes for a batch inference job.

" + } + }, "Filter": { "base": "

Contains information on a recommendation filter, including its ARN, status, and filter expression.

", "refs": { @@ -1237,7 +1254,7 @@ "BatchInferenceJobConfig$itemExplorationConfig": "

A string to string map specifying the exploration configuration hyperparameters, including explorationWeight and explorationItemAgeCutOff, you want to use to configure the amount of item exploration Amazon Personalize uses when recommending items. See User-Personalization.

", "CampaignConfig$itemExplorationConfig": "

Specifies the exploration configuration hyperparameters, including explorationWeight and explorationItemAgeCutOff, you want to use to configure the amount of item exploration Amazon Personalize uses when recommending items. Provide itemExplorationConfig data only if your solution uses the User-Personalization recipe.

", "RecommenderConfig$itemExplorationConfig": "

Specifies the exploration configuration hyperparameters, including explorationWeight and explorationItemAgeCutOff, you want to use to configure the amount of item exploration Amazon Personalize uses when recommending items. Provide itemExplorationConfig data only if your recommenders generate personalized recommendations for a user (not popular items or similar items).

", - "SolutionConfig$algorithmHyperParameters": "

Lists the hyperparameter names and ranges.

", + "SolutionConfig$algorithmHyperParameters": "

Lists the algorithm hyperparameters and their values.

", "TunedHPOParams$algorithmHyperParameters": "

A list of the hyperparameter values of the best performing model.

" } }, @@ -1649,7 +1666,7 @@ "ListDatasetGroupsResponse$nextToken": "

A token for getting the next set of dataset groups (if they exist).

", "ListDatasetImportJobsRequest$nextToken": "

A token returned from the previous call to ListDatasetImportJobs for getting the next set of dataset import jobs (if they exist).

", "ListDatasetImportJobsResponse$nextToken": "

A token for getting the next set of dataset import jobs (if they exist).

", - "ListDatasetsRequest$nextToken": "

A token returned from the previous call to ListDatasetImportJobs for getting the next set of dataset import jobs (if they exist).

", + "ListDatasetsRequest$nextToken": "

A token returned from the previous call to ListDatasets for getting the next set of dataset import jobs (if they exist).

", "ListDatasetsResponse$nextToken": "

A token for getting the next set of datasets (if they exist).

", "ListEventTrackersRequest$nextToken": "

A token returned from the previous call to ListEventTrackers for getting the next set of event trackers (if they exist).

", "ListEventTrackersResponse$nextToken": "

A token for getting the next set of event trackers (if they exist).

", @@ -1826,7 +1843,7 @@ "CreateDatasetExportJobRequest$roleArn": "

The Amazon Resource Name (ARN) of the IAM service role that has permissions to add data to your output Amazon S3 bucket.

", "CreateDatasetGroupRequest$roleArn": "

The ARN of the Identity and Access Management (IAM) role that has permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.

", "CreateDatasetImportJobRequest$roleArn": "

The ARN of the IAM role that has permissions to read from the Amazon S3 data source.

", - "DatasetGroup$roleArn": "

The ARN of the IAM role that has permissions to create the dataset group.

", + "DatasetGroup$roleArn": "

The ARN of the Identity and Access Management (IAM) role that has permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.

", "MetricAttributionOutput$roleArn": "

The Amazon Resource Name (ARN) of the IAM service role that has permissions to add data to your output Amazon S3 bucket and add metrics to Amazon CloudWatch. For more information, see Measuring impact of recommendations.

" } }, @@ -2015,6 +2032,13 @@ "TagResourceRequest$tags": "

Tags to apply to the resource. For more information see Tagging Amazon Personalize recources.

" } }, + "ThemeGenerationConfig": { + "base": "

The configuration details for generating themes with a batch inference job.

", + "refs": { + "BatchInferenceJob$themeGenerationConfig": "

The job's theme generation settings.

", + "CreateBatchInferenceJobRequest$themeGenerationConfig": "

For theme generation jobs, specify the name of the column in your Items dataset that contains each item's name.

" + } + }, "TooManyTagKeysException": { "base": "

The request contains more tag keys than can be associated with a resource (50 tag keys per resource).

", "refs": { @@ -2029,6 +2053,7 @@ "base": null, "refs": { "CreateEventTrackerResponse$trackingId": "

The ID of the event tracker. Include this ID in requests to the PutEvents API.

", + "Dataset$trackingId": "

The ID of the event tracker for an Action interactions dataset. You specify the tracker's ID in the PutActionInteractions API operation. Amazon Personalize uses it to direct new data to the Action interactions dataset in your dataset group.

", "EventTracker$trackingId": "

The ID of the event tracker. Include this ID in requests to the PutEvents API.

" } }, @@ -2054,7 +2079,7 @@ "TrainingMode": { "base": null, "refs": { - "CreateSolutionVersionRequest$trainingMode": "

The scope of training to be performed when creating the solution version. The FULL option trains the solution version based on the entirety of the input solution's training data, while the UPDATE option processes only the data that has changed in comparison to the input solution. Choose UPDATE when you want to incrementally update your solution version instead of creating an entirely new one.

The UPDATE option can only be used when you already have an active solution version created from the input solution using the FULL option and the input solution was trained with the User-Personalization recipe or the HRNN-Coldstart recipe.

", + "CreateSolutionVersionRequest$trainingMode": "

The scope of training to be performed when creating the solution version. The default is FULL. This creates a completely new model based on the entirety of the training data from the datasets in your dataset group.

If you use User-Personalization, you can specify a training mode of UPDATE. This updates the model to consider new items for recommendations. It is not a full retraining. You should still complete a full retraining weekly. If you specify UPDATE, Amazon Personalize will stop automatic updates for the solution version. To resume updates, create a new solution with training mode set to FULL and deploy it in a campaign. For more information about automatic updates, see Automatic updates.

The UPDATE option can only be used when you already have an active solution version created from the input solution using the FULL option and the input solution was trained with the User-Personalization recipe or the legacy HRNN-Coldstart recipe.

", "SolutionVersion$trainingMode": "

The scope of training to be performed when creating the solution version. The FULL option trains the solution version based on the entirety of the input solution's training data, while the UPDATE option processes only the data that has changed in comparison to the input solution. Choose UPDATE when you want to incrementally update your solution version instead of creating an entirely new one.

The UPDATE option can only be used when you already have an active solution version created from the input solution using the FULL option and the input solution was trained with the User-Personalization recipe or the HRNN-Coldstart recipe.

" } }, diff --git a/apis/personalize/2018-05-22/endpoint-rule-set-1.json b/apis/personalize/2018-05-22/endpoint-rule-set-1.json index 9f3400b9f79..dbe0c958c0d 100644 --- a/apis/personalize/2018-05-22/endpoint-rule-set-1.json +++ b/apis/personalize/2018-05-22/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/quicksight/2018-04-01/api-2.json b/apis/quicksight/2018-04-01/api-2.json index 560f54c5abd..ae48e3c0722 100644 --- a/apis/quicksight/2018-04-01/api-2.json +++ b/apis/quicksight/2018-04-01/api-2.json @@ -661,6 +661,22 @@ {"shape":"InternalFailureException"} ] }, + "DeleteIdentityPropagationConfig":{ + "name":"DeleteIdentityPropagationConfig", + "http":{ + "method":"DELETE", + "requestUri":"/accounts/{AwsAccountId}/identity-propagation-config/{Service}" + }, + "input":{"shape":"DeleteIdentityPropagationConfigRequest"}, + "output":{"shape":"DeleteIdentityPropagationConfigResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalFailureException"} + ] + }, "DeleteNamespace":{ "name":"DeleteNamespace", "http":{ @@ -1907,6 +1923,22 @@ {"shape":"InternalFailureException"} ] }, + "ListIdentityPropagationConfigs":{ + "name":"ListIdentityPropagationConfigs", + "http":{ + "method":"GET", + "requestUri":"/accounts/{AwsAccountId}/identity-propagation-config" + }, + "input":{"shape":"ListIdentityPropagationConfigsRequest"}, + "output":{"shape":"ListIdentityPropagationConfigsResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalFailureException"} + ] + }, "ListIngestions":{ "name":"ListIngestions", "http":{ @@ -2708,6 +2740,22 @@ {"shape":"InternalFailureException"} ] }, + "UpdateIdentityPropagationConfig":{ + "name":"UpdateIdentityPropagationConfig", + "http":{ + "method":"POST", + "requestUri":"/accounts/{AwsAccountId}/identity-propagation-config/{Service}" + }, + "input":{"shape":"UpdateIdentityPropagationConfigRequest"}, + "output":{"shape":"UpdateIdentityPropagationConfigResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalFailureException"} + ] + }, "UpdateIpRestriction":{ "name":"UpdateIpRestriction", "http":{ @@ -4189,6 +4237,21 @@ "type":"list", "member":{"shape":"AuthorSpecifiedAggregation"} }, + "AuthorizedTargetsByService":{ + "type":"structure", + "members":{ + "Service":{"shape":"ServiceType"}, + "AuthorizedTargets":{"shape":"AuthorizedTargetsList"} + } + }, + "AuthorizedTargetsByServices":{ + "type":"list", + "member":{"shape":"AuthorizedTargetsByService"} + }, + "AuthorizedTargetsList":{ + "type":"list", + "member":{"shape":"String"} + }, "AwsAccountId":{ "type":"string", "max":12, @@ -7927,6 +7990,35 @@ } } }, + "DeleteIdentityPropagationConfigRequest":{ + "type":"structure", + "required":[ + "AwsAccountId", + "Service" + ], + "members":{ + "AwsAccountId":{ + "shape":"AwsAccountId", + "location":"uri", + "locationName":"AwsAccountId" + }, + "Service":{ + "shape":"ServiceType", + "location":"uri", + "locationName":"Service" + } + } + }, + "DeleteIdentityPropagationConfigResponse":{ + "type":"structure", + "members":{ + "RequestId":{"shape":"String"}, + "Status":{ + "shape":"StatusCode", + "location":"statusCode" + } + } + }, "DeleteNamespaceRequest":{ "type":"structure", "required":[ @@ -11727,6 +11819,15 @@ "X" ] }, + "IdentityCenterConfiguration":{ + "type":"structure", + "members":{ + "EnableIdentityPropagation":{ + "shape":"Boolean", + "box":true + } + } + }, "IdentityMap":{ "type":"map", "key":{"shape":"String"}, @@ -13010,6 +13111,45 @@ } } }, + "ListIdentityPropagationConfigsRequest":{ + "type":"structure", + "required":["AwsAccountId"], + "members":{ + "AwsAccountId":{ + "shape":"AwsAccountId", + "location":"uri", + "locationName":"AwsAccountId" + }, + "MaxResults":{ + "shape":"ListIdentityPropagationMaxResults", + "box":true, + "location":"querystring", + "locationName":"max-results" + }, + "NextToken":{ + "shape":"String", + "location":"querystring", + "locationName":"next-token" + } + } + }, + "ListIdentityPropagationConfigsResponse":{ + "type":"structure", + "members":{ + "Services":{"shape":"AuthorizedTargetsByServices"}, + "NextToken":{"shape":"String"}, + "Status":{ + "shape":"StatusCode", + "location":"statusCode" + }, + "RequestId":{"shape":"String"} + } + }, + "ListIdentityPropagationMaxResults":{ + "type":"integer", + "max":10, + "min":1 + }, "ListIngestionsRequest":{ "type":"structure", "required":[ @@ -15321,7 +15461,8 @@ "Port":{"shape":"OptionalPort"}, "Database":{"shape":"Database"}, "ClusterId":{"shape":"ClusterId"}, - "IAMParameters":{"shape":"RedshiftIAMParameters"} + "IAMParameters":{"shape":"RedshiftIAMParameters"}, + "IdentityCenterConfiguration":{"shape":"IdentityCenterConfiguration"} } }, "ReferenceLine":{ @@ -16492,6 +16633,10 @@ "SiteBaseUrl":{"shape":"SiteBaseUrl"} } }, + "ServiceType":{ + "type":"string", + "enum":["REDSHIFT"] + }, "SessionLifetimeInMinutes":{ "type":"long", "max":600, @@ -19437,6 +19582,36 @@ } } }, + "UpdateIdentityPropagationConfigRequest":{ + "type":"structure", + "required":[ + "AwsAccountId", + "Service" + ], + "members":{ + "AwsAccountId":{ + "shape":"AwsAccountId", + "location":"uri", + "locationName":"AwsAccountId" + }, + "Service":{ + "shape":"ServiceType", + "location":"uri", + "locationName":"Service" + }, + "AuthorizedTargets":{"shape":"AuthorizedTargetsList"} + } + }, + "UpdateIdentityPropagationConfigResponse":{ + "type":"structure", + "members":{ + "RequestId":{"shape":"String"}, + "Status":{ + "shape":"StatusCode", + "location":"statusCode" + } + } + }, "UpdateIpRestrictionRequest":{ "type":"structure", "required":["AwsAccountId"], diff --git a/apis/quicksight/2018-04-01/docs-2.json b/apis/quicksight/2018-04-01/docs-2.json index 8e323781e87..f3664c0f632 100644 --- a/apis/quicksight/2018-04-01/docs-2.json +++ b/apis/quicksight/2018-04-01/docs-2.json @@ -37,6 +37,7 @@ "DeleteGroup": "

Removes a user group from Amazon QuickSight.

", "DeleteGroupMembership": "

Removes a user from a group so that the user is no longer a member of the group.

", "DeleteIAMPolicyAssignment": "

Deletes an existing IAM policy assignment.

", + "DeleteIdentityPropagationConfig": "

Deletes all access scopes and authorized targets that are associated with a service from the Amazon QuickSight IAM Identity Center application.

This operation is only supported for Amazon QuickSight accounts that use IAM Identity Center.

", "DeleteNamespace": "

Deletes a namespace and the users and groups that are associated with the namespace. This is an asynchronous process. Assets including dashboards, analyses, datasets and data sources are not deleted. To delete these assets, you use the API operations for the relevant asset.

", "DeleteRefreshSchedule": "

Deletes a refresh schedule from a dataset.

", "DeleteRoleCustomPermission": "

Removes custom permissions from the role.

", @@ -109,6 +110,7 @@ "ListGroups": "

Lists all user groups in Amazon QuickSight.

", "ListIAMPolicyAssignments": "

Lists the IAM policy assignments in the current Amazon QuickSight account.

", "ListIAMPolicyAssignmentsForUser": "

Lists all of the IAM policy assignments, including the Amazon Resource Names (ARNs), for the IAM policies assigned to the specified user and group, or groups that the user belongs to.

", + "ListIdentityPropagationConfigs": "

Lists all services and authorized targets that the Amazon QuickSight IAM Identity Center application can access.

This operation is only supported for Amazon QuickSight accounts that use IAM Identity Center.

", "ListIngestions": "

Lists the history of SPICE ingestions for a dataset.

", "ListNamespaces": "

Lists the namespaces for the specified Amazon Web Services account. This operation doesn't list deleted namespaces.

", "ListRefreshSchedules": "

Lists the refresh schedules of a dataset. Each dataset can have up to 5 schedules.

", @@ -154,6 +156,7 @@ "UpdateFolderPermissions": "

Updates permissions of a folder.

", "UpdateGroup": "

Changes a group description.

", "UpdateIAMPolicyAssignment": "

Updates an existing IAM policy assignment. This operation updates only the optional parameter or parameters that are specified in the request. This overwrites all of the users included in Identities.

", + "UpdateIdentityPropagationConfig": "

Adds or updates services and authorized targets to configure what the Amazon QuickSight IAM Identity Center application can access.

This operation is only supported for Amazon QuickSight accounts using IAM Identity Center

", "UpdateIpRestriction": "

Updates the content and status of IP rules. To use this operation, you must provide the entire map of rules. You can use the DescribeIpRestriction operation to get the current rule map.

", "UpdatePublicSharingSettings": "

Use the UpdatePublicSharingSettings operation to turn on or turn off the public sharing settings of an Amazon QuickSight dashboard.

To use this operation, turn on session capacity pricing for your Amazon QuickSight account.

Before you can turn on public sharing on your account, make sure to give public sharing permissions to an administrative user in the Identity and Access Management (IAM) console. For more information on using IAM with Amazon QuickSight, see Using Amazon QuickSight with IAM in the Amazon QuickSight User Guide.

", "UpdateRefreshSchedule": "

Updates a refresh schedule for a dataset.

", @@ -1348,6 +1351,25 @@ "TopicColumn$NotAllowedAggregations": "

The list of aggregation types that are not allowed for the column. Valid values for this structure are COUNT, DISTINCT_COUNT, MIN, MAX, MEDIAN, SUM, AVERAGE, STDEV, STDEVP, VAR, VARP, and PERCENTILE.

" } }, + "AuthorizedTargetsByService": { + "base": "

The authorized targets that are associated with a service.

", + "refs": { + "AuthorizedTargetsByServices$member": null + } + }, + "AuthorizedTargetsByServices": { + "base": null, + "refs": { + "ListIdentityPropagationConfigsResponse$Services": "

A list of services and their authorized targets that the Amazon QuickSight IAM Identity Center application can access.

" + } + }, + "AuthorizedTargetsList": { + "base": null, + "refs": { + "AuthorizedTargetsByService$AuthorizedTargets": "

Aist of authorized targets that are represented by IAM Identity Center application ARNs.

", + "UpdateIdentityPropagationConfigRequest$AuthorizedTargets": "

Specifies a list of application ARNs that represent the authorized targets for a service.

" + } + }, "AwsAccountId": { "base": null, "refs": { @@ -1387,6 +1409,7 @@ "DeleteGroupMembershipRequest$AwsAccountId": "

The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon QuickSight account.

", "DeleteGroupRequest$AwsAccountId": "

The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon QuickSight account.

", "DeleteIAMPolicyAssignmentRequest$AwsAccountId": "

The Amazon Web Services account ID where you want to delete the IAM policy assignment.

", + "DeleteIdentityPropagationConfigRequest$AwsAccountId": "

The ID of the Amazon Web Services account that you want to delete an identity propagation configuration from.

", "DeleteNamespaceRequest$AwsAccountId": "

The ID for the Amazon Web Services account that you want to delete the Amazon QuickSight namespace from.

", "DeleteRefreshScheduleRequest$AwsAccountId": "

The Amazon Web Services account ID.

", "DeleteRoleCustomPermissionRequest$AwsAccountId": "

The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon QuickSight account.

", @@ -1464,6 +1487,7 @@ "ListGroupsRequest$AwsAccountId": "

The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon QuickSight account.

", "ListIAMPolicyAssignmentsForUserRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contains the assignments.

", "ListIAMPolicyAssignmentsRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contains these IAM policy assignments.

", + "ListIdentityPropagationConfigsRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contain the identity propagation configurations of.

", "ListIngestionsRequest$AwsAccountId": "

The Amazon Web Services account ID.

", "ListNamespacesRequest$AwsAccountId": "

The ID for the Amazon Web Services account that contains the Amazon QuickSight namespaces that you want to list.

", "ListRefreshSchedulesRequest$AwsAccountId": "

The Amazon Web Services account ID.

", @@ -1507,6 +1531,7 @@ "UpdateFolderRequest$AwsAccountId": "

The ID for the Amazon Web Services account that contains the folder to update.

", "UpdateGroupRequest$AwsAccountId": "

The ID for the Amazon Web Services account that the group is in. Currently, you use the ID for the Amazon Web Services account that contains your Amazon QuickSight account.

", "UpdateIAMPolicyAssignmentRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contains the IAM policy assignment.

", + "UpdateIdentityPropagationConfigRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contains the identity propagation configuration that you want to update.

", "UpdateIpRestrictionRequest$AwsAccountId": "

The ID of the Amazon Web Services account that contains the IP rules.

", "UpdateIpRestrictionResponse$AwsAccountId": "

The ID of the Amazon Web Services account that contains the IP rules.

", "UpdatePublicSharingSettingsRequest$AwsAccountId": "

The Amazon Web Services account ID associated with your Amazon QuickSight subscription.

", @@ -1770,6 +1795,7 @@ "GetDashboardEmbedUrlRequest$ResetDisabled": "

Remove the reset button on the embedded dashboard. The default is FALSE, which enables the reset button.

", "GetDashboardEmbedUrlRequest$StatePersistenceEnabled": "

Adds persistence of state for the user session in an embedded dashboard. Persistence applies to the sheet and the parameter settings. These are control settings that the dashboard subscriber (Amazon QuickSight reader) chooses while viewing the dashboard. If this is set to TRUE, the settings are the same when the subscriber reopens the same dashboard URL. The state is stored in Amazon QuickSight, not in a browser cookie. If this is set to FALSE, the state of the user session is not persisted. The default is FALSE.

", "GutterStyle$Show": "

This Boolean value controls whether to display a gutter space between sheet tiles.

", + "IdentityCenterConfiguration$EnableIdentityPropagation": "

A Boolean option that controls whether Trusted Identity Propagation should be used.

", "JoinKeyProperties$UniqueKey": "

A value that indicates that a row in a table is uniquely identified by the columns in a join key. This is used by Amazon QuickSight to optimize query performance.

", "MarginStyle$Show": "

This Boolean value controls whether to display sheet margins.

", "NumericRangeFilter$IncludeMinimum": "

Determines whether the minimum value in the filter value range should be included in the filtered results.

", @@ -3956,6 +3982,16 @@ "refs": { } }, + "DeleteIdentityPropagationConfigRequest": { + "base": null, + "refs": { + } + }, + "DeleteIdentityPropagationConfigResponse": { + "base": null, + "refs": { + } + }, "DeleteNamespaceRequest": { "base": null, "refs": { @@ -6083,6 +6119,12 @@ "ConditionalFormattingCustomIconOptions$Icon": "

Determines the type of icon.

" } }, + "IdentityCenterConfiguration": { + "base": "

The parameters for an IAM Identity Center configuration.

", + "refs": { + "RedshiftParameters$IdentityCenterConfiguration": "

An optional parameter that configures IAM Identity Center authentication to grant Amazon QuickSight access to your cluster.

This parameter can only be specified if your Amazon QuickSight account is configured with IAM Identity Center.

" + } + }, "IdentityMap": { "base": null, "refs": { @@ -6865,6 +6907,22 @@ "refs": { } }, + "ListIdentityPropagationConfigsRequest": { + "base": null, + "refs": { + } + }, + "ListIdentityPropagationConfigsResponse": { + "base": null, + "refs": { + } + }, + "ListIdentityPropagationMaxResults": { + "base": null, + "refs": { + "ListIdentityPropagationConfigsRequest$MaxResults": "

The maximum number of results to be returned.

" + } + }, "ListIngestionsRequest": { "base": null, "refs": { @@ -9482,6 +9540,14 @@ "DataSourceParameters$ServiceNowParameters": "

The parameters for ServiceNow.

" } }, + "ServiceType": { + "base": null, + "refs": { + "AuthorizedTargetsByService$Service": "

The name of the Amazon Web Services service.

", + "DeleteIdentityPropagationConfigRequest$Service": "

The name of the Amazon Web Services service that you want to delete the associated access scopes and authorized targets from.

", + "UpdateIdentityPropagationConfigRequest$Service": "

The name of the Amazon Web Services service that contains the authorized targets that you want to add or update.

" + } + }, "SessionLifetimeInMinutes": { "base": null, "refs": { @@ -10362,6 +10428,7 @@ "DeleteGroupMembershipResponse$Status": "

The HTTP status of the request.

", "DeleteGroupResponse$Status": "

The HTTP status of the request.

", "DeleteIAMPolicyAssignmentResponse$Status": "

The HTTP status of the request.

", + "DeleteIdentityPropagationConfigResponse$Status": "

The HTTP status of the request.

", "DeleteNamespaceResponse$Status": "

The HTTP status of the request.

", "DeleteRefreshScheduleResponse$Status": "

The HTTP status of the request.

", "DeleteRoleCustomPermissionResponse$Status": "

The HTTP status of the request.

", @@ -10434,6 +10501,7 @@ "ListGroupsResponse$Status": "

The HTTP status of the request.

", "ListIAMPolicyAssignmentsForUserResponse$Status": "

The HTTP status of the request.

", "ListIAMPolicyAssignmentsResponse$Status": "

The HTTP status of the request.

", + "ListIdentityPropagationConfigsResponse$Status": "

The HTTP status of the request.

", "ListIngestionsResponse$Status": "

The HTTP status of the request.

", "ListNamespacesResponse$Status": "

The HTTP status of the request.

", "ListRefreshSchedulesResponse$Status": "

The HTTP status of the request.

", @@ -10479,6 +10547,7 @@ "UpdateFolderResponse$Status": "

The HTTP status of the request.

", "UpdateGroupResponse$Status": "

The HTTP status of the request.

", "UpdateIAMPolicyAssignmentResponse$Status": "

The HTTP status of the request.

", + "UpdateIdentityPropagationConfigResponse$Status": "

The HTTP status of the request.

", "UpdateIpRestrictionResponse$Status": "

The HTTP status of the request.

", "UpdatePublicSharingSettingsResponse$Status": "

The HTTP status of the request.

", "UpdateRefreshScheduleResponse$Status": "

The HTTP status of the request.

", @@ -10514,6 +10583,7 @@ "AssetBundleImportJobResourceIdOverrideConfiguration$PrefixForAllResources": "

An option to request a CloudFormation variable for a prefix to be prepended to each resource's ID before import. The prefix is only added to the asset IDs and does not change the name of the asset.

", "AssetOptions$Timezone": "

Determines the timezone for the analysis.

", "AttributeAggregationFunction$ValueForMultipleValues": "

Used by the UNIQUE_VALUE aggregation function. If there are multiple values for the field used by the aggregation, the value for this property will be returned instead. Defaults to '*'.

", + "AuthorizedTargetsList$member": null, "AxisLabelOptions$CustomLabel": "

The text for the axis label.

", "CancelIngestionRequest$DataSetId": "

The ID of the dataset used in the ingestion.

", "CancelIngestionResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", @@ -10581,6 +10651,7 @@ "DeleteGroupMembershipResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "DeleteGroupResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "DeleteIAMPolicyAssignmentResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", + "DeleteIdentityPropagationConfigResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "DeleteNamespaceResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "DeleteRefreshScheduleRequest$ScheduleId": "

The ID of the refresh schedule.

", "DeleteRefreshScheduleResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", @@ -10712,6 +10783,9 @@ "ListIAMPolicyAssignmentsRequest$NextToken": "

The token for the next set of results, or null if there are no more results.

", "ListIAMPolicyAssignmentsResponse$NextToken": "

The token for the next set of results, or null if there are no more results.

", "ListIAMPolicyAssignmentsResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", + "ListIdentityPropagationConfigsRequest$NextToken": "

The token for the next set of results, or null if there are no more results.

", + "ListIdentityPropagationConfigsResponse$NextToken": "

The token for the next set of results, or null if there are no more results.

", + "ListIdentityPropagationConfigsResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "ListIngestionsRequest$DataSetId": "

The ID of the dataset used in the ingestion.

", "ListIngestionsRequest$NextToken": "

The token for the next set of results, or null if there are no more results.

", "ListIngestionsResponse$NextToken": "

The token for the next set of results, or null if there are no more results.

", @@ -10854,6 +10928,7 @@ "UpdateGroupResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "UpdateIAMPolicyAssignmentResponse$AssignmentId": "

The ID of the assignment.

", "UpdateIAMPolicyAssignmentResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", + "UpdateIdentityPropagationConfigResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "UpdateIpRestrictionResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "UpdatePublicSharingSettingsResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", "UpdateRefreshScheduleResponse$RequestId": "

The Amazon Web Services request ID for this operation.

", @@ -12382,6 +12457,16 @@ "refs": { } }, + "UpdateIdentityPropagationConfigRequest": { + "base": null, + "refs": { + } + }, + "UpdateIdentityPropagationConfigResponse": { + "base": null, + "refs": { + } + }, "UpdateIpRestrictionRequest": { "base": null, "refs": { diff --git a/apis/redshift/2012-12-01/api-2.json b/apis/redshift/2012-12-01/api-2.json index a07bb904763..8ad963fcb6d 100644 --- a/apis/redshift/2012-12-01/api-2.json +++ b/apis/redshift/2012-12-01/api-2.json @@ -2413,7 +2413,8 @@ "DataShareArn":{"shape":"String"}, "AssociateEntireAccount":{"shape":"BooleanOptional"}, "ConsumerArn":{"shape":"String"}, - "ConsumerRegion":{"shape":"String"} + "ConsumerRegion":{"shape":"String"}, + "AllowWrites":{"shape":"BooleanOptional"} } }, "AssociatedClusterList":{ @@ -2579,7 +2580,8 @@ ], "members":{ "DataShareArn":{"shape":"String"}, - "ConsumerIdentifier":{"shape":"String"} + "ConsumerIdentifier":{"shape":"String"}, + "AllowWrites":{"shape":"BooleanOptional"} } }, "AuthorizeEndpointAccessMessage":{ @@ -3692,7 +3694,9 @@ "Status":{"shape":"DataShareStatus"}, "ConsumerRegion":{"shape":"String"}, "CreatedDate":{"shape":"TStamp"}, - "StatusChangeDate":{"shape":"TStamp"} + "StatusChangeDate":{"shape":"TStamp"}, + "ProducerAllowedWrites":{"shape":"BooleanOptional"}, + "ConsumerAcceptedWrites":{"shape":"BooleanOptional"} } }, "DataShareAssociationList":{ diff --git a/apis/redshift/2012-12-01/docs-2.json b/apis/redshift/2012-12-01/docs-2.json index 384335111ac..efb607c3071 100644 --- a/apis/redshift/2012-12-01/docs-2.json +++ b/apis/redshift/2012-12-01/docs-2.json @@ -448,6 +448,8 @@ "base": null, "refs": { "AssociateDataShareConsumerMessage$AssociateEntireAccount": "

A value that specifies whether the datashare is associated with the entire account.

", + "AssociateDataShareConsumerMessage$AllowWrites": "

If set to true, allows write operations for a datashare.

", + "AuthorizeDataShareMessage$AllowWrites": "

If set to true, allows write operations for a datashare.

", "CreateClusterMessage$AllowVersionUpgrade": "

If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.

When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.

Default: true

", "CreateClusterMessage$PubliclyAccessible": "

If true, the cluster can be accessed from a public network.

", "CreateClusterMessage$Encrypted": "

If true, the data in the cluster is encrypted at rest.

Default: false

", @@ -458,6 +460,8 @@ "CreateEventSubscriptionMessage$Enabled": "

A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.

", "CreateScheduledActionMessage$Enable": "

If true, the schedule is enabled. If false, the scheduled action does not trigger. For more information about state of the scheduled action, see ScheduledAction.

", "CreateSnapshotScheduleMessage$DryRun": "

", + "DataShareAssociation$ProducerAllowedWrites": "

Specifies whether write operations were allowed during data share authorization.

", + "DataShareAssociation$ConsumerAcceptedWrites": "

Specifies whether write operations were allowed during data share association.

", "DescribeClusterSnapshotsMessage$ClusterExists": "

A value that indicates whether to return snapshots only for an existing cluster. You can perform table-level restore only by using a snapshot of an existing cluster, that is, a cluster that has not been deleted. Values for this parameter work as follows:

", "DescribeEndpointAuthorizationMessage$Grantee": "

Indicates whether to check authorization from a grantor or grantee point of view. If true, Amazon Redshift returns endpoint authorizations that you've been granted. If false (default), checks authorization from a grantor point of view.

", "DescribeScheduledActionsMessage$Active": "

If true, retrieve only active scheduled actions. If false, retrieve only disabled scheduled actions.

", diff --git a/apis/repostspace/2022-05-13/api-2.json b/apis/repostspace/2022-05-13/api-2.json new file mode 100644 index 00000000000..2fb54cc4b08 --- /dev/null +++ b/apis/repostspace/2022-05-13/api-2.json @@ -0,0 +1,766 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2022-05-13", + "endpointPrefix":"repostspace", + "jsonVersion":"1.1", + "protocol":"rest-json", + "serviceFullName":"AWS re:Post Private", + "serviceId":"repostspace", + "signatureVersion":"v4", + "signingName":"repostspace", + "uid":"repostspace-2022-05-13" + }, + "operations":{ + "CreateSpace":{ + "name":"CreateSpace", + "http":{ + "method":"POST", + "requestUri":"/spaces", + "responseCode":200 + }, + "input":{"shape":"CreateSpaceInput"}, + "output":{"shape":"CreateSpaceOutput"}, + "errors":[ + {"shape":"ServiceQuotaExceededException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "DeleteSpace":{ + "name":"DeleteSpace", + "http":{ + "method":"DELETE", + "requestUri":"/spaces/{spaceId}", + "responseCode":200 + }, + "input":{"shape":"DeleteSpaceInput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "DeregisterAdmin":{ + "name":"DeregisterAdmin", + "http":{ + "method":"DELETE", + "requestUri":"/spaces/{spaceId}/admins/{adminId}", + "responseCode":200 + }, + "input":{"shape":"DeregisterAdminInput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "GetSpace":{ + "name":"GetSpace", + "http":{ + "method":"GET", + "requestUri":"/spaces/{spaceId}", + "responseCode":200 + }, + "input":{"shape":"GetSpaceInput"}, + "output":{"shape":"GetSpaceOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ] + }, + "ListSpaces":{ + "name":"ListSpaces", + "http":{ + "method":"GET", + "requestUri":"/spaces", + "responseCode":200 + }, + "input":{"shape":"ListSpacesInput"}, + "output":{"shape":"ListSpacesOutput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ] + }, + "ListTagsForResource":{ + "name":"ListTagsForResource", + "http":{ + "method":"GET", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"ListTagsForResourceRequest"}, + "output":{"shape":"ListTagsForResourceResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ] + }, + "RegisterAdmin":{ + "name":"RegisterAdmin", + "http":{ + "method":"POST", + "requestUri":"/spaces/{spaceId}/admins/{adminId}", + "responseCode":200 + }, + "input":{"shape":"RegisterAdminInput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "SendInvites":{ + "name":"SendInvites", + "http":{ + "method":"POST", + "requestUri":"/spaces/{spaceId}/invite", + "responseCode":200 + }, + "input":{"shape":"SendInvitesInput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "TagResource":{ + "name":"TagResource", + "http":{ + "method":"POST", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"TagResourceRequest"}, + "output":{"shape":"TagResourceResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "UntagResource":{ + "name":"UntagResource", + "http":{ + "method":"DELETE", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"UntagResourceRequest"}, + "output":{"shape":"UntagResourceResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + }, + "UpdateSpace":{ + "name":"UpdateSpace", + "http":{ + "method":"PUT", + "requestUri":"/spaces/{spaceId}", + "responseCode":200 + }, + "input":{"shape":"UpdateSpaceInput"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "idempotent":true + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"} + }, + "error":{ + "httpStatusCode":403, + "senderFault":true + }, + "exception":true + }, + "AccessorId":{"type":"string"}, + "AccessorIdList":{ + "type":"list", + "member":{"shape":"AccessorId"}, + "max":1000, + "min":0 + }, + "AdminId":{"type":"string"}, + "Arn":{ + "type":"string", + "max":2048, + "min":20 + }, + "ClientId":{"type":"string"}, + "ConfigurationStatus":{ + "type":"string", + "enum":[ + "CONFIGURED", + "UNCONFIGURED" + ] + }, + "ConflictException":{ + "type":"structure", + "required":[ + "message", + "resourceId", + "resourceType" + ], + "members":{ + "message":{"shape":"String"}, + "resourceId":{"shape":"String"}, + "resourceType":{"shape":"String"} + }, + "error":{ + "httpStatusCode":409, + "senderFault":true + }, + "exception":true + }, + "ContentSize":{ + "type":"long", + "box":true + }, + "CreateSpaceInput":{ + "type":"structure", + "required":[ + "name", + "subdomain", + "tier" + ], + "members":{ + "description":{"shape":"SpaceDescription"}, + "name":{"shape":"SpaceName"}, + "roleArn":{"shape":"Arn"}, + "subdomain":{"shape":"SpaceSubdomain"}, + "tags":{"shape":"Tags"}, + "tier":{"shape":"TierLevel"}, + "userKMSKey":{"shape":"KMSKey"} + } + }, + "CreateSpaceOutput":{ + "type":"structure", + "required":["spaceId"], + "members":{ + "spaceId":{"shape":"SpaceId"} + } + }, + "DeleteSpaceInput":{ + "type":"structure", + "required":["spaceId"], + "members":{ + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + } + } + }, + "DeregisterAdminInput":{ + "type":"structure", + "required":[ + "adminId", + "spaceId" + ], + "members":{ + "adminId":{ + "shape":"AdminId", + "location":"uri", + "locationName":"adminId" + }, + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + } + } + }, + "GetSpaceInput":{ + "type":"structure", + "required":["spaceId"], + "members":{ + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + } + } + }, + "GetSpaceOutput":{ + "type":"structure", + "required":[ + "arn", + "clientId", + "configurationStatus", + "createDateTime", + "name", + "randomDomain", + "spaceId", + "status", + "storageLimit", + "tier", + "vanityDomain", + "vanityDomainStatus" + ], + "members":{ + "arn":{"shape":"Arn"}, + "clientId":{"shape":"ClientId"}, + "configurationStatus":{"shape":"ConfigurationStatus"}, + "contentSize":{"shape":"ContentSize"}, + "createDateTime":{"shape":"SyntheticTimestamp_date_time"}, + "customerRoleArn":{"shape":"Arn"}, + "deleteDateTime":{"shape":"SyntheticTimestamp_date_time"}, + "description":{"shape":"SpaceDescription"}, + "groupAdmins":{"shape":"GroupAdmins"}, + "name":{"shape":"SpaceName"}, + "randomDomain":{"shape":"Url"}, + "spaceId":{"shape":"SpaceId"}, + "status":{"shape":"ProvisioningStatus"}, + "storageLimit":{"shape":"StorageLimit"}, + "tier":{"shape":"TierLevel"}, + "userAdmins":{"shape":"UserAdmins"}, + "userCount":{"shape":"UserCount"}, + "userKMSKey":{"shape":"KMSKey"}, + "vanityDomain":{"shape":"Url"}, + "vanityDomainStatus":{"shape":"VanityDomainStatus"} + } + }, + "GroupAdmins":{ + "type":"list", + "member":{"shape":"AdminId"} + }, + "Integer":{ + "type":"integer", + "box":true + }, + "InternalServerException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"}, + "retryAfterSeconds":{ + "shape":"Integer", + "location":"header", + "locationName":"Retry-After" + } + }, + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true, + "retryable":{"throttling":false} + }, + "InviteBody":{ + "type":"string", + "max":600, + "min":1, + "sensitive":true + }, + "InviteTitle":{ + "type":"string", + "max":200, + "min":1, + "sensitive":true + }, + "KMSKey":{"type":"string"}, + "ListSpacesInput":{ + "type":"structure", + "members":{ + "maxResults":{ + "shape":"ListSpacesLimit", + "location":"querystring", + "locationName":"maxResults" + }, + "nextToken":{ + "shape":"String", + "location":"querystring", + "locationName":"nextToken" + } + } + }, + "ListSpacesLimit":{ + "type":"integer", + "box":true, + "max":100, + "min":1 + }, + "ListSpacesOutput":{ + "type":"structure", + "required":["spaces"], + "members":{ + "nextToken":{"shape":"String"}, + "spaces":{"shape":"SpacesList"} + } + }, + "ListTagsForResourceRequest":{ + "type":"structure", + "required":["resourceArn"], + "members":{ + "resourceArn":{ + "shape":"Arn", + "location":"uri", + "locationName":"resourceArn" + } + } + }, + "ListTagsForResourceResponse":{ + "type":"structure", + "members":{ + "tags":{"shape":"Tags"} + } + }, + "ProvisioningStatus":{ + "type":"string", + "max":30, + "min":1 + }, + "RegisterAdminInput":{ + "type":"structure", + "required":[ + "adminId", + "spaceId" + ], + "members":{ + "adminId":{ + "shape":"AdminId", + "location":"uri", + "locationName":"adminId" + }, + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + } + } + }, + "ResourceNotFoundException":{ + "type":"structure", + "required":[ + "message", + "resourceId", + "resourceType" + ], + "members":{ + "message":{"shape":"String"}, + "resourceId":{"shape":"String"}, + "resourceType":{"shape":"String"} + }, + "error":{ + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "SendInvitesInput":{ + "type":"structure", + "required":[ + "accessorIds", + "body", + "spaceId", + "title" + ], + "members":{ + "accessorIds":{"shape":"AccessorIdList"}, + "body":{"shape":"InviteBody"}, + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + }, + "title":{"shape":"InviteTitle"} + } + }, + "ServiceQuotaExceededException":{ + "type":"structure", + "required":[ + "message", + "quotaCode", + "resourceId", + "resourceType", + "serviceCode" + ], + "members":{ + "message":{"shape":"String"}, + "quotaCode":{"shape":"String"}, + "resourceId":{"shape":"String"}, + "resourceType":{"shape":"String"}, + "serviceCode":{"shape":"String"} + }, + "error":{ + "httpStatusCode":402, + "senderFault":true + }, + "exception":true + }, + "SpaceData":{ + "type":"structure", + "required":[ + "arn", + "configurationStatus", + "createDateTime", + "name", + "randomDomain", + "spaceId", + "status", + "storageLimit", + "tier", + "vanityDomain", + "vanityDomainStatus" + ], + "members":{ + "arn":{"shape":"Arn"}, + "configurationStatus":{"shape":"ConfigurationStatus"}, + "contentSize":{"shape":"ContentSize"}, + "createDateTime":{"shape":"SyntheticTimestamp_date_time"}, + "deleteDateTime":{"shape":"SyntheticTimestamp_date_time"}, + "description":{"shape":"SpaceDescription"}, + "name":{"shape":"SpaceName"}, + "randomDomain":{"shape":"Url"}, + "spaceId":{"shape":"SpaceId"}, + "status":{"shape":"ProvisioningStatus"}, + "storageLimit":{"shape":"StorageLimit"}, + "tier":{"shape":"TierLevel"}, + "userCount":{"shape":"UserCount"}, + "userKMSKey":{"shape":"KMSKey"}, + "vanityDomain":{"shape":"Url"}, + "vanityDomainStatus":{"shape":"VanityDomainStatus"} + } + }, + "SpaceDescription":{ + "type":"string", + "max":255, + "min":1, + "sensitive":true + }, + "SpaceId":{"type":"string"}, + "SpaceName":{ + "type":"string", + "max":30, + "min":1, + "sensitive":true + }, + "SpaceSubdomain":{ + "type":"string", + "max":63, + "min":1 + }, + "SpacesList":{ + "type":"list", + "member":{"shape":"SpaceData"} + }, + "StorageLimit":{ + "type":"long", + "box":true + }, + "String":{"type":"string"}, + "SyntheticTimestamp_date_time":{ + "type":"timestamp", + "timestampFormat":"iso8601" + }, + "TagKey":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$" + }, + "TagKeyList":{ + "type":"list", + "member":{"shape":"TagKey"}, + "max":50, + "min":1 + }, + "TagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tags" + ], + "members":{ + "resourceArn":{ + "shape":"Arn", + "location":"uri", + "locationName":"resourceArn" + }, + "tags":{"shape":"Tags"} + } + }, + "TagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "TagValue":{ + "type":"string", + "max":256, + "min":1 + }, + "Tags":{ + "type":"map", + "key":{"shape":"TagKey"}, + "value":{"shape":"TagValue"}, + "sensitive":true + }, + "ThrottlingException":{ + "type":"structure", + "required":["message"], + "members":{ + "message":{"shape":"String"}, + "quotaCode":{"shape":"String"}, + "retryAfterSeconds":{ + "shape":"Integer", + "location":"header", + "locationName":"Retry-After" + }, + "serviceCode":{"shape":"String"} + }, + "error":{ + "httpStatusCode":429, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":true} + }, + "TierLevel":{ + "type":"string", + "enum":[ + "BASIC", + "STANDARD" + ] + }, + "UntagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tagKeys" + ], + "members":{ + "resourceArn":{ + "shape":"Arn", + "location":"uri", + "locationName":"resourceArn" + }, + "tagKeys":{ + "shape":"TagKeyList", + "location":"querystring", + "locationName":"tagKeys" + } + } + }, + "UntagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "UpdateSpaceInput":{ + "type":"structure", + "required":["spaceId"], + "members":{ + "description":{"shape":"SpaceDescription"}, + "roleArn":{"shape":"Arn"}, + "spaceId":{ + "shape":"SpaceId", + "location":"uri", + "locationName":"spaceId" + }, + "tier":{"shape":"TierLevel"} + } + }, + "Url":{"type":"string"}, + "UserAdmins":{ + "type":"list", + "member":{"shape":"AdminId"} + }, + "UserCount":{ + "type":"integer", + "box":true + }, + "ValidationException":{ + "type":"structure", + "required":[ + "message", + "reason" + ], + "members":{ + "fieldList":{"shape":"ValidationExceptionFieldList"}, + "message":{"shape":"String"}, + "reason":{"shape":"ValidationExceptionReason"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "ValidationExceptionField":{ + "type":"structure", + "required":[ + "message", + "name" + ], + "members":{ + "message":{"shape":"String"}, + "name":{"shape":"String"} + } + }, + "ValidationExceptionFieldList":{ + "type":"list", + "member":{"shape":"ValidationExceptionField"} + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "unknownOperation", + "cannotParse", + "fieldValidationFailed", + "other" + ] + }, + "VanityDomainStatus":{ + "type":"string", + "enum":[ + "PENDING", + "APPROVED", + "UNAPPROVED" + ] + } + } +} diff --git a/apis/repostspace/2022-05-13/docs-2.json b/apis/repostspace/2022-05-13/docs-2.json new file mode 100644 index 00000000000..c5b28c53e46 --- /dev/null +++ b/apis/repostspace/2022-05-13/docs-2.json @@ -0,0 +1,413 @@ +{ + "version": "2.0", + "service": "

AWS re:Post Private is a private version of AWS re:Post for enterprises with Enterprise Support or Enterprise On-Ramp Support plans. It provides access to knowledge and experts to accelerate cloud adoption and increase developer productivity. With your organization-specific private re:Post, you can build an organization-specific developer community that drives efficiencies at scale and provides access to valuable knowledge resources. Additionally, re:Post Private centralizes trusted AWS technical content and offers private discussion forums to improve how your teams collaborate internally and with AWS to remove technical obstacles, accelerate innovation, and scale more efficiently in the cloud.

", + "operations": { + "CreateSpace": "

Creates an AWS re:Post Private private re:Post.

", + "DeleteSpace": "

Deletes an AWS re:Post Private private re:Post.

", + "DeregisterAdmin": "

Removes the user or group from the list of administrators of the private re:Post.

", + "GetSpace": "

Displays information about the AWS re:Post Private private re:Post.

", + "ListSpaces": "

Returns a list of AWS re:Post Private private re:Posts in the account with some information about each private re:Post.

", + "ListTagsForResource": "

Returns the tags that are associated with the AWS re:Post Private resource specified by the resourceArn. The only resource that can be tagged is a private re:Post.

", + "RegisterAdmin": "

Adds a user or group to the list of administrators of the private re:Post.

", + "SendInvites": "

Sends an invitation email to selected users and groups.

", + "TagResource": "

Associates tags with an AWS re:Post Private resource. Currently, the only resource that can be tagged is the private re:Post. If you specify a new tag key for the resource, the tag is appended to the list of tags that are associated with the resource. If you specify a tag key that’s already associated with the resource, the new tag value that you specify replaces the previous value for that tag.

", + "UntagResource": "

Removes the association of the tag with the AWS re:Post Private resource.

", + "UpdateSpace": "

Modifies an existing AWS re:Post Private private re:Post.

" + }, + "shapes": { + "AccessDeniedException": { + "base": "

User does not have sufficient access to perform this action.

", + "refs": { + } + }, + "AccessorId": { + "base": null, + "refs": { + "AccessorIdList$member": null + } + }, + "AccessorIdList": { + "base": null, + "refs": { + "SendInvitesInput$accessorIds": "

The array of identifiers for the users and groups.

" + } + }, + "AdminId": { + "base": null, + "refs": { + "DeregisterAdminInput$adminId": "

The ID of the admin to remove.

", + "GroupAdmins$member": null, + "RegisterAdminInput$adminId": "

The ID of the administrator.

", + "UserAdmins$member": null + } + }, + "Arn": { + "base": null, + "refs": { + "CreateSpaceInput$roleArn": "

The IAM role that grants permissions to the private re:Post to convert unanswered questions into AWS support tickets.

", + "GetSpaceOutput$arn": "

The ARN of the private re:Post.

", + "GetSpaceOutput$customerRoleArn": "

The IAM role that grants permissions to the private re:Post to convert unanswered questions into AWS support tickets.

", + "ListTagsForResourceRequest$resourceArn": "

The ARN of the resource that the tags are associated with.

", + "SpaceData$arn": "

The ARN of the private re:Post.

", + "TagResourceRequest$resourceArn": "

The ARN of the resource that the tag is associated with.

", + "UntagResourceRequest$resourceArn": "

The ARN of the resource.

", + "UpdateSpaceInput$roleArn": "

The IAM role that grants permissions to the private re:Post to convert unanswered questions into AWS support tickets.

" + } + }, + "ClientId": { + "base": null, + "refs": { + "GetSpaceOutput$clientId": "

The Identity Center identifier for the Application Instance.

" + } + }, + "ConfigurationStatus": { + "base": null, + "refs": { + "GetSpaceOutput$configurationStatus": "

The configuration status of the private re:Post.

", + "SpaceData$configurationStatus": "

The configuration status of the private re:Post.

" + } + }, + "ConflictException": { + "base": "

Updating or deleting a resource can cause an inconsistent state.

", + "refs": { + } + }, + "ContentSize": { + "base": null, + "refs": { + "GetSpaceOutput$contentSize": "

The content size of the private re:Post.

", + "SpaceData$contentSize": "

The content size of the private re:Post.

" + } + }, + "CreateSpaceInput": { + "base": null, + "refs": { + } + }, + "CreateSpaceOutput": { + "base": null, + "refs": { + } + }, + "DeleteSpaceInput": { + "base": null, + "refs": { + } + }, + "DeregisterAdminInput": { + "base": null, + "refs": { + } + }, + "GetSpaceInput": { + "base": null, + "refs": { + } + }, + "GetSpaceOutput": { + "base": null, + "refs": { + } + }, + "GroupAdmins": { + "base": null, + "refs": { + "GetSpaceOutput$groupAdmins": "

The list of groups that are administrators of the private re:Post.

" + } + }, + "Integer": { + "base": null, + "refs": { + "InternalServerException$retryAfterSeconds": "

Advice to clients on when the call can be safely retried.

", + "ThrottlingException$retryAfterSeconds": "

Advice to clients on when the call can be safely retried.

" + } + }, + "InternalServerException": { + "base": "

Unexpected error during processing of request.

", + "refs": { + } + }, + "InviteBody": { + "base": null, + "refs": { + "SendInvitesInput$body": "

The body of the invite.

" + } + }, + "InviteTitle": { + "base": null, + "refs": { + "SendInvitesInput$title": "

The title of the invite.

" + } + }, + "KMSKey": { + "base": null, + "refs": { + "CreateSpaceInput$userKMSKey": "

The AWS KMS key ARN that’s used for the AWS KMS encryption. If you don't provide a key, your data is encrypted by default with a key that AWS owns and manages for you.

", + "GetSpaceOutput$userKMSKey": "

The custom AWS KMS key ARN that’s used for the AWS KMS encryption.

", + "SpaceData$userKMSKey": "

The custom AWS KMS key ARN that’s used for the AWS KMS encryption.

" + } + }, + "ListSpacesInput": { + "base": null, + "refs": { + } + }, + "ListSpacesLimit": { + "base": null, + "refs": { + "ListSpacesInput$maxResults": "

The maximum number of private re:Posts to include in the results.

" + } + }, + "ListSpacesOutput": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceRequest": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceResponse": { + "base": null, + "refs": { + } + }, + "ProvisioningStatus": { + "base": null, + "refs": { + "GetSpaceOutput$status": "

The creation or deletion status of the private re:Post.

", + "SpaceData$status": "

The creation/deletion status of the private re:Post.

" + } + }, + "RegisterAdminInput": { + "base": null, + "refs": { + } + }, + "ResourceNotFoundException": { + "base": "

Request references a resource which does not exist.

", + "refs": { + } + }, + "SendInvitesInput": { + "base": null, + "refs": { + } + }, + "ServiceQuotaExceededException": { + "base": "

Request would cause a service quota to be exceeded.

", + "refs": { + } + }, + "SpaceData": { + "base": "

A structure that contains some information about a private re:Post in the account.

", + "refs": { + "SpacesList$member": null + } + }, + "SpaceDescription": { + "base": null, + "refs": { + "CreateSpaceInput$description": "

A description for the private re:Post. This is used only to help you identify this private re:Post.

", + "GetSpaceOutput$description": "

The description of the private re:Post.

", + "SpaceData$description": "

The description for the private re:Post. This is used only to help you identify this private re:Post.

", + "UpdateSpaceInput$description": "

A description for the private re:Post. This is used only to help you identify this private re:Post.

" + } + }, + "SpaceId": { + "base": null, + "refs": { + "CreateSpaceOutput$spaceId": "

The unique ID of the private re:Post.

", + "DeleteSpaceInput$spaceId": "

The unique ID of the private re:Post.

", + "DeregisterAdminInput$spaceId": "

The ID of the private re:Post to remove the admin from.

", + "GetSpaceInput$spaceId": "

The ID of the private re:Post.

", + "GetSpaceOutput$spaceId": "

The unique ID of the private re:Post.

", + "RegisterAdminInput$spaceId": "

The ID of the private re:Post.

", + "SendInvitesInput$spaceId": "

The ID of the private re:Post.

", + "SpaceData$spaceId": "

The unique ID of the private re:Post.

", + "UpdateSpaceInput$spaceId": "

The unique ID of this private re:Post.

" + } + }, + "SpaceName": { + "base": null, + "refs": { + "CreateSpaceInput$name": "

The name for the private re:Post. This must be unique in your account.

", + "GetSpaceOutput$name": "

The name of the private re:Post.

", + "SpaceData$name": "

The name for the private re:Post.

" + } + }, + "SpaceSubdomain": { + "base": null, + "refs": { + "CreateSpaceInput$subdomain": "

The subdomain that you use to access your AWS re:Post Private private re:Post. All custom subdomains must be approved by AWS before use. In addition to your custom subdomain, all private re:Posts are issued an AWS generated subdomain for immediate use.

" + } + }, + "SpacesList": { + "base": null, + "refs": { + "ListSpacesOutput$spaces": "

An array of structures that contain some information about the private re:Posts in the account.

" + } + }, + "StorageLimit": { + "base": null, + "refs": { + "GetSpaceOutput$storageLimit": "

The storage limit of the private re:Post.

", + "SpaceData$storageLimit": "

The storage limit of the private re:Post.

" + } + }, + "String": { + "base": null, + "refs": { + "AccessDeniedException$message": null, + "ConflictException$message": null, + "ConflictException$resourceId": "

The ID of the resource.

", + "ConflictException$resourceType": "

The type of the resource.

", + "InternalServerException$message": null, + "ListSpacesInput$nextToken": "

The token for the next set of private re:Posts to return. You receive this token from a previous ListSpaces operation.

", + "ListSpacesOutput$nextToken": "

The token that you use when you request the next set of private re:Posts.

", + "ResourceNotFoundException$message": null, + "ResourceNotFoundException$resourceId": "

The ID of the resource.

", + "ResourceNotFoundException$resourceType": "

The type of the resource.

", + "ServiceQuotaExceededException$message": null, + "ServiceQuotaExceededException$quotaCode": "

The code to identify the quota.

", + "ServiceQuotaExceededException$resourceId": "

The id of the resource.

", + "ServiceQuotaExceededException$resourceType": "

The type of the resource.

", + "ServiceQuotaExceededException$serviceCode": "

The code to identify the service.

", + "ThrottlingException$message": null, + "ThrottlingException$quotaCode": "

The code to identify the quota.

", + "ThrottlingException$serviceCode": "

The code to identify the service.

", + "ValidationException$message": null, + "ValidationExceptionField$message": "

The name of the field.

", + "ValidationExceptionField$name": "

Message describing why the field failed validation.

" + } + }, + "SyntheticTimestamp_date_time": { + "base": null, + "refs": { + "GetSpaceOutput$createDateTime": "

The date when the private re:Post was created.

", + "GetSpaceOutput$deleteDateTime": "

The date when the private re:Post was deleted.

", + "SpaceData$createDateTime": "

The date when the private re:Post was created.

", + "SpaceData$deleteDateTime": "

The date when the private re:Post was deleted.

" + } + }, + "TagKey": { + "base": null, + "refs": { + "TagKeyList$member": null, + "Tags$key": null + } + }, + "TagKeyList": { + "base": null, + "refs": { + "UntagResourceRequest$tagKeys": "

The key values of the tag.

" + } + }, + "TagResourceRequest": { + "base": null, + "refs": { + } + }, + "TagResourceResponse": { + "base": null, + "refs": { + } + }, + "TagValue": { + "base": null, + "refs": { + "Tags$value": null + } + }, + "Tags": { + "base": null, + "refs": { + "CreateSpaceInput$tags": "

The list of tags associated with the private re:Post.

", + "ListTagsForResourceResponse$tags": "

The list of tags that are associated with the resource.

", + "TagResourceRequest$tags": "

The list of tag keys and values that must be associated with the resource. You can associate tag keys only, tags (key and values) only, or a combination of tag keys and tags.

" + } + }, + "ThrottlingException": { + "base": "

Request was denied due to request throttling.

", + "refs": { + } + }, + "TierLevel": { + "base": null, + "refs": { + "CreateSpaceInput$tier": "

The pricing tier for the private re:Post.

", + "GetSpaceOutput$tier": "

The pricing tier of the private re:Post.

", + "SpaceData$tier": "

The pricing tier of the private re:Post.

", + "UpdateSpaceInput$tier": "

The pricing tier of this private re:Post.

" + } + }, + "UntagResourceRequest": { + "base": null, + "refs": { + } + }, + "UntagResourceResponse": { + "base": null, + "refs": { + } + }, + "UpdateSpaceInput": { + "base": null, + "refs": { + } + }, + "Url": { + "base": null, + "refs": { + "GetSpaceOutput$randomDomain": "

The AWS generated subdomain of the private re:Post

", + "GetSpaceOutput$vanityDomain": "

The custom subdomain that you use to access your private re:Post. All custom subdomains must be approved by AWS before use.

", + "SpaceData$randomDomain": "

The AWS generated subdomain of the private re:Post.

", + "SpaceData$vanityDomain": "

This custom subdomain that you use to access your private re:Post. All custom subdomains must be approved by AWS before use.

" + } + }, + "UserAdmins": { + "base": null, + "refs": { + "GetSpaceOutput$userAdmins": "

The list of users that are administrators of the private re:Post.

" + } + }, + "UserCount": { + "base": null, + "refs": { + "GetSpaceOutput$userCount": "

The number of users that have onboarded to the private re:Post.

", + "SpaceData$userCount": "

The number of onboarded users to the private re:Post.

" + } + }, + "ValidationException": { + "base": "

The input fails to satisfy the constraints specified by an AWS service.

", + "refs": { + } + }, + "ValidationExceptionField": { + "base": "

Stores information about a field that’s passed inside a request that resulted in an exception.

", + "refs": { + "ValidationExceptionFieldList$member": null + } + }, + "ValidationExceptionFieldList": { + "base": null, + "refs": { + "ValidationException$fieldList": "

The field that caused the error, if applicable.

" + } + }, + "ValidationExceptionReason": { + "base": null, + "refs": { + "ValidationException$reason": "

The reason why the request failed validation.

" + } + }, + "VanityDomainStatus": { + "base": null, + "refs": { + "GetSpaceOutput$vanityDomainStatus": "

The approval status of the custom subdomain.

", + "SpaceData$vanityDomainStatus": "

This approval status of the custom subdomain.

" + } + } + } +} diff --git a/apis/repostspace/2022-05-13/endpoint-rule-set-1.json b/apis/repostspace/2022-05-13/endpoint-rule-set-1.json new file mode 100644 index 00000000000..cd894866eb4 --- /dev/null +++ b/apis/repostspace/2022-05-13/endpoint-rule-set-1.json @@ -0,0 +1,350 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseDualStack": { + "builtIn": "AWS::UseDualStack", + "required": true, + "default": false, + "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", + "type": "Boolean" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://repostspace-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://repostspace-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://repostspace.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://repostspace.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ], + "type": "tree" + } + ] +} \ No newline at end of file diff --git a/apis/repostspace/2022-05-13/endpoint-tests-1.json b/apis/repostspace/2022-05-13/endpoint-tests-1.json new file mode 100644 index 00000000000..f5945850574 --- /dev/null +++ b/apis/repostspace/2022-05-13/endpoint-tests-1.json @@ -0,0 +1,314 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://repostspace.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips disabled and dualstack enabled", + "expect": { + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/repostspace/2022-05-13/examples-1.json b/apis/repostspace/2022-05-13/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/repostspace/2022-05-13/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/repostspace/2022-05-13/paginators-1.json b/apis/repostspace/2022-05-13/paginators-1.json new file mode 100644 index 00000000000..75eb51bde34 --- /dev/null +++ b/apis/repostspace/2022-05-13/paginators-1.json @@ -0,0 +1,10 @@ +{ + "pagination": { + "ListSpaces": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "spaces" + } + } +} diff --git a/apis/runtime.lex.v2/2020-08-07/api-2.json b/apis/runtime.lex.v2/2020-08-07/api-2.json index a4810040a7e..6af352b8c7b 100644 --- a/apis/runtime.lex.v2/2020-08-07/api-2.json +++ b/apis/runtime.lex.v2/2020-08-07/api-2.json @@ -148,7 +148,7 @@ "type":"string", "max":100, "min":1, - "pattern":"^([A-Za-z]_?)+$" + "pattern":"^([A-Za-z0-9]_?)+$" }, "ActiveContextParametersMap":{ "type":"map", @@ -532,9 +532,17 @@ "members":{ "nluConfidence":{"shape":"ConfidenceScore"}, "sentimentResponse":{"shape":"SentimentResponse"}, - "intent":{"shape":"Intent"} + "intent":{"shape":"Intent"}, + "interpretationSource":{"shape":"InterpretationSource"} } }, + "InterpretationSource":{ + "type":"string", + "enum":[ + "Bedrock", + "Lex" + ] + }, "Interpretations":{ "type":"list", "member":{"shape":"Interpretation"}, diff --git a/apis/runtime.lex.v2/2020-08-07/docs-2.json b/apis/runtime.lex.v2/2020-08-07/docs-2.json index 1aa41eb902e..9f1baafa8b4 100644 --- a/apis/runtime.lex.v2/2020-08-07/docs-2.json +++ b/apis/runtime.lex.v2/2020-08-07/docs-2.json @@ -174,7 +174,7 @@ "ConfirmationState": { "base": null, "refs": { - "Intent$confirmationState": "

Contains information about whether fulfillment of the intent has been confirmed.

" + "Intent$confirmationState": "

Indicates whether the intent has been Confirmed, Denied, or None if the confirmation stage has not yet been reached.

" } }, "ConflictException": { @@ -226,7 +226,7 @@ "DialogActionType": { "base": null, "refs": { - "DialogAction$type": "

The next action that the bot should take in its interaction with the user. The possible values are:

" + "DialogAction$type": "

The next action that the bot should take in its interaction with the user. The following values are possible:

" } }, "DisconnectionEvent": { @@ -306,7 +306,7 @@ "InputMode": { "base": null, "refs": { - "IntentResultEvent$inputMode": "

Indicates whether the input to the operation was text or speech.

" + "IntentResultEvent$inputMode": "

Indicates whether the input to the operation was text, speech, or from a touch-tone keypad.

" } }, "Intent": { @@ -325,7 +325,7 @@ "IntentState": { "base": null, "refs": { - "Intent$state": "

Contains fulfillment information for the intent.

" + "Intent$state": "

Indicates the fulfillment state for the intent. The meanings of each value are as follows:

" } }, "InternalServerException": { @@ -335,11 +335,17 @@ } }, "Interpretation": { - "base": "

An intent that Amazon Lex V2 determined might satisfy the user's utterance. The intents are ordered by the confidence score.

", + "base": "

An object containing information about an intent that Amazon Lex V2 determined might satisfy the user's utterance. The intents are ordered by the confidence score.

", "refs": { "Interpretations$member": null } }, + "InterpretationSource": { + "base": null, + "refs": { + "Interpretation$interpretationSource": "

Specifies the service that interpreted the input.

" + } + }, "Interpretations": { "base": null, "refs": { @@ -403,11 +409,11 @@ "PutSessionRequest$responseContentType": "

The message that Amazon Lex V2 returns in the response can be either text or speech depending on the value of this parameter.

", "PutSessionResponse$contentType": "

The type of response. Same as the type specified in the responseContentType field in the request.

", "PutSessionResponse$messages": "

A list of messages that were last sent to the user. The messages are ordered based on how you return the messages from you Lambda function or the order that the messages are defined in the bot.

", - "PutSessionResponse$sessionState": "

Represents the current state of the dialog between the user and the bot.

Use this to determine the progress of the conversation and what the next action may be.

", - "PutSessionResponse$requestAttributes": "

Request-specific information passed between the client application and Amazon Lex V2. These are the same as the requestAttribute parameter in the call to the PutSession operation.

", + "PutSessionResponse$sessionState": "

A base-64-encoded gzipped field that represents the current state of the dialog between the user and the bot. Use this to determine the progress of the conversation and what the next action may be.

", + "PutSessionResponse$requestAttributes": "

A base-64-encoded gzipped field that provides request-specific information passed between the client application and Amazon Lex V2. These are the same as the requestAttribute parameter in the call to the PutSession operation.

", "RecognizeUtteranceRequest$requestContentType": "

Indicates the format for audio input or that the content is text. The header must start with one of the following prefixes:

", "RecognizeUtteranceRequest$responseContentType": "

The message that Amazon Lex V2 returns in the response can be either text or speech based on the responseContentType value.

", - "RecognizeUtteranceResponse$inputMode": "

Indicates whether the input mode to the operation was text or speech.

", + "RecognizeUtteranceResponse$inputMode": "

Indicates whether the input mode to the operation was text, speech, or from a touch-tone keypad.

", "RecognizeUtteranceResponse$contentType": "

Content type as specified in the responseContentType in the request.

", "RecognizeUtteranceResponse$messages": "

A list of messages that were last sent to the user. The messages are ordered based on the order that you returned the messages from your Lambda function or the order that the messages are defined in the bot.

The messages field is compressed with gzip and then base64 encoded. Before you can use the contents of the field, you must decode and decompress the contents. See the example for a simple function to decode and decompress the contents.

", "RecognizeUtteranceResponse$interpretations": "

A list of intents that Amazon Lex V2 determined might satisfy the user's utterance.

Each interpretation includes the intent, a score that indicates how confident Amazon Lex V2 is that the interpretation is the correct one, and an optional sentiment response that indicates the sentiment expressed in the utterance.

The interpretations field is compressed with gzip and then base64 encoded. Before you can use the contents of the field, you must decode and decompress the contents. See the example for a simple function to decode and decompress the contents.

", @@ -419,8 +425,8 @@ "Slots$key": null, "StringList$member": null, "StringMap$key": null, - "Value$originalValue": "

The text of the utterance from the user that was entered for the slot.

", - "Value$interpretedValue": "

The value that Amazon Lex V2 determines for the slot. The actual value depends on the setting of the value selection strategy for the bot. You can choose to use the value entered by the user, or you can have Amazon Lex V2 choose the first value in the resolvedValues list.

" + "Value$originalValue": "

The part of the user's response to the slot elicitation that Amazon Lex V2 determines is relevant to the slot value.

", + "Value$interpretedValue": "

The value that Amazon Lex V2 determines for the slot, given the user input. The actual value depends on the setting of the value selection strategy for the bot. You can choose to use the value entered by the user, or you can have Amazon Lex V2 choose the first value in the resolvedValues list.

" } }, "ParameterName": { @@ -645,7 +651,7 @@ "StringList": { "base": null, "refs": { - "Value$resolvedValues": "

A list of additional values that have been recognized for the slot.

" + "Value$resolvedValues": "

A list of values that Amazon Lex V2 determines are possible resolutions for the user input. The first value matches the interpretedValue.

" } }, "StringMap": { @@ -662,7 +668,7 @@ "StyleType": { "base": null, "refs": { - "DialogAction$slotElicitationStyle": "

Configures the slot to use spell-by-letter or spell-by-word style. When you use a style on a slot, users can spell out their input to make it clear to your bot.

For more information, see Using spelling to enter slot values .

" + "DialogAction$slotElicitationStyle": "

Configures the slot to use spell-by-letter or spell-by-word style. When you use a style on a slot, users can spell out their input to make it clear to your bot.

For more information, see Using spelling to enter slot values .

" } }, "Text": { @@ -705,7 +711,7 @@ } }, "Value": { - "base": "

The value of a slot.

", + "base": "

Information about the value provided for a slot and Amazon Lex V2's interpretation.

", "refs": { "Slot$value": "

The current value of the slot.

" } diff --git a/apis/runtime.lex.v2/2020-08-07/endpoint-rule-set-1.json b/apis/runtime.lex.v2/2020-08-07/endpoint-rule-set-1.json index 20095f561a0..97e531fd117 100644 --- a/apis/runtime.lex.v2/2020-08-07/endpoint-rule-set-1.json +++ b/apis/runtime.lex.v2/2020-08-07/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/s3/2006-03-01/api-2.json b/apis/s3/2006-03-01/api-2.json index a8b9ed36666..80942e790d6 100644 --- a/apis/s3/2006-03-01/api-2.json +++ b/apis/s3/2006-03-01/api-2.json @@ -1119,6 +1119,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -1570,6 +1571,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -2204,6 +2206,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -2639,6 +2642,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -3562,6 +3566,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -3981,6 +3986,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -4495,6 +4501,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -5101,6 +5108,7 @@ }, "Prefix":{ "shape":"Prefix", + "contextParam":{"name":"Prefix"}, "location":"querystring", "locationName":"prefix" }, @@ -5182,6 +5190,7 @@ }, "Prefix":{ "shape":"Prefix", + "contextParam":{"name":"Prefix"}, "location":"querystring", "locationName":"prefix" }, @@ -5259,6 +5268,7 @@ }, "Prefix":{ "shape":"Prefix", + "contextParam":{"name":"Prefix"}, "location":"querystring", "locationName":"prefix" }, @@ -5328,6 +5338,7 @@ }, "Prefix":{ "shape":"Prefix", + "contextParam":{"name":"Prefix"}, "location":"querystring", "locationName":"prefix" }, @@ -5414,6 +5425,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -6840,6 +6852,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -7159,6 +7172,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, @@ -8478,6 +8492,7 @@ }, "Key":{ "shape":"ObjectKey", + "contextParam":{"name":"Key"}, "location":"uri", "locationName":"Key" }, diff --git a/apis/s3/2006-03-01/docs-2.json b/apis/s3/2006-03-01/docs-2.json index 844ceb036ae..a9d75a82b2e 100644 --- a/apis/s3/2006-03-01/docs-2.json +++ b/apis/s3/2006-03-01/docs-2.json @@ -90,7 +90,7 @@ "PutObject": "

Adds an object to a bucket. You must have WRITE permissions on a bucket to add an object to it.

Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the entire object to the bucket. You cannot use PutObject to only update a single piece of metadata for an existing object. You must put the entire object with updated metadata if you want to update some values.

Amazon S3 is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written. To prevent objects from being deleted or overwritten, you can use Amazon S3 Object Lock.

To ensure that data is not corrupted traversing the network, use the Content-MD5 header. When you use this header, Amazon S3 checks the object against the provided MD5 value and, if they do not match, returns an error. Additionally, you can calculate the MD5 while putting an object to Amazon S3 and compare the returned ETag to the calculated MD5 value.

You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see Using Server-Side Encryption.

When adding a new object, you can use headers to grant ACL-based permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the ACL on the object. By default, all objects are private. Only the owner has full access control. For more information, see Access Control List (ACL) Overview and Managing ACLs Using the REST API.

If the bucket that you're uploading objects to uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that use this setting only accept PUT requests that don't specify an ACL or PUT requests that specify bucket owner full control ACLs, such as the bucket-owner-full-control canned ACL or an equivalent form of this ACL expressed in the XML format. PUT requests that contain other ACLs (for example, custom grants to certain Amazon Web Services accounts) fail and return a 400 error with the error code AccessControlListNotSupported. For more information, see Controlling ownership of objects and disabling ACLs in the Amazon S3 User Guide.

If your bucket uses the bucket owner enforced setting for Object Ownership, all objects written to the bucket by any account will be owned by the bucket owner.

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The STANDARD storage class provides high durability and high availability. Depending on performance needs, you can specify a different Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information, see Storage Classes in the Amazon S3 User Guide.

If you enable versioning for a bucket, Amazon S3 automatically generates a unique version ID for the object being stored. Amazon S3 returns this ID in the response. When you enable versioning for a bucket, if Amazon S3 receives multiple write requests for the same object simultaneously, it stores all of the objects. For more information about versioning, see Adding Objects to Versioning-Enabled Buckets. For information about returning the versioning state of a bucket, see GetBucketVersioning.

For more information about related Amazon S3 APIs, see the following:

", "PutObjectAcl": "

Uses the acl subresource to set the access control list (ACL) permissions for a new or existing object in an S3 bucket. You must have WRITE_ACP permission to set the ACL of an object. For more information, see What permissions can I grant? in the Amazon S3 User Guide.

This action is not supported by Amazon S3 on Outposts.

Depending on your application needs, you can choose to set the ACL on an object using either the request body or the headers. For example, if you have an existing application that updates a bucket ACL using the request body, you can continue to use that approach. For more information, see Access Control List (ACL) Overview in the Amazon S3 User Guide.

If your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled and no longer affect permissions. You must use policies to grant access to your bucket and the objects in it. Requests to set ACLs or update ACLs fail and return the AccessControlListNotSupported error code. Requests to read ACLs are still supported. For more information, see Controlling object ownership in the Amazon S3 User Guide.

Permissions

You can set access permissions using one of the following methods:

  • Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports a set of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees and permissions. Specify the canned ACL name as the value of x-amz-acl. If you use this header, you cannot use other access control-specific headers in your request. For more information, see Canned ACL.

  • Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using these headers, you specify explicit access permissions and grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the permission. If you use these ACL-specific headers, you cannot use x-amz-acl header to set a canned ACL. These parameters map to the set of permissions that Amazon S3 supports in an ACL. For more information, see Access Control List (ACL) Overview.

    You specify each grantee as a type=value pair, where the type is one of the following:

    • id – if the value specified is the canonical user ID of an Amazon Web Services account

    • uri – if you are granting permissions to a predefined group

    • emailAddress – if the value specified is the email address of an Amazon Web Services account

      Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      • US East (N. Virginia)

      • US West (N. California)

      • US West (Oregon)

      • Asia Pacific (Singapore)

      • Asia Pacific (Sydney)

      • Asia Pacific (Tokyo)

      • Europe (Ireland)

      • South America (São Paulo)

      For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    For example, the following x-amz-grant-read header grants list objects permission to the two Amazon Web Services accounts identified by their email addresses.

    x-amz-grant-read: emailAddress=\"xyz@amazon.com\", emailAddress=\"abc@amazon.com\"

You can use either a canned ACL or specify access permissions explicitly. You cannot do both.

Grantee Values

You can specify the person (grantee) to whom you're assigning access rights (using request elements) in the following ways:

  • By the person's ID:

    <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName> </Grantee>

    DisplayName is optional and ignored in the request.

  • By URI:

    <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"Group\"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>

  • By Email address:

    <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"AmazonCustomerByEmail\"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>

    The grantee is resolved to the CanonicalUser and, in a response to a GET Object acl request, appears as the CanonicalUser.

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    • US East (N. Virginia)

    • US West (N. California)

    • US West (Oregon)

    • Asia Pacific (Singapore)

    • Asia Pacific (Sydney)

    • Asia Pacific (Tokyo)

    • Europe (Ireland)

    • South America (São Paulo)

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

Versioning

The ACL of an object is set at the object version level. By default, PUT sets the ACL of the current version of an object. To set the ACL of a different version, use the versionId subresource.

The following operations are related to PutObjectAcl:

", "PutObjectLegalHold": "

Applies a legal hold configuration to the specified object. For more information, see Locking Objects.

This action is not supported by Amazon S3 on Outposts.

", - "PutObjectLockConfiguration": "

Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see Locking Objects.

", + "PutObjectLockConfiguration": "

Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see Locking Objects.

", "PutObjectRetention": "

Places an Object Retention configuration on an object. For more information, see Locking Objects. Users or accounts require the s3:PutObjectRetention permission in order to place an Object Retention configuration on objects. Bypassing a Governance Retention configuration requires the s3:BypassGovernanceRetention permission.

This action is not supported by Amazon S3 on Outposts.

", "PutObjectTagging": "

Sets the supplied tag-set to an object that already exists in a bucket. A tag is a key-value pair. For more information, see Object Tagging.

You can associate tags with an object by sending a PUT request against the tagging subresource that is associated with the object. You can retrieve tags by sending a GET request. For more information, see GetObjectTagging.

For tagging-related restrictions related to characters and encodings, see Tag Restrictions. Note that Amazon S3 limits the maximum number of tags to 10 tags per object.

To use this operation, you must have permission to perform the s3:PutObjectTagging action. By default, the bucket owner has this permission and can grant this permission to others.

To put tags of any other version, use the versionId query parameter. You also need permission for the s3:PutObjectVersionTagging action.

PutObjectTagging has the following special errors. For more Amazon S3 errors see, Error Responses.

The following operations are related to PutObjectTagging:

", "PutPublicAccessBlock": "

Creates or modifies the PublicAccessBlock configuration for an Amazon S3 bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock permission. For more information about Amazon S3 permissions, see Specifying Permissions in a Policy.

When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket or an object, it checks the PublicAccessBlock configuration for both the bucket (or the bucket that contains the object) and the bucket owner's account. If the PublicAccessBlock configurations are different between the bucket and the account, Amazon S3 uses the most restrictive combination of the bucket-level and account-level settings.

For more information about when Amazon S3 considers a bucket or an object public, see The Meaning of \"Public\".

The following operations are related to PutPublicAccessBlock:

", diff --git a/apis/s3/2006-03-01/endpoint-rule-set-1.json b/apis/s3/2006-03-01/endpoint-rule-set-1.json index a785b873133..0adf21daa1c 100644 --- a/apis/s3/2006-03-01/endpoint-rule-set-1.json +++ b/apis/s3/2006-03-01/endpoint-rule-set-1.json @@ -58,6 +58,16 @@ "documentation": "Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)", "type": "Boolean" }, + "Key": { + "required": false, + "documentation": "The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.", + "type": "String" + }, + "Prefix": { + "required": false, + "documentation": "The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.", + "type": "String" + }, "DisableAccessPoints": { "required": false, "documentation": "Internal parameter to disable Access Point Buckets", diff --git a/apis/s3/2006-03-01/endpoint-tests-1.json b/apis/s3/2006-03-01/endpoint-tests-1.json index 4b528a224f5..daa904ca39a 100644 --- a/apis/s3/2006-03-01/endpoint-tests-1.json +++ b/apis/s3/2006-03-01/endpoint-tests-1.json @@ -1754,6 +1754,45 @@ "Accelerate": false } }, + { + "documentation": "virtual addressing, aws-global region with Prefix, and Key uses the global endpoint. Prefix and Key parameters should not be used in endpoint evaluation.", + "expect": { + "endpoint": { + "properties": { + "authSchemes": [ + { + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1", + "disableDoubleEncoding": true + } + ] + }, + "url": "https://bucket-name.s3.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "aws-global" + }, + "operationName": "ListObjects", + "operationParams": { + "Bucket": "bucket-name", + "Prefix": "prefix" + } + } + ], + "params": { + "Region": "aws-global", + "Bucket": "bucket-name", + "UseFIPS": false, + "UseDualStack": false, + "Accelerate": false, + "Prefix": "prefix", + "Key": "key" + } + }, { "documentation": "virtual addressing, aws-global region with fips uses the regional fips endpoint", "expect": { diff --git a/apis/s3/2006-03-01/examples-1.json b/apis/s3/2006-03-01/examples-1.json index 5c73dd44c36..d55c14a9451 100644 --- a/apis/s3/2006-03-01/examples-1.json +++ b/apis/s3/2006-03-01/examples-1.json @@ -84,10 +84,13 @@ "CreateBucket": [ { "input": { - "Bucket": "examplebucket" + "Bucket": "examplebucket", + "CreateBucketConfiguration": { + "LocationConstraint": "eu-west-1" + } }, "output": { - "Location": "/examplebucket" + "Location": "http://examplebucket..s3.amazonaws.com/" }, "comments": { "input": { @@ -95,19 +98,16 @@ "output": { } }, - "description": "The following example creates a bucket.", - "id": "to-create-a-bucket--1472851826060", - "title": "To create a bucket " + "description": "The following example creates a bucket. The request specifies an AWS region where to create the bucket.", + "id": "to-create-a-bucket-in-a-specific-region-1483399072992", + "title": "To create a bucket in a specific region" }, { "input": { - "Bucket": "examplebucket", - "CreateBucketConfiguration": { - "LocationConstraint": "eu-west-1" - } + "Bucket": "examplebucket" }, "output": { - "Location": "http://examplebucket..s3.amazonaws.com/" + "Location": "/examplebucket" }, "comments": { "input": { @@ -115,9 +115,9 @@ "output": { } }, - "description": "The following example creates a bucket. The request specifies an AWS region where to create the bucket.", - "id": "to-create-a-bucket-in-a-specific-region-1483399072992", - "title": "To create a bucket in a specific region" + "description": "The following example creates a bucket.", + "id": "to-create-a-bucket--1472851826060", + "title": "To create a bucket " } ], "CreateMultipartUpload": [ @@ -292,11 +292,10 @@ { "input": { "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + "Key": "HappyFace.jpg" }, "output": { - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + "VersionId": "null" }, "comments": { "input": { @@ -304,17 +303,18 @@ "output": { } }, - "description": "The following example removes tag set associated with the specified object version. The request specifies both the object key and object version.", - "id": "to-remove-tag-set-from-an-object-version-1483145285913", - "title": "To remove tag set from an object version" + "description": "The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the operation removes tag set from the latest object version.", + "id": "to-remove-tag-set-from-an-object-1483145342862", + "title": "To remove tag set from an object" }, { "input": { "Bucket": "examplebucket", - "Key": "HappyFace.jpg" + "Key": "HappyFace.jpg", + "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" }, "output": { - "VersionId": "null" + "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" }, "comments": { "input": { @@ -322,9 +322,9 @@ "output": { } }, - "description": "The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the operation removes tag set from the latest object version.", - "id": "to-remove-tag-set-from-an-object-1483145342862", - "title": "To remove tag set from an object" + "description": "The following example removes tag set associated with the specified object version. The request specifies both the object key and object version.", + "id": "to-remove-tag-set-from-an-object-version-1483145285913", + "title": "To remove tag set from an object version" } ], "DeleteObjects": [ @@ -334,10 +334,12 @@ "Delete": { "Objects": [ { - "Key": "objectkey1" + "Key": "HappyFace.jpg", + "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" }, { - "Key": "objectkey2" + "Key": "HappyFace.jpg", + "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" } ], "Quiet": false @@ -346,14 +348,12 @@ "output": { "Deleted": [ { - "DeleteMarker": "true", - "DeleteMarkerVersionId": "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", - "Key": "objectkey1" + "Key": "HappyFace.jpg", + "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" }, { - "DeleteMarker": "true", - "DeleteMarkerVersionId": "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", - "Key": "objectkey2" + "Key": "HappyFace.jpg", + "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" } ] }, @@ -363,9 +363,9 @@ "output": { } }, - "description": "The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.", - "id": "to-delete-multiple-objects-from-a-versioned-bucket-1483146248805", - "title": "To delete multiple objects from a versioned bucket" + "description": "The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object versions and returns the key and versions of deleted objects in the response.", + "id": "to-delete-multiple-object-versions-from-a-versioned-bucket-1483147087737", + "title": "To delete multiple object versions from a versioned bucket" }, { "input": { @@ -373,12 +373,10 @@ "Delete": { "Objects": [ { - "Key": "HappyFace.jpg", - "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" + "Key": "objectkey1" }, { - "Key": "HappyFace.jpg", - "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" + "Key": "objectkey2" } ], "Quiet": false @@ -387,12 +385,14 @@ "output": { "Deleted": [ { - "Key": "HappyFace.jpg", - "VersionId": "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" + "DeleteMarker": "true", + "DeleteMarkerVersionId": "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", + "Key": "objectkey1" }, { - "Key": "HappyFace.jpg", - "VersionId": "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" + "DeleteMarker": "true", + "DeleteMarkerVersionId": "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", + "Key": "objectkey2" } ] }, @@ -402,9 +402,9 @@ "output": { } }, - "description": "The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object versions and returns the key and versions of deleted objects in the response.", - "id": "to-delete-multiple-object-versions-from-a-versioned-bucket-1483147087737", - "title": "To delete multiple object versions from a versioned bucket" + "description": "The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.", + "id": "to-delete-multiple-objects-from-a-versioned-bucket-1483146248805", + "title": "To delete multiple objects from a versioned bucket" } ], "GetBucketCors": [ @@ -728,18 +728,17 @@ { "input": { "Bucket": "examplebucket", - "Key": "SampleFile.txt", - "Range": "bytes=0-9" + "Key": "HappyFace.jpg" }, "output": { "AcceptRanges": "bytes", - "ContentLength": "10", - "ContentRange": "bytes 0-9/43", - "ContentType": "text/plain", - "ETag": "\"0d94420ffd0bc68cd3d152506b97a9cc\"", - "LastModified": "Thu, 09 Oct 2014 22:57:28 GMT", + "ContentLength": "3191", + "ContentType": "image/jpeg", + "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", + "LastModified": "Thu, 15 Dec 2016 01:19:41 GMT", "Metadata": { }, + "TagCount": 2, "VersionId": "null" }, "comments": { @@ -748,24 +747,25 @@ "output": { } }, - "description": "The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a specific byte range.", - "id": "to-retrieve-a-byte-range-of-an-object--1481832674603", - "title": "To retrieve a byte range of an object " + "description": "The following example retrieves an object for an S3 bucket.", + "id": "to-retrieve-an-object-1481827837012", + "title": "To retrieve an object" }, { "input": { "Bucket": "examplebucket", - "Key": "HappyFace.jpg" + "Key": "SampleFile.txt", + "Range": "bytes=0-9" }, "output": { "AcceptRanges": "bytes", - "ContentLength": "3191", - "ContentType": "image/jpeg", - "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "LastModified": "Thu, 15 Dec 2016 01:19:41 GMT", + "ContentLength": "10", + "ContentRange": "bytes 0-9/43", + "ContentType": "text/plain", + "ETag": "\"0d94420ffd0bc68cd3d152506b97a9cc\"", + "LastModified": "Thu, 09 Oct 2014 22:57:28 GMT", "Metadata": { }, - "TagCount": 2, "VersionId": "null" }, "comments": { @@ -774,9 +774,9 @@ "output": { } }, - "description": "The following example retrieves an object for an S3 bucket.", - "id": "to-retrieve-an-object-1481827837012", - "title": "To retrieve an object" + "description": "The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a specific byte range.", + "id": "to-retrieve-a-byte-range-of-an-object--1481832674603", + "title": "To retrieve a byte range of an object " } ], "GetObjectAcl": [ @@ -840,20 +840,17 @@ { "input": { "Bucket": "examplebucket", - "Key": "HappyFace.jpg" + "Key": "exampleobject", + "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" }, "output": { "TagSet": [ { - "Key": "Key4", - "Value": "Value4" - }, - { - "Key": "Key3", - "Value": "Value3" + "Key": "Key1", + "Value": "Value1" } ], - "VersionId": "null" + "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" }, "comments": { "input": { @@ -861,24 +858,27 @@ "output": { } }, - "description": "The following example retrieves tag set of an object.", - "id": "to-retrieve-tag-set-of-an-object-1481833847896", - "title": "To retrieve tag set of an object" + "description": "The following example retrieves tag set of an object. The request specifies object version.", + "id": "to-retrieve-tag-set-of-a-specific-object-version-1483400283663", + "title": "To retrieve tag set of a specific object version" }, { "input": { "Bucket": "examplebucket", - "Key": "exampleobject", - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + "Key": "HappyFace.jpg" }, "output": { "TagSet": [ { - "Key": "Key1", - "Value": "Value1" + "Key": "Key4", + "Value": "Value4" + }, + { + "Key": "Key3", + "Value": "Value3" } ], - "VersionId": "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + "VersionId": "null" }, "comments": { "input": { @@ -886,9 +886,9 @@ "output": { } }, - "description": "The following example retrieves tag set of an object. The request specifies object version.", - "id": "to-retrieve-tag-set-of-a-specific-object-version-1483400283663", - "title": "To retrieve tag set of a specific object version" + "description": "The following example retrieves tag set of an object.", + "id": "to-retrieve-tag-set-of-an-object-1481833847896", + "title": "To retrieve tag set of an object" } ], "GetObjectTorrent": [ @@ -1567,17 +1567,14 @@ "PutObject": [ { "input": { - "Body": "filetoupload", + "Body": "c:\\HappyFace.jpg", "Bucket": "examplebucket", - "Key": "exampleobject", - "Metadata": { - "metadata1": "value1", - "metadata2": "value2" - } + "Key": "HappyFace.jpg", + "Tagging": "key1=value1&key2=value2" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0" + "VersionId": "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a" }, "comments": { "input": { @@ -1585,22 +1582,19 @@ "output": { } }, - "description": "The following example creates an object. The request also specifies optional metadata. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-object-and-specify-user-defined-metadata-1483396974757", - "title": "To upload object and specify user-defined metadata" + "description": "The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore S3 returns version ID of the newly created object.", + "id": "to-upload-an-object-and-specify-optional-tags-1481762310955", + "title": "To upload an object and specify optional tags" }, { "input": { - "Body": "HappyFace.jpg", + "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "ServerSideEncryption": "AES256", - "StorageClass": "STANDARD_IA" + "Key": "objectkey" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "ServerSideEncryption": "AES256", - "VersionId": "CG612hodqujkf8FaaNfp8U..FIhLROcp" + "VersionId": "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" }, "comments": { "input": { @@ -1608,20 +1602,23 @@ "output": { } }, - "description": "The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption.", - "id": "to-upload-an-object-(specify-optional-headers)", - "title": "To upload an object (specify optional headers)" + "description": "The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-create-an-object-1483147613675", + "title": "To create an object." }, { "input": { - "Body": "c:\\HappyFace.jpg", + "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "HappyFace.jpg", - "Tagging": "key1=value1&key2=value2" + "Key": "exampleobject", + "Metadata": { + "metadata1": "value1", + "metadata2": "value2" + } }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a" + "VersionId": "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0" }, "comments": { "input": { @@ -1629,19 +1626,19 @@ "output": { } }, - "description": "The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore S3 returns version ID of the newly created object.", - "id": "to-upload-an-object-and-specify-optional-tags-1481762310955", - "title": "To upload an object and specify optional tags" + "description": "The following example creates an object. The request also specifies optional metadata. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-upload-object-and-specify-user-defined-metadata-1483396974757", + "title": "To upload object and specify user-defined metadata" }, { "input": { - "Body": "filetoupload", + "Body": "HappyFace.jpg", "Bucket": "examplebucket", - "Key": "objectkey" + "Key": "HappyFace.jpg" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" + "VersionId": "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" }, "comments": { "input": { @@ -1649,19 +1646,22 @@ "output": { } }, - "description": "The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-create-an-object-1483147613675", - "title": "To create an object." + "description": "The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object.", + "id": "to-upload-an-object-1481760101010", + "title": "To upload an object" }, { "input": { - "Body": "HappyFace.jpg", + "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "HappyFace.jpg" + "Key": "exampleobject", + "ServerSideEncryption": "AES256", + "Tagging": "key1=value1&key2=value2" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" + "ServerSideEncryption": "AES256", + "VersionId": "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" }, "comments": { "input": { @@ -1669,9 +1669,9 @@ "output": { } }, - "description": "The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object.", - "id": "to-upload-an-object-1481760101010", - "title": "To upload an object" + "description": "The following example uploads an object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-upload-an-object-and-specify-server-side-encryption-and-object-tags-1483398331831", + "title": "To upload an object and specify server-side encryption and object tags" }, { "input": { @@ -1696,16 +1696,16 @@ }, { "input": { - "Body": "filetoupload", + "Body": "HappyFace.jpg", "Bucket": "examplebucket", - "Key": "exampleobject", + "Key": "HappyFace.jpg", "ServerSideEncryption": "AES256", - "Tagging": "key1=value1&key2=value2" + "StorageClass": "STANDARD_IA" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", "ServerSideEncryption": "AES256", - "VersionId": "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" + "VersionId": "CG612hodqujkf8FaaNfp8U..FIhLROcp" }, "comments": { "input": { @@ -1713,9 +1713,9 @@ "output": { } }, - "description": "The following example uploads an object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-an-object-and-specify-server-side-encryption-and-object-tags-1483398331831", - "title": "To upload an object and specify server-side encryption and object tags" + "description": "The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption.", + "id": "to-upload-an-object-(specify-optional-headers)", + "title": "To upload an object (specify optional headers)" } ], "PutObjectAcl": [ @@ -1826,14 +1826,15 @@ "input": { "Bucket": "examplebucket", "CopySource": "/bucketname/sourceobjectkey", + "CopySourceRange": "bytes=1-100000", "Key": "examplelargeobject", - "PartNumber": "1", + "PartNumber": "2", "UploadId": "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" }, "output": { "CopyPartResult": { - "ETag": "\"b0c6f0e7e054ab8fa2536a2677f8734d\"", - "LastModified": "2016-12-29T21:24:43.000Z" + "ETag": "\"65d16d19e65a7508a51f043180edcc36\"", + "LastModified": "2016-12-29T21:44:28.000Z" } }, "comments": { @@ -1842,23 +1843,22 @@ "output": { } }, - "description": "The following example uploads a part of a multipart upload by copying data from an existing object as data source.", - "id": "to-upload-a-part-by-copying-data-from-an-existing-object-as-data-source-1483046746348", - "title": "To upload a part by copying data from an existing object as data source" + "description": "The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as data source.", + "id": "to-upload-a-part-by-copying-byte-range-from-an-existing-object-as-data-source-1483048068594", + "title": "To upload a part by copying byte range from an existing object as data source" }, { "input": { "Bucket": "examplebucket", "CopySource": "/bucketname/sourceobjectkey", - "CopySourceRange": "bytes=1-100000", "Key": "examplelargeobject", - "PartNumber": "2", + "PartNumber": "1", "UploadId": "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" }, "output": { "CopyPartResult": { - "ETag": "\"65d16d19e65a7508a51f043180edcc36\"", - "LastModified": "2016-12-29T21:44:28.000Z" + "ETag": "\"b0c6f0e7e054ab8fa2536a2677f8734d\"", + "LastModified": "2016-12-29T21:24:43.000Z" } }, "comments": { @@ -1867,9 +1867,9 @@ "output": { } }, - "description": "The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as data source.", - "id": "to-upload-a-part-by-copying-byte-range-from-an-existing-object-as-data-source-1483048068594", - "title": "To upload a part by copying byte range from an existing object as data source" + "description": "The following example uploads a part of a multipart upload by copying data from an existing object as data source.", + "id": "to-upload-a-part-by-copying-data-from-an-existing-object-as-data-source-1483046746348", + "title": "To upload a part by copying data from an existing object as data source" } ] } diff --git a/apis/s3control/2018-08-20/api-2.json b/apis/s3control/2018-08-20/api-2.json index 77d98a599ee..cd3ae9524b5 100644 --- a/apis/s3control/2018-08-20/api-2.json +++ b/apis/s3control/2018-08-20/api-2.json @@ -11,6 +11,85 @@ "uid":"s3control-2018-08-20" }, "operations":{ + "AssociateAccessGrantsIdentityCenter":{ + "name":"AssociateAccessGrantsIdentityCenter", + "http":{ + "method":"POST", + "requestUri":"/v20180820/accessgrantsinstance/identitycenter" + }, + "input":{ + "shape":"AssociateAccessGrantsIdentityCenterRequest", + "locationName":"AssociateAccessGrantsIdentityCenterRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "CreateAccessGrant":{ + "name":"CreateAccessGrant", + "http":{ + "method":"POST", + "requestUri":"/v20180820/accessgrantsinstance/grant" + }, + "input":{ + "shape":"CreateAccessGrantRequest", + "locationName":"CreateAccessGrantRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "output":{"shape":"CreateAccessGrantResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "CreateAccessGrantsInstance":{ + "name":"CreateAccessGrantsInstance", + "http":{ + "method":"POST", + "requestUri":"/v20180820/accessgrantsinstance" + }, + "input":{ + "shape":"CreateAccessGrantsInstanceRequest", + "locationName":"CreateAccessGrantsInstanceRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "output":{"shape":"CreateAccessGrantsInstanceResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "CreateAccessGrantsLocation":{ + "name":"CreateAccessGrantsLocation", + "http":{ + "method":"POST", + "requestUri":"/v20180820/accessgrantsinstance/location" + }, + "input":{ + "shape":"CreateAccessGrantsLocationRequest", + "locationName":"CreateAccessGrantsLocationRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "output":{"shape":"CreateAccessGrantsLocationResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "CreateAccessPoint":{ "name":"CreateAccessPoint", "http":{ @@ -127,6 +206,66 @@ "RequiresAccountId":{"value":true} } }, + "DeleteAccessGrant":{ + "name":"DeleteAccessGrant", + "http":{ + "method":"DELETE", + "requestUri":"/v20180820/accessgrantsinstance/grant/{id}" + }, + "input":{"shape":"DeleteAccessGrantRequest"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "DeleteAccessGrantsInstance":{ + "name":"DeleteAccessGrantsInstance", + "http":{ + "method":"DELETE", + "requestUri":"/v20180820/accessgrantsinstance" + }, + "input":{"shape":"DeleteAccessGrantsInstanceRequest"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "DeleteAccessGrantsInstanceResourcePolicy":{ + "name":"DeleteAccessGrantsInstanceResourcePolicy", + "http":{ + "method":"DELETE", + "requestUri":"/v20180820/accessgrantsinstance/resourcepolicy" + }, + "input":{"shape":"DeleteAccessGrantsInstanceResourcePolicyRequest"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "DeleteAccessGrantsLocation":{ + "name":"DeleteAccessGrantsLocation", + "http":{ + "method":"DELETE", + "requestUri":"/v20180820/accessgrantsinstance/location/{id}" + }, + "input":{"shape":"DeleteAccessGrantsLocationRequest"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "DeleteAccessPoint":{ "name":"DeleteAccessPoint", "http":{ @@ -389,6 +528,101 @@ "RequiresAccountId":{"value":true} } }, + "DissociateAccessGrantsIdentityCenter":{ + "name":"DissociateAccessGrantsIdentityCenter", + "http":{ + "method":"DELETE", + "requestUri":"/v20180820/accessgrantsinstance/identitycenter" + }, + "input":{"shape":"DissociateAccessGrantsIdentityCenterRequest"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "GetAccessGrant":{ + "name":"GetAccessGrant", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/grant/{id}" + }, + "input":{"shape":"GetAccessGrantRequest"}, + "output":{"shape":"GetAccessGrantResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "GetAccessGrantsInstance":{ + "name":"GetAccessGrantsInstance", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance" + }, + "input":{"shape":"GetAccessGrantsInstanceRequest"}, + "output":{"shape":"GetAccessGrantsInstanceResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "GetAccessGrantsInstanceForPrefix":{ + "name":"GetAccessGrantsInstanceForPrefix", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/prefix" + }, + "input":{"shape":"GetAccessGrantsInstanceForPrefixRequest"}, + "output":{"shape":"GetAccessGrantsInstanceForPrefixResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "GetAccessGrantsInstanceResourcePolicy":{ + "name":"GetAccessGrantsInstanceResourcePolicy", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/resourcepolicy" + }, + "input":{"shape":"GetAccessGrantsInstanceResourcePolicyRequest"}, + "output":{"shape":"GetAccessGrantsInstanceResourcePolicyResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "GetAccessGrantsLocation":{ + "name":"GetAccessGrantsLocation", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/location/{id}" + }, + "input":{"shape":"GetAccessGrantsLocationRequest"}, + "output":{"shape":"GetAccessGrantsLocationResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "GetAccessPoint":{ "name":"GetAccessPoint", "http":{ @@ -584,6 +818,22 @@ "RequiresAccountId":{"value":true} } }, + "GetDataAccess":{ + "name":"GetDataAccess", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/dataaccess" + }, + "input":{"shape":"GetDataAccessRequest"}, + "output":{"shape":"GetDataAccessResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "GetJobTagging":{ "name":"GetJobTagging", "http":{ @@ -731,6 +981,54 @@ "RequiresAccountId":{"value":true} } }, + "ListAccessGrants":{ + "name":"ListAccessGrants", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/grants" + }, + "input":{"shape":"ListAccessGrantsRequest"}, + "output":{"shape":"ListAccessGrantsResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "ListAccessGrantsInstances":{ + "name":"ListAccessGrantsInstances", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstances" + }, + "input":{"shape":"ListAccessGrantsInstancesRequest"}, + "output":{"shape":"ListAccessGrantsInstancesResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, + "ListAccessGrantsLocations":{ + "name":"ListAccessGrantsLocations", + "http":{ + "method":"GET", + "requestUri":"/v20180820/accessgrantsinstance/locations" + }, + "input":{"shape":"ListAccessGrantsLocationsRequest"}, + "output":{"shape":"ListAccessGrantsLocationsResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "ListAccessPoints":{ "name":"ListAccessPoints", "http":{ @@ -857,6 +1155,26 @@ "RequiresAccountId":{"value":true} } }, + "PutAccessGrantsInstanceResourcePolicy":{ + "name":"PutAccessGrantsInstanceResourcePolicy", + "http":{ + "method":"PUT", + "requestUri":"/v20180820/accessgrantsinstance/resourcepolicy" + }, + "input":{ + "shape":"PutAccessGrantsInstanceResourcePolicyRequest", + "locationName":"PutAccessGrantsInstanceResourcePolicyRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "output":{"shape":"PutAccessGrantsInstanceResourcePolicyResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "PutAccessPointConfigurationForObjectLambda":{ "name":"PutAccessPointConfigurationForObjectLambda", "http":{ @@ -1142,6 +1460,26 @@ "RequiresAccountId":{"value":true} } }, + "UpdateAccessGrantsLocation":{ + "name":"UpdateAccessGrantsLocation", + "http":{ + "method":"PUT", + "requestUri":"/v20180820/accessgrantsinstance/location/{id}" + }, + "input":{ + "shape":"UpdateAccessGrantsLocationRequest", + "locationName":"UpdateAccessGrantsLocationRequest", + "xmlNamespace":{"uri":"http://awss3control.amazonaws.com/doc/2018-08-20/"} + }, + "output":{"shape":"UpdateAccessGrantsLocationResult"}, + "endpoint":{ + "hostPrefix":"{AccountId}." + }, + "httpChecksumRequired":true, + "staticContextParams":{ + "RequiresAccountId":{"value":true} + } + }, "UpdateJobPriority":{ "name":"UpdateJobPriority", "http":{ @@ -1219,6 +1557,73 @@ "Owner":{"shape":"OwnerOverride"} } }, + "AccessGrantArn":{ + "type":"string", + "max":2048, + "min":1, + "pattern":"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/grant/[a-zA-Z0-9\\-]+" + }, + "AccessGrantId":{ + "type":"string", + "max":64, + "min":1, + "pattern":"[a-zA-Z0-9\\-]+" + }, + "AccessGrantsInstanceArn":{ + "type":"string", + "max":2048, + "min":1, + "pattern":"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/[a-zA-Z0-9\\-]+" + }, + "AccessGrantsInstanceId":{ + "type":"string", + "max":64, + "min":1, + "pattern":"[a-zA-Z0-9\\-]+" + }, + "AccessGrantsInstancesList":{ + "type":"list", + "member":{ + "shape":"ListAccessGrantsInstanceEntry", + "locationName":"AccessGrantsInstance" + } + }, + "AccessGrantsList":{ + "type":"list", + "member":{ + "shape":"ListAccessGrantEntry", + "locationName":"AccessGrant" + } + }, + "AccessGrantsLocationArn":{ + "type":"string", + "max":2048, + "min":1, + "pattern":"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/location/[a-zA-Z0-9\\-]+" + }, + "AccessGrantsLocationConfiguration":{ + "type":"structure", + "members":{ + "S3SubPrefix":{"shape":"S3Prefix"} + } + }, + "AccessGrantsLocationId":{ + "type":"string", + "max":64, + "min":1, + "pattern":"[a-zA-Z0-9\\-]+" + }, + "AccessGrantsLocationsList":{ + "type":"list", + "member":{ + "shape":"ListAccessGrantsLocationsEntry", + "locationName":"AccessGrantsLocation" + } + }, + "AccessKeyId":{ + "type":"string", + "sensitive":true + }, "AccessPoint":{ "type":"structure", "required":[ @@ -1288,6 +1693,23 @@ "max":63, "pattern":"^[0-9a-z\\\\-]{63}" }, + "AssociateAccessGrantsIdentityCenterRequest":{ + "type":"structure", + "required":[ + "AccountId", + "IdentityCenterArn" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "IdentityCenterArn":{"shape":"IdentityCenterArn"} + } + }, "AsyncCreationTimestamp":{"type":"timestamp"}, "AsyncErrorDetails":{ "type":"structure", @@ -1445,6 +1867,99 @@ "ConfirmRemoveSelfBucketAccess":{"type":"boolean"}, "ConfirmationRequired":{"type":"boolean"}, "ContinuationToken":{"type":"string"}, + "CreateAccessGrantRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantsLocationId", + "Grantee", + "Permission" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationConfiguration":{"shape":"AccessGrantsLocationConfiguration"}, + "Grantee":{"shape":"Grantee"}, + "Permission":{"shape":"Permission"}, + "ApplicationArn":{"shape":"IdentityCenterApplicationArn"}, + "S3PrefixType":{"shape":"S3PrefixType"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateAccessGrantResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantId":{"shape":"AccessGrantId"}, + "AccessGrantArn":{"shape":"AccessGrantArn"}, + "Grantee":{"shape":"Grantee"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationConfiguration":{"shape":"AccessGrantsLocationConfiguration"}, + "Permission":{"shape":"Permission"}, + "ApplicationArn":{"shape":"IdentityCenterApplicationArn"}, + "GrantScope":{"shape":"S3Prefix"} + } + }, + "CreateAccessGrantsInstanceRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "IdentityCenterArn":{"shape":"IdentityCenterArn"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateAccessGrantsInstanceResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantsInstanceId":{"shape":"AccessGrantsInstanceId"}, + "AccessGrantsInstanceArn":{"shape":"AccessGrantsInstanceArn"}, + "IdentityCenterArn":{"shape":"IdentityCenterArn"} + } + }, + "CreateAccessGrantsLocationRequest":{ + "type":"structure", + "required":[ + "AccountId", + "LocationScope", + "IAMRoleArn" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "LocationScope":{"shape":"S3Prefix"}, + "IAMRoleArn":{"shape":"IAMRoleArn"}, + "Tags":{"shape":"TagList"} + } + }, + "CreateAccessGrantsLocationResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationArn":{"shape":"AccessGrantsLocationArn"}, + "LocationScope":{"shape":"S3Prefix"}, + "IAMRoleArn":{"shape":"IAMRoleArn"} + } + }, "CreateAccessPointForObjectLambdaRequest":{ "type":"structure", "required":[ @@ -1692,9 +2207,87 @@ }, "CreationDate":{"type":"timestamp"}, "CreationTimestamp":{"type":"timestamp"}, + "Credentials":{ + "type":"structure", + "members":{ + "AccessKeyId":{"shape":"AccessKeyId"}, + "SecretAccessKey":{"shape":"SecretAccessKey"}, + "SessionToken":{"shape":"SessionToken"}, + "Expiration":{"shape":"Expiration"} + }, + "sensitive":true + }, "Date":{"type":"timestamp"}, "Days":{"type":"integer"}, "DaysAfterInitiation":{"type":"integer"}, + "DeleteAccessGrantRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantId" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "AccessGrantId":{ + "shape":"AccessGrantId", + "location":"uri", + "locationName":"id" + } + } + }, + "DeleteAccessGrantsInstanceRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + } + } + }, + "DeleteAccessGrantsInstanceResourcePolicyRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + } + } + }, + "DeleteAccessGrantsLocationRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantsLocationId" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "AccessGrantsLocationId":{ + "shape":"AccessGrantsLocationId", + "location":"uri", + "locationName":"id" + } + } + }, "DeleteAccessPointForObjectLambdaRequest":{ "type":"structure", "required":[ @@ -2120,6 +2713,25 @@ "IsEnabled":{"shape":"IsEnabled"} } }, + "DissociateAccessGrantsIdentityCenterRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + } + } + }, + "DurationSeconds":{ + "type":"integer", + "box":true, + "max":43200, + "min":900 + }, "EncryptionConfiguration":{ "type":"structure", "members":{ @@ -2166,6 +2778,7 @@ "Disabled" ] }, + "Expiration":{"type":"timestamp"}, "ExpirationStatus":{ "type":"string", "enum":[ @@ -2181,28 +2794,165 @@ "Parquet" ] }, - "FunctionArnString":{ - "type":"string", - "max":1024, - "min":1, - "pattern":"(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?" + "FunctionArnString":{ + "type":"string", + "max":1024, + "min":1, + "pattern":"(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?" + }, + "GeneratedManifestEncryption":{ + "type":"structure", + "members":{ + "SSES3":{ + "shape":"SSES3Encryption", + "locationName":"SSE-S3" + }, + "SSEKMS":{ + "shape":"SSEKMSEncryption", + "locationName":"SSE-KMS" + } + } + }, + "GeneratedManifestFormat":{ + "type":"string", + "enum":["S3InventoryReport_CSV_20211130"] + }, + "GetAccessGrantRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantId" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "AccessGrantId":{ + "shape":"AccessGrantId", + "location":"uri", + "locationName":"id" + } + } + }, + "GetAccessGrantResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantId":{"shape":"AccessGrantId"}, + "AccessGrantArn":{"shape":"AccessGrantArn"}, + "Grantee":{"shape":"Grantee"}, + "Permission":{"shape":"Permission"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationConfiguration":{"shape":"AccessGrantsLocationConfiguration"}, + "GrantScope":{"shape":"S3Prefix"}, + "ApplicationArn":{"shape":"IdentityCenterApplicationArn"} + } + }, + "GetAccessGrantsInstanceForPrefixRequest":{ + "type":"structure", + "required":[ + "AccountId", + "S3Prefix" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "S3Prefix":{ + "shape":"S3Prefix", + "location":"querystring", + "locationName":"s3prefix" + } + } + }, + "GetAccessGrantsInstanceForPrefixResult":{ + "type":"structure", + "members":{ + "AccessGrantsInstanceArn":{"shape":"AccessGrantsInstanceArn"}, + "AccessGrantsInstanceId":{"shape":"AccessGrantsInstanceId"} + } + }, + "GetAccessGrantsInstanceRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + } + } + }, + "GetAccessGrantsInstanceResourcePolicyRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + } + } + }, + "GetAccessGrantsInstanceResourcePolicyResult":{ + "type":"structure", + "members":{ + "Policy":{"shape":"PolicyDocument"}, + "Organization":{"shape":"Organization"}, + "CreatedAt":{"shape":"CreationTimestamp"} + } }, - "GeneratedManifestEncryption":{ + "GetAccessGrantsInstanceResult":{ "type":"structure", "members":{ - "SSES3":{ - "shape":"SSES3Encryption", - "locationName":"SSE-S3" + "AccessGrantsInstanceArn":{"shape":"AccessGrantsInstanceArn"}, + "AccessGrantsInstanceId":{"shape":"AccessGrantsInstanceId"}, + "IdentityCenterArn":{"shape":"IdentityCenterArn"}, + "CreatedAt":{"shape":"CreationTimestamp"} + } + }, + "GetAccessGrantsLocationRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantsLocationId" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" }, - "SSEKMS":{ - "shape":"SSEKMSEncryption", - "locationName":"SSE-KMS" + "AccessGrantsLocationId":{ + "shape":"AccessGrantsLocationId", + "location":"uri", + "locationName":"id" } } }, - "GeneratedManifestFormat":{ - "type":"string", - "enum":["S3InventoryReport_CSV_20211130"] + "GetAccessGrantsLocationResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationArn":{"shape":"AccessGrantsLocationArn"}, + "LocationScope":{"shape":"S3Prefix"}, + "IAMRoleArn":{"shape":"IAMRoleArn"} + } }, "GetAccessPointConfigurationForObjectLambdaRequest":{ "type":"structure", @@ -2583,6 +3333,55 @@ } } }, + "GetDataAccessRequest":{ + "type":"structure", + "required":[ + "AccountId", + "Target", + "Permission" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "Target":{ + "shape":"S3Prefix", + "location":"querystring", + "locationName":"target" + }, + "Permission":{ + "shape":"Permission", + "location":"querystring", + "locationName":"permission" + }, + "DurationSeconds":{ + "shape":"DurationSeconds", + "location":"querystring", + "locationName":"durationSeconds" + }, + "Privilege":{ + "shape":"Privilege", + "location":"querystring", + "locationName":"privilege" + }, + "TargetType":{ + "shape":"S3PrefixType", + "location":"querystring", + "locationName":"targetType" + } + } + }, + "GetDataAccessResult":{ + "type":"structure", + "members":{ + "Credentials":{"shape":"Credentials"}, + "MatchedGrantTarget":{"shape":"S3Prefix"} + } + }, "GetJobTaggingRequest":{ "type":"structure", "required":[ @@ -2827,6 +3626,22 @@ "GrantReadACP":{"type":"string"}, "GrantWrite":{"type":"string"}, "GrantWriteACP":{"type":"string"}, + "Grantee":{ + "type":"structure", + "members":{ + "GranteeType":{"shape":"GranteeType"}, + "GranteeIdentifier":{"shape":"GranteeIdentifier"} + } + }, + "GranteeIdentifier":{"type":"string"}, + "GranteeType":{ + "type":"string", + "enum":[ + "DIRECTORY_USER", + "DIRECTORY_GROUP", + "IAM" + ] + }, "IAMRoleArn":{ "type":"string", "max":2048, @@ -2841,6 +3656,18 @@ }, "exception":true }, + "IdentityCenterApplicationArn":{ + "type":"string", + "max":1224, + "min":10, + "pattern":"arn:[^:]+:sso:.*$" + }, + "IdentityCenterArn":{ + "type":"string", + "max":1224, + "min":10, + "pattern":"arn:[^:]+:sso::(\\d{12}){0,1}:instance/.*$" + }, "Include":{ "type":"structure", "members":{ @@ -3315,6 +4142,159 @@ "locationName":"Rule" } }, + "ListAccessGrantEntry":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantId":{"shape":"AccessGrantId"}, + "AccessGrantArn":{"shape":"AccessGrantArn"}, + "Grantee":{"shape":"Grantee"}, + "Permission":{"shape":"Permission"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationConfiguration":{"shape":"AccessGrantsLocationConfiguration"}, + "GrantScope":{"shape":"S3Prefix"}, + "ApplicationArn":{"shape":"IdentityCenterApplicationArn"} + } + }, + "ListAccessGrantsInstanceEntry":{ + "type":"structure", + "members":{ + "AccessGrantsInstanceId":{"shape":"AccessGrantsInstanceId"}, + "AccessGrantsInstanceArn":{"shape":"AccessGrantsInstanceArn"}, + "CreatedAt":{"shape":"CreationTimestamp"}, + "IdentityCenterArn":{"shape":"IdentityCenterArn"} + } + }, + "ListAccessGrantsInstancesRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "NextToken":{ + "shape":"ContinuationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "MaxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + } + } + }, + "ListAccessGrantsInstancesResult":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"ContinuationToken"}, + "AccessGrantsInstancesList":{"shape":"AccessGrantsInstancesList"} + } + }, + "ListAccessGrantsLocationsEntry":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationArn":{"shape":"AccessGrantsLocationArn"}, + "LocationScope":{"shape":"S3Prefix"}, + "IAMRoleArn":{"shape":"IAMRoleArn"} + } + }, + "ListAccessGrantsLocationsRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "NextToken":{ + "shape":"ContinuationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "MaxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + }, + "LocationScope":{ + "shape":"S3Prefix", + "location":"querystring", + "locationName":"locationscope" + } + } + }, + "ListAccessGrantsLocationsResult":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"ContinuationToken"}, + "AccessGrantsLocationsList":{"shape":"AccessGrantsLocationsList"} + } + }, + "ListAccessGrantsRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "NextToken":{ + "shape":"ContinuationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "MaxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + }, + "GranteeType":{ + "shape":"GranteeType", + "location":"querystring", + "locationName":"granteetype" + }, + "GranteeIdentifier":{ + "shape":"GranteeIdentifier", + "location":"querystring", + "locationName":"granteeidentifier" + }, + "Permission":{ + "shape":"Permission", + "location":"querystring", + "locationName":"permission" + }, + "GrantScope":{ + "shape":"S3Prefix", + "location":"querystring", + "locationName":"grantscope" + }, + "ApplicationArn":{ + "shape":"IdentityCenterApplicationArn", + "location":"querystring", + "locationName":"application_arn" + } + } + }, + "ListAccessGrantsResult":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"ContinuationToken"}, + "AccessGrantsList":{"shape":"AccessGrantsList"} + } + }, "ListAccessPointsForObjectLambdaRequest":{ "type":"structure", "required":["AccountId"], @@ -3977,6 +4957,12 @@ "S3ReplicateObject" ] }, + "Organization":{ + "type":"string", + "max":34, + "min":12, + "pattern":"^o-[a-z0-9]{10,32}$" + }, "OutputSchemaVersion":{ "type":"string", "enum":["V_1"] @@ -3985,7 +4971,20 @@ "type":"string", "enum":["Destination"] }, + "Permission":{ + "type":"string", + "enum":[ + "READ", + "WRITE", + "READWRITE" + ] + }, "Policy":{"type":"string"}, + "PolicyDocument":{ + "type":"string", + "max":350000, + "min":1 + }, "PolicyStatus":{ "type":"structure", "members":{ @@ -4011,6 +5010,13 @@ } }, "Priority":{"type":"integer"}, + "Privilege":{ + "type":"string", + "enum":[ + "Minimal", + "Default" + ] + }, "ProposedMultiRegionAccessPointPolicy":{ "type":"structure", "members":{ @@ -4039,6 +5045,32 @@ } }, "PublicAccessBlockEnabled":{"type":"boolean"}, + "PutAccessGrantsInstanceResourcePolicyRequest":{ + "type":"structure", + "required":[ + "AccountId", + "Policy" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "Policy":{"shape":"PolicyDocument"}, + "Organization":{"shape":"Organization"} + } + }, + "PutAccessGrantsInstanceResourcePolicyResult":{ + "type":"structure", + "members":{ + "Policy":{"shape":"PolicyDocument"}, + "Organization":{"shape":"Organization"}, + "CreatedAt":{"shape":"CreationTimestamp"} + } + }, "PutAccessPointConfigurationForObjectLambdaRequest":{ "type":"structure", "required":[ @@ -4901,6 +5933,16 @@ "WRITE_ACP" ] }, + "S3Prefix":{ + "type":"string", + "max":2000, + "min":1, + "pattern":"^.+$" + }, + "S3PrefixType":{ + "type":"string", + "enum":["Object"] + }, "S3RegionalBucketArn":{ "type":"string", "max":128, @@ -5022,6 +6064,10 @@ }, "locationName":"SSE-S3" }, + "SecretAccessKey":{ + "type":"string", + "sensitive":true + }, "SelectionCriteria":{ "type":"structure", "members":{ @@ -5030,6 +6076,10 @@ "MinStorageBytesPercentage":{"shape":"MinStorageBytesPercentage"} } }, + "SessionToken":{ + "type":"string", + "sensitive":true + }, "Setting":{"type":"boolean"}, "SourceSelectionCriteria":{ "type":"structure", @@ -5424,6 +6474,39 @@ "members":{ } }, + "UpdateAccessGrantsLocationRequest":{ + "type":"structure", + "required":[ + "AccountId", + "AccessGrantsLocationId", + "IAMRoleArn" + ], + "members":{ + "AccountId":{ + "shape":"AccountId", + "contextParam":{"name":"AccountId"}, + "hostLabel":true, + "location":"header", + "locationName":"x-amz-account-id" + }, + "AccessGrantsLocationId":{ + "shape":"AccessGrantsLocationId", + "location":"uri", + "locationName":"id" + }, + "IAMRoleArn":{"shape":"IAMRoleArn"} + } + }, + "UpdateAccessGrantsLocationResult":{ + "type":"structure", + "members":{ + "CreatedAt":{"shape":"CreationTimestamp"}, + "AccessGrantsLocationId":{"shape":"AccessGrantsLocationId"}, + "AccessGrantsLocationArn":{"shape":"AccessGrantsLocationArn"}, + "LocationScope":{"shape":"S3Prefix"}, + "IAMRoleArn":{"shape":"IAMRoleArn"} + } + }, "UpdateJobPriorityRequest":{ "type":"structure", "required":[ diff --git a/apis/s3control/2018-08-20/docs-2.json b/apis/s3control/2018-08-20/docs-2.json index e6b51f7e9ee..8871d436c7b 100644 --- a/apis/s3control/2018-08-20/docs-2.json +++ b/apis/s3control/2018-08-20/docs-2.json @@ -2,12 +2,20 @@ "version": "2.0", "service": "

Amazon Web Services S3 Control provides access to Amazon S3 control plane actions.

", "operations": { + "AssociateAccessGrantsIdentityCenter": "

Associate your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance. Use this action if you want to create access grants for users or groups from your corporate identity directory. First, you must add your corporate identity directory to Amazon Web Services IAM Identity Center. Then, you can associate this IAM Identity Center instance with your S3 Access Grants instance.

Permissions

You must have the s3:AssociateAccessGrantsIdentityCenter permission to use this operation.

Additional Permissions

You must also have the following permissions: sso:CreateApplication, sso:PutApplicationGrant, and sso:PutApplicationAuthenticationMethod.

", + "CreateAccessGrant": "

Creates an access grant that gives a grantee access to your S3 data. The grantee can be an IAM user or role or a directory user, or group. Before you can create a grant, you must have an S3 Access Grants instance in the same Region as the S3 data. You can create an S3 Access Grants instance using the CreateAccessGrantsInstance. You must also have registered at least one S3 data location in your S3 Access Grants instance using CreateAccessGrantsLocation.

Permissions

You must have the s3:CreateAccessGrant permission to use this operation.

Additional Permissions

For any directory identity - sso:DescribeInstance and sso:DescribeApplication

For directory users - identitystore:DescribeUser

For directory groups - identitystore:DescribeGroup

", + "CreateAccessGrantsInstance": "

Creates an S3 Access Grants instance, which serves as a logical grouping for access grants. You can create one S3 Access Grants instance per Region per account.

Permissions

You must have the s3:CreateAccessGrantsInstance permission to use this operation.

Additional Permissions

To associate an IAM Identity Center instance with your S3 Access Grants instance, you must also have the sso:DescribeInstance, sso:CreateApplication, sso:PutApplicationGrant, and sso:PutApplicationAuthenticationMethod permissions.

", + "CreateAccessGrantsLocation": "

The S3 data location that you would like to register in your S3 Access Grants instance. Your S3 data must be in the same Region as your S3 Access Grants instance. The location can be one of the following:

  • The default S3 location s3://

  • A bucket - S3://<bucket-name>

  • A bucket and prefix - S3://<bucket-name>/<prefix>

When you register a location, you must include the IAM role that has permission to manage the S3 location that you are registering. Give S3 Access Grants permission to assume this role using a policy. S3 Access Grants assumes this role to manage access to the location and to vend temporary credentials to grantees or client applications.

Permissions

You must have the s3:CreateAccessGrantsLocation permission to use this operation.

Additional Permissions

You must also have the following permission for the specified IAM role: iam:PassRole

", "CreateAccessPoint": "

Creates an access point and associates it with the specified bucket. For more information, see Managing Data Access with Amazon S3 Access Points in the Amazon S3 User Guide.

S3 on Outposts only supports VPC-style access points.

For more information, see Accessing Amazon S3 on Outposts using virtual private cloud (VPC) only access points in the Amazon S3 User Guide.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to CreateAccessPoint:

", "CreateAccessPointForObjectLambda": "

Creates an Object Lambda Access Point. For more information, see Transforming objects with Object Lambda Access Points in the Amazon S3 User Guide.

The following actions are related to CreateAccessPointForObjectLambda:

", "CreateBucket": "

This action creates an Amazon S3 on Outposts bucket. To create an S3 bucket, see Create Bucket in the Amazon S3 API Reference.

Creates a new Outposts bucket. By creating the bucket, you become the bucket owner. To create an Outposts bucket, you must have S3 on Outposts. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide.

Not every string is an acceptable bucket name. For information on bucket naming restrictions, see Working with Amazon S3 Buckets.

S3 on Outposts buckets support:

  • Tags

  • LifecycleConfigurations for deleting expired objects

For a complete list of restrictions and Amazon S3 feature limitations on S3 on Outposts, see Amazon S3 on Outposts Restrictions and Limitations.

For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your API request, see the Examples section.

The following actions are related to CreateBucket for Amazon S3 on Outposts:

", "CreateJob": "

You can use S3 Batch Operations to perform large-scale batch actions on Amazon S3 objects. Batch Operations can run a single action on lists of Amazon S3 objects that you specify. For more information, see S3 Batch Operations in the Amazon S3 User Guide.

This action creates a S3 Batch Operations job.

Related actions include:

", "CreateMultiRegionAccessPoint": "

Creates a Multi-Region Access Point and associates it with the specified buckets. For more information about creating Multi-Region Access Points, see Creating Multi-Region Access Points in the Amazon S3 User Guide.

This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around managing Multi-Region Access Points, see Managing Multi-Region Access Points in the Amazon S3 User Guide.

This request is asynchronous, meaning that you might receive a response before the command has completed. When this request provides a response, it provides a token that you can use to monitor the status of the request with DescribeMultiRegionAccessPointOperation.

The following actions are related to CreateMultiRegionAccessPoint:

", "CreateStorageLensGroup": "

Creates a new S3 Storage Lens group and associates it with the specified Amazon Web Services account ID. An S3 Storage Lens group is a custom grouping of objects based on prefix, suffix, object tags, object size, object age, or a combination of these filters. For each Storage Lens group that you’ve created, you can also optionally add Amazon Web Services resource tags. For more information about S3 Storage Lens groups, see Working with S3 Storage Lens groups.

To use this operation, you must have the permission to perform the s3:CreateStorageLensGroup action. If you’re trying to create a Storage Lens group with Amazon Web Services resource tags, you must also have permission to perform the s3:TagResource action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes.

", + "DeleteAccessGrant": "

Deletes the access grant from the S3 Access Grants instance. You cannot undo an access grant deletion and the grantee will no longer have access to the S3 data.

Permissions

You must have the s3:DeleteAccessGrant permission to use this operation.

", + "DeleteAccessGrantsInstance": "

Deletes your S3 Access Grants instance. You must first delete the access grants and locations before S3 Access Grants can delete the instance. See DeleteAccessGrant and DeleteAccessGrantsLocation. If you have associated an IAM Identity Center instance with your S3 Access Grants instance, you must first dissassociate the Identity Center instance from the S3 Access Grants instance before you can delete the S3 Access Grants instance. See AssociateAccessGrantsIdentityCenter and DissociateAccessGrantsIdentityCenter.

Permissions

You must have the s3:DeleteAccessGrantsInstance permission to use this operation.

", + "DeleteAccessGrantsInstanceResourcePolicy": "

Deletes the resource policy of the S3 Access Grants instance. The resource policy is used to manage cross-account access to your S3 Access Grants instance. By deleting the resource policy, you delete any cross-account permissions to your S3 Access Grants instance.

Permissions

You must have the s3:DeleteAccessGrantsInstanceResourcePolicy permission to use this operation.

", + "DeleteAccessGrantsLocation": "

Deregisters a location from your S3 Access Grants instance. You can only delete a location registration from an S3 Access Grants instance if there are no grants associated with this location. See Delete a grant for information on how to delete grants. You need to have at least one registered location in your S3 Access Grants instance in order to create access grants.

Permissions

You must have the s3:DeleteAccessGrantsLocation permission to use this operation.

", "DeleteAccessPoint": "

Deletes the specified access point.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to DeleteAccessPoint:

", "DeleteAccessPointForObjectLambda": "

Deletes the specified Object Lambda Access Point.

The following actions are related to DeleteAccessPointForObjectLambda:

", "DeleteAccessPointPolicy": "

Deletes the access point policy for the specified access point.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to DeleteAccessPointPolicy:

", @@ -25,6 +33,12 @@ "DeleteStorageLensGroup": "

Deletes an existing S3 Storage Lens group.

To use this operation, you must have the permission to perform the s3:DeleteStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes.

", "DescribeJob": "

Retrieves the configuration parameters and status for a Batch Operations job. For more information, see S3 Batch Operations in the Amazon S3 User Guide.

Related actions include:

", "DescribeMultiRegionAccessPointOperation": "

Retrieves the status of an asynchronous request to manage a Multi-Region Access Point. For more information about managing Multi-Region Access Points and how asynchronous requests work, see Managing Multi-Region Access Points in the Amazon S3 User Guide.

The following actions are related to GetMultiRegionAccessPoint:

", + "DissociateAccessGrantsIdentityCenter": "

Dissociates the Amazon Web Services IAM Identity Center instance from the S3 Access Grants instance.

Permissions

You must have the s3:DissociateAccessGrantsIdentityCenter permission to use this operation.

Additional Permissions

You must have the sso:DeleteApplication permission to use this operation.

", + "GetAccessGrant": "

Get the details of an access grant from your S3 Access Grants instance.

Permissions

You must have the s3:GetAccessGrant permission to use this operation.

", + "GetAccessGrantsInstance": "

Retrieves the S3 Access Grants instance for a Region in your account.

Permissions

You must have the s3:GetAccessGrantsInstance permission to use this operation.

", + "GetAccessGrantsInstanceForPrefix": "

Retrieve the S3 Access Grants instance that contains a particular prefix.

Permissions

You must have the s3:GetAccessGrantsInstanceForPrefix permission for the caller account to use this operation.

Additional Permissions

The prefix owner account must grant you the following permissions to their S3 Access Grants instance: s3:GetAccessGrantsInstanceForPrefix.

", + "GetAccessGrantsInstanceResourcePolicy": "

Returns the resource policy of the S3 Access Grants instance.

Permissions

You must have the s3:GetAccessGrantsInstanceResourcePolicy permission to use this operation.

", + "GetAccessGrantsLocation": "

Retrieves the details of a particular location registered in your S3 Access Grants instance.

Permissions

You must have the s3:GetAccessGrantsLocation permission to use this operation.

", "GetAccessPoint": "

Returns configuration information about the specified access point.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to GetAccessPoint:

", "GetAccessPointConfigurationForObjectLambda": "

Returns configuration for an Object Lambda Access Point.

The following actions are related to GetAccessPointConfigurationForObjectLambda:

", "GetAccessPointForObjectLambda": "

Returns configuration information about the specified Object Lambda Access Point

The following actions are related to GetAccessPointForObjectLambda:

", @@ -38,6 +52,7 @@ "GetBucketReplication": "

This operation gets an Amazon S3 on Outposts bucket's replication configuration. To get an S3 bucket's replication configuration, see GetBucketReplication in the Amazon S3 API Reference.

Returns the replication configuration of an S3 on Outposts bucket. For more information about S3 on Outposts, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. For information about S3 replication on Outposts configuration, see Replicating objects for S3 on Outposts in the Amazon S3 User Guide.

It can take a while to propagate PUT or DELETE requests for a replication configuration to all S3 on Outposts systems. Therefore, the replication configuration that's returned by a GET request soon after a PUT or DELETE request might return a more recent result than what's on the Outpost. If an Outpost is offline, the delay in updating the replication configuration on that Outpost can be significant.

This action requires permissions for the s3-outposts:GetReplicationConfiguration action. The Outposts bucket owner has this permission by default and can grant it to others. For more information about permissions, see Setting up IAM with S3 on Outposts and Managing access to S3 on Outposts bucket in the Amazon S3 User Guide.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

If you include the Filter element in a replication configuration, you must also include the DeleteMarkerReplication, Status, and Priority elements. The response also returns those elements.

For information about S3 on Outposts replication failure reasons, see Replication failure reasons in the Amazon S3 User Guide.

The following operations are related to GetBucketReplication:

", "GetBucketTagging": "

This action gets an Amazon S3 on Outposts bucket's tags. To get an S3 bucket tags, see GetBucketTagging in the Amazon S3 API Reference.

Returns the tag set associated with the Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide.

To use this action, you must have permission to perform the GetBucketTagging action. By default, the bucket owner has this permission and can grant this permission to others.

GetBucketTagging has the following special error:

  • Error code: NoSuchTagSetError

    • Description: There is no tag set associated with the bucket.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to GetBucketTagging:

", "GetBucketVersioning": "

This operation returns the versioning state for S3 on Outposts buckets only. To return the versioning state for an S3 bucket, see GetBucketVersioning in the Amazon S3 API Reference.

Returns the versioning state for an S3 on Outposts bucket. With S3 Versioning, you can save multiple distinct copies of your objects and recover from unintended user actions and application failures.

If you've never set versioning on your bucket, it has no versioning state. In that case, the GetBucketVersioning request does not return a versioning state value.

For more information about versioning, see Versioning in the Amazon S3 User Guide.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following operations are related to GetBucketVersioning for S3 on Outposts.

", + "GetDataAccess": "

Returns a temporary access credential from S3 Access Grants to the grantee or client application. The temporary credential is an Amazon Web Services STS token that grants them access to the S3 data.

Permissions

You must have the s3:GetDataAccess permission to use this operation.

Additional Permissions

The IAM role that S3 Access Grants assumes must have the following permissions specified in the trust policy when registering the location: sts:AssumeRole, for directory users or groups sts:SetContext, and for IAM users or roles sts:SourceIdentity.

", "GetJobTagging": "

Returns the tags on an S3 Batch Operations job. To use the GetJobTagging operation, you must have permission to perform the s3:GetJobTagging action. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide.

Related actions include:

", "GetMultiRegionAccessPoint": "

Returns configuration information about the specified Multi-Region Access Point.

This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around managing Multi-Region Access Points, see Managing Multi-Region Access Points in the Amazon S3 User Guide.

The following actions are related to GetMultiRegionAccessPoint:

", "GetMultiRegionAccessPointPolicy": "

Returns the access control policy of the specified Multi-Region Access Point.

This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around managing Multi-Region Access Points, see Managing Multi-Region Access Points in the Amazon S3 User Guide.

The following actions are related to GetMultiRegionAccessPointPolicy:

", @@ -47,6 +62,9 @@ "GetStorageLensConfiguration": "

Gets the Amazon S3 Storage Lens configuration. For more information, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide.

To use this action, you must have permission to perform the s3:GetStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide.

", "GetStorageLensConfigurationTagging": "

Gets the tags of Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide.

To use this action, you must have permission to perform the s3:GetStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide.

", "GetStorageLensGroup": "

Retrieves the Storage Lens group configuration details.

To use this operation, you must have the permission to perform the s3:GetStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes.

", + "ListAccessGrants": "

Returns the list of access grants in your S3 Access Grants instance.

Permissions

You must have the s3:ListAccessGrants permission to use this operation.

", + "ListAccessGrantsInstances": "

Returns a list of S3 Access Grants instances. An S3 Access Grants instance serves as a logical grouping for your individual access grants. You can only have one S3 Access Grants instance per Region per account.

Permissions

You must have the s3:ListAccessGrantsInstances permission to use this operation.

", + "ListAccessGrantsLocations": "

Returns a list of the locations registered in your S3 Access Grants instance.

Permissions

You must have the s3:ListAccessGrantsLocations permission to use this operation.

", "ListAccessPoints": "

Returns a list of the access points that are owned by the current account that's associated with the specified bucket. You can retrieve up to 1000 access points per call. If the specified bucket has more than 1,000 access points (or the number specified in maxResults, whichever is less), the response will include a continuation token that you can use to list the additional access points.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to ListAccessPoints:

", "ListAccessPointsForObjectLambda": "

Returns some or all (up to 1,000) access points associated with the Object Lambda Access Point per call. If there are more access points than what can be returned in one call, the response will include a continuation token that you can use to list the additional access points.

The following actions are related to ListAccessPointsForObjectLambda:

", "ListJobs": "

Lists current S3 Batch Operations jobs and jobs that have ended within the last 30 days for the Amazon Web Services account making the request. For more information, see S3 Batch Operations in the Amazon S3 User Guide.

Related actions include:

", @@ -54,7 +72,8 @@ "ListRegionalBuckets": "

Returns a list of all Outposts buckets in an Outpost that are owned by the authenticated sender of the request. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide.

For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your request, see the Examples section.

", "ListStorageLensConfigurations": "

Gets a list of Amazon S3 Storage Lens configurations. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide.

To use this action, you must have permission to perform the s3:ListStorageLensConfigurations action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide.

", "ListStorageLensGroups": "

Lists all the Storage Lens groups in the specified home Region.

To use this operation, you must have the permission to perform the s3:ListStorageLensGroups action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes.

", - "ListTagsForResource": "

This operation allows you to list all the Amazon Web Services resource tags for the specified resource.

To use this operation, you must have the permission to perform the s3:ListTagsForResource action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

This operation is only supported for S3 Storage Lens groups.

", + "ListTagsForResource": "

This operation allows you to list all the Amazon Web Services resource tags for a specified resource. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources.

Permissions

You must have the s3:ListTagsForResource permission to use this operation.

This operation is only supported for S3 Storage Lens groups and for S3 Access Grants. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

", + "PutAccessGrantsInstanceResourcePolicy": "

Updates the resource policy of the S3 Access Grants instance.

Permissions

You must have the s3:PutAccessGrantsInstanceResourcePolicy permission to use this operation.

", "PutAccessPointConfigurationForObjectLambda": "

Replaces configuration for an Object Lambda Access Point.

The following actions are related to PutAccessPointConfigurationForObjectLambda:

", "PutAccessPointPolicy": "

Associates an access policy with the specified access point. Each access point can have only one policy, so a request made to this API replaces any existing policy associated with the specified access point.

All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section.

The following actions are related to PutAccessPointPolicy:

", "PutAccessPointPolicyForObjectLambda": "

Creates or replaces resource policy for an Object Lambda Access Point. For an example policy, see Creating Object Lambda Access Points in the Amazon S3 User Guide.

The following actions are related to PutAccessPointPolicyForObjectLambda:

", @@ -69,8 +88,9 @@ "PutStorageLensConfiguration": "

Puts an Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Working with Amazon S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide.

To use this action, you must have permission to perform the s3:PutStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide.

", "PutStorageLensConfigurationTagging": "

Put or replace tags on an existing Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide.

To use this action, you must have permission to perform the s3:PutStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide.

", "SubmitMultiRegionAccessPointRoutes": "

Submits an updated route configuration for a Multi-Region Access Point. This API operation updates the routing status for the specified Regions from active to passive, or from passive to active. A value of 0 indicates a passive status, which means that traffic won't be routed to the specified Region. A value of 100 indicates an active status, which means that traffic will be routed to the specified Region. At least one Region must be active at all times.

When the routing configuration is changed, any in-progress operations (uploads, copies, deletes, and so on) to formerly active Regions will continue to run to their final completion state (success or failure). The routing configurations of any Regions that aren’t specified remain unchanged.

Updated routing configurations might not be immediately applied. It can take up to 2 minutes for your changes to take effect.

To submit routing control changes and failover requests, use the Amazon S3 failover control infrastructure endpoints in these five Amazon Web Services Regions:

  • us-east-1

  • us-west-2

  • ap-southeast-2

  • ap-northeast-1

  • eu-west-1

Your Amazon S3 bucket does not need to be in these five Regions.

", - "TagResource": "

Creates a new Amazon Web Services resource tag or updates an existing resource tag. You can add up to 50 Amazon Web Services resource tags for each S3 resource.

To use this operation, you must have the permission to perform the s3:TagResource action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

This operation is only supported for S3 Storage Lens groups.

", - "UntagResource": "

This operation removes the specified Amazon Web Services resource tags from an S3 resource.

To use this operation, you must have the permission to perform the s3:UntagResource action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

This operation is only supported for S3 Storage Lens groups.

", + "TagResource": "

Creates a new Amazon Web Services resource tag or updates an existing resource tag. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources. You can add up to 50 Amazon Web Services resource tags for each S3 resource.

This operation is only supported for S3 Storage Lens groups and for S3 Access Grants. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

Permissions

You must have the s3:TagResource permission to use this operation.

For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

", + "UntagResource": "

This operation removes the specified Amazon Web Services resource tags from an S3 resource. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources.

This operation is only supported for S3 Storage Lens groups and for S3 Access Grants. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

Permissions

You must have the s3:UntagResource permission to use this operation.

For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes.

", + "UpdateAccessGrantsLocation": "

Updates the IAM role of a registered location in your S3 Access Grants instance.

Permissions

You must have the s3:UpdateAccessGrantsLocation permission to use this operation.

Additional Permissions

You must also have the following permission: iam:PassRole

", "UpdateJobPriority": "

Updates an existing S3 Batch Operations job's priority. For more information, see S3 Batch Operations in the Amazon S3 User Guide.

Related actions include:

", "UpdateJobStatus": "

Updates the status for the specified job. Use this action to confirm that you want to run a job or to cancel an existing job. For more information, see S3 Batch Operations in the Amazon S3 User Guide.

Related actions include:

", "UpdateStorageLensGroup": "

Updates the existing Storage Lens group.

To use this operation, you must have the permission to perform the s3:UpdateStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups.

For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes.

" @@ -88,6 +108,100 @@ "Destination$AccessControlTranslation": "

Specify this property only in a cross-account scenario (where the source and destination bucket owners are not the same), and you want to change replica ownership to the Amazon Web Services account that owns the destination bucket. If this property is not specified in the replication configuration, the replicas are owned by same Amazon Web Services account that owns the source object.

This is not supported by Amazon S3 on Outposts buckets.

" } }, + "AccessGrantArn": { + "base": null, + "refs": { + "CreateAccessGrantResult$AccessGrantArn": "

The Amazon Resource Name (ARN) of the access grant.

", + "GetAccessGrantResult$AccessGrantArn": "

The Amazon Resource Name (ARN) of the access grant.

", + "ListAccessGrantEntry$AccessGrantArn": "

The Amazon Resource Name (ARN) of the access grant.

" + } + }, + "AccessGrantId": { + "base": null, + "refs": { + "CreateAccessGrantResult$AccessGrantId": "

The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant.

", + "DeleteAccessGrantRequest$AccessGrantId": "

The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant.

", + "GetAccessGrantRequest$AccessGrantId": "

The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant.

", + "GetAccessGrantResult$AccessGrantId": "

The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant.

", + "ListAccessGrantEntry$AccessGrantId": "

The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant.

" + } + }, + "AccessGrantsInstanceArn": { + "base": null, + "refs": { + "CreateAccessGrantsInstanceResult$AccessGrantsInstanceArn": "

The Amazon Resource Name (ARN) of the S3 Access Grants instance.

", + "GetAccessGrantsInstanceForPrefixResult$AccessGrantsInstanceArn": "

The Amazon Resource Name (ARN) of the S3 Access Grants instance.

", + "GetAccessGrantsInstanceResult$AccessGrantsInstanceArn": "

The Amazon Resource Name (ARN) of the S3 Access Grants instance.

", + "ListAccessGrantsInstanceEntry$AccessGrantsInstanceArn": "

The Amazon Resource Name (ARN) of the S3 Access Grants instance.

" + } + }, + "AccessGrantsInstanceId": { + "base": null, + "refs": { + "CreateAccessGrantsInstanceResult$AccessGrantsInstanceId": "

The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account.

", + "GetAccessGrantsInstanceForPrefixResult$AccessGrantsInstanceId": "

The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account.

", + "GetAccessGrantsInstanceResult$AccessGrantsInstanceId": "

The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account.

", + "ListAccessGrantsInstanceEntry$AccessGrantsInstanceId": "

The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account.

" + } + }, + "AccessGrantsInstancesList": { + "base": null, + "refs": { + "ListAccessGrantsInstancesResult$AccessGrantsInstancesList": "

A container for a list of S3 Access Grants instances.

" + } + }, + "AccessGrantsList": { + "base": null, + "refs": { + "ListAccessGrantsResult$AccessGrantsList": "

A container for a list of grants in an S3 Access Grants instance.

" + } + }, + "AccessGrantsLocationArn": { + "base": null, + "refs": { + "CreateAccessGrantsLocationResult$AccessGrantsLocationArn": "

The Amazon Resource Name (ARN) of the location you are registering.

", + "GetAccessGrantsLocationResult$AccessGrantsLocationArn": "

The Amazon Resource Name (ARN) of the registered location.

", + "ListAccessGrantsLocationsEntry$AccessGrantsLocationArn": "

The Amazon Resource Name (ARN) of the registered location.

", + "UpdateAccessGrantsLocationResult$AccessGrantsLocationArn": "

The Amazon Resource Name (ARN) of the registered location that you are updating.

" + } + }, + "AccessGrantsLocationConfiguration": { + "base": "

The configuration options of the S3 Access Grants location. It contains the S3SubPrefix field. The grant scope, the data to which you are granting access, is the result of appending the Subprefix field to the scope of the registered location.

", + "refs": { + "CreateAccessGrantRequest$AccessGrantsLocationConfiguration": "

The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access. It contains the S3SubPrefix field. The grant scope is the result of appending the subprefix to the location scope of the registered location.

", + "CreateAccessGrantResult$AccessGrantsLocationConfiguration": "

The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access.

", + "GetAccessGrantResult$AccessGrantsLocationConfiguration": "

The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access.

", + "ListAccessGrantEntry$AccessGrantsLocationConfiguration": "

The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access.

" + } + }, + "AccessGrantsLocationId": { + "base": null, + "refs": { + "CreateAccessGrantRequest$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

If you are passing the default location, you cannot create an access grant for the entire default location. You must also specify a bucket or a bucket and prefix in the Subprefix field.

", + "CreateAccessGrantResult$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "CreateAccessGrantsLocationResult$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "DeleteAccessGrantsLocationRequest$AccessGrantsLocationId": "

The ID of the registered location that you are deregistering from your S3 Access Grants instance. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "GetAccessGrantResult$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "GetAccessGrantsLocationRequest$AccessGrantsLocationId": "

The ID of the registered location that you are retrieving. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "GetAccessGrantsLocationResult$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "ListAccessGrantEntry$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "ListAccessGrantsLocationsEntry$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

", + "UpdateAccessGrantsLocationRequest$AccessGrantsLocationId": "

The ID of the registered location that you are updating. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

The ID of the registered location to which you are granting access. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

If you are passing the default location, you cannot create an access grant for the entire default location. You must also specify a bucket or a bucket and prefix in the Subprefix field.

", + "UpdateAccessGrantsLocationResult$AccessGrantsLocationId": "

The ID of the registered location to which you are granting access. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register.

" + } + }, + "AccessGrantsLocationsList": { + "base": null, + "refs": { + "ListAccessGrantsLocationsResult$AccessGrantsLocationsList": "

A container for a list of registered locations in an S3 Access Grants instance.

" + } + }, + "AccessKeyId": { + "base": null, + "refs": { + "Credentials$AccessKeyId": "

The unique access key ID of the Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications.

" + } + }, "AccessPoint": { "base": "

An access point used to access a bucket.

", "refs": { @@ -118,12 +232,20 @@ "base": null, "refs": { "AccessPoint$BucketAccountId": "

The Amazon Web Services account ID associated with the S3 bucket associated with this access point.

", + "AssociateAccessGrantsIdentityCenterRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "CreateAccessGrantRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "CreateAccessGrantsInstanceRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "CreateAccessGrantsLocationRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "CreateAccessPointForObjectLambdaRequest$AccountId": "

The Amazon Web Services account ID for owner of the specified Object Lambda Access Point.

", "CreateAccessPointRequest$AccountId": "

The Amazon Web Services account ID for the account that owns the specified access point.

", "CreateAccessPointRequest$BucketAccountId": "

The Amazon Web Services account ID associated with the S3 bucket associated with this access point.

", "CreateJobRequest$AccountId": "

The Amazon Web Services account ID that creates the job.

", "CreateMultiRegionAccessPointRequest$AccountId": "

The Amazon Web Services account ID for the owner of the Multi-Region Access Point. The owner of the Multi-Region Access Point also must own the underlying buckets.

", "CreateStorageLensGroupRequest$AccountId": "

The Amazon Web Services account ID that the Storage Lens group is created from and associated with.

", + "DeleteAccessGrantRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "DeleteAccessGrantsInstanceRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "DeleteAccessGrantsInstanceResourcePolicyRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "DeleteAccessGrantsLocationRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "DeleteAccessPointForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "DeleteAccessPointPolicyForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "DeleteAccessPointPolicyRequest$AccountId": "

The account ID for the account that owns the specified access point.

", @@ -142,6 +264,12 @@ "DescribeJobRequest$AccountId": "

The Amazon Web Services account ID associated with the S3 Batch Operations job.

", "DescribeMultiRegionAccessPointOperationRequest$AccountId": "

The Amazon Web Services account ID for the owner of the Multi-Region Access Point.

", "Destination$Account": "

The destination bucket owner's account ID.

", + "DissociateAccessGrantsIdentityCenterRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "GetAccessGrantRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "GetAccessGrantsInstanceForPrefixRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "GetAccessGrantsInstanceRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "GetAccessGrantsInstanceResourcePolicyRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "GetAccessGrantsLocationRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "GetAccessPointConfigurationForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "GetAccessPointForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "GetAccessPointPolicyForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", @@ -156,6 +284,7 @@ "GetBucketRequest$AccountId": "

The Amazon Web Services account ID of the Outposts bucket.

", "GetBucketTaggingRequest$AccountId": "

The Amazon Web Services account ID of the Outposts bucket.

", "GetBucketVersioningRequest$AccountId": "

The Amazon Web Services account ID of the S3 on Outposts bucket.

", + "GetDataAccessRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "GetJobTaggingRequest$AccountId": "

The Amazon Web Services account ID associated with the S3 Batch Operations job.

", "GetMultiRegionAccessPointPolicyRequest$AccountId": "

The Amazon Web Services account ID for the owner of the Multi-Region Access Point.

", "GetMultiRegionAccessPointPolicyStatusRequest$AccountId": "

The Amazon Web Services account ID for the owner of the Multi-Region Access Point.

", @@ -165,6 +294,9 @@ "GetStorageLensConfigurationRequest$AccountId": "

The account ID of the requester.

", "GetStorageLensConfigurationTaggingRequest$AccountId": "

The account ID of the requester.

", "GetStorageLensGroupRequest$AccountId": "

The Amazon Web Services account ID associated with the Storage Lens group that you're trying to retrieve the details for.

", + "ListAccessGrantsInstancesRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "ListAccessGrantsLocationsRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", + "ListAccessGrantsRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "ListAccessPointsForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "ListAccessPointsRequest$AccountId": "

The Amazon Web Services account ID for the account that owns the specified access points.

", "ListJobsRequest$AccountId": "

The Amazon Web Services account ID associated with the S3 Batch Operations job.

", @@ -173,6 +305,7 @@ "ListStorageLensConfigurationsRequest$AccountId": "

The account ID of the requester.

", "ListStorageLensGroupsRequest$AccountId": "

The Amazon Web Services account ID that owns the Storage Lens groups.

", "ListTagsForResourceRequest$AccountId": "

The Amazon Web Services account ID of the resource owner.

", + "PutAccessGrantsInstanceResourcePolicyRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "PutAccessPointConfigurationForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "PutAccessPointPolicyForObjectLambdaRequest$AccountId": "

The account ID for the account that owns the specified Object Lambda Access Point.

", "PutAccessPointPolicyRequest$AccountId": "

The Amazon Web Services account ID for owner of the bucket associated with the specified access point.

", @@ -192,8 +325,9 @@ "S3JobManifestGenerator$ExpectedBucketOwner": "

The Amazon Web Services account ID that owns the bucket the generated manifest is written to. If provided the generated manifest bucket's owner Amazon Web Services account ID must match this value, else the job fails.

", "S3ManifestOutputLocation$ExpectedManifestBucketOwner": "

The Account ID that owns the bucket the generated manifest is written to.

", "SubmitMultiRegionAccessPointRoutesRequest$AccountId": "

The Amazon Web Services account ID for the owner of the Multi-Region Access Point.

", - "TagResourceRequest$AccountId": "

The Amazon Web Services account ID that created the S3 resource that you're trying to add tags to.

", + "TagResourceRequest$AccountId": "

The Amazon Web Services account ID that created the S3 resource that you're trying to add tags to or the requester's account ID.

", "UntagResourceRequest$AccountId": "

The Amazon Web Services account ID that owns the resource that you're trying to remove the tags from.

", + "UpdateAccessGrantsLocationRequest$AccountId": "

The ID of the Amazon Web Services account that is making this request.

", "UpdateJobPriorityRequest$AccountId": "

The Amazon Web Services account ID associated with the S3 Batch Operations job.

", "UpdateJobStatusRequest$AccountId": "

The Amazon Web Services account ID associated with the S3 Batch Operations job.

", "UpdateStorageLensGroupRequest$AccountId": "

The Amazon Web Services account ID of the Storage Lens group owner.

" @@ -234,6 +368,11 @@ "GetAccessPointResult$Alias": "

The name or alias of the access point.

" } }, + "AssociateAccessGrantsIdentityCenterRequest": { + "base": null, + "refs": { + } + }, "AsyncCreationTimestamp": { "base": null, "refs": { @@ -438,12 +577,48 @@ "ContinuationToken": { "base": null, "refs": { + "ListAccessGrantsInstancesRequest$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Instances request in order to retrieve the next page of results.

", + "ListAccessGrantsInstancesResult$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Instances request in order to retrieve the next page of results.

", + "ListAccessGrantsLocationsRequest$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Locations request in order to retrieve the next page of results.

", + "ListAccessGrantsLocationsResult$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Locations request in order to retrieve the next page of results.

", + "ListAccessGrantsRequest$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants request in order to retrieve the next page of results.

", + "ListAccessGrantsResult$NextToken": "

A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants request in order to retrieve the next page of results.

", "ListStorageLensConfigurationsRequest$NextToken": "

A pagination token to request the next page of results.

", "ListStorageLensConfigurationsResult$NextToken": "

If the request produced more than the maximum number of S3 Storage Lens configuration results, you can pass this value into a subsequent request to retrieve the next page of results.

", "ListStorageLensGroupsRequest$NextToken": "

The token for the next set of results, or null if there are no more results.

", "ListStorageLensGroupsResult$NextToken": "

If NextToken is returned, there are more Storage Lens groups results available. The value of NextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours.

" } }, + "CreateAccessGrantRequest": { + "base": null, + "refs": { + } + }, + "CreateAccessGrantResult": { + "base": null, + "refs": { + } + }, + "CreateAccessGrantsInstanceRequest": { + "base": null, + "refs": { + } + }, + "CreateAccessGrantsInstanceResult": { + "base": null, + "refs": { + } + }, + "CreateAccessGrantsLocationRequest": { + "base": null, + "refs": { + } + }, + "CreateAccessGrantsLocationResult": { + "base": null, + "refs": { + } + }, "CreateAccessPointForObjectLambdaRequest": { "base": null, "refs": { @@ -524,7 +699,25 @@ "CreationTimestamp": { "base": null, "refs": { - "MultiRegionAccessPointReport$CreatedAt": "

When the Multi-Region Access Point create request was received.

" + "CreateAccessGrantResult$CreatedAt": "

The date and time when you created the access grant.

", + "CreateAccessGrantsInstanceResult$CreatedAt": "

The date and time when you created the S3 Access Grants instance.

", + "CreateAccessGrantsLocationResult$CreatedAt": "

The date and time when you registered the location.

", + "GetAccessGrantResult$CreatedAt": "

The date and time when you created the access grant.

", + "GetAccessGrantsInstanceResourcePolicyResult$CreatedAt": "

The date and time when you created the S3 Access Grants instance resource policy.

", + "GetAccessGrantsInstanceResult$CreatedAt": "

The date and time when you created the S3 Access Grants instance.

", + "GetAccessGrantsLocationResult$CreatedAt": "

The date and time when you registered the location.

", + "ListAccessGrantEntry$CreatedAt": "

The date and time when you created the S3 Access Grants instance.

", + "ListAccessGrantsInstanceEntry$CreatedAt": "

The date and time when you created the S3 Access Grants instance.

", + "ListAccessGrantsLocationsEntry$CreatedAt": "

The date and time when you registered the location.

", + "MultiRegionAccessPointReport$CreatedAt": "

When the Multi-Region Access Point create request was received.

", + "PutAccessGrantsInstanceResourcePolicyResult$CreatedAt": "

The date and time when you created the S3 Access Grants instance resource policy.

", + "UpdateAccessGrantsLocationResult$CreatedAt": "

The date and time when you registered the location.

" + } + }, + "Credentials": { + "base": "

The Amazon Web Services Security Token Service temporary credential that S3 Access Grants vends to grantees and client applications.

", + "refs": { + "GetDataAccessResult$Credentials": "

The temporary credential token that S3 Access Grants vends.

" } }, "Date": { @@ -549,6 +742,26 @@ "AbortIncompleteMultipartUpload$DaysAfterInitiation": "

Specifies the number of days after which Amazon S3 aborts an incomplete multipart upload to the Outposts bucket.

" } }, + "DeleteAccessGrantRequest": { + "base": null, + "refs": { + } + }, + "DeleteAccessGrantsInstanceRequest": { + "base": null, + "refs": { + } + }, + "DeleteAccessGrantsInstanceResourcePolicyRequest": { + "base": null, + "refs": { + } + }, + "DeleteAccessGrantsLocationRequest": { + "base": null, + "refs": { + } + }, "DeleteAccessPointForObjectLambdaRequest": { "base": null, "refs": { @@ -691,6 +904,17 @@ "BucketLevel$DetailedStatusCodesMetrics": "

A container for bucket-level detailed status code metrics for S3 Storage Lens.

" } }, + "DissociateAccessGrantsIdentityCenterRequest": { + "base": null, + "refs": { + } + }, + "DurationSeconds": { + "base": null, + "refs": { + "GetDataAccessRequest$DurationSeconds": "

The session duration, in seconds, of the temporary access credential that S3 Access Grants vends to the grantee or client application. The default value is 1 hour, but the grantee can specify a range from 900 seconds (15 minutes) up to 43200 seconds (12 hours). If the grantee requests a value higher than this maximum, the operation fails.

" + } + }, "EncryptionConfiguration": { "base": "

Specifies encryption-related information for an Amazon S3 bucket that is a destination for replicated objects.

This is not supported by Amazon S3 on Outposts buckets.

", "refs": { @@ -741,6 +965,12 @@ "ExistingObjectReplication$Status": "

Specifies whether Amazon S3 replicates existing source bucket objects.

" } }, + "Expiration": { + "base": null, + "refs": { + "Credentials$Expiration": "

The expiration date and time of the temporary credential that S3 Access Grants vends to grantees and client applications.

" + } + }, "ExpirationStatus": { "base": null, "refs": { @@ -779,6 +1009,56 @@ "S3ManifestOutputLocation$ManifestFormat": "

The format of the generated manifest.

" } }, + "GetAccessGrantRequest": { + "base": null, + "refs": { + } + }, + "GetAccessGrantResult": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceForPrefixRequest": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceForPrefixResult": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceRequest": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceResourcePolicyRequest": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceResourcePolicyResult": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsInstanceResult": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsLocationRequest": { + "base": null, + "refs": { + } + }, + "GetAccessGrantsLocationResult": { + "base": null, + "refs": { + } + }, "GetAccessPointConfigurationForObjectLambdaRequest": { "base": null, "refs": { @@ -909,6 +1189,16 @@ "refs": { } }, + "GetDataAccessRequest": { + "base": null, + "refs": { + } + }, + "GetDataAccessResult": { + "base": null, + "refs": { + } + }, "GetJobTaggingRequest": { "base": null, "refs": { @@ -1029,11 +1319,40 @@ "CreateBucketRequest$GrantWriteACP": "

Allows grantee to write the ACL for the applicable bucket.

This is not supported by Amazon S3 on Outposts buckets.

" } }, + "Grantee": { + "base": "

The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group.

", + "refs": { + "CreateAccessGrantRequest$Grantee": "

The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group.

", + "CreateAccessGrantResult$Grantee": "

The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group.

", + "GetAccessGrantResult$Grantee": "

The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added a corporate directory to Amazon Web Services IAM Identity Center and associated this Identity Center instance with the S3 Access Grants instance, the grantee can also be a corporate directory user or group.

", + "ListAccessGrantEntry$Grantee": "

The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group.

" + } + }, + "GranteeIdentifier": { + "base": null, + "refs": { + "Grantee$GranteeIdentifier": "

The unique identifier of the Grantee. If the grantee type is IAM, the identifier is the IAM Amazon Resource Name (ARN) of the user or role. If the grantee type is a directory user or group, the identifier is 128-bit universally unique identifier (UUID) in the format a1b2c3d4-5678-90ab-cdef-EXAMPLE11111. You can obtain this UUID from your Amazon Web Services IAM Identity Center instance.

", + "ListAccessGrantsRequest$GranteeIdentifier": "

The unique identifer of the Grantee. If the grantee type is IAM, the identifier is the IAM Amazon Resource Name (ARN) of the user or role. If the grantee type is a directory user or group, the identifier is 128-bit universally unique identifier (UUID) in the format a1b2c3d4-5678-90ab-cdef-EXAMPLE11111. You can obtain this UUID from your Amazon Web Services IAM Identity Center instance.

" + } + }, + "GranteeType": { + "base": null, + "refs": { + "Grantee$GranteeType": "

The type of the grantee to which access has been granted. It can be one of the following values:

  • IAM - An IAM user or role.

  • DIRECTORY_USER - Your corporate directory user. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance.

  • DIRECTORY_GROUP - Your corporate directory group. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance.

", + "ListAccessGrantsRequest$GranteeType": "

The type of the grantee to which access has been granted. It can be one of the following values:

  • IAM - An IAM user or role.

  • DIRECTORY_USER - Your corporate directory user. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance.

  • DIRECTORY_GROUP - Your corporate directory group. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance.

" + } + }, "IAMRoleArn": { "base": null, "refs": { + "CreateAccessGrantsLocationRequest$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.

", + "CreateAccessGrantsLocationResult$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.

", "CreateJobRequest$RoleArn": "

The Amazon Resource Name (ARN) for the Identity and Access Management (IAM) role that Batch Operations will use to run this job's action on every object in the manifest.

", - "JobDescriptor$RoleArn": "

The Amazon Resource Name (ARN) for the Identity and Access Management (IAM) role assigned to run the tasks for this job.

" + "GetAccessGrantsLocationResult$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.

", + "JobDescriptor$RoleArn": "

The Amazon Resource Name (ARN) for the Identity and Access Management (IAM) role assigned to run the tasks for this job.

", + "ListAccessGrantsLocationsEntry$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.

", + "UpdateAccessGrantsLocationRequest$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location.

", + "UpdateAccessGrantsLocationResult$IAMRoleArn": "

The Amazon Resource Name (ARN) of the IAM role of the registered location. S3 Access Grants assumes this role to manage access to the registered location.

" } }, "ID": { @@ -1048,6 +1367,26 @@ "refs": { } }, + "IdentityCenterApplicationArn": { + "base": null, + "refs": { + "CreateAccessGrantRequest$ApplicationArn": "

The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If an application ARN is included in the request to create an access grant, the grantee can only access the S3 data through this application.

", + "CreateAccessGrantResult$ApplicationArn": "

The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application.

", + "GetAccessGrantResult$ApplicationArn": "

The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application.

", + "ListAccessGrantEntry$ApplicationArn": "

The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application.

", + "ListAccessGrantsRequest$ApplicationArn": "

The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application.

" + } + }, + "IdentityCenterArn": { + "base": null, + "refs": { + "AssociateAccessGrantsIdentityCenterRequest$IdentityCenterArn": "

The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs.

", + "CreateAccessGrantsInstanceRequest$IdentityCenterArn": "

If you would like to associate your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, use this field to pass the Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs.

", + "CreateAccessGrantsInstanceResult$IdentityCenterArn": "

If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance passed in the request. S3 Access Grants creates this Identity Center application for this specific S3 Access Grants instance.

", + "GetAccessGrantsInstanceResult$IdentityCenterArn": "

If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance.

", + "ListAccessGrantsInstanceEntry$IdentityCenterArn": "

If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance.

" + } + }, "Include": { "base": "

A container for what Amazon S3 Storage Lens configuration includes.

", "refs": { @@ -1374,6 +1713,54 @@ "LifecycleConfiguration$Rules": "

A lifecycle rule for individual objects in an Outposts bucket.

" } }, + "ListAccessGrantEntry": { + "base": "

Information about the access grant.

", + "refs": { + "AccessGrantsList$member": null + } + }, + "ListAccessGrantsInstanceEntry": { + "base": "

Information about the S3 Access Grants instance.

", + "refs": { + "AccessGrantsInstancesList$member": null + } + }, + "ListAccessGrantsInstancesRequest": { + "base": null, + "refs": { + } + }, + "ListAccessGrantsInstancesResult": { + "base": null, + "refs": { + } + }, + "ListAccessGrantsLocationsEntry": { + "base": "

A container for information about the registered location.

", + "refs": { + "AccessGrantsLocationsList$member": null + } + }, + "ListAccessGrantsLocationsRequest": { + "base": null, + "refs": { + } + }, + "ListAccessGrantsLocationsResult": { + "base": null, + "refs": { + } + }, + "ListAccessGrantsRequest": { + "base": null, + "refs": { + } + }, + "ListAccessGrantsResult": { + "base": null, + "refs": { + } + }, "ListAccessPointsForObjectLambdaRequest": { "base": null, "refs": { @@ -1549,6 +1936,9 @@ "MaxResults": { "base": null, "refs": { + "ListAccessGrantsInstancesRequest$MaxResults": "

The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results.

", + "ListAccessGrantsLocationsRequest$MaxResults": "

The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results.

", + "ListAccessGrantsRequest$MaxResults": "

The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results.

", "ListAccessPointsForObjectLambdaRequest$MaxResults": "

The maximum number of access points that you want to include in the list. The response may contain fewer access points but will never contain more. If there are more than this number of access points, then the response will include a continuation token in the NextToken field that you can use to retrieve the next page of access points.

", "ListAccessPointsRequest$MaxResults": "

The maximum number of access points that you want to include in the list. If the specified bucket has more than this number of access points, then the response will include a continuation token in the NextToken field that you can use to retrieve the next page of access points.

", "ListJobsRequest$MaxResults": "

The maximum number of jobs that Amazon S3 will include in the List Jobs response. If there are more jobs than this number, the response will include a pagination token in the NextToken field to enable you to retrieve the next page of results.

", @@ -1937,6 +2327,14 @@ "JobListDescriptor$Operation": "

The operation that the specified job is configured to run on every object listed in the manifest.

" } }, + "Organization": { + "base": null, + "refs": { + "GetAccessGrantsInstanceResourcePolicyResult$Organization": "

The Organization of the resource policy of the S3 Access Grants instance.

", + "PutAccessGrantsInstanceResourcePolicyRequest$Organization": "

The Organization of the resource policy of the S3 Access Grants instance.

", + "PutAccessGrantsInstanceResourcePolicyResult$Organization": "

The Organization of the resource policy of the S3 Access Grants instance.

" + } + }, "OutputSchemaVersion": { "base": null, "refs": { @@ -1949,6 +2347,17 @@ "AccessControlTranslation$Owner": "

Specifies the replica ownership.

" } }, + "Permission": { + "base": null, + "refs": { + "CreateAccessGrantRequest$Permission": "

The type of access that you are granting to your S3 data, which can be set to one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

", + "CreateAccessGrantResult$Permission": "

The type of access that you are granting to your S3 data, which can be set to one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

", + "GetAccessGrantResult$Permission": "

The type of permission that was granted in the access grant. Can be one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

", + "GetDataAccessRequest$Permission": "

The type of permission granted to your S3 data, which can be set to one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

", + "ListAccessGrantEntry$Permission": "

The type of access granted to your S3 data, which can be set to one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

", + "ListAccessGrantsRequest$Permission": "

The type of permission granted to your S3 data, which can be set to one of the following values:

  • READ – Grant read-only access to the S3 data.

  • WRITE – Grant write-only access to the S3 data.

  • READWRITE – Grant both read and write access to the S3 data.

" + } + }, "Policy": { "base": null, "refs": { @@ -1961,6 +2370,14 @@ "PutMultiRegionAccessPointPolicyInput$Policy": "

The policy details for the PutMultiRegionAccessPoint request.

" } }, + "PolicyDocument": { + "base": null, + "refs": { + "GetAccessGrantsInstanceResourcePolicyResult$Policy": "

The resource policy of the S3 Access Grants instance.

", + "PutAccessGrantsInstanceResourcePolicyRequest$Policy": "

The resource policy of the S3 Access Grants instance that you are updating.

", + "PutAccessGrantsInstanceResourcePolicyResult$Policy": "

The updated resource policy of the S3 Access Grants instance.

" + } + }, "PolicyStatus": { "base": "

Indicates whether this access point policy is public. For more information about how Amazon S3 evaluates policies to determine whether they are public, see The Meaning of \"Public\" in the Amazon S3 User Guide.

", "refs": { @@ -1999,6 +2416,12 @@ "ReplicationRule$Priority": "

The priority indicates which rule has precedence whenever two or more replication rules conflict. S3 on Outposts attempts to replicate objects according to all replication rules. However, if there are two or more rules with the same destination Outposts bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority.

For more information, see Creating replication rules on Outposts in the Amazon S3 User Guide.

" } }, + "Privilege": { + "base": null, + "refs": { + "GetDataAccessRequest$Privilege": "

The scope of the temporary access credential that S3 Access Grants vends to the grantee or client application.

  • Default – The scope of the returned temporary access token is the scope of the grant that is closest to the target scope.

  • Minimal – The scope of the returned temporary access token is the same as the requested target scope as long as the requested scope is the same as or a subset of the grant scope.

" + } + }, "ProposedMultiRegionAccessPointPolicy": { "base": "

The proposed access control policy for the Multi-Region Access Point.

When you update the policy, the update is first listed as the proposed policy. After the update is finished and all Regions have been updated, the proposed policy is listed as the established policy. If both policies have the same version number, the proposed policy is the established policy.

", "refs": { @@ -2024,6 +2447,16 @@ "RegionalBucket$PublicAccessBlockEnabled": "

" } }, + "PutAccessGrantsInstanceResourcePolicyRequest": { + "base": null, + "refs": { + } + }, + "PutAccessGrantsInstanceResourcePolicyResult": { + "base": null, + "refs": { + } + }, "PutAccessPointConfigurationForObjectLambdaRequest": { "base": null, "refs": { @@ -2477,6 +2910,32 @@ "S3Grant$Permission": "

" } }, + "S3Prefix": { + "base": null, + "refs": { + "AccessGrantsLocationConfiguration$S3SubPrefix": "

The S3SubPrefix is appended to the location scope creating the grant scope. Use this field to narrow the scope of the grant to a subset of the location scope. This field is required if the location scope is the default location s3:// because you cannot create a grant for all of your S3 data in the Region and must narrow the scope. For example, if the location scope is the default location s3://, the S3SubPrefx can be a <bucket-name>/*, so the full grant scope path would be s3://<bucket-name>/*. Or the S3SubPrefx can be <bucket-name>/<prefix-name>*, so the full grant scope path would be or s3://<bucket-name>/<prefix-name>*.

If the S3SubPrefix includes a prefix, append the wildcard character * after the prefix to indicate that you want to include all object key names in the bucket that start with that prefix.

", + "CreateAccessGrantResult$GrantScope": "

The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope.

", + "CreateAccessGrantsLocationRequest$LocationScope": "

The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix.

", + "CreateAccessGrantsLocationResult$LocationScope": "

The S3 URI path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix.

", + "GetAccessGrantResult$GrantScope": "

The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope.

", + "GetAccessGrantsInstanceForPrefixRequest$S3Prefix": "

The S3 prefix of the access grants that you would like to retrieve.

", + "GetAccessGrantsLocationResult$LocationScope": "

The S3 URI path to the registered location. The location scope can be the default S3 location s3://, the S3 path to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix.

", + "GetDataAccessRequest$Target": "

The S3 URI path of the data to which you are requesting temporary access credentials. If the requesting account has an access grant for this data, S3 Access Grants vends temporary access credentials in the response.

", + "GetDataAccessResult$MatchedGrantTarget": "

The S3 URI path of the data to which you are being granted temporary access credentials.

", + "ListAccessGrantEntry$GrantScope": "

The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope.

", + "ListAccessGrantsLocationsEntry$LocationScope": "

The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix.

", + "ListAccessGrantsLocationsRequest$LocationScope": "

The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix.

", + "ListAccessGrantsRequest$GrantScope": "

The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope.

", + "UpdateAccessGrantsLocationResult$LocationScope": "

The S3 URI path of the location that you are updating. You cannot update the scope of the registered location. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>.

" + } + }, + "S3PrefixType": { + "base": null, + "refs": { + "CreateAccessGrantRequest$S3PrefixType": "

The type of S3SubPrefix. The only possible value is Object. Pass this value if the access grant scope is an object. Do not pass this value if the access grant scope is a bucket or a bucket and a prefix.

", + "GetDataAccessRequest$TargetType": "

The type of Target. The only possible value is Object. Pass this value if the target data that you would like to access is a path to an object. Do not pass this value if the target data is a bucket or a bucket and a prefix.

" + } + }, "S3RegionalBucketArn": { "base": null, "refs": { @@ -2493,9 +2952,9 @@ "S3ResourceArn": { "base": null, "refs": { - "ListTagsForResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you want to list the tags for.

", - "TagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you're trying to add tags to.

", - "UntagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you want to remove the resource tags from.

" + "ListTagsForResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you want to list the tags for. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

", + "TagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you're trying to add tags to. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

", + "UntagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) of the S3 resource that you're trying to remove the tags from.

" } }, "S3Retention": { @@ -2600,12 +3059,24 @@ "GeneratedManifestEncryption$SSES3": "

Specifies the use of SSE-S3 to encrypt generated manifest objects.

" } }, + "SecretAccessKey": { + "base": null, + "refs": { + "Credentials$SecretAccessKey": "

The secret access key of the Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications.

" + } + }, "SelectionCriteria": { "base": "

", "refs": { "PrefixLevelStorageMetrics$SelectionCriteria": null } }, + "SessionToken": { + "base": null, + "refs": { + "Credentials$SessionToken": "

The Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications.

" + } + }, "Setting": { "base": null, "refs": { @@ -2814,7 +3285,7 @@ } }, "Tag": { - "base": "

An Amazon Web Services resource tag that's associated with your S3 resource. You can add tags to new objects when you upload them, or you can add object tags to existing objects.

This data type is only supported for S3 Storage Lens groups.

", + "base": "

An Amazon Web Services resource tag that's associated with your S3 resource. You can add tags to new objects when you upload them, or you can add object tags to existing objects.

This operation is only supported for S3 Storage Lens groups and for S3 Access Grants. The tagged resource can be an S3 Storage Lens group or S3 Access Grants instance, registered location, or grant.

", "refs": { "TagList$member": null } @@ -2822,7 +3293,7 @@ "TagKeyList": { "base": null, "refs": { - "UntagResourceRequest$TagKeys": "

The tag key pair of the S3 resource tag that you're trying to remove.

" + "UntagResourceRequest$TagKeys": "

The array of tag key-value pairs that you're trying to remove from of the S3 resource.

" } }, "TagKeyString": { @@ -2830,13 +3301,16 @@ "refs": { "S3Tag$Key": "

Key of the tag

", "StorageLensTag$Key": "

", - "Tag$Key": "

The tag key for your Amazon Web Services resource. A tag key can be up to 128 Unicode characters in length and is case-sensitive. System created tags that begin with aws: aren’t supported.

", + "Tag$Key": "

The key of the key-value pair of a tag added to your Amazon Web Services resource. A tag key can be up to 128 Unicode characters in length and is case-sensitive. System created tags that begin with aws: aren’t supported.

", "TagKeyList$member": null } }, "TagList": { "base": null, "refs": { + "CreateAccessGrantRequest$Tags": "

The Amazon Web Services resource tags that you are adding to the access grant. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources.

", + "CreateAccessGrantsInstanceRequest$Tags": "

The Amazon Web Services resource tags that you are adding to the S3 Access Grants instance. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources.

", + "CreateAccessGrantsLocationRequest$Tags": "

The Amazon Web Services resource tags that you are adding to the S3 Access Grants location. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources.

", "CreateStorageLensGroupRequest$Tags": "

The Amazon Web Services resource tags that you're adding to your Storage Lens group. This parameter is optional.

", "ListTagsForResourceResult$Tags": "

The Amazon Web Services resource tags that are associated with the resource.

", "TagResourceRequest$Tags": "

The Amazon Web Services resource tags that you want to add to the specified S3 resource.

" @@ -2857,7 +3331,7 @@ "refs": { "S3Tag$Value": "

Value of the tag

", "StorageLensTag$Value": "

", - "Tag$Value": "

The tag value for your Amazon Web Services resource. A tag value can be up to 256 Unicode characters in length and is case-sensitive.

" + "Tag$Value": "

The value of the key-value pair of a tag added to your Amazon Web Services resource. A tag value can be up to 256 Unicode characters in length and is case-sensitive.

" } }, "Tagging": { @@ -2921,6 +3395,16 @@ "refs": { } }, + "UpdateAccessGrantsLocationRequest": { + "base": null, + "refs": { + } + }, + "UpdateAccessGrantsLocationResult": { + "base": null, + "refs": { + } + }, "UpdateJobPriorityRequest": { "base": null, "refs": { diff --git a/apis/s3control/2018-08-20/paginators-1.json b/apis/s3control/2018-08-20/paginators-1.json index a84980de75c..664795a9379 100644 --- a/apis/s3control/2018-08-20/paginators-1.json +++ b/apis/s3control/2018-08-20/paginators-1.json @@ -1,5 +1,20 @@ { "pagination": { + "ListAccessGrants": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListAccessGrantsInstances": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListAccessGrantsLocations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, "ListAccessPoints": { "input_token": "NextToken", "output_token": "NextToken", diff --git a/apis/secretsmanager/2017-10-17/api-2.json b/apis/secretsmanager/2017-10-17/api-2.json index f250e3537e7..76c015e1002 100644 --- a/apis/secretsmanager/2017-10-17/api-2.json +++ b/apis/secretsmanager/2017-10-17/api-2.json @@ -13,6 +13,23 @@ "uid":"secretsmanager-2017-10-17" }, "operations":{ + "BatchGetSecretValue":{ + "name":"BatchGetSecretValue", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"BatchGetSecretValueRequest"}, + "output":{"shape":"BatchGetSecretValueResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidParameterException"}, + {"shape":"InvalidRequestException"}, + {"shape":"DecryptionFailure"}, + {"shape":"InternalServiceError"}, + {"shape":"InvalidNextTokenException"} + ] + }, "CancelRotateSecret":{ "name":"CancelRotateSecret", "http":{ @@ -362,6 +379,18 @@ } }, "shapes":{ + "APIErrorListType":{ + "type":"list", + "member":{"shape":"APIErrorType"} + }, + "APIErrorType":{ + "type":"structure", + "members":{ + "SecretId":{"shape":"SecretIdType"}, + "ErrorCode":{"shape":"ErrorCode"}, + "Message":{"shape":"ErrorMessage"} + } + }, "AddReplicaRegionListType":{ "type":"list", "member":{"shape":"ReplicaRegionType"}, @@ -372,6 +401,26 @@ "max":1000, "min":1 }, + "BatchGetSecretValueRequest":{ + "type":"structure", + "members":{ + "SecretIdList":{"shape":"SecretIdListType"}, + "Filters":{"shape":"FiltersListType"}, + "MaxResults":{ + "shape":"MaxResultsBatchType", + "box":true + }, + "NextToken":{"shape":"NextTokenType"} + } + }, + "BatchGetSecretValueResponse":{ + "type":"structure", + "members":{ + "SecretValues":{"shape":"SecretValuesType"}, + "NextToken":{"shape":"NextTokenType"}, + "Errors":{"shape":"APIErrorListType"} + } + }, "BooleanType":{"type":"boolean"}, "CancelRotateSecretRequest":{ "type":"structure", @@ -535,6 +584,7 @@ }, "exception":true }, + "ErrorCode":{"type":"string"}, "ErrorMessage":{"type":"string"}, "ExcludeCharactersType":{ "type":"string", @@ -763,6 +813,12 @@ }, "exception":true }, + "MaxResultsBatchType":{ + "type":"integer", + "box":true, + "max":20, + "min":1 + }, "MaxResultsType":{ "type":"integer", "max":100, @@ -1020,6 +1076,12 @@ "min":1, "sensitive":true }, + "SecretIdListType":{ + "type":"list", + "member":{"shape":"SecretIdType"}, + "max":20, + "min":1 + }, "SecretIdType":{ "type":"string", "max":2048, @@ -1077,6 +1139,25 @@ "min":1, "sensitive":true }, + "SecretValueEntry":{ + "type":"structure", + "members":{ + "ARN":{"shape":"SecretARNType"}, + "Name":{"shape":"SecretNameType"}, + "VersionId":{"shape":"SecretVersionIdType"}, + "SecretBinary":{"shape":"SecretBinaryType"}, + "SecretString":{"shape":"SecretStringType"}, + "VersionStages":{"shape":"SecretVersionStagesType"}, + "CreatedDate":{ + "shape":"CreatedDateType", + "box":true + } + } + }, + "SecretValuesType":{ + "type":"list", + "member":{"shape":"SecretValueEntry"} + }, "SecretVersionIdType":{ "type":"string", "max":64, diff --git a/apis/secretsmanager/2017-10-17/docs-2.json b/apis/secretsmanager/2017-10-17/docs-2.json index e2a4257109e..a0d98654e79 100644 --- a/apis/secretsmanager/2017-10-17/docs-2.json +++ b/apis/secretsmanager/2017-10-17/docs-2.json @@ -2,6 +2,7 @@ "version": "2.0", "service": "Amazon Web Services Secrets Manager

Amazon Web Services Secrets Manager provides a service to enable you to store, manage, and retrieve, secrets.

This guide provides descriptions of the Secrets Manager API. For more information about using this service, see the Amazon Web Services Secrets Manager User Guide.

API Version

This version of the Secrets Manager API Reference documents the Secrets Manager API version 2017-10-17.

For a list of endpoints, see Amazon Web Services Secrets Manager endpoints.

Support and Feedback for Amazon Web Services Secrets Manager

We welcome your feedback. Send your comments to awssecretsmanager-feedback@amazon.com, or post your feedback and questions in the Amazon Web Services Secrets Manager Discussion Forum. For more information about the Amazon Web Services Discussion Forums, see Forums Help.

Logging API Requests

Amazon Web Services Secrets Manager supports Amazon Web Services CloudTrail, a service that records Amazon Web Services API calls for your Amazon Web Services account and delivers log files to an Amazon S3 bucket. By using information that's collected by Amazon Web Services CloudTrail, you can determine the requests successfully made to Secrets Manager, who made the request, when it was made, and so on. For more about Amazon Web Services Secrets Manager and support for Amazon Web Services CloudTrail, see Logging Amazon Web Services Secrets Manager Events with Amazon Web Services CloudTrail in the Amazon Web Services Secrets Manager User Guide. To learn more about CloudTrail, including enabling it and find your log files, see the Amazon Web Services CloudTrail User Guide.

", "operations": { + "BatchGetSecretValue": "

Retrieves the contents of the encrypted fields SecretString or SecretBinary for up to 20 secrets. To retrieve a single secret, call GetSecretValue.

To choose which secrets to retrieve, you can specify a list of secrets by name or ARN, or you can use filters. If Secrets Manager encounters errors such as AccessDeniedException while attempting to retrieve any of the secrets, you can see the errors in Errors in the response.

Secrets Manager generates CloudTrail GetSecretValue log entries for each secret you request when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:BatchGetSecretValue, and you must have secretsmanager:GetSecretValue for each secret. If you use filters, you must also have secretsmanager:ListSecrets. If the secrets are encrypted using customer-managed keys instead of the Amazon Web Services managed key aws/secretsmanager, then you also need kms:Decrypt permissions for the keys. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "CancelRotateSecret": "

Turns off automatic rotation, and if a rotation is currently in progress, cancels the rotation.

If you cancel a rotation in progress, it can leave the VersionStage labels in an unexpected state. You might need to remove the staging label AWSPENDING from the partially created version. You also need to determine whether to roll back to the previous version of the secret by moving the staging label AWSCURRENT to the version that has AWSPENDING. To determine which version has a specific staging label, call ListSecretVersionIds. Then use UpdateSecretVersionStage to change staging labels. For more information, see How rotation works.

To turn on automatic rotation again, call RotateSecret.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:CancelRotateSecret. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "CreateSecret": "

Creates a new secret. A secret can be a password, a set of credentials such as a user name and password, an OAuth token, or other secret information that you store in an encrypted form in Secrets Manager. The secret also includes the connection information to access a database or other service, which Secrets Manager doesn't encrypt. A secret in Secrets Manager consists of both the protected secret data and the important information needed to manage the secret.

For secrets that use managed rotation, you need to create the secret through the managing service. For more information, see Secrets Manager secrets managed by other Amazon Web Services services.

For information about creating a secret in the console, see Create a secret.

To create a secret, you can provide the secret value to be encrypted in either the SecretString parameter or the SecretBinary parameter, but not both. If you include SecretString or SecretBinary then Secrets Manager creates an initial secret version and automatically attaches the staging label AWSCURRENT to it.

For database credentials you want to rotate, for Secrets Manager to be able to rotate the secret, you must make sure the JSON you store in the SecretString matches the JSON structure of a database secret.

If you don't specify an KMS encryption key, Secrets Manager uses the Amazon Web Services managed key aws/secretsmanager. If this key doesn't already exist in your account, then Secrets Manager creates it for you automatically. All users and roles in the Amazon Web Services account automatically have access to use aws/secretsmanager. Creating aws/secretsmanager can result in a one-time significant delay in returning the result.

If the secret is in a different Amazon Web Services account from the credentials calling the API, then you can't use aws/secretsmanager to encrypt the secret, and you must create and use a customer managed KMS key.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters except SecretBinary or SecretString because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:CreateSecret. If you include tags in the secret, you also need secretsmanager:TagResource. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

To encrypt the secret with a KMS key other than aws/secretsmanager, you need kms:GenerateDataKey and kms:Decrypt permission to the key.

", "DeleteResourcePolicy": "

Deletes the resource-based permission policy attached to the secret. To attach a policy to a secret, use PutResourcePolicy.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:DeleteResourcePolicy. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", @@ -9,9 +10,9 @@ "DescribeSecret": "

Retrieves the details of a secret. It does not include the encrypted secret value. Secrets Manager only returns fields that have a value in the response.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:DescribeSecret. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "GetRandomPassword": "

Generates a random password. We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:GetRandomPassword. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "GetResourcePolicy": "

Retrieves the JSON text of the resource-based policy document attached to the secret. For more information about permissions policies attached to a secret, see Permissions policies attached to a secret.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:GetResourcePolicy. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", - "GetSecretValue": "

Retrieves the contents of the encrypted fields SecretString or SecretBinary from the specified version of a secret, whichever contains content.

We recommend that you cache your secret values by using client-side caching. Caching secrets improves speed and reduces your costs. For more information, see Cache secrets for your applications.

To retrieve the previous version of a secret, use VersionStage and specify AWSPREVIOUS. To revert to the previous version of a secret, call UpdateSecretVersionStage.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:GetSecretValue. If the secret is encrypted using a customer-managed key instead of the Amazon Web Services managed key aws/secretsmanager, then you also need kms:Decrypt permissions for that key. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", + "GetSecretValue": "

Retrieves the contents of the encrypted fields SecretString or SecretBinary from the specified version of a secret, whichever contains content.

To retrieve the values for a group of secrets, call BatchGetSecretValue.

We recommend that you cache your secret values by using client-side caching. Caching secrets improves speed and reduces your costs. For more information, see Cache secrets for your applications.

To retrieve the previous version of a secret, use VersionStage and specify AWSPREVIOUS. To revert to the previous version of a secret, call UpdateSecretVersionStage.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:GetSecretValue. If the secret is encrypted using a customer-managed key instead of the Amazon Web Services managed key aws/secretsmanager, then you also need kms:Decrypt permissions for that key. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "ListSecretVersionIds": "

Lists the versions of a secret. Secrets Manager uses staging labels to indicate the different versions of a secret. For more information, see Secrets Manager concepts: Versions.

To list the secrets in the account, use ListSecrets.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:ListSecretVersionIds. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", - "ListSecrets": "

Lists the secrets that are stored by Secrets Manager in the Amazon Web Services account, not including secrets that are marked for deletion. To see secrets marked for deletion, use the Secrets Manager console.

ListSecrets is eventually consistent, however it might not reflect changes from the last five minutes. To get the latest information for a specific secret, use DescribeSecret.

To list the versions of a secret, use ListSecretVersionIds.

To get the secret value from SecretString or SecretBinary, call GetSecretValue.

For information about finding secrets in the console, see Find secrets in Secrets Manager.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:ListSecrets. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", + "ListSecrets": "

Lists the secrets that are stored by Secrets Manager in the Amazon Web Services account, not including secrets that are marked for deletion. To see secrets marked for deletion, use the Secrets Manager console.

ListSecrets is eventually consistent, however it might not reflect changes from the last five minutes. To get the latest information for a specific secret, use DescribeSecret.

To list the versions of a secret, use ListSecretVersionIds.

To retrieve the values for the secrets, call BatchGetSecretValue or GetSecretValue.

For information about finding secrets in the console, see Find secrets in Secrets Manager.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:ListSecrets. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "PutResourcePolicy": "

Attaches a resource-based permission policy to a secret. A resource-based policy is optional. For more information, see Authentication and access control for Secrets Manager

For information about attaching a policy in the console, see Attach a permissions policy to a secret.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:PutResourcePolicy. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "PutSecretValue": "

Creates a new version with a new encrypted secret value and attaches it to the secret. The version can contain a new SecretString value or a new SecretBinary value.

We recommend you avoid calling PutSecretValue at a sustained rate of more than once every 10 minutes. When you update the secret value, Secrets Manager creates a new version of the secret. Secrets Manager removes outdated versions when there are more than 100, but it does not remove versions created less than 24 hours ago. If you call PutSecretValue more than once every 10 minutes, you create more versions than Secrets Manager removes, and you will reach the quota for secret versions.

You can specify the staging labels to attach to the new version in VersionStages. If you don't include VersionStages, then Secrets Manager automatically moves the staging label AWSCURRENT to this version. If this operation creates the first version for the secret, then Secrets Manager automatically attaches the staging label AWSCURRENT to it. If this operation moves the staging label AWSCURRENT from another version to this version, then Secrets Manager also automatically moves the staging label AWSPREVIOUS to the version that AWSCURRENT was removed from.

This operation is idempotent. If you call this operation with a ClientRequestToken that matches an existing version's VersionId, and you specify the same secret data, the operation succeeds but does nothing. However, if the secret data is different, then the operation fails because you can't modify an existing version; you can only create new ones.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters except SecretBinary or SecretString because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:PutSecretValue. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", "RemoveRegionsFromReplication": "

For a secret that is replicated to other Regions, deletes the secret replicas from the Regions you specify.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:RemoveRegionsFromReplication. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

", @@ -26,6 +27,18 @@ "ValidateResourcePolicy": "

Validates that a resource policy does not grant a wide range of principals access to your secret. A resource-based policy is optional for secrets.

The API performs three checks when validating the policy:

  • Sends a call to Zelkova, an automated reasoning engine, to ensure your resource policy does not allow broad access to your secret, for example policies that use a wildcard for the principal.

  • Checks for correct syntax in a policy.

  • Verifies the policy does not lock out a caller.

Secrets Manager generates a CloudTrail log entry when you call this action. Do not include sensitive information in request parameters because it might be logged. For more information, see Logging Secrets Manager events with CloudTrail.

Required permissions: secretsmanager:ValidateResourcePolicy and secretsmanager:PutResourcePolicy. For more information, see IAM policy actions for Secrets Manager and Authentication and access control in Secrets Manager.

" }, "shapes": { + "APIErrorListType": { + "base": null, + "refs": { + "BatchGetSecretValueResponse$Errors": "

A list of errors Secrets Manager encountered while attempting to retrieve individual secrets.

" + } + }, + "APIErrorType": { + "base": "

The error Secrets Manager encountered while retrieving an individual secret as part of BatchGetSecretValue.

", + "refs": { + "APIErrorListType$member": null + } + }, "AddReplicaRegionListType": { "base": null, "refs": { @@ -39,6 +52,16 @@ "RotationRulesType$AutomaticallyAfterDays": "

The number of days between rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated. If you use this field to set the rotation schedule, Secrets Manager calculates the next rotation date based on the previous rotation. Manually updating the secret value by calling PutSecretValue or UpdateSecret is considered a valid rotation.

In DescribeSecret and ListSecrets, this value is calculated from the rotation schedule after every successful rotation. In RotateSecret, you can set the rotation schedule in RotationRules with AutomaticallyAfterDays or ScheduleExpression, but not both. To set a rotation schedule in hours, use ScheduleExpression.

" } }, + "BatchGetSecretValueRequest": { + "base": null, + "refs": { + } + }, + "BatchGetSecretValueResponse": { + "base": null, + "refs": { + } + }, "BooleanType": { "base": null, "refs": { @@ -85,6 +108,7 @@ "base": null, "refs": { "GetSecretValueResponse$CreatedDate": "

The date and time that this version of the secret was created. If you don't specify which version in VersionId or VersionStage, then Secrets Manager uses the AWSCURRENT version.

", + "SecretValueEntry$CreatedDate": "

The date the secret was created.

", "SecretVersionsListEntry$CreatedDate": "

The date and time this version of the secret was created.

" } }, @@ -156,9 +180,16 @@ "refs": { } }, + "ErrorCode": { + "base": null, + "refs": { + "APIErrorType$ErrorCode": "

The error Secrets Manager encountered while retrieving an individual secret as part of BatchGetSecretValue, for example ResourceNotFoundException,InvalidParameterException, InvalidRequestException, DecryptionFailure, or AccessDeniedException.

" + } + }, "ErrorMessage": { "base": null, "refs": { + "APIErrorType$Message": "

A message describing the error.

", "DecryptionFailure$Message": null, "EncryptionFailure$Message": null, "InternalServiceError$Message": null, @@ -231,6 +262,7 @@ "FiltersListType": { "base": null, "refs": { + "BatchGetSecretValueRequest$Filters": "

The filters to choose which secrets to retrieve. You must include Filters or SecretIdList, but not both.

", "ListSecretsRequest$Filters": "

The filters to apply to the list of secrets.

" } }, @@ -361,6 +393,12 @@ "refs": { } }, + "MaxResultsBatchType": { + "base": null, + "refs": { + "BatchGetSecretValueRequest$MaxResults": "

The number of results to include in the response.

If there are more results available, in the response, Secrets Manager includes NextToken. To get the next results, call BatchGetSecretValue again with the value from NextToken.

" + } + }, "MaxResultsType": { "base": null, "refs": { @@ -388,6 +426,8 @@ "NextTokenType": { "base": null, "refs": { + "BatchGetSecretValueRequest$NextToken": "

A token that indicates where the output should continue from, if a previous call did not show all results. To get the next results, call BatchGetSecretValue again with this value.

", + "BatchGetSecretValueResponse$NextToken": "

Secrets Manager includes this value if there's more output available than what is included in the current response. This can occur even when the response includes no values at all, such as when you ask for a filtered view of a long list. To get the next results, call BatchGetSecretValue again with this value.

", "ListSecretVersionIdsRequest$NextToken": "

A token that indicates where the output should continue from, if a previous call did not show all results. To get the next results, call ListSecretVersionIds again with this value.

", "ListSecretVersionIdsResponse$NextToken": "

Secrets Manager includes this value if there's more output available than what is included in the current response. This can occur even when the response includes no values at all, such as when you ask for a filtered view of a long list. To get the next results, call ListSecretVersionIds again with this value.

", "ListSecretsRequest$NextToken": "

A token that indicates where the output should continue from, if a previous call did not show all results. To get the next results, call ListSecrets again with this value.

", @@ -597,6 +637,7 @@ "RestoreSecretResponse$ARN": "

The ARN of the secret that was restored.

", "RotateSecretResponse$ARN": "

The ARN of the secret.

", "SecretListEntry$ARN": "

The Amazon Resource Name (ARN) of the secret.

", + "SecretValueEntry$ARN": "

The Amazon Resource Name (ARN) of the secret.

", "StopReplicationToReplicaResponse$ARN": "

The ARN of the promoted secret. The ARN is the same as the original primary secret except the Region is changed.

", "UpdateSecretResponse$ARN": "

The ARN of the secret that was updated.

", "UpdateSecretVersionStageResponse$ARN": "

The ARN of the secret that was updated.

" @@ -608,12 +649,20 @@ "CreateSecretRequest$SecretBinary": "

The binary data to encrypt and store in the new version of the secret. We recommend that you store your binary data in a file and then pass the contents of the file as a parameter.

Either SecretString or SecretBinary must have a value, but not both.

This parameter is not available in the Secrets Manager console.

", "GetSecretValueResponse$SecretBinary": "

The decrypted secret value, if the secret value was originally provided as binary data in the form of a byte array. The response parameter represents the binary data as a base64-encoded string.

If the secret was created by using the Secrets Manager console, or if the secret value was originally provided as a string, then this field is omitted. The secret value appears in SecretString instead.

", "PutSecretValueRequest$SecretBinary": "

The binary data to encrypt and store in the new version of the secret. To use this parameter in the command-line tools, we recommend that you store your binary data in a file and then pass the contents of the file as a parameter.

You must include SecretBinary or SecretString, but not both.

You can't access this value from the Secrets Manager console.

", + "SecretValueEntry$SecretBinary": "

The decrypted secret value, if the secret value was originally provided as binary data in the form of a byte array. The parameter represents the binary data as a base64-encoded string.

", "UpdateSecretRequest$SecretBinary": "

The binary data to encrypt and store in the new version of the secret. We recommend that you store your binary data in a file and then pass the contents of the file as a parameter.

Either SecretBinary or SecretString must have a value, but not both.

You can't access this parameter in the Secrets Manager console.

" } }, + "SecretIdListType": { + "base": null, + "refs": { + "BatchGetSecretValueRequest$SecretIdList": "

The ARN or names of the secrets to retrieve. You must include Filters or SecretIdList, but not both.

" + } + }, "SecretIdType": { "base": null, "refs": { + "APIErrorType$SecretId": "

The ARN or name of the secret.

", "CancelRotateSecretRequest$SecretId": "

The ARN or name of the secret.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", "DeleteResourcePolicyRequest$SecretId": "

The ARN or name of the secret to delete the attached resource-based policy for.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", "DeleteSecretRequest$SecretId": "

The ARN or name of the secret to delete.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", @@ -627,6 +676,7 @@ "ReplicateSecretToRegionsRequest$SecretId": "

The ARN or name of the secret to replicate.

", "RestoreSecretRequest$SecretId": "

The ARN or name of the secret to restore.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", "RotateSecretRequest$SecretId": "

The ARN or name of the secret to rotate.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", + "SecretIdListType$member": null, "StopReplicationToReplicaRequest$SecretId": "

The ARN of the primary secret.

", "TagResourceRequest$SecretId": "

The identifier for the secret to attach tags to. You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", "UntagResourceRequest$SecretId": "

The ARN or name of the secret.

For an ARN, we recommend that you specify a complete ARN rather than a partial ARN. See Finding a secret from a partial ARN.

", @@ -659,7 +709,8 @@ "PutSecretValueResponse$Name": "

The name of the secret.

", "RestoreSecretResponse$Name": "

The name of the secret that was restored.

", "RotateSecretResponse$Name": "

The name of the secret.

", - "SecretListEntry$Name": "

The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod.

", + "SecretListEntry$Name": "

The friendly name of the secret.

", + "SecretValueEntry$Name": "

The friendly name of the secret.

", "UpdateSecretResponse$Name": "

The name of the secret that was updated.

", "UpdateSecretVersionStageResponse$Name": "

The name of the secret that was updated.

" } @@ -670,9 +721,22 @@ "CreateSecretRequest$SecretString": "

The text data to encrypt and store in this new version of the secret. We recommend you use a JSON structure of key/value pairs for your secret value.

Either SecretString or SecretBinary must have a value, but not both.

If you create a secret by using the Secrets Manager console then Secrets Manager puts the protected secret text in only the SecretString parameter. The Secrets Manager console stores the information as a JSON structure of key/value pairs that a Lambda rotation function can parse.

", "GetSecretValueResponse$SecretString": "

The decrypted secret value, if the secret value was originally provided as a string or through the Secrets Manager console.

If this secret was created by using the console, then Secrets Manager stores the information as a JSON structure of key/value pairs.

", "PutSecretValueRequest$SecretString": "

The text to encrypt and store in the new version of the secret.

You must include SecretBinary or SecretString, but not both.

We recommend you create the secret string as JSON key/value pairs, as shown in the example.

", + "SecretValueEntry$SecretString": "

The decrypted secret value, if the secret value was originally provided as a string or through the Secrets Manager console.

", "UpdateSecretRequest$SecretString": "

The text data to encrypt and store in the new version of the secret. We recommend you use a JSON structure of key/value pairs for your secret value.

Either SecretBinary or SecretString must have a value, but not both.

" } }, + "SecretValueEntry": { + "base": "

A structure that contains the secret value and other details for a secret.

", + "refs": { + "SecretValuesType$member": null + } + }, + "SecretValuesType": { + "base": null, + "refs": { + "BatchGetSecretValueResponse$SecretValues": "

A list of secret values.

" + } + }, "SecretVersionIdType": { "base": null, "refs": { @@ -682,6 +746,7 @@ "GetSecretValueResponse$VersionId": "

The unique identifier of this version of the secret.

", "PutSecretValueResponse$VersionId": "

The unique identifier of the version of the secret.

", "RotateSecretResponse$VersionId": "

The ID of the new version of the secret.

", + "SecretValueEntry$VersionId": "

The unique version identifier of this version of the secret.

", "SecretVersionsListEntry$VersionId": "

The unique version identifier of this version of the secret.

", "SecretVersionsToStagesMapType$key": null, "UpdateSecretResponse$VersionId": "

If Secrets Manager created a new version of the secret during this operation, then VersionId contains the unique identifier of the new version.

", @@ -703,6 +768,7 @@ "GetSecretValueResponse$VersionStages": "

A list of all of the staging labels currently attached to this version of the secret.

", "PutSecretValueRequest$VersionStages": "

A list of staging labels to attach to this version of the secret. Secrets Manager uses staging labels to track versions of a secret through the rotation process.

If you specify a staging label that's already associated with a different version of the same secret, then Secrets Manager removes the label from the other version and attaches it to this version. If you specify AWSCURRENT, and it is already attached to another version, then Secrets Manager also moves the staging label AWSPREVIOUS to the version that AWSCURRENT was removed from.

If you don't include VersionStages, then Secrets Manager automatically moves the staging label AWSCURRENT to this version.

", "PutSecretValueResponse$VersionStages": "

The list of staging labels that are currently attached to this version of the secret. Secrets Manager uses staging labels to track a version as it progresses through the secret rotation process.

", + "SecretValueEntry$VersionStages": "

A list of all of the staging labels currently attached to this version of the secret.

", "SecretVersionsListEntry$VersionStages": "

An array of staging labels that are currently associated with this version of the secret.

", "SecretVersionsToStagesMapType$value": null } diff --git a/apis/secretsmanager/2017-10-17/paginators-1.json b/apis/secretsmanager/2017-10-17/paginators-1.json index 23589621f3c..2c985b80a90 100644 --- a/apis/secretsmanager/2017-10-17/paginators-1.json +++ b/apis/secretsmanager/2017-10-17/paginators-1.json @@ -1,5 +1,10 @@ { "pagination": { + "BatchGetSecretValue": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, "ListSecretVersionIds": { "input_token": "NextToken", "output_token": "NextToken", diff --git a/apis/securityhub/2018-10-26/api-2.json b/apis/securityhub/2018-10-26/api-2.json index 07d2c22a7e2..e6cfdd15d00 100644 --- a/apis/securityhub/2018-10-26/api-2.json +++ b/apis/securityhub/2018-10-26/api-2.json @@ -767,6 +767,22 @@ {"shape":"ResourceNotFoundException"} ] }, + "GetSecurityControlDefinition":{ + "name":"GetSecurityControlDefinition", + "http":{ + "method":"GET", + "requestUri":"/securityControl/definition" + }, + "input":{"shape":"GetSecurityControlDefinitionRequest"}, + "output":{"shape":"GetSecurityControlDefinitionResponse"}, + "errors":[ + {"shape":"InternalException"}, + {"shape":"InvalidInputException"}, + {"shape":"InvalidAccessException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceNotFoundException"} + ] + }, "InviteMembers":{ "name":"InviteMembers", "http":{ @@ -1026,6 +1042,23 @@ {"shape":"LimitExceededException"} ] }, + "UpdateSecurityControl":{ + "name":"UpdateSecurityControl", + "http":{ + "method":"PATCH", + "requestUri":"/securityControl/update" + }, + "input":{"shape":"UpdateSecurityControlRequest"}, + "output":{"shape":"UpdateSecurityControlResponse"}, + "errors":[ + {"shape":"InternalException"}, + {"shape":"InvalidInputException"}, + {"shape":"InvalidAccessException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ResourceInUseException"} + ] + }, "UpdateSecurityHubConfiguration":{ "name":"UpdateSecurityHubConfiguration", "http":{ @@ -1214,6 +1247,10 @@ "max":10, "min":1 }, + "AlphaNumericNonEmptyString":{ + "type":"string", + "pattern":"^[-_ a-zA-Z0-9]+$" + }, "ArnList":{ "type":"list", "member":{"shape":"NonEmptyString"} @@ -6350,7 +6387,11 @@ "FindingProviderFieldsTypes":{"shape":"StringFilterList"}, "Sample":{"shape":"BooleanFilterList"}, "ComplianceSecurityControlId":{"shape":"StringFilterList"}, - "ComplianceAssociatedStandardsId":{"shape":"StringFilterList"} + "ComplianceAssociatedStandardsId":{"shape":"StringFilterList"}, + "VulnerabilitiesExploitAvailable":{"shape":"StringFilterList"}, + "VulnerabilitiesFixAvailable":{"shape":"StringFilterList"}, + "ComplianceSecurityControlParametersName":{"shape":"StringFilterList"}, + "ComplianceSecurityControlParametersValue":{"shape":"StringFilterList"} } }, "AwsSecurityFindingIdentifier":{ @@ -7006,6 +7047,12 @@ } }, "Boolean":{"type":"boolean"}, + "BooleanConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"Boolean"} + } + }, "BooleanFilter":{ "type":"structure", "members":{ @@ -7093,7 +7140,8 @@ "RelatedRequirements":{"shape":"RelatedRequirementsList"}, "StatusReasons":{"shape":"StatusReasonsList"}, "SecurityControlId":{"shape":"NonEmptyString"}, - "AssociatedStandards":{"shape":"AssociatedStandardsList"} + "AssociatedStandards":{"shape":"AssociatedStandardsList"}, + "SecurityControlParameters":{"shape":"SecurityControlParametersList"} } }, "ComplianceStatus":{ @@ -7105,6 +7153,20 @@ "NOT_AVAILABLE" ] }, + "ConfigurationOptions":{ + "type":"structure", + "members":{ + "Integer":{"shape":"IntegerConfigurationOptions"}, + "IntegerList":{"shape":"IntegerListConfigurationOptions"}, + "Double":{"shape":"DoubleConfigurationOptions"}, + "String":{"shape":"StringConfigurationOptions"}, + "StringList":{"shape":"StringListConfigurationOptions"}, + "Boolean":{"shape":"BooleanConfigurationOptions"}, + "Enum":{"shape":"EnumConfigurationOptions"}, + "EnumList":{"shape":"EnumListConfigurationOptions"} + }, + "union":true + }, "ContainerDetails":{ "type":"structure", "members":{ @@ -7259,6 +7321,10 @@ "TotalCount":{"shape":"Long"} } }, + "CustomizableProperties":{ + "type":"list", + "member":{"shape":"SecurityControlProperty"} + }, "Cvss":{ "type":"structure", "members":{ @@ -7599,6 +7665,14 @@ } }, "Double":{"type":"double"}, + "DoubleConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"Double"}, + "Min":{"shape":"Double"}, + "Max":{"shape":"Double"} + } + }, "EnableImportFindingsForProductRequest":{ "type":"structure", "required":["ProductArn"], @@ -7637,6 +7711,21 @@ "members":{ } }, + "EnumConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"NonEmptyString"}, + "AllowedValues":{"shape":"StringList"} + } + }, + "EnumListConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"StringList"}, + "MaxItems":{"shape":"Integer"}, + "AllowedValues":{"shape":"StringList"} + } + }, "FieldMap":{ "type":"map", "key":{"shape":"NonEmptyString"}, @@ -7931,6 +8020,24 @@ "UnprocessedAccounts":{"shape":"ResultList"} } }, + "GetSecurityControlDefinitionRequest":{ + "type":"structure", + "required":["SecurityControlId"], + "members":{ + "SecurityControlId":{ + "shape":"NonEmptyString", + "location":"querystring", + "locationName":"SecurityControlId" + } + } + }, + "GetSecurityControlDefinitionResponse":{ + "type":"structure", + "required":["SecurityControlDefinition"], + "members":{ + "SecurityControlDefinition":{"shape":"SecurityControlDefinition"} + } + }, "IcmpTypeCode":{ "type":"structure", "members":{ @@ -8003,10 +8110,27 @@ } }, "Integer":{"type":"integer"}, + "IntegerConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"Integer"}, + "Min":{"shape":"Integer"}, + "Max":{"shape":"Integer"} + } + }, "IntegerList":{ "type":"list", "member":{"shape":"Integer"} }, + "IntegerListConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"IntegerList"}, + "Min":{"shape":"Integer"}, + "Max":{"shape":"Integer"}, + "MaxItems":{"shape":"Integer"} + } + }, "IntegrationType":{ "type":"string", "enum":[ @@ -8530,7 +8654,9 @@ "members":{ "Gte":{"shape":"Double"}, "Lte":{"shape":"Double"}, - "Eq":{"shape":"Double"} + "Eq":{"shape":"Double"}, + "Gt":{"shape":"Double"}, + "Lt":{"shape":"Double"} } }, "NumberFilterList":{ @@ -8559,6 +8685,56 @@ "type":"list", "member":{"shape":"Page"} }, + "ParameterConfiguration":{ + "type":"structure", + "required":["ValueType"], + "members":{ + "ValueType":{"shape":"ParameterValueType"}, + "Value":{"shape":"ParameterValue"} + } + }, + "ParameterDefinition":{ + "type":"structure", + "required":[ + "Description", + "ConfigurationOptions" + ], + "members":{ + "Description":{"shape":"NonEmptyString"}, + "ConfigurationOptions":{"shape":"ConfigurationOptions"} + } + }, + "ParameterDefinitions":{ + "type":"map", + "key":{"shape":"NonEmptyString"}, + "value":{"shape":"ParameterDefinition"} + }, + "ParameterValue":{ + "type":"structure", + "members":{ + "Integer":{"shape":"Integer"}, + "IntegerList":{"shape":"IntegerList"}, + "Double":{"shape":"Double"}, + "String":{"shape":"NonEmptyString"}, + "StringList":{"shape":"StringList"}, + "Boolean":{"shape":"Boolean"}, + "Enum":{"shape":"NonEmptyString"}, + "EnumList":{"shape":"StringList"} + }, + "union":true + }, + "ParameterValueType":{ + "type":"string", + "enum":[ + "DEFAULT", + "CUSTOM" + ] + }, + "Parameters":{ + "type":"map", + "key":{"shape":"NonEmptyString"}, + "value":{"shape":"ParameterConfiguration"} + }, "Partition":{ "type":"string", "enum":[ @@ -8871,6 +9047,15 @@ "AwsMskCluster":{"shape":"AwsMskClusterDetails"} } }, + "ResourceInUseException":{ + "type":"structure", + "members":{ + "Message":{"shape":"NonEmptyString"}, + "Code":{"shape":"NonEmptyString"} + }, + "error":{"httpStatusCode":400}, + "exception":true + }, "ResourceList":{ "type":"list", "member":{"shape":"Resource"} @@ -9135,7 +9320,10 @@ "Description":{"shape":"NonEmptyString"}, "RemediationUrl":{"shape":"NonEmptyString"}, "SeverityRating":{"shape":"SeverityRating"}, - "SecurityControlStatus":{"shape":"ControlStatus"} + "SecurityControlStatus":{"shape":"ControlStatus"}, + "UpdateStatus":{"shape":"UpdateStatus"}, + "Parameters":{"shape":"Parameters"}, + "LastUpdateReason":{"shape":"AlphaNumericNonEmptyString"} } }, "SecurityControlDefinition":{ @@ -9154,13 +9342,30 @@ "Description":{"shape":"NonEmptyString"}, "RemediationUrl":{"shape":"NonEmptyString"}, "SeverityRating":{"shape":"SeverityRating"}, - "CurrentRegionAvailability":{"shape":"RegionAvailabilityStatus"} + "CurrentRegionAvailability":{"shape":"RegionAvailabilityStatus"}, + "CustomizableProperties":{"shape":"CustomizableProperties"}, + "ParameterDefinitions":{"shape":"ParameterDefinitions"} } }, "SecurityControlDefinitions":{ "type":"list", "member":{"shape":"SecurityControlDefinition"} }, + "SecurityControlParameter":{ + "type":"structure", + "members":{ + "Name":{"shape":"NonEmptyString"}, + "Value":{"shape":"TypeList"} + } + }, + "SecurityControlParametersList":{ + "type":"list", + "member":{"shape":"SecurityControlParameter"} + }, + "SecurityControlProperty":{ + "type":"string", + "enum":["Parameters"] + }, "SecurityControls":{ "type":"list", "member":{"shape":"SecurityControl"} @@ -9497,6 +9702,14 @@ "type":"list", "member":{"shape":"StatusReason"} }, + "StringConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"NonEmptyString"}, + "Re2Expression":{"shape":"NonEmptyString"}, + "ExpressionDescription":{"shape":"NonEmptyString"} + } + }, "StringFilter":{ "type":"structure", "members":{ @@ -9523,6 +9736,15 @@ "type":"list", "member":{"shape":"NonEmptyString"} }, + "StringListConfigurationOptions":{ + "type":"structure", + "members":{ + "DefaultValue":{"shape":"StringList"}, + "Re2Expression":{"shape":"NonEmptyString"}, + "MaxItems":{"shape":"Integer"}, + "ExpressionDescription":{"shape":"NonEmptyString"} + } + }, "TagKey":{ "type":"string", "max":128, @@ -9827,6 +10049,23 @@ "members":{ } }, + "UpdateSecurityControlRequest":{ + "type":"structure", + "required":[ + "SecurityControlId", + "Parameters" + ], + "members":{ + "SecurityControlId":{"shape":"NonEmptyString"}, + "Parameters":{"shape":"Parameters"}, + "LastUpdateReason":{"shape":"AlphaNumericNonEmptyString"} + } + }, + "UpdateSecurityControlResponse":{ + "type":"structure", + "members":{ + } + }, "UpdateSecurityHubConfigurationRequest":{ "type":"structure", "members":{ @@ -9857,6 +10096,13 @@ "members":{ } }, + "UpdateStatus":{ + "type":"string", + "enum":[ + "READY", + "UPDATING" + ] + }, "VerificationState":{ "type":"string", "enum":[ diff --git a/apis/securityhub/2018-10-26/docs-2.json b/apis/securityhub/2018-10-26/docs-2.json index 5b1218b2f99..3ab6a442d51 100644 --- a/apis/securityhub/2018-10-26/docs-2.json +++ b/apis/securityhub/2018-10-26/docs-2.json @@ -50,6 +50,7 @@ "GetInvitationsCount": "

Returns the count of all Security Hub membership invitations that were sent to the current member account, not including the currently accepted invitation.

", "GetMasterAccount": "

This method is deprecated. Instead, use GetAdministratorAccount.

The Security Hub console continues to use GetMasterAccount. It will eventually change to use GetAdministratorAccount. Any IAM policies that specifically control access to this function must continue to use GetMasterAccount. You should also add GetAdministratorAccount to your policies to ensure that the correct permissions are in place after the console begins to use GetAdministratorAccount.

Provides the details for the Security Hub administrator account for the current member account.

Can be used by both member accounts that are managed using Organizations and accounts that were invited manually.

", "GetMembers": "

Returns the details for the Security Hub member accounts for the specified account IDs.

An administrator account can be either the delegated Security Hub administrator account for an organization or an administrator account that enabled Security Hub manually.

The results include both member accounts that are managed using Organizations and accounts that were invited manually.

", + "GetSecurityControlDefinition": "

Retrieves the definition of a security control. The definition includes the control title, description, Region availability, parameter definitions, and other details.

", "InviteMembers": "

Invites other Amazon Web Services accounts to become member accounts for the Security Hub administrator account that the invitation is sent from.

This operation is only used to invite accounts that do not belong to an organization. Organization accounts do not receive invitations.

Before you can use this action to invite a member, you must first use the CreateMembers action to create the member account in Security Hub.

When the account owner enables Security Hub and accepts the invitation to become a member account, the administrator account can view the findings generated from the member account.

", "ListAutomationRules": "

A list of automation rules and their metadata for the calling account.

", "ListEnabledProductsForImport": "

Lists all findings-generating solutions (products) that you are subscribed to receive findings from in Security Hub.

", @@ -67,6 +68,7 @@ "UpdateFindings": "

UpdateFindings is deprecated. Instead of UpdateFindings, use BatchUpdateFindings.

Updates the Note and RecordState of the Security Hub-aggregated findings that the filter attributes specify. Any member account that can view the finding also sees the update to the finding.

", "UpdateInsight": "

Updates the Security Hub insight identified by the specified insight ARN.

", "UpdateOrganizationConfiguration": "

Used to update the configuration related to Organizations. Can only be called from a Security Hub administrator account.

", + "UpdateSecurityControl": "

Updates the properties of a security control.

", "UpdateSecurityHubConfiguration": "

Updates configuration options for Security Hub.

", "UpdateStandardsControl": "

Used to control whether an individual security standard control is enabled or disabled.

" }, @@ -217,6 +219,13 @@ "ListOrganizationAdminAccountsRequest$MaxResults": "

The maximum number of items to return in the response.

" } }, + "AlphaNumericNonEmptyString": { + "base": null, + "refs": { + "SecurityControl$LastUpdateReason": "

The most recent reason for updating the customizable properties of a security control. This differs from the UpdateReason field of the BatchUpdateStandardsControlAssociations API, which tracks the reason for updating the enablement status of a control. This field accepts alphanumeric characters in addition to white spaces, dashes, and underscores.

", + "UpdateSecurityControlRequest$LastUpdateReason": "

The most recent reason for updating the properties of the security control. This field accepts alphanumeric characters in addition to white spaces, dashes, and underscores.

" + } + }, "ArnList": { "base": null, "refs": { @@ -882,7 +891,7 @@ } }, "AwsCloudFrontDistributionOriginItem": { - "base": "

A complex type that describes the Amazon S3 bucket, HTTP server (for example, a web server), AWS Elemental MediaStore, or other server from which CloudFront gets your files.

", + "base": "

A complex type that describes the Amazon S3 bucket, HTTP server (for example, a web server), Elemental MediaStore, or other server from which CloudFront gets your files.

", "refs": { "AwsCloudFrontDistributionOriginItemList$member": null } @@ -3816,7 +3825,7 @@ } }, "AwsSecurityFindingFilters": { - "base": "

A collection of attributes that are applied to all active Security Hub-aggregated findings and that result in a subset of findings that are included in this insight.

You can filter by up to 10 finding attributes. For each attribute, you can provide up to 20 filter values.

", + "base": "

A collection of filters that are applied to all active findings aggregated by Security Hub.

You can filter by up to ten finding attributes. For each attribute, you can provide up to 20 filter values.

", "refs": { "CreateInsightRequest$Filters": "

One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.

", "GetFindingsRequest$Filters": "

The finding attributes used to define a condition to filter the returned findings.

You can filter by up to 10 finding attributes. For each attribute, you can provide up to 20 filter values.

Note that in the available filter fields, WorkflowState is deprecated. To search for a finding based on its workflow status, use WorkflowStatus.

", @@ -4522,6 +4531,7 @@ "AwsWafv2VisibilityConfigDetails$CloudWatchMetricsEnabled": "

A boolean indicating whether the associated resource sends metrics to Amazon CloudWatch. For the list of available metrics, see WAF metrics and dimensions in the WAF Developer Guide.

", "AwsWafv2VisibilityConfigDetails$SampledRequestsEnabled": "

A boolean indicating whether WAF should store a sampling of the web requests that match the rules. You can view the sampled requests through the WAF console.

", "AwsWafv2WebAclDetails$ManagedbyFirewallManager": "

Indicates whether this web ACL is managed by Firewall Manager.

", + "BooleanConfigurationOptions$DefaultValue": "

The Security Hub default value for a boolean parameter.

", "BooleanFilter$Value": "

The value of the boolean.

", "ClassificationResult$AdditionalOccurrences": "

Indicates whether there are additional occurrences of sensitive data that are not included in the finding. This occurs when the number of occurrences exceeds the maximum that can be included.

", "ContainerDetails$Privileged": "

When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).

", @@ -4534,6 +4544,7 @@ "FindingHistoryRecord$FindingCreated": "

Identifies whether the event marks the creation of a new finding. A value of True means that the finding is newly created. A value of False means that the finding isn’t newly created.

", "ListMembersRequest$OnlyAssociated": "

Specifies which member accounts to include in the response based on their relationship status with the administrator account. The default value is TRUE.

If OnlyAssociated is set to TRUE, the response includes member accounts whose relationship status with the administrator account is set to ENABLED.

If OnlyAssociated is set to FALSE, the response includes all existing member accounts.

", "NetworkConnectionAction$Blocked": "

Indicates whether the network connection attempt was blocked.

", + "ParameterValue$Boolean": "

A control parameter that is a boolean.

", "PortProbeAction$Blocked": "

Indicates whether the port probe was blocked.

", "Standard$EnabledByDefault": "

Whether the standard is enabled by default. When Security Hub is enabled from the console, if a standard is enabled by default, the check box for that standard is selected by default.

When Security Hub is enabled using the EnableSecurityHub API operation, the standard is enabled by default unless EnableDefaultStandards is set to false.

", "UpdateAutomationRulesRequestItem$IsTerminal": "

Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.

", @@ -4544,6 +4555,12 @@ "VpcInfoPeeringOptionsDetails$AllowEgressFromLocalVpcToRemoteClassicLink": "

Indicates whether a local VPC can communicate with a ClassicLink connection in the peer VPC over the VPC peering connection.

" } }, + "BooleanConfigurationOptions": { + "base": "

The options for customizing a security control parameter with a boolean. For a boolean parameter, the options are true and false.

", + "refs": { + "ConfigurationOptions$Boolean": "

The options for customizing a security control parameter that is a boolean. For a boolean parameter, the options are true and false.

" + } + }, "BooleanFilter": { "base": "

Boolean filter for querying findings.

", "refs": { @@ -4628,6 +4645,12 @@ "Compliance$Status": "

The result of a standards check.

The valid values for Status are as follows.

    • PASSED - Standards check passed for all evaluated resources.

    • WARNING - Some information is missing or this check is not supported for your configuration.

    • FAILED - Standards check failed for at least one evaluated resource.

    • NOT_AVAILABLE - Check could not be performed due to a service outage, API error, or because the result of the Config evaluation was NOT_APPLICABLE. If the Config evaluation result was NOT_APPLICABLE, then after 3 days, Security Hub automatically archives the finding.

" } }, + "ConfigurationOptions": { + "base": "

The options for customizing a security control parameter.

", + "refs": { + "ParameterDefinition$ConfigurationOptions": "

The options for customizing a control parameter. Customization options vary based on the data type of the parameter.

" + } + }, "ContainerDetails": { "base": "

Container details related to a finding.

", "refs": { @@ -4731,6 +4754,12 @@ "ClassificationResult$CustomDataIdentifiers": "

Provides details about sensitive data that was identified based on customer-defined configuration.

" } }, + "CustomizableProperties": { + "base": null, + "refs": { + "SecurityControlDefinition$CustomizableProperties": "

Security control properties that you can customize. Currently, only parameter customization is supported for select controls. An empty array is returned for controls that don’t support custom properties.

" + } + }, "Cvss": { "base": "

CVSS scores from the advisory related to the vulnerability.

", "refs": { @@ -4988,16 +5017,28 @@ "AwsKmsKeyDetails$CreationDate": "

Indicates when the KMS key was created.

Uses the date-time format specified in RFC 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.

", "AwsRedshiftClusterRestoreStatus$CurrentRestoreRateInMegaBytesPerSecond": "

The number of megabytes per second being transferred from the backup storage. Returns the average rate for a completed backup.

This field is only updated when you restore to DC2 and DS2 node types.

", "Cvss$BaseScore": "

The base CVSS score.

", + "DoubleConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is a double.

", + "DoubleConfigurationOptions$Min": "

The minimum valid value for a control parameter that is a double.

", + "DoubleConfigurationOptions$Max": "

The maximum valid value for a control parameter that is a double.

", "GeoLocation$Lon": "

The longitude of the location.

", "GeoLocation$Lat": "

The latitude of the location.

", "NumberFilter$Gte": "

The greater-than-equal condition to be applied to a single field when querying for findings.

", "NumberFilter$Lte": "

The less-than-equal condition to be applied to a single field when querying for findings.

", "NumberFilter$Eq": "

The equal-to condition to be applied to a single field when querying for findings.

", - "Severity$Product": "

Deprecated. This attribute is being deprecated. Instead of providing Product, provide Original.

The native severity as defined by the Amazon Web Services service or integrated partner product that generated the finding.

", + "NumberFilter$Gt": "

The greater-than condition to be applied to a single field when querying for findings.

", + "NumberFilter$Lt": "

The less-than condition to be applied to a single field when querying for findings.

", + "ParameterValue$Double": "

A control parameter that is a double.

", + "Severity$Product": "

Deprecated. This attribute isn't included in findings. Instead of providing Product, provide Original.

The native severity as defined by the Amazon Web Services service or integrated partner product that generated the finding.

", "SeverityUpdate$Product": "

The native severity as defined by the Amazon Web Services service or integrated partner product that generated the finding.

", "Vulnerability$EpssScore": "

The Exploit Prediction Scoring System (EPSS) score for a finding.

" } }, + "DoubleConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is a double.

", + "refs": { + "ConfigurationOptions$Double": "

The options for customizing a security control parameter that is a double.

" + } + }, "EnableImportFindingsForProductRequest": { "base": null, "refs": { @@ -5028,6 +5069,18 @@ "refs": { } }, + "EnumConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is an enum.

", + "refs": { + "ConfigurationOptions$Enum": "

The options for customizing a security control parameter that is an enum.

" + } + }, + "EnumListConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is a list of enums.

", + "refs": { + "ConfigurationOptions$EnumList": "

The options for customizing a security control parameter that is a list of enums.

" + } + }, "FieldMap": { "base": null, "refs": { @@ -5278,6 +5331,16 @@ "refs": { } }, + "GetSecurityControlDefinitionRequest": { + "base": null, + "refs": { + } + }, + "GetSecurityControlDefinitionResponse": { + "base": null, + "refs": { + } + }, "IcmpTypeCode": { "base": "

An Internet Control Message Protocol (ICMP) type and code.

", "refs": { @@ -5534,15 +5597,23 @@ "CodeVulnerabilitiesFilePath$EndLine": "

The line number of the last line of code in which the vulnerability is located.

", "CodeVulnerabilitiesFilePath$StartLine": "

The line number of the first line of code in which the vulnerability is located.

", "DateRange$Value": "

A date range value for the date filter.

", + "EnumListConfigurationOptions$MaxItems": "

The maximum number of list items that an enum list control parameter can accept.

", "FirewallPolicyStatelessRuleGroupReferencesDetails$Priority": "

The order in which to run the stateless rule group.

", "GetInvitationsCountResponse$InvitationsCount": "

The number of all membership invitations sent to this Security Hub member account, not including the currently accepted invitation.

", "IcmpTypeCode$Code": "

The ICMP code for which to deny or allow access. To deny or allow all codes, use the value -1.

", "IcmpTypeCode$Type": "

The ICMP type for which to deny or allow access. To deny or allow all types, use the value -1.

", "InsightResultValue$Count": "

The number of findings returned for each GroupByAttributeValue.

", + "IntegerConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is an integer.

", + "IntegerConfigurationOptions$Min": "

The minimum valid value for a control parameter that is an integer.

", + "IntegerConfigurationOptions$Max": "

The maximum valid value for a control parameter that is an integer.

", "IntegerList$member": null, + "IntegerListConfigurationOptions$Min": "

The minimum valid value for a control parameter that is a list of integers.

", + "IntegerListConfigurationOptions$Max": "

The maximum valid value for a control parameter that is a list of integers.

", + "IntegerListConfigurationOptions$MaxItems": "

The maximum number of list items that an interger list control parameter can accept.

", "IpOrganizationDetails$Asn": "

The Autonomous System Number (ASN) of the internet provider

", "Network$SourcePort": "

The source port of network-related information about a finding.

", "Network$DestinationPort": "

The destination port of network-related information about a finding.

", + "ParameterValue$Integer": "

A control parameter that is an integer.

", "PatchSummary$InstalledCount": "

The number of patches from the compliance standard that were installed successfully.

", "PatchSummary$MissingCount": "

The number of patches that are part of the compliance standard but are not installed. The count includes patches that failed to install.

", "PatchSummary$FailedCount": "

The number of patches from the compliance standard that failed to install.

", @@ -5561,16 +5632,31 @@ "RuleGroupSourceStatelessRuleMatchAttributesSourcePorts$FromPort": "

The starting port value for the port range.

", "RuleGroupSourceStatelessRuleMatchAttributesSourcePorts$ToPort": "

The ending port value for the port range.

", "RuleGroupSourceStatelessRulesDetails$Priority": "

Indicates the order in which to run this rule relative to all of the rules in the stateless rule group.

", - "Severity$Normalized": "

Deprecated. The normalized severity of a finding. This attribute is being deprecated. Instead of providing Normalized, provide Label.

If you provide Label and do not provide Normalized, then Normalized is set automatically as follows.

  • INFORMATIONAL - 0

  • LOW - 1

  • MEDIUM - 40

  • HIGH - 70

  • CRITICAL - 90

", + "Severity$Normalized": "

Deprecated. The normalized severity of a finding. Instead of providing Normalized, provide Label.

If you provide Label and do not provide Normalized, then Normalized is set automatically as follows.

  • INFORMATIONAL - 0

  • LOW - 1

  • MEDIUM - 40

  • HIGH - 70

  • CRITICAL - 90

", + "StringListConfigurationOptions$MaxItems": "

The maximum number of list items that a string list control parameter can accept.

", "Threat$ItemCount": "

This total number of items in which the threat has been detected.

", "UnprocessedAutomationRule$ErrorCode": "

The error code associated with the unprocessed automation rule.

" } }, + "IntegerConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is an integer.

", + "refs": { + "ConfigurationOptions$Integer": "

The options for customizing a security control parameter that is an integer.

" + } + }, "IntegerList": { "base": null, "refs": { "AwsEc2VpnConnectionOptionsTunnelOptionsDetails$Phase1DhGroupNumbers": "

The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 1 IKE negotiations.

", - "AwsEc2VpnConnectionOptionsTunnelOptionsDetails$Phase2DhGroupNumbers": "

The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 2 IKE negotiations.

" + "AwsEc2VpnConnectionOptionsTunnelOptionsDetails$Phase2DhGroupNumbers": "

The permitted Diffie-Hellman group numbers for the VPN tunnel for phase 2 IKE negotiations.

", + "IntegerListConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is a list of integers.

", + "ParameterValue$IntegerList": "

A control parameter that is a list of integers.

" + } + }, + "IntegerListConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is a list of integers.

", + "refs": { + "ConfigurationOptions$IntegerList": "

The options for customizing a security control parameter that is a list of integers.

" } }, "IntegrationType": { @@ -7335,6 +7421,7 @@ "EnableImportFindingsForProductRequest$ProductArn": "

The ARN of the product to enable the integration for.

", "EnableImportFindingsForProductResponse$ProductSubscriptionArn": "

The ARN of your subscription to the product to enable integrations for.

", "EnableOrganizationAdminAccountRequest$AdminAccountId": "

The Amazon Web Services account identifier of the account to designate as the Security Hub administrator account.

", + "EnumConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is an enum.

", "FieldMap$key": null, "FieldMap$value": null, "FilePaths$FilePath": "

Path to the infected or suspicious file on the resource it was detected on.

", @@ -7357,6 +7444,7 @@ "GetFindingAggregatorResponse$FindingAggregationRegion": "

The aggregation Region.

", "GetFindingAggregatorResponse$RegionLinkingMode": "

Indicates whether to link all Regions, all Regions except for a list of excluded Regions, or a list of included Regions.

", "GetInsightResultsRequest$InsightArn": "

The ARN of the insight for which to return results.

", + "GetSecurityControlDefinitionRequest$SecurityControlId": "

The ID of the security control to retrieve the definition for. This field doesn’t accept an Amazon Resource Name (ARN).

", "ImportFindingsError$Id": "

The identifier of the finding that could not be updated.

", "ImportFindingsError$ErrorCode": "

The code of the error returned by the BatchImportFindings operation.

", "ImportFindingsError$ErrorMessage": "

The message of the error returned by the BatchImportFindings operation.

", @@ -7417,6 +7505,11 @@ "Note$UpdatedAt": "

The timestamp of when the note was updated.

Uses the date-time format specified in RFC 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.

", "NoteUpdate$Text": "

The updated note text.

", "NoteUpdate$UpdatedBy": "

The principal that updated the note.

", + "ParameterDefinition$Description": "

Description of a control parameter.

", + "ParameterDefinitions$key": null, + "ParameterValue$String": "

A control parameter that is a string.

", + "ParameterValue$Enum": "

A control parameter that is an enum.

", + "Parameters$key": null, "PatchSummary$Id": "

The identifier of the compliance standard that was used to determine the patch compliance status.

", "PatchSummary$OperationStartTime": "

Indicates when the operation started.

Uses the date-time format specified in RFC 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.

", "PatchSummary$OperationEndTime": "

Indicates when the operation completed.

Uses the date-time format specified in RFC 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z.

", @@ -7447,6 +7540,8 @@ "Resource$ResourceRole": "

Identifies the role of the resource in the finding. A resource is either the actor or target of the finding activity,

", "ResourceConflictException$Message": null, "ResourceConflictException$Code": null, + "ResourceInUseException$Message": null, + "ResourceInUseException$Code": null, "ResourceNotFoundException$Message": null, "ResourceNotFoundException$Code": null, "Result$ProcessingResult": "

The reason that the account was not processed.

", @@ -7489,6 +7584,7 @@ "SecurityControlDefinition$Title": "

The title of a security control.

", "SecurityControlDefinition$Description": "

The description of a security control across standards. This typically summarizes how Security Hub evaluates the control and the conditions under which it produces a failed finding. This parameter doesn't reference a specific standard.

", "SecurityControlDefinition$RemediationUrl": "

A link to Security Hub documentation that explains how to remediate a failed finding for a security control.

", + "SecurityControlParameter$Name": "

The name of a

", "SecurityGroups$member": null, "SensitiveDataDetections$Type": "

The type of sensitive data that was detected. For example, the type might indicate that the data is an email address.

", "SensitiveDataResult$Category": "

The category of sensitive data that was detected. For example, the category can indicate that the sensitive data involved credentials, financial information, or personal information.

", @@ -7543,8 +7639,13 @@ "StatelessCustomPublishMetricActionDimension$Value": "

The value to use for the custom metric dimension.

", "StatusReason$ReasonCode": "

A code that represents a reason for the control status. For the list of status reason codes and their meanings, see Standards-related information in the ASFF in the Security Hub User Guide.

", "StatusReason$Description": "

The corresponding description for the status reason code.

", + "StringConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is a string.

", + "StringConfigurationOptions$Re2Expression": "

An RE2 regular expression that Security Hub uses to validate a user-provided control parameter string.

", + "StringConfigurationOptions$ExpressionDescription": "

The description of the RE2 regular expression.

", "StringFilter$Value": "

The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is Security Hub. If you provide security hub as the filter value, there's no match.

", "StringList$member": null, + "StringListConfigurationOptions$Re2Expression": "

An RE2 regular expression that Security Hub uses to validate a user-provided list of strings for a control parameter.

", + "StringListConfigurationOptions$ExpressionDescription": "

The description of the RE2 regular expression.

", "Threat$Name": "

The name of the threat.

", "Threat$Severity": "

The severity of the threat.

", "ThreatIntelIndicator$Value": "

The value of a threat intelligence indicator.

", @@ -7572,6 +7673,7 @@ "UpdateInsightRequest$InsightArn": "

The ARN of the insight that you want to update.

", "UpdateInsightRequest$Name": "

The updated name for the insight.

", "UpdateInsightRequest$GroupByAttribute": "

The updated GroupBy attribute that defines this insight.

", + "UpdateSecurityControlRequest$SecurityControlId": "

The Amazon Resource Name (ARN) or ID of the control to update.

", "UpdateStandardsControlRequest$StandardsControlArn": "

The ARN of the security standard control to enable or disable.

", "UpdateStandardsControlRequest$DisabledReason": "

A description of the reason why you are disabling a security standard control. If you are disabling a control, then this is required.

", "VolumeMount$Name": "

The name of the volume.

", @@ -7732,6 +7834,43 @@ "Occurrences$Pages": "

Occurrences of sensitive data in an Adobe Portable Document Format (PDF) file.

" } }, + "ParameterConfiguration": { + "base": "

An object that provides the current value of a security control parameter and identifies whether it has been customized.

", + "refs": { + "Parameters$value": null + } + }, + "ParameterDefinition": { + "base": "

An object that describes a security control parameter and the options for customizing it.

", + "refs": { + "ParameterDefinitions$value": null + } + }, + "ParameterDefinitions": { + "base": null, + "refs": { + "SecurityControlDefinition$ParameterDefinitions": "

An object that provides a security control parameter name, description, and the options for customizing it. This object is excluded for a control that doesn't support custom parameters.

" + } + }, + "ParameterValue": { + "base": "

An object that includes the data type of a security control parameter and its current value.

", + "refs": { + "ParameterConfiguration$Value": "

The current value of a control parameter.

" + } + }, + "ParameterValueType": { + "base": null, + "refs": { + "ParameterConfiguration$ValueType": "

Identifies whether a control parameter uses a custom user-defined value or the Security Hub default value.

" + } + }, + "Parameters": { + "base": null, + "refs": { + "SecurityControl$Parameters": "

An object that identifies the name of a control parameter, its current value, and whether it has been customized.

", + "UpdateSecurityControlRequest$Parameters": "

An object that specifies which security control parameters to update.

" + } + }, "Partition": { "base": null, "refs": { @@ -7930,6 +8069,11 @@ "Resource$Details": "

Additional details about the resource related to a finding.

" } }, + "ResourceInUseException": { + "base": "

The request was rejected because it conflicts with the resource's availability. For example, you tried to update a security control that's currently in the UPDATING state.

", + "refs": { + } + }, "ResourceList": { "base": null, "refs": { @@ -8177,6 +8321,7 @@ "SecurityControlDefinition": { "base": "

Provides metadata for a security control, including its unique standard-agnostic identifier, title, description, severity, availability in Amazon Web Services Regions, and a link to remediation steps.

", "refs": { + "GetSecurityControlDefinitionResponse$SecurityControlDefinition": null, "SecurityControlDefinitions$member": null } }, @@ -8186,6 +8331,24 @@ "ListSecurityControlDefinitionsResponse$SecurityControlDefinitions": "

An array of controls that apply to the specified standard.

" } }, + "SecurityControlParameter": { + "base": "

A parameter that a security control accepts.

", + "refs": { + "SecurityControlParametersList$member": null + } + }, + "SecurityControlParametersList": { + "base": null, + "refs": { + "Compliance$SecurityControlParameters": "

An object that includes security control parameter names and values.

" + } + }, + "SecurityControlProperty": { + "base": null, + "refs": { + "CustomizableProperties$member": null + } + }, "SecurityControls": { "base": null, "refs": { @@ -8469,6 +8632,12 @@ "Compliance$StatusReasons": "

For findings generated from controls, a list of reasons behind the value of Status. For the list of status reason codes and their meanings, see Standards-related information in the ASFF in the Security Hub User Guide.

" } }, + "StringConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is a string.

", + "refs": { + "ConfigurationOptions$String": "

The options for customizing a security control parameter that is a string data type.

" + } + }, "StringFilter": { "base": "

A string filter for filtering Security Hub findings.

", "refs": { @@ -8572,7 +8741,11 @@ "AwsSecurityFindingFilters$FindingProviderFieldsSeverityOriginal": "

The finding provider's original value for the severity.

", "AwsSecurityFindingFilters$FindingProviderFieldsTypes": "

One or more finding types that the finding provider assigned to the finding. Uses the format of namespace/category/classifier that classify a finding.

Valid namespace values are: Software and Configuration Checks | TTPs | Effects | Unusual Behaviors | Sensitive Data Identifications

", "AwsSecurityFindingFilters$ComplianceSecurityControlId": "

The unique identifier of a control across standards. Values for this field typically consist of an Amazon Web Service and a number, such as APIGateway.5.

", - "AwsSecurityFindingFilters$ComplianceAssociatedStandardsId": "

The unique identifier of a standard in which a control is enabled. This field consists of the resource portion of the Amazon Resource Name (ARN) returned for a standard in the DescribeStandards API response.

" + "AwsSecurityFindingFilters$ComplianceAssociatedStandardsId": "

The unique identifier of a standard in which a control is enabled. This field consists of the resource portion of the Amazon Resource Name (ARN) returned for a standard in the DescribeStandards API response.

", + "AwsSecurityFindingFilters$VulnerabilitiesExploitAvailable": "

Indicates whether a software vulnerability in your environment has a known exploit. You can filter findings by this field only if you use Security Hub and Amazon Inspector.

", + "AwsSecurityFindingFilters$VulnerabilitiesFixAvailable": "

Indicates whether a vulnerability is fixed in a newer version of the affected software packages. You can filter findings by this field only if you use Security Hub and Amazon Inspector.

", + "AwsSecurityFindingFilters$ComplianceSecurityControlParametersName": "

The name of a security control parameter.

", + "AwsSecurityFindingFilters$ComplianceSecurityControlParametersValue": "

The current value of a security control parameter.

" } }, "StringList": { @@ -8611,14 +8784,26 @@ "BatchGetSecurityControlsRequest$SecurityControlIds": "

A list of security controls (identified with SecurityControlId, SecurityControlArn, or a mix of both parameters). The security control ID or Amazon Resource Name (ARN) is the same across standards.

", "CreateFindingAggregatorRequest$Regions": "

If RegionLinkingMode is ALL_REGIONS_EXCEPT_SPECIFIED, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.

If RegionLinkingMode is SPECIFIED_REGIONS, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.

", "CreateFindingAggregatorResponse$Regions": "

The list of excluded Regions or included Regions.

", + "EnumConfigurationOptions$AllowedValues": "

The valid values for a control parameter that is an enum.

", + "EnumListConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is a list of enums.

", + "EnumListConfigurationOptions$AllowedValues": "

The valid values for a control parameter that is a list of enums.

", "GetFindingAggregatorResponse$Regions": "

The list of excluded Regions or included Regions.

", "NetworkPathComponentDetails$Address": "

The IP addresses of the destination.

", + "ParameterValue$StringList": "

A control parameter that is a list of strings.

", + "ParameterValue$EnumList": "

A control parameter that is a list of enums.

", + "StringListConfigurationOptions$DefaultValue": "

The Security Hub default value for a control parameter that is a list of strings.

", "UpdateFindingAggregatorRequest$Regions": "

If RegionLinkingMode is ALL_REGIONS_EXCEPT_SPECIFIED, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.

If RegionLinkingMode is SPECIFIED_REGIONS, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.

", "UpdateFindingAggregatorResponse$Regions": "

The list of excluded Regions or included Regions.

", "Vulnerability$RelatedVulnerabilities": "

List of vulnerabilities that are related to this vulnerability.

", "Vulnerability$ReferenceUrls": "

A list of URLs that provide additional information about the vulnerability.

" } }, + "StringListConfigurationOptions": { + "base": "

The options for customizing a security control parameter that is a list of strings.

", + "refs": { + "ConfigurationOptions$StringList": "

The options for customizing a security control parameter that is a list of strings.

" + } + }, "TagKey": { "base": null, "refs": { @@ -8719,6 +8904,7 @@ "BatchUpdateFindingsRequest$Types": "

One or more finding types in the format of namespace/category/classifier that classify a finding.

Valid namespace values are as follows.

  • Software and Configuration Checks

  • TTPs

  • Effects

  • Unusual Behaviors

  • Sensitive Data Identifications

", "FindingProviderFields$Types": "

One or more finding types in the format of namespace/category/classifier that classify a finding.

Valid namespace values are: Software and Configuration Checks | TTPs | Effects | Unusual Behaviors | Sensitive Data Identifications

", "GeneratorDetails$Labels": "

An array of tags used to identify the detector associated with the finding.

", + "SecurityControlParameter$Value": "

The current value of a control parameter.

", "VulnerabilityCodeVulnerabilities$Cwes": "

The Common Weakness Enumeration (CWE) item associated with the detected code vulnerability.

" } }, @@ -8852,6 +9038,16 @@ "refs": { } }, + "UpdateSecurityControlRequest": { + "base": null, + "refs": { + } + }, + "UpdateSecurityControlResponse": { + "base": null, + "refs": { + } + }, "UpdateSecurityHubConfigurationRequest": { "base": null, "refs": { @@ -8872,6 +9068,12 @@ "refs": { } }, + "UpdateStatus": { + "base": null, + "refs": { + "SecurityControl$UpdateStatus": "

Identifies whether customizable properties of a security control are reflected in Security Hub findings. A status of READY indicates findings include the current parameter values. A status of UPDATING indicates that all findings may not include the current parameter values.

" + } + }, "VerificationState": { "base": null, "refs": { diff --git a/apis/securityhub/2018-10-26/endpoint-rule-set-1.json b/apis/securityhub/2018-10-26/endpoint-rule-set-1.json index 659462cfddb..f94b5ce4b36 100644 --- a/apis/securityhub/2018-10-26/endpoint-rule-set-1.json +++ b/apis/securityhub/2018-10-26/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,11 +212,11 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -231,14 +227,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -252,7 +250,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -272,7 +269,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -283,14 +279,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [], @@ -301,9 +299,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/securityhub/2018-10-26/examples-1.json b/apis/securityhub/2018-10-26/examples-1.json index 84a9121efbd..2ad7f578c95 100644 --- a/apis/securityhub/2018-10-26/examples-1.json +++ b/apis/securityhub/2018-10-26/examples-1.json @@ -220,21 +220,41 @@ "SecurityControls": [ { "Description": "This AWS control checks whether ACM Certificates in your account are marked for expiration within a specified time period. Certificates provided by ACM are automatically renewed. ACM does not automatically renew certificates that you import.", + "LastUpdateReason": "Stayed with default value", + "Parameters": { + "daysToExpiration": { + "Value": { + "Integer": 30 + }, + "ValueType": "DEFAULT" + } + }, "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation", "SecurityControlArn": "arn:aws:securityhub:us-west-2:123456789012:security-control/ACM.1", "SecurityControlId": "ACM.1", "SecurityControlStatus": "ENABLED", "SeverityRating": "MEDIUM", - "Title": "Imported and ACM-issued certificates should be renewed after a specified time period" + "Title": "Imported and ACM-issued certificates should be renewed after a specified time period", + "UpdateStatus": "UPDATING" }, { "Description": "This control checks whether all stages of Amazon API Gateway REST and WebSocket APIs have logging enabled. The control fails if logging is not enabled for all methods of a stage or if loggingLevel is neither ERROR nor INFO.", + "LastUpdateReason": "Updated control parameters to comply with internal requirements", + "Parameters": { + "loggingLevel": { + "Value": { + "Enum": "ERROR" + }, + "ValueType": "CUSTOM" + } + }, "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/APIGateway.1/remediation", "SecurityControlArn": "arn:aws:securityhub:us-west-2:123456789012:security-control/APIGateway.1", "SecurityControlId": "APIGateway.1", "SecurityControlStatus": "ENABLED", "SeverityRating": "MEDIUM", - "Title": "API Gateway REST and WebSocket API execution logging should be enabled" + "Title": "API Gateway REST and WebSocket API execution logging should be enabled", + "UpdateStatus": "UPDATING" } ] }, @@ -1502,6 +1522,44 @@ "title": "To get member account details" } ], + "GetSecurityControlDefinition": [ + { + "input": { + "SecurityControlId": "EC2.4" + }, + "output": { + "SecurityControlDefinition": { + "CurrentRegionAvailability": "AVAILABLE", + "Description": "This control checks whether an Amazon EC2 instance has been stopped for longer than the allowed number of days. The control fails if an EC2 instance is stopped for longer than the maximum allowed time period. Unless you provide a custom parameter value for the maximum allowed time period, Security Hub uses a default value of 30 days.", + "ParameterDefinitions": { + "AllowedDays": { + "ConfigurationOptions": { + "Integer": { + "DefaultValue": 30, + "Max": 365, + "Min": 1 + } + }, + "Description": "Number of days the EC2 instance is allowed to be in a stopped state before generating a failed finding" + } + }, + "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/EC2.4/remediation", + "SecurityControlId": "EC2.4", + "SeverityRating": "MEDIUM", + "Title": "Stopped Amazon EC2 instances should be removed after a specified time period" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example retrieves definition details for the specified security control.", + "id": "to-get-the-definition-of-a-security-control-1699283789356", + "title": "To get the definition of a security control." + } + ], "InviteMembers": [ { "input": { @@ -1700,6 +1758,9 @@ "SecurityControlDefinitions": [ { "CurrentRegionAvailability": "AVAILABLE", + "CustomizableProperties": [ + "Parameters" + ], "Description": "This AWS control checks whether ACM Certificates in your account are marked for expiration within a specified time period. Certificates provided by ACM are automatically renewed. ACM does not automatically renew certificates that you import.", "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation", "SecurityControlId": "ACM.1", @@ -1708,6 +1769,9 @@ }, { "CurrentRegionAvailability": "AVAILABLE", + "CustomizableProperties": [ + "Parameters" + ], "Description": "This control checks whether all stages of Amazon API Gateway REST and WebSocket APIs have logging enabled. The control fails if logging is not enabled for all methods of a stage or if loggingLevel is neither ERROR nor INFO.", "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/APIGateway.1/remediation", "SecurityControlId": "APIGateway.1", @@ -1940,6 +2004,33 @@ "title": "To update organization configuration" } ], + "UpdateSecurityControl": [ + { + "input": { + "LastUpdateReason": "Comply with internal requirements", + "Parameters": { + "maxCredentialUsageAge": { + "Value": { + "Integer": 15 + }, + "ValueType": "CUSTOM" + } + }, + "SecurityControlId": "ACM.1" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example updates the specified security control. Specifically, this example updates control parameters.", + "id": "to-update-security-control-properties-1699282942434", + "title": "To update security control properties" + } + ], "UpdateSecurityHubConfiguration": [ { "input": { diff --git a/apis/states/2016-11-23/api-2.json b/apis/states/2016-11-23/api-2.json index 93b2cd933c2..4ddf82a0339 100644 --- a/apis/states/2016-11-23/api-2.json +++ b/apis/states/2016-11-23/api-2.json @@ -472,6 +472,22 @@ {"shape":"TooManyTags"} ] }, + "TestState":{ + "name":"TestState", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"TestStateInput"}, + "output":{"shape":"TestStateOutput"}, + "errors":[ + {"shape":"InvalidArn"}, + {"shape":"InvalidDefinition"}, + {"shape":"InvalidExecutionInput"}, + {"shape":"ValidationException"} + ], + "endpoint":{"hostPrefix":"sync-"} + }, "UntagResource":{ "name":"UntagResource", "http":{ @@ -533,7 +549,8 @@ {"shape":"ValidationException"}, {"shape":"InvalidArn"}, {"shape":"ResourceNotFound"}, - {"shape":"ConflictException"} + {"shape":"ConflictException"}, + {"shape":"StateMachineDeleting"} ] } }, @@ -1157,6 +1174,12 @@ "nextToken":{"shape":"PageToken"} } }, + "HTTPBody":{"type":"string"}, + "HTTPHeaders":{"type":"string"}, + "HTTPMethod":{"type":"string"}, + "HTTPProtocol":{"type":"string"}, + "HTTPStatusCode":{"type":"string"}, + "HTTPStatusMessage":{"type":"string"}, "HistoryEvent":{ "type":"structure", "required":[ @@ -1292,6 +1315,48 @@ "type":"boolean", "box":true }, + "InspectionData":{ + "type":"structure", + "members":{ + "input":{"shape":"SensitiveData"}, + "afterInputPath":{"shape":"SensitiveData"}, + "afterParameters":{"shape":"SensitiveData"}, + "result":{"shape":"SensitiveData"}, + "afterResultSelector":{"shape":"SensitiveData"}, + "afterResultPath":{"shape":"SensitiveData"}, + "request":{"shape":"InspectionDataRequest"}, + "response":{"shape":"InspectionDataResponse"} + }, + "sensitive":true + }, + "InspectionDataRequest":{ + "type":"structure", + "members":{ + "protocol":{"shape":"HTTPProtocol"}, + "method":{"shape":"HTTPMethod"}, + "url":{"shape":"URL"}, + "headers":{"shape":"HTTPHeaders"}, + "body":{"shape":"HTTPBody"} + } + }, + "InspectionDataResponse":{ + "type":"structure", + "members":{ + "protocol":{"shape":"HTTPProtocol"}, + "statusCode":{"shape":"HTTPStatusCode"}, + "statusMessage":{"shape":"HTTPStatusMessage"}, + "headers":{"shape":"HTTPHeaders"}, + "body":{"shape":"HTTPBody"} + } + }, + "InspectionLevel":{ + "type":"string", + "enum":[ + "INFO", + "DEBUG", + "TRACE" + ] + }, "InvalidArn":{ "type":"structure", "members":{ @@ -1738,6 +1803,7 @@ }, "exception":true }, + "RevealSecrets":{"type":"boolean"}, "ReverseOrder":{"type":"boolean"}, "RevisionId":{"type":"string"}, "RoutingConfigurationList":{ @@ -2000,6 +2066,11 @@ "creationDate":{"shape":"Timestamp"} } }, + "StateName":{ + "type":"string", + "max":80, + "min":1 + }, "StopExecutionInput":{ "type":"structure", "required":["executionArn"], @@ -2203,6 +2274,40 @@ "max":1024, "min":1 }, + "TestExecutionStatus":{ + "type":"string", + "enum":[ + "SUCCEEDED", + "FAILED", + "RETRIABLE", + "CAUGHT_ERROR" + ] + }, + "TestStateInput":{ + "type":"structure", + "required":[ + "definition", + "roleArn" + ], + "members":{ + "definition":{"shape":"Definition"}, + "roleArn":{"shape":"Arn"}, + "input":{"shape":"SensitiveData"}, + "inspectionLevel":{"shape":"InspectionLevel"}, + "revealSecrets":{"shape":"RevealSecrets"} + } + }, + "TestStateOutput":{ + "type":"structure", + "members":{ + "output":{"shape":"SensitiveData"}, + "error":{"shape":"SensitiveError"}, + "cause":{"shape":"SensitiveCause"}, + "inspectionData":{"shape":"InspectionData"}, + "nextState":{"shape":"StateName"}, + "status":{"shape":"TestExecutionStatus"} + } + }, "TimeoutInSeconds":{"type":"long"}, "Timestamp":{"type":"timestamp"}, "ToleratedFailureCount":{ @@ -2234,6 +2339,7 @@ "enabled":{"shape":"Enabled"} } }, + "URL":{"type":"string"}, "UnsignedInteger":{ "type":"integer", "min":0 diff --git a/apis/states/2016-11-23/docs-2.json b/apis/states/2016-11-23/docs-2.json index a3eeed27a5f..2f87cf6a162 100644 --- a/apis/states/2016-11-23/docs-2.json +++ b/apis/states/2016-11-23/docs-2.json @@ -25,7 +25,7 @@ "ListStateMachines": "

Lists the existing state machines.

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.

", "ListTagsForResource": "

List tags for a given resource.

Tags may only contain Unicode letters, digits, white space, or these symbols: _ . : / = + - @.

", "PublishStateMachineVersion": "

Creates a version from the current revision of a state machine. Use versions to create immutable snapshots of your state machine. You can start executions from versions either directly or with an alias. To create an alias, use CreateStateMachineAlias.

You can publish up to 1000 versions for each state machine. You must manually delete unused versions using the DeleteStateMachineVersion API action.

PublishStateMachineVersion is an idempotent API. It doesn't create a duplicate state machine version if it already exists for the current revision. Step Functions bases PublishStateMachineVersion's idempotency check on the stateMachineArn, name, and revisionId parameters. Requests with the same parameters return a successful idempotent response. If you don't specify a revisionId, Step Functions checks for a previously published version of the state machine's current revision.

Related operations:

", - "RedriveExecution": "

Restarts unsuccessful executions of Standard workflows that didn't complete successfully in the last 14 days. These include failed, aborted, or timed out executions. When you redrive an execution, it continues the failed execution from the unsuccessful step and uses the same input. Step Functions preserves the results and execution history of the successful steps, and doesn't rerun these steps when you redrive an execution. Redriven executions use the same state machine definition and execution ARN as the original execution attempt.

For workflows that include an Inline Map or Parallel state, RedriveExecution API action reschedules and redrives only the iterations and branches that failed or aborted.

To redrive a workflow that includes a Distributed Map state with failed child workflow executions, you must redrive the parent workflow. The parent workflow redrives all the unsuccessful states, including Distributed Map.

This API action is not supported by EXPRESS state machines.

However, you can restart the unsuccessful executions of Express child workflows in a Distributed Map by redriving its Map Run. When you redrive a Map Run, the Express child workflows are rerun using the StartExecution API action. For more information, see Redriving Map Runs.

You can redrive executions if your original execution meets the following conditions:

  • The execution status isn't SUCCEEDED.

  • Your workflow execution has not exceeded the redrivable period of 14 days. Redrivable period refers to the time during which you can redrive a given execution. This period starts from the day a state machine completes its execution.

  • The workflow execution has not exceeded the maximum open time of one year. For more information about state machine quotas, see Quotas related to state machine executions.

  • The execution event history count is less than 24,999. Redriven executions append their event history to the existing event history. Make sure your workflow execution contains less than 24,999 events to accommodate the ExecutionRedriven history event and at least one other history event.

", + "RedriveExecution": "

Restarts unsuccessful executions of Standard workflows that didn't complete successfully in the last 14 days. These include failed, aborted, or timed out executions. When you redrive an execution, it continues the failed execution from the unsuccessful step and uses the same input. Step Functions preserves the results and execution history of the successful steps, and doesn't rerun these steps when you redrive an execution. Redriven executions use the same state machine definition and execution ARN as the original execution attempt.

For workflows that include an Inline Map or Parallel state, RedriveExecution API action reschedules and redrives only the iterations and branches that failed or aborted.

To redrive a workflow that includes a Distributed Map state whose Map Run failed, you must redrive the parent workflow. The parent workflow redrives all the unsuccessful states, including a failed Map Run. If a Map Run was not started in the original execution attempt, the redriven parent workflow starts the Map Run.

This API action is not supported by EXPRESS state machines.

However, you can restart the unsuccessful executions of Express child workflows in a Distributed Map by redriving its Map Run. When you redrive a Map Run, the Express child workflows are rerun using the StartExecution API action. For more information, see Redriving Map Runs.

You can redrive executions if your original execution meets the following conditions:

  • The execution status isn't SUCCEEDED.

  • Your workflow execution has not exceeded the redrivable period of 14 days. Redrivable period refers to the time during which you can redrive a given execution. This period starts from the day a state machine completes its execution.

  • The workflow execution has not exceeded the maximum open time of one year. For more information about state machine quotas, see Quotas related to state machine executions.

  • The execution event history count is less than 24,999. Redriven executions append their event history to the existing event history. Make sure your workflow execution contains less than 24,999 events to accommodate the ExecutionRedriven history event and at least one other history event.

", "SendTaskFailure": "

Used by activity workers, Task states using the callback pattern, and optionally Task states using the job run pattern to report that the task identified by the taskToken failed.

", "SendTaskHeartbeat": "

Used by activity workers and Task states using the callback pattern, and optionally Task states using the job run pattern to report to Step Functions that the task represented by the specified taskToken is still making progress. This action resets the Heartbeat clock. The Heartbeat threshold is specified in the state machine's Amazon States Language definition (HeartbeatSeconds). This action does not in itself create an event in the execution history. However, if the task times out, the execution history contains an ActivityTimedOut entry for activities, or a TaskTimedOut entry for tasks using the job run or callback pattern.

The Timeout of a task, defined in the state machine's Amazon States Language definition, is its maximum allowed duration, regardless of the number of SendTaskHeartbeat requests received. Use HeartbeatSeconds to configure the timeout interval for heartbeats.

", "SendTaskSuccess": "

Used by activity workers, Task states using the callback pattern, and optionally Task states using the job run pattern to report that the task identified by the taskToken completed successfully.

", @@ -33,6 +33,7 @@ "StartSyncExecution": "

Starts a Synchronous Express state machine execution. StartSyncExecution is not available for STANDARD workflows.

StartSyncExecution will return a 200 OK response, even if your execution fails, because the status code in the API response doesn't reflect function errors. Error codes are reserved for errors that prevent your execution from running, such as permissions errors, limit errors, or issues with your state machine code and configuration.

This API action isn't logged in CloudTrail.

", "StopExecution": "

Stops an execution.

This API action is not supported by EXPRESS state machines.

", "TagResource": "

Add a tag to a Step Functions resource.

An array of key-value pairs. For more information, see Using Cost Allocation Tags in the Amazon Web Services Billing and Cost Management User Guide, and Controlling Access Using IAM Tags.

Tags may only contain Unicode letters, digits, white space, or these symbols: _ . : / = + - @.

", + "TestState": "

Accepts the definition of a single state and executes it. You can test a state without creating a state machine or updating an existing state machine. Using this API, you can test the following:

You can call this API on only one state at a time. The states that you can test include the following:

The TestState API assumes an IAM role which must contain the required IAM permissions for the resources your state is accessing. For information about the permissions a state might need, see IAM permissions to test a state.

The TestState API can run for up to five minutes. If the execution of a state exceeds this duration, it fails with the States.Timeout error.

TestState doesn't support Activity tasks, .sync or .waitForTaskToken service integration patterns, Parallel, or Map states.

", "UntagResource": "

Remove a tag from a Step Functions resource

", "UpdateMapRun": "

Updates an in-progress Map Run's configuration to include changes to the settings that control maximum concurrency and Map Run failure.

", "UpdateStateMachine": "

Updates an existing state machine by modifying its definition, roleArn, or loggingConfiguration. Running executions will continue to use the previous definition and roleArn. You must include at least one of definition or roleArn or you will receive a MissingRequiredParameter error.

A qualified state machine ARN refers to a Distributed Map state defined within a state machine. For example, the qualified state machine ARN arn:partition:states:region:account-id:stateMachine:stateMachineName/mapStateLabel refers to a Distributed Map state with a label mapStateLabel in the state machine named stateMachineName.

A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, a version ARN, or an alias ARN.

The following are some examples of qualified and unqualified state machine ARNs:

  • The following qualified state machine ARN refers to a Distributed Map state with a label mapStateLabel in a state machine named myStateMachine.

    arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel

    If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails with ValidationException.

  • The following qualified state machine ARN refers to an alias named PROD.

    arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine:PROD>

    If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts execution for that version or alias.

  • The following unqualified state machine ARN refers to a state machine named myStateMachine.

    arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine>

After you update your state machine, you can set the publish parameter to true in the same action to publish a new version. This way, you can opt-in to strict versioning of your state machine.

Step Functions assigns monotonically increasing integers for state machine versions, starting at version number 1.

All StartExecution calls within a few seconds use the updated definition and roleArn. Executions started immediately after you call UpdateStateMachine may use the previous state machine definition and roleArn.

", @@ -170,6 +171,7 @@ "StateMachineListItem$stateMachineArn": "

The Amazon Resource Name (ARN) that identifies the state machine.

", "StopExecutionInput$executionArn": "

The Amazon Resource Name (ARN) of the execution to stop.

", "TagResourceInput$resourceArn": "

The Amazon Resource Name (ARN) for the Step Functions state machine or activity.

", + "TestStateInput$roleArn": "

The Amazon Resource Name (ARN) of the execution role with the required IAM permissions for the state.

", "TooManyTags$resourceName": null, "UntagResourceInput$resourceArn": "

The Amazon Resource Name (ARN) for the Step Functions state machine or activity.

", "UpdateStateMachineAliasInput$stateMachineAliasArn": "

The Amazon Resource Name (ARN) of the state machine alias.

", @@ -205,7 +207,7 @@ "ClientToken": { "base": null, "refs": { - "RedriveExecutionInput$clientToken": "

A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency. The API uses one of the last 10 client tokens provided.

" + "RedriveExecutionInput$clientToken": "

A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency. The API will return idempotent responses for the last 10 client tokens used to successfully redrive the execution. These client tokens are valid for up to 15 minutes after they are first used.

" } }, "CloudWatchEventsExecutionDataDetails": { @@ -270,6 +272,7 @@ "CreateStateMachineInput$definition": "

The Amazon States Language definition of the state machine. See Amazon States Language.

", "DescribeStateMachineForExecutionOutput$definition": "

The Amazon States Language definition of the state machine. See Amazon States Language.

", "DescribeStateMachineOutput$definition": "

The Amazon States Language definition of the state machine. See Amazon States Language.

", + "TestStateInput$definition": "

The Amazon States Language (ASL) definition of the state.

", "UpdateStateMachineInput$definition": "

The Amazon States Language definition of the state machine. See Amazon States Language.

" } }, @@ -527,6 +530,45 @@ "refs": { } }, + "HTTPBody": { + "base": null, + "refs": { + "InspectionDataRequest$body": "

The request body for the HTTP request.

", + "InspectionDataResponse$body": "

The HTTP response returned.

" + } + }, + "HTTPHeaders": { + "base": null, + "refs": { + "InspectionDataRequest$headers": "

The request headers associated with the HTTP request.

", + "InspectionDataResponse$headers": "

The response headers associated with the HTTP response.

" + } + }, + "HTTPMethod": { + "base": null, + "refs": { + "InspectionDataRequest$method": "

The HTTP method used for the HTTP request.

" + } + }, + "HTTPProtocol": { + "base": null, + "refs": { + "InspectionDataRequest$protocol": "

The protocol used to make the HTTP request.

", + "InspectionDataResponse$protocol": "

The protocol used to return the HTTP response.

" + } + }, + "HTTPStatusCode": { + "base": null, + "refs": { + "InspectionDataResponse$statusCode": "

The HTTP response status code for the HTTP response.

" + } + }, + "HTTPStatusMessage": { + "base": null, + "refs": { + "InspectionDataResponse$statusMessage": "

The message associated with the HTTP status code.

" + } + }, "HistoryEvent": { "base": "

Contains details about the events of an execution.

", "refs": { @@ -578,6 +620,30 @@ "GetExecutionHistoryInput$includeExecutionData": "

You can select whether execution data (input or output of a history event) is returned. The default is true.

" } }, + "InspectionData": { + "base": "

Contains additional details about the state's execution, including its input and output data processing flow, and HTTP request and response information.

", + "refs": { + "TestStateOutput$inspectionData": "

Returns additional details about the state's execution, including its input and output data processing flow, and HTTP request and response information. The inspectionLevel request parameter specifies which details are returned.

" + } + }, + "InspectionDataRequest": { + "base": "

Contains additional details about the state's execution, including its input and output data processing flow, and HTTP request information.

", + "refs": { + "InspectionData$request": "

The raw HTTP request that is sent when you test an HTTP Task.

" + } + }, + "InspectionDataResponse": { + "base": "

Contains additional details about the state's execution, including its input and output data processing flow, and HTTP response information. The inspectionLevel request parameter specifies which details are returned.

", + "refs": { + "InspectionData$response": "

The raw HTTP response that is returned when you test an HTTP Task.

" + } + }, + "InspectionLevel": { + "base": null, + "refs": { + "TestStateInput$inspectionLevel": "

Determines the values to return when a state is tested. You can specify one of the following types:

  • INFO: Shows the final state output. By default, Step Functions sets inspectionLevel to INFO if you don't specify a level.

  • DEBUG: Shows the final state output along with the input and output data processing result.

  • TRACE: Shows the HTTP request and response for an HTTP Task. This level also shows the final state output along with the input and output data processing result.

Each of these levels also provide information about the status of the state execution and the next state to transition to.

" + } + }, "InvalidArn": { "base": "

The provided Amazon Resource Name (ARN) is not valid.

", "refs": { @@ -780,9 +846,9 @@ "LongObject": { "base": null, "refs": { - "MapRunExecutionCounts$failuresNotRedrivable": "

The number of FAILED, ABORTED, or TIMED_OUT child workflow executions that cannot be redriven because their execution status is terminal. For example, if your execution event history contains 25,000 entries, or the toleratedFailureCount or toleratedFailurePercentage for the Distributed Map has exceeded.

", + "MapRunExecutionCounts$failuresNotRedrivable": "

The number of FAILED, ABORTED, or TIMED_OUT child workflow executions that cannot be redriven because their execution status is terminal. For example, child workflows with an execution status of FAILED, ABORTED, or TIMED_OUT and a redriveStatus of NOT_REDRIVABLE.

", "MapRunExecutionCounts$pendingRedrive": "

The number of unsuccessful child workflow executions currently waiting to be redriven. The status of these child workflow executions could be FAILED, ABORTED, or TIMED_OUT in the original execution attempt or a previous redrive attempt.

", - "MapRunItemCounts$failuresNotRedrivable": "

The number of FAILED, ABORTED, or TIMED_OUT items in child workflow executions that cannot be redriven because the execution status of those child workflows is terminal. For example, if your execution event history contains 25,000 entries, or the toleratedFailureCount or toleratedFailurePercentage for the Distributed Map has exceeded.

", + "MapRunItemCounts$failuresNotRedrivable": "

The number of FAILED, ABORTED, or TIMED_OUT items in child workflow executions that cannot be redriven because the execution status of those child workflows is terminal. For example, child workflows with an execution status of FAILED, ABORTED, or TIMED_OUT and a redriveStatus of NOT_REDRIVABLE.

", "MapRunItemCounts$pendingRedrive": "

The number of unsuccessful items in child workflow executions currently waiting to be redriven.

" } }, @@ -956,9 +1022,9 @@ "RedriveCount": { "base": null, "refs": { - "DescribeExecutionOutput$redriveCount": "

The number of times you've redriven an execution. If you have not yet redriven an execution, the redriveCount is 0. This count is not updated for redrives that failed to start or are pending to be redriven.

", - "DescribeMapRunOutput$redriveCount": "

The number of times you've redriven a Map Run. If you have not yet redriven a Map Run, the redriveCount is 0. This count is not updated for redrives that failed to start or are pending to be redriven.

", - "ExecutionListItem$redriveCount": "

The number of times you've redriven an execution. If you have not yet redriven an execution, the redriveCount is 0. This count is not updated for redrives that failed to start or are pending to be redriven.

", + "DescribeExecutionOutput$redriveCount": "

The number of times you've redriven an execution. If you have not yet redriven an execution, the redriveCount is 0. This count is only updated if you successfully redrive an execution.

", + "DescribeMapRunOutput$redriveCount": "

The number of times you've redriven a Map Run. If you have not yet redriven a Map Run, the redriveCount is 0. This count is only updated if you successfully redrive a Map Run.

", + "ExecutionListItem$redriveCount": "

The number of times you've redriven an execution. If you have not yet redriven an execution, the redriveCount is 0. This count is only updated when you successfully redrive an execution.

", "ExecutionRedrivenEventDetails$redriveCount": "

The number of times you've redriven an execution. If you have not yet redriven an execution, the redriveCount is 0. This count is not updated for redrives that failed to start or are pending to be redriven.

", "MapRunRedrivenEventDetails$redriveCount": "

The number of times the Map Run has been redriven at this point in the execution's history including this event. The redrive count for a redriven Map Run is always greater than 0.

" } @@ -978,6 +1044,12 @@ "refs": { } }, + "RevealSecrets": { + "base": null, + "refs": { + "TestStateInput$revealSecrets": "

Specifies whether or not to include secret information in the test result. For HTTP Tasks, a secret includes the data that an EventBridge connection adds to modify the HTTP request headers, query parameters, and body. Step Functions doesn't omit any information included in the state definition or the HTTP response.

If you set revealSecrets to true, you must make sure that the IAM user that calls the TestState API has permission for the states:RevealSecrets action. For an example of IAM policy that sets the states:RevealSecrets permission, see IAM permissions to test a state. Without this permission, Step Functions throws an access denied error.

By default, revealSecrets is set to false.

" + } + }, "ReverseOrder": { "base": null, "refs": { @@ -1058,7 +1130,8 @@ "TaskFailedEventDetails$cause": "

A more detailed explanation of the cause of the failure.

", "TaskStartFailedEventDetails$cause": "

A more detailed explanation of the cause of the failure.

", "TaskSubmitFailedEventDetails$cause": "

A more detailed explanation of the cause of the failure.

", - "TaskTimedOutEventDetails$cause": "

A more detailed explanation of the cause of the failure.

" + "TaskTimedOutEventDetails$cause": "

A more detailed explanation of the cause of the failure.

", + "TestStateOutput$cause": "

A detailed explanation of the cause for the error when the execution of a state fails.

" } }, "SensitiveData": { @@ -1071,6 +1144,12 @@ "DescribeExecutionOutput$redriveStatusReason": "

When redriveStatus is NOT_REDRIVABLE, redriveStatusReason specifies the reason why an execution cannot be redriven.

  • For executions of type STANDARD, or for a Distributed Map that includes child workflows of type STANDARD, redriveStatusReason can include one of the following reasons:

    • State machine is in DELETING status.

    • Execution is RUNNING and cannot be redriven.

    • Execution is SUCCEEDED and cannot be redriven.

    • Execution was started before the launch of RedriveExecution.

    • Execution history event limit exceeded.

    • Execution has exceeded the max execution time.

    • Execution redrivable period exceeded.

  • For a Distributed Map that includes child workflows of type EXPRESS, redriveStatusReason is only returned if the child workflows are not redrivable. This happens when the child workflow executions have completed successfully.

", "ExecutionStartedEventDetails$input": "

The JSON data input to the execution. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", "ExecutionSucceededEventDetails$output": "

The JSON data output by the execution. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", + "InspectionData$input": "

The raw state input.

", + "InspectionData$afterInputPath": "

The input after Step Functions applies the InputPath filter.

", + "InspectionData$afterParameters": "

The effective input after Step Functions applies the Parameters filter.

", + "InspectionData$result": "

The state's raw result.

", + "InspectionData$afterResultSelector": "

The effective result after Step Functions applies the ResultSelector filter.

", + "InspectionData$afterResultPath": "

The effective result combined with the raw state input after Step Functions applies the ResultPath filter.

", "LambdaFunctionScheduledEventDetails$input": "

The JSON data input to the Lambda function. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", "LambdaFunctionSucceededEventDetails$output": "

The JSON data output by the Lambda function. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", "SendTaskSuccessInput$output": "

The JSON output of the task. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", @@ -1081,7 +1160,9 @@ "StateEnteredEventDetails$input": "

The string that contains the JSON input data for the state. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", "StateExitedEventDetails$output": "

The JSON output data of the state. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", "TaskSubmittedEventDetails$output": "

The response from a resource when a task has started. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", - "TaskSucceededEventDetails$output": "

The full JSON response from a resource when a task has succeeded. This response becomes the output of the related task. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

" + "TaskSucceededEventDetails$output": "

The full JSON response from a resource when a task has succeeded. This response becomes the output of the related task. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

", + "TestStateInput$input": "

A string that contains the JSON input data for the state.

", + "TestStateOutput$output": "

The JSON output data of the state. Length constraints apply to the payload size, and are expressed as bytes in UTF-8 encoding.

" } }, "SensitiveDataJobInput": { @@ -1111,7 +1192,8 @@ "TaskFailedEventDetails$error": "

The error code of the failure.

", "TaskStartFailedEventDetails$error": "

The error code of the failure.

", "TaskSubmitFailedEventDetails$error": "

The error code of the failure.

", - "TaskTimedOutEventDetails$error": "

The error code of the failure.

" + "TaskTimedOutEventDetails$error": "

The error code of the failure.

", + "TestStateOutput$error": "

The error returned when the execution of a state fails.

" } }, "ServiceQuotaExceededException": { @@ -1226,6 +1308,12 @@ "StateMachineVersionList$member": null } }, + "StateName": { + "base": null, + "refs": { + "TestStateOutput$nextState": "

The name of the next state to transition to. If you haven't defined a next state in your definition or if the execution of the state fails, this field doesn't contain a value.

" + } + }, "StopExecutionInput": { "base": null, "refs": { @@ -1360,6 +1448,22 @@ "SendTaskSuccessInput$taskToken": "

The token that represents this task. Task tokens are generated by Step Functions when tasks are assigned to a worker, or in the context object when a workflow enters a task state. See GetActivityTaskOutput$taskToken.

" } }, + "TestExecutionStatus": { + "base": null, + "refs": { + "TestStateOutput$status": "

The execution status of the state.

" + } + }, + "TestStateInput": { + "base": null, + "refs": { + } + }, + "TestStateOutput": { + "base": null, + "refs": { + } + }, "TimeoutInSeconds": { "base": null, "refs": { @@ -1444,6 +1548,12 @@ "UpdateStateMachineInput$tracingConfiguration": "

Selects whether X-Ray tracing is enabled.

" } }, + "URL": { + "base": null, + "refs": { + "InspectionDataRequest$url": "

The API endpoint used for the HTTP request.

" + } + }, "UnsignedInteger": { "base": null, "refs": { diff --git a/apis/transcribe/2017-10-26/api-2.json b/apis/transcribe/2017-10-26/api-2.json index 8f907ec5c53..b8fa17cf3d1 100644 --- a/apis/transcribe/2017-10-26/api-2.json +++ b/apis/transcribe/2017-10-26/api-2.json @@ -658,7 +658,8 @@ "LanguageModelName":{"shape":"ModelName"}, "ContentRedaction":{"shape":"ContentRedaction"}, "LanguageOptions":{"shape":"LanguageOptions"}, - "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"} + "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"}, + "Summarization":{"shape":"Summarization"} } }, "CallAnalyticsJobStatus":{ @@ -1150,7 +1151,71 @@ "en-ZA", "en-NZ", "vi-VN", - "sv-SE" + "sv-SE", + "ab-GE", + "ast-ES", + "az-AZ", + "ba-RU", + "be-BY", + "bg-BG", + "bn-IN", + "bs-BA", + "ca-ES", + "ckb-IQ", + "ckb-IR", + "cs-CZ", + "cy-WL", + "el-GR", + "et-ET", + "eu-ES", + "fi-FI", + "gl-ES", + "gu-IN", + "ha-NG", + "hr-HR", + "hu-HU", + "hy-AM", + "is-IS", + "ka-GE", + "kab-DZ", + "kk-KZ", + "kn-IN", + "ky-KG", + "lg-IN", + "lt-LT", + "lv-LV", + "mhr-RU", + "mi-NZ", + "mk-MK", + "ml-IN", + "mn-MN", + "mr-IN", + "mt-MT", + "no-NO", + "or-IN", + "pa-IN", + "pl-PL", + "ps-AF", + "ro-RO", + "rw-RW", + "si-LK", + "sk-SK", + "sl-SI", + "so-SO", + "sr-RS", + "su-ID", + "sw-BI", + "sw-KE", + "sw-RW", + "sw-TZ", + "sw-UG", + "tl-PH", + "tt-RU", + "ug-CN", + "uk-UA", + "uz-UZ", + "wo-SN", + "zu-ZA" ] }, "LanguageCodeItem":{ @@ -1780,6 +1845,13 @@ "OutputStartIndex":{"shape":"SubtitleOutputStartIndex"} } }, + "Summarization":{ + "type":"structure", + "required":["GenerateAbstractiveSummary"], + "members":{ + "GenerateAbstractiveSummary":{"shape":"Boolean"} + } + }, "Tag":{ "type":"structure", "required":[ diff --git a/apis/transcribe/2017-10-26/docs-2.json b/apis/transcribe/2017-10-26/docs-2.json index 9cf90a04b86..9ddf6745206 100644 --- a/apis/transcribe/2017-10-26/docs-2.json +++ b/apis/transcribe/2017-10-26/docs-2.json @@ -81,6 +81,7 @@ "Settings$ShowAlternatives": "

To include alternative transcriptions within your transcription output, include ShowAlternatives in your transcription request.

If you have multi-channel audio and do not enable channel identification, your audio is transcribed in a continuous manner and your transcript does not separate the speech by channel.

If you include ShowAlternatives, you must also include MaxAlternatives, which is the maximum number of alternative transcriptions you want Amazon Transcribe to generate.

For more information, see Alternative transcriptions.

", "StartTranscriptionJobRequest$IdentifyLanguage": "

Enables automatic language identification in your transcription job request. Use this parameter if your media file contains only one language. If your media contains multiple languages, use IdentifyMultipleLanguages instead.

If you include IdentifyLanguage, you can optionally include a list of language codes, using LanguageOptions, that you think may be present in your media file. Including LanguageOptions restricts IdentifyLanguage to only the language options that you specify, which can improve transcription accuracy.

If you want to apply a custom language model, a custom vocabulary, or a custom vocabulary filter to your automatic language identification request, include LanguageIdSettings with the relevant sub-parameters (VocabularyName, LanguageModelName, and VocabularyFilterName). If you include LanguageIdSettings, also include LanguageOptions.

Note that you must include one of LanguageCode, IdentifyLanguage, or IdentifyMultipleLanguages in your request. If you include more than one of these parameters, your transcription job fails.

", "StartTranscriptionJobRequest$IdentifyMultipleLanguages": "

Enables automatic multi-language identification in your transcription job request. Use this parameter if your media file contains more than one language. If your media contains only one language, use IdentifyLanguage instead.

If you include IdentifyMultipleLanguages, you can optionally include a list of language codes, using LanguageOptions, that you think may be present in your media file. Including LanguageOptions restricts IdentifyLanguage to only the language options that you specify, which can improve transcription accuracy.

If you want to apply a custom vocabulary or a custom vocabulary filter to your automatic language identification request, include LanguageIdSettings with the relevant sub-parameters (VocabularyName and VocabularyFilterName). If you include LanguageIdSettings, also include LanguageOptions.

Note that you must include one of LanguageCode, IdentifyLanguage, or IdentifyMultipleLanguages in your request. If you include more than one of these parameters, your transcription job fails.

", + "Summarization$GenerateAbstractiveSummary": "

Enables Generative call summarization in your Call Analytics request

Generative call summarization provides a summary of the transcript including important components discussed in the conversation.

For more information, see Enabling generative call summarization.

", "TranscriptFilter$Negate": "

Set to TRUE to flag the absence of the phrase that you specified in your request. Set to FALSE to flag the presence of the phrase that you specified in your request.

", "TranscriptionJob$IdentifyLanguage": "

Indicates whether automatic language identification was enabled (TRUE) for the specified transcription job.

", "TranscriptionJob$IdentifyMultipleLanguages": "

Indicates whether automatic multi-language identification was enabled (TRUE) for the specified transcription job.

", @@ -1074,6 +1075,12 @@ "TranscriptionJob$Subtitles": "

Indicates whether subtitles were generated with your transcription.

" } }, + "Summarization": { + "base": "

Contains GenerateAbstractiveSummary, which is a required parameter if you want to enable Generative call summarization in your Call Analytics request.

", + "refs": { + "CallAnalyticsJobSettings$Summarization": "

Contains GenerateAbstractiveSummary, which is a required parameter if you want to enable Generative call summarization in your Call Analytics request.

" + } + }, "Tag": { "base": "

Adds metadata, in the form of a key:value pair, to the specified resource.

For example, you could add the tag Department:Sales to a resource to indicate that it pertains to your organization's sales department. You can also use tags for tag-based access control.

To learn more about tagging, see Tagging resources.

", "refs": { diff --git a/apis/transcribe/2017-10-26/endpoint-rule-set-1.json b/apis/transcribe/2017-10-26/endpoint-rule-set-1.json index 0589babab4d..ab643beb1e6 100644 --- a/apis/transcribe/2017-10-26/endpoint-rule-set-1.json +++ b/apis/transcribe/2017-10-26/endpoint-rule-set-1.json @@ -40,7 +40,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -83,7 +82,8 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -96,7 +96,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -110,7 +109,6 @@ "assign": "PartitionResult" } ], - "type": "tree", "rules": [ { "conditions": [ @@ -133,7 +131,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -168,7 +165,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -179,14 +175,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS and DualStack are enabled, but this partition does not support one or both", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -200,14 +198,12 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "booleanEquals", "argv": [ - true, { "fn": "getAttr", "argv": [ @@ -216,18 +212,17 @@ }, "supportsFIPS" ] - } + }, + true ] } ], - "type": "tree", "rules": [ { "conditions": [ { "fn": "stringEquals", "argv": [ - "aws", { "fn": "getAttr", "argv": [ @@ -236,7 +231,8 @@ }, "name" ] - } + }, + "aws" ] } ], @@ -252,7 +248,6 @@ { "fn": "stringEquals", "argv": [ - "aws-us-gov", { "fn": "getAttr", "argv": [ @@ -261,7 +256,8 @@ }, "name" ] - } + }, + "aws-us-gov" ] } ], @@ -281,14 +277,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "FIPS is enabled but this partition does not support FIPS", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -302,7 +300,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [ @@ -322,7 +319,6 @@ ] } ], - "type": "tree", "rules": [ { "conditions": [], @@ -333,14 +329,16 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" }, { "conditions": [], "error": "DualStack is enabled but this partition does not support DualStack", "type": "error" } - ] + ], + "type": "tree" }, { "conditions": [ @@ -389,9 +387,11 @@ }, "type": "endpoint" } - ] + ], + "type": "tree" } - ] + ], + "type": "tree" }, { "conditions": [], diff --git a/apis/workspaces-thin-client/2023-08-22/api-2.json b/apis/workspaces-thin-client/2023-08-22/api-2.json new file mode 100644 index 00000000000..488e3d44c82 --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/api-2.json @@ -0,0 +1,1140 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-08-22", + "endpointPrefix":"thinclient", + "jsonVersion":"1.1", + "protocol":"rest-json", + "serviceFullName":"Amazon WorkSpaces Thin Client", + "serviceId":"WorkSpaces Thin Client", + "signatureVersion":"v4", + "signingName":"thinclient", + "uid":"workspaces-thin-client-2023-08-22" + }, + "operations":{ + "CreateEnvironment":{ + "name":"CreateEnvironment", + "http":{ + "method":"POST", + "requestUri":"/environments", + "responseCode":201 + }, + "input":{"shape":"CreateEnvironmentRequest"}, + "output":{"shape":"CreateEnvironmentResponse"}, + "errors":[ + {"shape":"ServiceQuotaExceededException"}, + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "DeleteDevice":{ + "name":"DeleteDevice", + "http":{ + "method":"DELETE", + "requestUri":"/devices/{id}", + "responseCode":204 + }, + "input":{"shape":"DeleteDeviceRequest"}, + "output":{"shape":"DeleteDeviceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "DeleteEnvironment":{ + "name":"DeleteEnvironment", + "http":{ + "method":"DELETE", + "requestUri":"/environments/{id}", + "responseCode":204 + }, + "input":{"shape":"DeleteEnvironmentRequest"}, + "output":{"shape":"DeleteEnvironmentResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "DeregisterDevice":{ + "name":"DeregisterDevice", + "http":{ + "method":"POST", + "requestUri":"/deregister-device/{id}", + "responseCode":202 + }, + "input":{"shape":"DeregisterDeviceRequest"}, + "output":{"shape":"DeregisterDeviceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "GetDevice":{ + "name":"GetDevice", + "http":{ + "method":"GET", + "requestUri":"/devices/{id}", + "responseCode":200 + }, + "input":{"shape":"GetDeviceRequest"}, + "output":{"shape":"GetDeviceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "GetEnvironment":{ + "name":"GetEnvironment", + "http":{ + "method":"GET", + "requestUri":"/environments/{id}", + "responseCode":200 + }, + "input":{"shape":"GetEnvironmentRequest"}, + "output":{"shape":"GetEnvironmentResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "GetSoftwareSet":{ + "name":"GetSoftwareSet", + "http":{ + "method":"GET", + "requestUri":"/softwaresets/{id}", + "responseCode":200 + }, + "input":{"shape":"GetSoftwareSetRequest"}, + "output":{"shape":"GetSoftwareSetResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "ListDevices":{ + "name":"ListDevices", + "http":{ + "method":"GET", + "requestUri":"/devices", + "responseCode":200 + }, + "input":{"shape":"ListDevicesRequest"}, + "output":{"shape":"ListDevicesResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "ListEnvironments":{ + "name":"ListEnvironments", + "http":{ + "method":"GET", + "requestUri":"/environments", + "responseCode":200 + }, + "input":{"shape":"ListEnvironmentsRequest"}, + "output":{"shape":"ListEnvironmentsResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "ListSoftwareSets":{ + "name":"ListSoftwareSets", + "http":{ + "method":"GET", + "requestUri":"/softwaresets", + "responseCode":200 + }, + "input":{"shape":"ListSoftwareSetsRequest"}, + "output":{"shape":"ListSoftwareSetsResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "ListTagsForResource":{ + "name":"ListTagsForResource", + "http":{ + "method":"GET", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"ListTagsForResourceRequest"}, + "output":{"shape":"ListTagsForResourceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServiceException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "TagResource":{ + "name":"TagResource", + "http":{ + "method":"POST", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"TagResourceRequest"}, + "output":{"shape":"TagResourceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServiceException"} + ], + "endpoint":{"hostPrefix":"api."} + }, + "UntagResource":{ + "name":"UntagResource", + "http":{ + "method":"DELETE", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"UntagResourceRequest"}, + "output":{"shape":"UntagResourceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServiceException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "UpdateDevice":{ + "name":"UpdateDevice", + "http":{ + "method":"PATCH", + "requestUri":"/devices/{id}", + "responseCode":200 + }, + "input":{"shape":"UpdateDeviceRequest"}, + "output":{"shape":"UpdateDeviceResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "UpdateEnvironment":{ + "name":"UpdateEnvironment", + "http":{ + "method":"PATCH", + "requestUri":"/environments/{id}", + "responseCode":200 + }, + "input":{"shape":"UpdateEnvironmentRequest"}, + "output":{"shape":"UpdateEnvironmentResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + }, + "UpdateSoftwareSet":{ + "name":"UpdateSoftwareSet", + "http":{ + "method":"PATCH", + "requestUri":"/softwaresets/{id}", + "responseCode":204 + }, + "input":{"shape":"UpdateSoftwareSetRequest"}, + "output":{"shape":"UpdateSoftwareSetResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"InternalServerException"} + ], + "endpoint":{"hostPrefix":"api."}, + "idempotent":true + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "error":{ + "httpStatusCode":403, + "senderFault":true + }, + "exception":true + }, + "ActivationCode":{ + "type":"string", + "pattern":"[a-z]{2}[a-z0-9]{6}" + }, + "ApplyTimeOf":{ + "type":"string", + "enum":[ + "UTC", + "DEVICE" + ] + }, + "Arn":{ + "type":"string", + "max":2048, + "min":20, + "pattern":"arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[0-9]{0,12}:[a-zA-Z0-9\\-\\/\\._]+" + }, + "ClientToken":{ + "type":"string", + "max":512, + "min":1 + }, + "ConflictException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "resourceId":{"shape":"ResourceId"}, + "resourceType":{"shape":"ResourceType"} + }, + "error":{ + "httpStatusCode":409, + "senderFault":true + }, + "exception":true + }, + "CreateEnvironmentRequest":{ + "type":"structure", + "required":["desktopArn"], + "members":{ + "name":{"shape":"EnvironmentName"}, + "desktopArn":{"shape":"Arn"}, + "desktopEndpoint":{"shape":"DesktopEndpoint"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "maintenanceWindow":{"shape":"MaintenanceWindow"}, + "softwareSetUpdateMode":{"shape":"SoftwareSetUpdateMode"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "kmsKeyArn":{"shape":"KmsKeyArn"}, + "clientToken":{ + "shape":"ClientToken", + "idempotencyToken":true + }, + "tags":{"shape":"TagsMap"} + } + }, + "CreateEnvironmentResponse":{ + "type":"structure", + "members":{ + "environment":{"shape":"EnvironmentSummary"} + } + }, + "DayOfWeek":{ + "type":"string", + "enum":[ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ] + }, + "DayOfWeekList":{ + "type":"list", + "member":{"shape":"DayOfWeek"}, + "max":7, + "min":1 + }, + "DeleteDeviceRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"DeviceId", + "location":"uri", + "locationName":"id" + }, + "clientToken":{ + "shape":"ClientToken", + "idempotencyToken":true, + "location":"querystring", + "locationName":"clientToken" + } + } + }, + "DeleteDeviceResponse":{ + "type":"structure", + "members":{ + } + }, + "DeleteEnvironmentRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"EnvironmentId", + "location":"uri", + "locationName":"id" + }, + "clientToken":{ + "shape":"ClientToken", + "idempotencyToken":true, + "location":"querystring", + "locationName":"clientToken" + } + } + }, + "DeleteEnvironmentResponse":{ + "type":"structure", + "members":{ + } + }, + "DeregisterDeviceRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"DeviceId", + "location":"uri", + "locationName":"id" + }, + "targetDeviceStatus":{"shape":"TargetDeviceStatus"}, + "clientToken":{ + "shape":"ClientToken", + "idempotencyToken":true + } + } + }, + "DeregisterDeviceResponse":{ + "type":"structure", + "members":{ + } + }, + "DesktopEndpoint":{ + "type":"string", + "max":1024, + "min":1, + "pattern":"(https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,32}(:[0-9]{1,5})?(\\/.*)?", + "sensitive":true + }, + "DesktopType":{ + "type":"string", + "enum":[ + "workspaces", + "appstream", + "workspaces-web" + ] + }, + "Device":{ + "type":"structure", + "members":{ + "id":{"shape":"DeviceId"}, + "serialNumber":{"shape":"String"}, + "name":{"shape":"DeviceName"}, + "model":{"shape":"String"}, + "environmentId":{"shape":"EnvironmentId"}, + "status":{"shape":"DeviceStatus"}, + "currentSoftwareSetId":{"shape":"SoftwareSetId"}, + "currentSoftwareSetVersion":{"shape":"String"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetVersion":{"shape":"String"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "softwareSetComplianceStatus":{"shape":"DeviceSoftwareSetComplianceStatus"}, + "softwareSetUpdateStatus":{"shape":"SoftwareSetUpdateStatus"}, + "lastConnectedAt":{"shape":"Timestamp"}, + "lastPostureAt":{"shape":"Timestamp"}, + "createdAt":{"shape":"Timestamp"}, + "updatedAt":{"shape":"Timestamp"}, + "arn":{"shape":"Arn"}, + "kmsKeyArn":{"shape":"KmsKeyArn"}, + "tags":{"shape":"EmbeddedTag"} + } + }, + "DeviceId":{ + "type":"string", + "pattern":"[a-zA-Z0-9]{24}" + }, + "DeviceList":{ + "type":"list", + "member":{"shape":"DeviceSummary"} + }, + "DeviceName":{ + "type":"string", + "pattern":"[0-9\\p{IsAlphabetic}+:,.@'\" -]{1,64}", + "sensitive":true + }, + "DeviceSoftwareSetComplianceStatus":{ + "type":"string", + "enum":[ + "NONE", + "COMPLIANT", + "NOT_COMPLIANT" + ] + }, + "DeviceStatus":{ + "type":"string", + "enum":[ + "REGISTERED", + "DEREGISTERING", + "DEREGISTERED", + "ARCHIVED" + ] + }, + "DeviceSummary":{ + "type":"structure", + "members":{ + "id":{"shape":"DeviceId"}, + "serialNumber":{"shape":"String"}, + "name":{"shape":"DeviceName"}, + "model":{"shape":"String"}, + "environmentId":{"shape":"EnvironmentId"}, + "status":{"shape":"DeviceStatus"}, + "currentSoftwareSetId":{"shape":"SoftwareSetId"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetId":{"shape":"SoftwareSetId"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "lastConnectedAt":{"shape":"Timestamp"}, + "lastPostureAt":{"shape":"Timestamp"}, + "createdAt":{"shape":"Timestamp"}, + "updatedAt":{"shape":"Timestamp"}, + "arn":{"shape":"Arn"}, + "tags":{"shape":"EmbeddedTag"} + } + }, + "EmbeddedTag":{ + "type":"structure", + "members":{ + "resourceArn":{"shape":"String"}, + "internalId":{"shape":"String"} + }, + "sensitive":true + }, + "Environment":{ + "type":"structure", + "members":{ + "id":{"shape":"EnvironmentId"}, + "name":{"shape":"EnvironmentName"}, + "desktopArn":{"shape":"Arn"}, + "desktopEndpoint":{"shape":"DesktopEndpoint"}, + "desktopType":{"shape":"DesktopType"}, + "activationCode":{"shape":"ActivationCode"}, + "registeredDevicesCount":{"shape":"Integer"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "maintenanceWindow":{"shape":"MaintenanceWindow"}, + "softwareSetUpdateMode":{"shape":"SoftwareSetUpdateMode"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetVersion":{"shape":"String"}, + "softwareSetComplianceStatus":{"shape":"EnvironmentSoftwareSetComplianceStatus"}, + "createdAt":{"shape":"Timestamp"}, + "updatedAt":{"shape":"Timestamp"}, + "arn":{"shape":"Arn"}, + "kmsKeyArn":{"shape":"KmsKeyArn"}, + "tags":{"shape":"EmbeddedTag"} + } + }, + "EnvironmentId":{ + "type":"string", + "pattern":"[a-z0-9]{9}" + }, + "EnvironmentList":{ + "type":"list", + "member":{"shape":"EnvironmentSummary"} + }, + "EnvironmentName":{ + "type":"string", + "pattern":"[0-9\\p{IsAlphabetic}+:,.@'\" -][0-9\\p{IsAlphabetic}+=:,.@'\" -]{0,63}", + "sensitive":true + }, + "EnvironmentSoftwareSetComplianceStatus":{ + "type":"string", + "enum":[ + "NO_REGISTERED_DEVICES", + "COMPLIANT", + "NOT_COMPLIANT" + ] + }, + "EnvironmentSummary":{ + "type":"structure", + "members":{ + "id":{"shape":"EnvironmentId"}, + "name":{"shape":"EnvironmentName"}, + "desktopArn":{"shape":"Arn"}, + "desktopEndpoint":{"shape":"DesktopEndpoint"}, + "desktopType":{"shape":"DesktopType"}, + "activationCode":{"shape":"ActivationCode"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "maintenanceWindow":{"shape":"MaintenanceWindow"}, + "softwareSetUpdateMode":{"shape":"SoftwareSetUpdateMode"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "pendingSoftwareSetId":{"shape":"SoftwareSetId"}, + "createdAt":{"shape":"Timestamp"}, + "updatedAt":{"shape":"Timestamp"}, + "arn":{"shape":"Arn"}, + "tags":{"shape":"EmbeddedTag"} + } + }, + "ExceptionMessage":{"type":"string"}, + "FieldName":{"type":"string"}, + "GetDeviceRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"DeviceId", + "location":"uri", + "locationName":"id" + } + } + }, + "GetDeviceResponse":{ + "type":"structure", + "members":{ + "device":{"shape":"Device"} + } + }, + "GetEnvironmentRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"EnvironmentId", + "location":"uri", + "locationName":"id" + } + } + }, + "GetEnvironmentResponse":{ + "type":"structure", + "members":{ + "environment":{"shape":"Environment"} + } + }, + "GetSoftwareSetRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"SoftwareSetId", + "location":"uri", + "locationName":"id" + } + } + }, + "GetSoftwareSetResponse":{ + "type":"structure", + "members":{ + "softwareSet":{"shape":"SoftwareSet"} + } + }, + "Hour":{ + "type":"integer", + "box":true, + "max":23, + "min":0 + }, + "Integer":{ + "type":"integer", + "box":true + }, + "InternalServerException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "retryAfterSeconds":{ + "shape":"RetryAfterSeconds", + "location":"header", + "locationName":"Retry-After" + } + }, + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true + }, + "InternalServiceException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "retryAfterSeconds":{ + "shape":"RetryAfterSeconds", + "location":"header", + "locationName":"Retry-After" + } + }, + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true + }, + "KmsKeyArn":{ + "type":"string", + "max":2048, + "min":20, + "pattern":"arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[0-9]{0,12}:key\\/[a-zA-Z0-9-]+" + }, + "ListDevicesRequest":{ + "type":"structure", + "members":{ + "nextToken":{ + "shape":"PaginationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "maxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + } + } + }, + "ListDevicesResponse":{ + "type":"structure", + "members":{ + "devices":{"shape":"DeviceList"}, + "nextToken":{"shape":"PaginationToken"} + } + }, + "ListEnvironmentsRequest":{ + "type":"structure", + "members":{ + "nextToken":{ + "shape":"PaginationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "maxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + } + } + }, + "ListEnvironmentsResponse":{ + "type":"structure", + "members":{ + "environments":{"shape":"EnvironmentList"}, + "nextToken":{"shape":"PaginationToken"} + } + }, + "ListSoftwareSetsRequest":{ + "type":"structure", + "members":{ + "nextToken":{ + "shape":"PaginationToken", + "location":"querystring", + "locationName":"nextToken" + }, + "maxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + } + } + }, + "ListSoftwareSetsResponse":{ + "type":"structure", + "members":{ + "softwareSets":{"shape":"SoftwareSetList"}, + "nextToken":{"shape":"PaginationToken"} + } + }, + "ListTagsForResourceRequest":{ + "type":"structure", + "required":["resourceArn"], + "members":{ + "resourceArn":{ + "shape":"String", + "location":"uri", + "locationName":"resourceArn" + } + } + }, + "ListTagsForResourceResponse":{ + "type":"structure", + "members":{ + "tags":{"shape":"TagsMap"} + } + }, + "MaintenanceWindow":{ + "type":"structure", + "members":{ + "type":{"shape":"MaintenanceWindowType"}, + "startTimeHour":{"shape":"Hour"}, + "startTimeMinute":{"shape":"Minute"}, + "endTimeHour":{"shape":"Hour"}, + "endTimeMinute":{"shape":"Minute"}, + "daysOfTheWeek":{"shape":"DayOfWeekList"}, + "applyTimeOf":{"shape":"ApplyTimeOf"} + } + }, + "MaintenanceWindowType":{ + "type":"string", + "enum":[ + "SYSTEM", + "CUSTOM" + ] + }, + "MaxResults":{ + "type":"integer", + "box":true, + "max":50, + "min":1 + }, + "Minute":{ + "type":"integer", + "box":true, + "max":59, + "min":0 + }, + "PaginationToken":{ + "type":"string", + "max":2048, + "min":0, + "pattern":"\\S*" + }, + "QuotaCode":{"type":"string"}, + "ResourceId":{"type":"string"}, + "ResourceNotFoundException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "resourceId":{"shape":"ResourceId"}, + "resourceType":{"shape":"ResourceType"} + }, + "error":{ + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "ResourceType":{"type":"string"}, + "RetryAfterSeconds":{ + "type":"integer", + "box":true + }, + "ServiceCode":{"type":"string"}, + "ServiceQuotaExceededException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "resourceId":{"shape":"ResourceId"}, + "resourceType":{"shape":"ResourceType"}, + "serviceCode":{"shape":"ServiceCode"}, + "quotaCode":{"shape":"QuotaCode"} + }, + "error":{ + "httpStatusCode":402, + "senderFault":true + }, + "exception":true + }, + "Software":{ + "type":"structure", + "members":{ + "name":{"shape":"String"}, + "version":{"shape":"String"} + } + }, + "SoftwareList":{ + "type":"list", + "member":{"shape":"Software"} + }, + "SoftwareSet":{ + "type":"structure", + "members":{ + "id":{"shape":"SoftwareSetId"}, + "version":{"shape":"String"}, + "releasedAt":{"shape":"Timestamp"}, + "supportedUntil":{"shape":"Timestamp"}, + "validationStatus":{"shape":"SoftwareSetValidationStatus"}, + "software":{"shape":"SoftwareList"}, + "arn":{"shape":"Arn"} + } + }, + "SoftwareSetId":{ + "type":"string", + "pattern":"[0-9]{1,9}" + }, + "SoftwareSetIdOrEmptyString":{ + "type":"string", + "pattern":"[0-9]{0,9}" + }, + "SoftwareSetList":{ + "type":"list", + "member":{"shape":"SoftwareSetSummary"} + }, + "SoftwareSetSummary":{ + "type":"structure", + "members":{ + "id":{"shape":"SoftwareSetId"}, + "version":{"shape":"String"}, + "releasedAt":{"shape":"Timestamp"}, + "supportedUntil":{"shape":"Timestamp"}, + "validationStatus":{"shape":"SoftwareSetValidationStatus"}, + "arn":{"shape":"Arn"} + } + }, + "SoftwareSetUpdateMode":{ + "type":"string", + "enum":[ + "USE_LATEST", + "USE_DESIRED" + ] + }, + "SoftwareSetUpdateSchedule":{ + "type":"string", + "enum":[ + "USE_MAINTENANCE_WINDOW", + "APPLY_IMMEDIATELY" + ] + }, + "SoftwareSetUpdateStatus":{ + "type":"string", + "enum":[ + "AVAILABLE", + "IN_PROGRESS", + "UP_TO_DATE" + ] + }, + "SoftwareSetValidationStatus":{ + "type":"string", + "enum":[ + "VALIDATED", + "NOT_VALIDATED" + ] + }, + "String":{"type":"string"}, + "TagKeys":{ + "type":"list", + "member":{"shape":"String"}, + "sensitive":true + }, + "TagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tags" + ], + "members":{ + "resourceArn":{ + "shape":"String", + "location":"uri", + "locationName":"resourceArn" + }, + "tags":{"shape":"TagsMap"} + } + }, + "TagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "TagsMap":{ + "type":"map", + "key":{"shape":"String"}, + "value":{"shape":"String"}, + "sensitive":true + }, + "TargetDeviceStatus":{ + "type":"string", + "enum":[ + "DEREGISTERED", + "ARCHIVED" + ] + }, + "ThrottlingException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "serviceCode":{"shape":"ServiceCode"}, + "quotaCode":{"shape":"QuotaCode"}, + "retryAfterSeconds":{ + "shape":"RetryAfterSeconds", + "location":"header", + "locationName":"Retry-After" + } + }, + "error":{ + "httpStatusCode":429, + "senderFault":true + }, + "exception":true + }, + "Timestamp":{"type":"timestamp"}, + "UntagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tagKeys" + ], + "members":{ + "resourceArn":{ + "shape":"String", + "location":"uri", + "locationName":"resourceArn" + }, + "tagKeys":{ + "shape":"TagKeys", + "location":"querystring", + "locationName":"tagKeys" + } + } + }, + "UntagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "UpdateDeviceRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"DeviceId", + "location":"uri", + "locationName":"id" + }, + "name":{"shape":"DeviceName"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetId"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "kmsKeyArn":{"shape":"KmsKeyArn"} + } + }, + "UpdateDeviceResponse":{ + "type":"structure", + "members":{ + "device":{"shape":"DeviceSummary"} + } + }, + "UpdateEnvironmentRequest":{ + "type":"structure", + "required":["id"], + "members":{ + "id":{ + "shape":"EnvironmentId", + "location":"uri", + "locationName":"id" + }, + "name":{"shape":"EnvironmentName"}, + "desktopArn":{"shape":"Arn"}, + "desktopEndpoint":{"shape":"DesktopEndpoint"}, + "softwareSetUpdateSchedule":{"shape":"SoftwareSetUpdateSchedule"}, + "maintenanceWindow":{"shape":"MaintenanceWindow"}, + "softwareSetUpdateMode":{"shape":"SoftwareSetUpdateMode"}, + "desiredSoftwareSetId":{"shape":"SoftwareSetIdOrEmptyString"} + } + }, + "UpdateEnvironmentResponse":{ + "type":"structure", + "members":{ + "environment":{"shape":"EnvironmentSummary"} + } + }, + "UpdateSoftwareSetRequest":{ + "type":"structure", + "required":[ + "id", + "validationStatus" + ], + "members":{ + "id":{ + "shape":"SoftwareSetId", + "location":"uri", + "locationName":"id" + }, + "validationStatus":{"shape":"SoftwareSetValidationStatus"} + } + }, + "UpdateSoftwareSetResponse":{ + "type":"structure", + "members":{ + } + }, + "ValidationException":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"}, + "reason":{"shape":"ValidationExceptionReason"}, + "fieldList":{"shape":"ValidationExceptionFieldList"} + }, + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "ValidationExceptionField":{ + "type":"structure", + "required":[ + "name", + "message" + ], + "members":{ + "name":{"shape":"FieldName"}, + "message":{"shape":"ExceptionMessage"} + } + }, + "ValidationExceptionFieldList":{ + "type":"list", + "member":{"shape":"ValidationExceptionField"} + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "unknownOperation", + "cannotParse", + "fieldValidationFailed", + "other" + ] + } + } +} diff --git a/apis/workspaces-thin-client/2023-08-22/docs-2.json b/apis/workspaces-thin-client/2023-08-22/docs-2.json new file mode 100644 index 00000000000..7987aa7b7fa --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/docs-2.json @@ -0,0 +1,692 @@ +{ + "version": "2.0", + "service": "

Amazon WorkSpaces Thin Client is a affordable device built to work with Amazon Web Services End User Computing (EUC) virtual desktops to provide users with a complete cloud desktop solution. WorkSpaces Thin Client is a compact device designed to connect up to two monitors and USB devices like a keyboard, mouse, headset, and webcam. To maximize endpoint security, WorkSpaces Thin Client devices do not allow local data storage or installation of unapproved applications. The WorkSpaces Thin Client device ships preloaded with device management software.

You can use these APIs to complete WorkSpaces Thin Client tasks, such as creating environments or viewing devices. For more information about WorkSpaces Thin Client, including the required permissions to use the service, see the Amazon WorkSpaces Thin Client Administrator Guide. For more information about using the Command Line Interface (CLI) to manage your WorkSpaces Thin Client resources, see the WorkSpaces Thin Client section of the CLI Reference.

", + "operations": { + "CreateEnvironment": "

Creates an environment for your thin client devices.

", + "DeleteDevice": "

Deletes a thin client device.

", + "DeleteEnvironment": "

Deletes an environment.

", + "DeregisterDevice": "

Deregisters a thin client device.

", + "GetDevice": "

Returns information for a thin client device.

", + "GetEnvironment": "

Returns information for an environment.

", + "GetSoftwareSet": "

Returns information for a software set.

", + "ListDevices": "

Returns a list of thin client devices.

", + "ListEnvironments": "

Returns a list of environments.

", + "ListSoftwareSets": "

Returns a list of software sets.

", + "ListTagsForResource": "

Returns a list of tags for a resource.

", + "TagResource": "

Assigns one or more tags (key-value pairs) to the specified resource.

", + "UntagResource": "

Removes a tag or tags from a resource.

", + "UpdateDevice": "

Updates a thin client device.

", + "UpdateEnvironment": "

Updates an environment.

", + "UpdateSoftwareSet": "

Updates a software set.

" + }, + "shapes": { + "AccessDeniedException": { + "base": "

You do not have sufficient access to perform this action.

", + "refs": { + } + }, + "ActivationCode": { + "base": null, + "refs": { + "Environment$activationCode": "

The activation code to register a device to the environment.

", + "EnvironmentSummary$activationCode": "

The activation code to register a device to the environment.

" + } + }, + "ApplyTimeOf": { + "base": null, + "refs": { + "MaintenanceWindow$applyTimeOf": "

The option to set the maintenance window during the device local time or Universal Coordinated Time (UTC).

" + } + }, + "Arn": { + "base": null, + "refs": { + "CreateEnvironmentRequest$desktopArn": "

The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.

", + "Device$arn": "

The Amazon Resource Name (ARN) of the device.

", + "DeviceSummary$arn": "

The Amazon Resource Name (ARN) of the device.

", + "Environment$desktopArn": "

The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.

", + "Environment$arn": "

The Amazon Resource Name (ARN) of the environment.

", + "EnvironmentSummary$desktopArn": "

The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.

", + "EnvironmentSummary$arn": "

The Amazon Resource Name (ARN) of the environment.

", + "SoftwareSet$arn": "

The Amazon Resource Name (ARN) of the software set.

", + "SoftwareSetSummary$arn": "

The Amazon Resource Name (ARN) of the software set.

", + "UpdateEnvironmentRequest$desktopArn": "

The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.

" + } + }, + "ClientToken": { + "base": null, + "refs": { + "CreateEnvironmentRequest$clientToken": "

Specifies a unique, case-sensitive identifier that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a UUID type of value.

If you don't provide this value, then Amazon Web Services generates a random one for you.

If you retry the operation with the same ClientToken, but with different parameters, the retry fails with an IdempotentParameterMismatch error.

", + "DeleteDeviceRequest$clientToken": "

Specifies a unique, case-sensitive identifier that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a UUID type of value.

If you don't provide this value, then Amazon Web Services generates a random one for you.

If you retry the operation with the same ClientToken, but with different parameters, the retry fails with an IdempotentParameterMismatch error.

", + "DeleteEnvironmentRequest$clientToken": "

Specifies a unique, case-sensitive identifier that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a UUID type of value.

If you don't provide this value, then Amazon Web Services generates a random one for you.

If you retry the operation with the same ClientToken, but with different parameters, the retry fails with an IdempotentParameterMismatch error.

", + "DeregisterDeviceRequest$clientToken": "

Specifies a unique, case-sensitive identifier that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a UUID type of value.

If you don't provide this value, then Amazon Web Services generates a random one for you.

If you retry the operation with the same ClientToken, but with different parameters, the retry fails with an IdempotentParameterMismatch error.

" + } + }, + "ConflictException": { + "base": "

The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.

", + "refs": { + } + }, + "CreateEnvironmentRequest": { + "base": null, + "refs": { + } + }, + "CreateEnvironmentResponse": { + "base": null, + "refs": { + } + }, + "DayOfWeek": { + "base": null, + "refs": { + "DayOfWeekList$member": null + } + }, + "DayOfWeekList": { + "base": null, + "refs": { + "MaintenanceWindow$daysOfTheWeek": "

The days of the week during which the maintenance window is open.

" + } + }, + "DeleteDeviceRequest": { + "base": null, + "refs": { + } + }, + "DeleteDeviceResponse": { + "base": null, + "refs": { + } + }, + "DeleteEnvironmentRequest": { + "base": null, + "refs": { + } + }, + "DeleteEnvironmentResponse": { + "base": null, + "refs": { + } + }, + "DeregisterDeviceRequest": { + "base": null, + "refs": { + } + }, + "DeregisterDeviceResponse": { + "base": null, + "refs": { + } + }, + "DesktopEndpoint": { + "base": null, + "refs": { + "CreateEnvironmentRequest$desktopEndpoint": "

The URL for the identity provider login (only for environments that use AppStream 2.0).

", + "Environment$desktopEndpoint": "

The URL for the identity provider login (only for environments that use AppStream 2.0).

", + "EnvironmentSummary$desktopEndpoint": "

The URL for the identity provider login (only for environments that use AppStream 2.0).

", + "UpdateEnvironmentRequest$desktopEndpoint": "

The URL for the identity provider login (only for environments that use AppStream 2.0).

" + } + }, + "DesktopType": { + "base": null, + "refs": { + "Environment$desktopType": "

The type of streaming desktop for the environment.

", + "EnvironmentSummary$desktopType": "

The type of streaming desktop for the environment.

" + } + }, + "Device": { + "base": "

Describes a thin client device.

", + "refs": { + "GetDeviceResponse$device": "

Describes an device.

" + } + }, + "DeviceId": { + "base": null, + "refs": { + "DeleteDeviceRequest$id": "

The ID of the device to delete.

", + "DeregisterDeviceRequest$id": "

The ID of the device to deregister.

", + "Device$id": "

The ID of the device.

", + "DeviceSummary$id": "

The ID of the device.

", + "GetDeviceRequest$id": "

The ID of the device for which to return information.

", + "UpdateDeviceRequest$id": "

The ID of the device to update.

" + } + }, + "DeviceList": { + "base": null, + "refs": { + "ListDevicesResponse$devices": "

Describes devices.

" + } + }, + "DeviceName": { + "base": null, + "refs": { + "Device$name": "

The name of the device.

", + "DeviceSummary$name": "

The name of the device.

", + "UpdateDeviceRequest$name": "

The name of the device to update.

" + } + }, + "DeviceSoftwareSetComplianceStatus": { + "base": null, + "refs": { + "Device$softwareSetComplianceStatus": "

Describes if the software currently installed on the device is a supported version.

" + } + }, + "DeviceStatus": { + "base": null, + "refs": { + "Device$status": "

The status of the device.

", + "DeviceSummary$status": "

The status of the device.

" + } + }, + "DeviceSummary": { + "base": "

Describes a thin client device.

", + "refs": { + "DeviceList$member": null, + "UpdateDeviceResponse$device": "

Describes a device.

" + } + }, + "EmbeddedTag": { + "base": "

The resource and internal ID of a resource to tag.

", + "refs": { + "Device$tags": "

The tag keys and optional values for the resource.

", + "DeviceSummary$tags": "

The tag keys and optional values for the resource.

", + "Environment$tags": "

The tag keys and optional values for the resource.

", + "EnvironmentSummary$tags": "

The tag keys and optional values for the resource.

" + } + }, + "Environment": { + "base": "

Describes an environment.

", + "refs": { + "GetEnvironmentResponse$environment": "

Describes an environment.

" + } + }, + "EnvironmentId": { + "base": null, + "refs": { + "DeleteEnvironmentRequest$id": "

The ID of the environment to delete.

", + "Device$environmentId": "

The ID of the environment the device is associated with.

", + "DeviceSummary$environmentId": "

The ID of the environment the device is associated with.

", + "Environment$id": "

The ID of the environment.

", + "EnvironmentSummary$id": "

The ID of the environment.

", + "GetEnvironmentRequest$id": "

The ID of the environment for which to return information.

", + "UpdateEnvironmentRequest$id": "

The ID of the environment to update.

" + } + }, + "EnvironmentList": { + "base": null, + "refs": { + "ListEnvironmentsResponse$environments": "

Describes environments.

" + } + }, + "EnvironmentName": { + "base": null, + "refs": { + "CreateEnvironmentRequest$name": "

The name for the environment.

", + "Environment$name": "

The name of the environment.

", + "EnvironmentSummary$name": "

The name of the environment.

", + "UpdateEnvironmentRequest$name": "

The name of the environment to update.

" + } + }, + "EnvironmentSoftwareSetComplianceStatus": { + "base": null, + "refs": { + "Environment$softwareSetComplianceStatus": "

Describes if the software currently installed on all devices in the environment is a supported version.

" + } + }, + "EnvironmentSummary": { + "base": "

Describes an environment.

", + "refs": { + "CreateEnvironmentResponse$environment": "

Describes an environment.

", + "EnvironmentList$member": null, + "UpdateEnvironmentResponse$environment": "

Describes an environment.

" + } + }, + "ExceptionMessage": { + "base": null, + "refs": { + "AccessDeniedException$message": null, + "ConflictException$message": null, + "InternalServerException$message": null, + "InternalServiceException$message": null, + "ResourceNotFoundException$message": null, + "ServiceQuotaExceededException$message": null, + "ThrottlingException$message": null, + "ValidationException$message": null, + "ValidationExceptionField$message": "

A message that describes the reason for the exception.

" + } + }, + "FieldName": { + "base": null, + "refs": { + "ValidationExceptionField$name": "

The name of the exception.

" + } + }, + "GetDeviceRequest": { + "base": null, + "refs": { + } + }, + "GetDeviceResponse": { + "base": null, + "refs": { + } + }, + "GetEnvironmentRequest": { + "base": null, + "refs": { + } + }, + "GetEnvironmentResponse": { + "base": null, + "refs": { + } + }, + "GetSoftwareSetRequest": { + "base": null, + "refs": { + } + }, + "GetSoftwareSetResponse": { + "base": null, + "refs": { + } + }, + "Hour": { + "base": null, + "refs": { + "MaintenanceWindow$startTimeHour": "

The hour for the maintenance window start (00-23).

", + "MaintenanceWindow$endTimeHour": "

The hour for the maintenance window end (00-23).

" + } + }, + "Integer": { + "base": null, + "refs": { + "Environment$registeredDevicesCount": "

The number of devices registered to the environment.

" + } + }, + "InternalServerException": { + "base": "

The server encountered an internal error and is unable to complete the request.

", + "refs": { + } + }, + "InternalServiceException": { + "base": "

Request processing failed due to some unknown error, exception, or failure.

", + "refs": { + } + }, + "KmsKeyArn": { + "base": null, + "refs": { + "CreateEnvironmentRequest$kmsKeyArn": "

The Amazon Resource Name (ARN) of the Key Management Service key to use to encrypt the environment.

", + "Device$kmsKeyArn": "

The Amazon Resource Name (ARN) of the Key Management Service key used to encrypt the device.

", + "Environment$kmsKeyArn": "

The Amazon Resource Name (ARN) of the Key Management Service key used to encrypt the environment.

", + "UpdateDeviceRequest$kmsKeyArn": "

The Amazon Resource Name (ARN) of the Key Management Service key to use for the update.

" + } + }, + "ListDevicesRequest": { + "base": null, + "refs": { + } + }, + "ListDevicesResponse": { + "base": null, + "refs": { + } + }, + "ListEnvironmentsRequest": { + "base": null, + "refs": { + } + }, + "ListEnvironmentsResponse": { + "base": null, + "refs": { + } + }, + "ListSoftwareSetsRequest": { + "base": null, + "refs": { + } + }, + "ListSoftwareSetsResponse": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceRequest": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceResponse": { + "base": null, + "refs": { + } + }, + "MaintenanceWindow": { + "base": "

Describes the maintenance window for a thin client device.

", + "refs": { + "CreateEnvironmentRequest$maintenanceWindow": "

A specification for a time window to apply software updates.

", + "Environment$maintenanceWindow": "

A specification for a time window to apply software updates.

", + "EnvironmentSummary$maintenanceWindow": "

A specification for a time window to apply software updates.

", + "UpdateEnvironmentRequest$maintenanceWindow": "

A specification for a time window to apply software updates.

" + } + }, + "MaintenanceWindowType": { + "base": null, + "refs": { + "MaintenanceWindow$type": "

An option to select the default or custom maintenance window.

" + } + }, + "MaxResults": { + "base": null, + "refs": { + "ListDevicesRequest$maxResults": "

The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results.

This is only an upper limit. The actual number of results returned per call might be fewer than the specified maximum.

", + "ListEnvironmentsRequest$maxResults": "

The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results.

This is only an upper limit. The actual number of results returned per call might be fewer than the specified maximum.

", + "ListSoftwareSetsRequest$maxResults": "

The maximum number of results that are returned per call. You can use nextToken to obtain further pages of results.

This is only an upper limit. The actual number of results returned per call might be fewer than the specified maximum.

" + } + }, + "Minute": { + "base": null, + "refs": { + "MaintenanceWindow$startTimeMinute": "

The minutes past the hour for the maintenance window start (00-59).

", + "MaintenanceWindow$endTimeMinute": "

The minutes for the maintenance window end (00-59).

" + } + }, + "PaginationToken": { + "base": null, + "refs": { + "ListDevicesRequest$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

", + "ListDevicesResponse$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

", + "ListEnvironmentsRequest$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

", + "ListEnvironmentsResponse$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

", + "ListSoftwareSetsRequest$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

", + "ListSoftwareSetsResponse$nextToken": "

If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.

" + } + }, + "QuotaCode": { + "base": null, + "refs": { + "ServiceQuotaExceededException$quotaCode": "

The code for the quota in Service Quotas.

", + "ThrottlingException$quotaCode": "

The code for the quota in Service Quotas.

" + } + }, + "ResourceId": { + "base": null, + "refs": { + "ConflictException$resourceId": "

The ID of the resource associated with the request.

", + "ResourceNotFoundException$resourceId": "

The ID of the resource associated with the request.

", + "ServiceQuotaExceededException$resourceId": "

The ID of the resource that exceeds the service quota.

" + } + }, + "ResourceNotFoundException": { + "base": "

The resource specified in the request was not found.

", + "refs": { + } + }, + "ResourceType": { + "base": null, + "refs": { + "ConflictException$resourceType": "

The type of the resource associated with the request.

", + "ResourceNotFoundException$resourceType": "

The type of the resource associated with the request.

", + "ServiceQuotaExceededException$resourceType": "

The type of the resource that exceeds the service quota.

" + } + }, + "RetryAfterSeconds": { + "base": null, + "refs": { + "InternalServerException$retryAfterSeconds": "

The number of seconds to wait before retrying the next request.

", + "InternalServiceException$retryAfterSeconds": "

The number of seconds to wait before retrying the next request.

", + "ThrottlingException$retryAfterSeconds": "

The number of seconds to wait before retrying the next request.

" + } + }, + "ServiceCode": { + "base": null, + "refs": { + "ServiceQuotaExceededException$serviceCode": "

The code for the service in Service Quotas.

", + "ThrottlingException$serviceCode": "

The code for the service in Service Quotas.

" + } + }, + "ServiceQuotaExceededException": { + "base": "

Your request exceeds a service quota.

", + "refs": { + } + }, + "Software": { + "base": "

Describes software.

", + "refs": { + "SoftwareList$member": null + } + }, + "SoftwareList": { + "base": null, + "refs": { + "SoftwareSet$software": "

A list of the software components in the software set.

" + } + }, + "SoftwareSet": { + "base": "

Describes a software set.

", + "refs": { + "GetSoftwareSetResponse$softwareSet": "

Describes a software set.

" + } + }, + "SoftwareSetId": { + "base": null, + "refs": { + "CreateEnvironmentRequest$desiredSoftwareSetId": "

The ID of the software set to apply.

", + "Device$currentSoftwareSetId": "

The ID of the software set currently installed on the device.

", + "Device$desiredSoftwareSetId": "

The ID of the software set which the device has been set to.

", + "Device$pendingSoftwareSetId": "

The ID of the software set that is pending to be installed on the device.

", + "DeviceSummary$currentSoftwareSetId": "

The ID of the software set currently installed on the device.

", + "DeviceSummary$desiredSoftwareSetId": "

The ID of the software set which the device has been set to.

", + "DeviceSummary$pendingSoftwareSetId": "

The ID of the software set that is pending to be installed on the device.

", + "Environment$desiredSoftwareSetId": "

The ID of the software set to apply.

", + "Environment$pendingSoftwareSetId": "

The ID of the software set that is pending to be installed.

", + "EnvironmentSummary$desiredSoftwareSetId": "

The ID of the software set to apply.

", + "EnvironmentSummary$pendingSoftwareSetId": "

The ID of the software set that is pending to be installed.

", + "GetSoftwareSetRequest$id": "

The ID of the software set for which to return information.

", + "SoftwareSet$id": "

The ID of the software set.

", + "SoftwareSetSummary$id": "

The ID of the software set.

", + "UpdateDeviceRequest$desiredSoftwareSetId": "

The ID of the software set to apply.

", + "UpdateSoftwareSetRequest$id": "

The ID of the software set to update.

" + } + }, + "SoftwareSetIdOrEmptyString": { + "base": null, + "refs": { + "UpdateEnvironmentRequest$desiredSoftwareSetId": "

The ID of the software set to apply.

" + } + }, + "SoftwareSetList": { + "base": null, + "refs": { + "ListSoftwareSetsResponse$softwareSets": "

Describes software sets.

" + } + }, + "SoftwareSetSummary": { + "base": "

Describes a software set.

", + "refs": { + "SoftwareSetList$member": null + } + }, + "SoftwareSetUpdateMode": { + "base": null, + "refs": { + "CreateEnvironmentRequest$softwareSetUpdateMode": "

An option to define which software updates to apply.

", + "Environment$softwareSetUpdateMode": "

An option to define which software updates to apply.

", + "EnvironmentSummary$softwareSetUpdateMode": "

An option to define which software updates to apply.

", + "UpdateEnvironmentRequest$softwareSetUpdateMode": "

An option to define which software updates to apply.

" + } + }, + "SoftwareSetUpdateSchedule": { + "base": null, + "refs": { + "CreateEnvironmentRequest$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "Device$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "DeviceSummary$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "Environment$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "EnvironmentSummary$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "UpdateDeviceRequest$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

", + "UpdateEnvironmentRequest$softwareSetUpdateSchedule": "

An option to define if software updates should be applied within a maintenance window.

" + } + }, + "SoftwareSetUpdateStatus": { + "base": null, + "refs": { + "Device$softwareSetUpdateStatus": "

Describes if the device has a supported version of software installed.

" + } + }, + "SoftwareSetValidationStatus": { + "base": null, + "refs": { + "SoftwareSet$validationStatus": "

An option to define if the software set has been validated.

", + "SoftwareSetSummary$validationStatus": "

An option to define if the software set has been validated.

", + "UpdateSoftwareSetRequest$validationStatus": "

An option to define if the software set has been validated.

" + } + }, + "String": { + "base": null, + "refs": { + "Device$serialNumber": "

The hardware serial number of the device.

", + "Device$model": "

The model number of the device.

", + "Device$currentSoftwareSetVersion": "

The version of the software set currently installed on the device.

", + "Device$pendingSoftwareSetVersion": "

The version of the software set that is pending to be installed on the device.

", + "DeviceSummary$serialNumber": "

The hardware serial number of the device.

", + "DeviceSummary$model": "

The model number of the device.

", + "EmbeddedTag$resourceArn": "

The Amazon Resource Name (ARN) of a resource to tag.

", + "EmbeddedTag$internalId": "

The internal ID of a resource to tag.

", + "Environment$pendingSoftwareSetVersion": "

The version of the software set that is pending to be installed.

", + "ListTagsForResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the resource for which you want to retrieve tags.

", + "Software$name": "

The name of the software component.

", + "Software$version": "

The version of the software component.

", + "SoftwareSet$version": "

The version of the software set.

", + "SoftwareSetSummary$version": "

The version of the software set.

", + "TagKeys$member": null, + "TagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the resource that you want to tag.

", + "TagsMap$key": null, + "TagsMap$value": null, + "UntagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the resource that you want to untag.

" + } + }, + "TagKeys": { + "base": null, + "refs": { + "UntagResourceRequest$tagKeys": "

The keys of the key-value pairs for the tag or tags you want to remove from the specified resource.

" + } + }, + "TagResourceRequest": { + "base": null, + "refs": { + } + }, + "TagResourceResponse": { + "base": null, + "refs": { + } + }, + "TagsMap": { + "base": null, + "refs": { + "CreateEnvironmentRequest$tags": "

A map of the key-value pairs of the tag or tags to assign to the resource.

", + "ListTagsForResourceResponse$tags": "

A map of the key-value pairs for the tag or tags assigned to the specified resource.

", + "TagResourceRequest$tags": "

A map of the key-value pairs of the tag or tags to assign to the resource.

" + } + }, + "TargetDeviceStatus": { + "base": null, + "refs": { + "DeregisterDeviceRequest$targetDeviceStatus": "

The desired new status for the device.

" + } + }, + "ThrottlingException": { + "base": "

The request was denied due to request throttling.

", + "refs": { + } + }, + "Timestamp": { + "base": null, + "refs": { + "Device$lastConnectedAt": "

The timestamp of the most recent session on the device.

", + "Device$lastPostureAt": "

The timestamp of the most recent check-in of the device.

", + "Device$createdAt": "

The timestamp of when the device was created.

", + "Device$updatedAt": "

The timestamp of when the device was updated.

", + "DeviceSummary$lastConnectedAt": "

The timestamp of the most recent session on the device.

", + "DeviceSummary$lastPostureAt": "

The timestamp of the most recent check-in of the device.

", + "DeviceSummary$createdAt": "

The timestamp of when the device was created.

", + "DeviceSummary$updatedAt": "

The timestamp of when the device was updated.

", + "Environment$createdAt": "

The timestamp of when the environment was created.

", + "Environment$updatedAt": "

The timestamp of when the device was updated.

", + "EnvironmentSummary$createdAt": "

The timestamp of when the environment was created.

", + "EnvironmentSummary$updatedAt": "

The timestamp of when the device was updated.

", + "SoftwareSet$releasedAt": "

The timestamp of when the software set was released.

", + "SoftwareSet$supportedUntil": "

The timestamp of the end of support for the software set.

", + "SoftwareSetSummary$releasedAt": "

The timestamp of when the software set was released.

", + "SoftwareSetSummary$supportedUntil": "

The timestamp of the end of support for the software set.

" + } + }, + "UntagResourceRequest": { + "base": null, + "refs": { + } + }, + "UntagResourceResponse": { + "base": null, + "refs": { + } + }, + "UpdateDeviceRequest": { + "base": null, + "refs": { + } + }, + "UpdateDeviceResponse": { + "base": null, + "refs": { + } + }, + "UpdateEnvironmentRequest": { + "base": null, + "refs": { + } + }, + "UpdateEnvironmentResponse": { + "base": null, + "refs": { + } + }, + "UpdateSoftwareSetRequest": { + "base": null, + "refs": { + } + }, + "UpdateSoftwareSetResponse": { + "base": null, + "refs": { + } + }, + "ValidationException": { + "base": "

The input fails to satisfy the specified constraints.

", + "refs": { + } + }, + "ValidationExceptionField": { + "base": "

Describes a validation exception.

", + "refs": { + "ValidationExceptionFieldList$member": null + } + }, + "ValidationExceptionFieldList": { + "base": null, + "refs": { + "ValidationException$fieldList": "

A list of fields that didn't validate.

" + } + }, + "ValidationExceptionReason": { + "base": null, + "refs": { + "ValidationException$reason": "

The reason for the exception.

" + } + } + } +} diff --git a/apis/workspaces-thin-client/2023-08-22/endpoint-rule-set-1.json b/apis/workspaces-thin-client/2023-08-22/endpoint-rule-set-1.json new file mode 100644 index 00000000000..e2a675a5752 --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/endpoint-rule-set-1.json @@ -0,0 +1,350 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseDualStack": { + "builtIn": "AWS::UseDualStack", + "required": true, + "default": false, + "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", + "type": "Boolean" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "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.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://thinclient-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://thinclient-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://thinclient.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://thinclient.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ], + "type": "tree" + } + ] +} \ No newline at end of file diff --git a/apis/workspaces-thin-client/2023-08-22/endpoint-tests-1.json b/apis/workspaces-thin-client/2023-08-22/endpoint-tests-1.json new file mode 100644 index 00000000000..b1c009f8bcc --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/endpoint-tests-1.json @@ -0,0 +1,314 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://thinclient.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips disabled and dualstack enabled", + "expect": { + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file diff --git a/apis/workspaces-thin-client/2023-08-22/examples-1.json b/apis/workspaces-thin-client/2023-08-22/examples-1.json new file mode 100644 index 00000000000..0ea7e3b0bbe --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/examples-1.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "examples": { + } +} diff --git a/apis/workspaces-thin-client/2023-08-22/paginators-1.json b/apis/workspaces-thin-client/2023-08-22/paginators-1.json new file mode 100644 index 00000000000..9fe21a48570 --- /dev/null +++ b/apis/workspaces-thin-client/2023-08-22/paginators-1.json @@ -0,0 +1,22 @@ +{ + "pagination": { + "ListDevices": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "devices" + }, + "ListEnvironments": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "environments" + }, + "ListSoftwareSets": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "softwareSets" + } + } +} diff --git a/apis/workspaces/2015-04-08/api-2.json b/apis/workspaces/2015-04-08/api-2.json index ddc715b63c4..f481b0d5dbb 100644 --- a/apis/workspaces/2015-04-08/api-2.json +++ b/apis/workspaces/2015-04-08/api-2.json @@ -1749,6 +1749,20 @@ "PendingRequests":{"shape":"WorkspaceList"} } }, + "DataReplication":{ + "type":"string", + "enum":[ + "NO_REPLICATION", + "PRIMARY_AS_SOURCE" + ] + }, + "DataReplicationSettings":{ + "type":"structure", + "members":{ + "DataReplication":{"shape":"DataReplication"}, + "RecoverySnapshotTime":{"shape":"Timestamp"} + } + }, "DedicatedTenancyCidrRangeList":{ "type":"list", "member":{"shape":"DedicatedTenancyManagementCidrRange"} @@ -2789,13 +2803,11 @@ }, "ModifyWorkspacePropertiesRequest":{ "type":"structure", - "required":[ - "WorkspaceId", - "WorkspaceProperties" - ], + "required":["WorkspaceId"], "members":{ "WorkspaceId":{"shape":"WorkspaceId"}, - "WorkspaceProperties":{"shape":"WorkspaceProperties"} + "WorkspaceProperties":{"shape":"WorkspaceProperties"}, + "DataReplication":{"shape":"DataReplication"} } }, "ModifyWorkspacePropertiesResult":{ @@ -3169,7 +3181,8 @@ "PrimaryWorkspaceId":{"shape":"WorkspaceId"}, "VolumeEncryptionKey":{"shape":"VolumeEncryptionKey"}, "DirectoryId":{"shape":"DirectoryId"}, - "Tags":{"shape":"TagList"} + "Tags":{"shape":"TagList"}, + "DataReplication":{"shape":"DataReplication"} } }, "StandbyWorkspaceRelationshipType":{ @@ -3183,6 +3196,18 @@ "type":"list", "member":{"shape":"StandbyWorkspace"} }, + "StandbyWorkspacesProperties":{ + "type":"structure", + "members":{ + "StandbyWorkspaceId":{"shape":"WorkspaceId"}, + "DataReplication":{"shape":"DataReplication"}, + "RecoverySnapshotTime":{"shape":"Timestamp"} + } + }, + "StandbyWorkspacesPropertiesList":{ + "type":"list", + "member":{"shape":"StandbyWorkspacesProperties"} + }, "StartRequest":{ "type":"structure", "members":{ @@ -3515,7 +3540,9 @@ "RootVolumeEncryptionEnabled":{"shape":"BooleanObject"}, "WorkspaceProperties":{"shape":"WorkspaceProperties"}, "ModificationStates":{"shape":"ModificationStateList"}, - "RelatedWorkspaces":{"shape":"RelatedWorkspaces"} + "RelatedWorkspaces":{"shape":"RelatedWorkspaces"}, + "DataReplicationSettings":{"shape":"DataReplicationSettings"}, + "StandbyWorkspacesProperties":{"shape":"StandbyWorkspacesPropertiesList"} } }, "WorkspaceAccessProperties":{ diff --git a/apis/workspaces/2015-04-08/docs-2.json b/apis/workspaces/2015-04-08/docs-2.json index 522666f2ef2..c75c9acf57d 100644 --- a/apis/workspaces/2015-04-08/docs-2.json +++ b/apis/workspaces/2015-04-08/docs-2.json @@ -672,6 +672,21 @@ "refs": { } }, + "DataReplication": { + "base": null, + "refs": { + "DataReplicationSettings$DataReplication": "

Indicates whether data replication is enabled, and if enabled, the type of data replication.

", + "ModifyWorkspacePropertiesRequest$DataReplication": "

Indicates the data replication status.

", + "StandbyWorkspace$DataReplication": "

Indicates whether data replication is enabled, and if enabled, the type of data replication.

", + "StandbyWorkspacesProperties$DataReplication": "

Indicates whether data replication is enabled, and if enabled, the type of data replication.

" + } + }, + "DataReplicationSettings": { + "base": "

Describes the data replication settings.

", + "refs": { + "Workspace$DataReplicationSettings": "

Indicates the settings of the data replication.

" + } + }, "DedicatedTenancyCidrRangeList": { "base": null, "refs": { @@ -2015,6 +2030,18 @@ "CreateStandbyWorkspacesRequest$StandbyWorkspaces": "

Information about the standby WorkSpace to be created.

" } }, + "StandbyWorkspacesProperties": { + "base": "

Describes the properties of the related standby WorkSpaces.

", + "refs": { + "StandbyWorkspacesPropertiesList$member": null + } + }, + "StandbyWorkspacesPropertiesList": { + "base": null, + "refs": { + "Workspace$StandbyWorkspacesProperties": "

The properties of the standby WorkSpace

" + } + }, "StartRequest": { "base": "

Information used to start a WorkSpace.

", "refs": { @@ -2165,9 +2192,11 @@ "BundleResourceAssociation$Created": "

The time the association is created.

", "BundleResourceAssociation$LastUpdatedTime": "

The time the association status was last updated.

", "CreateWorkspaceImageResult$Created": "

The date when the image was created.

", + "DataReplicationSettings$RecoverySnapshotTime": "

The date and time at which the last successful snapshot was taken of the primary WorkSpace used for replicating data.

", "ImageResourceAssociation$Created": "

The time the association is created.

", "ImageResourceAssociation$LastUpdatedTime": "

The time the association status was last updated.

", "Snapshot$SnapshotTime": "

The time when the snapshot was created.

", + "StandbyWorkspacesProperties$RecoverySnapshotTime": "

The date and time at which the last successful snapshot was taken of the primary WorkSpace used for replicating data.

", "WorkSpaceApplication$Created": "

The time the application is created.

", "WorkspaceBundle$LastUpdatedTime": "

The last time that the bundle was updated.

", "WorkspaceBundle$CreationTime": "

The time when the bundle was created.

", @@ -2452,6 +2481,7 @@ "RelatedWorkspaceProperties$WorkspaceId": "

The identifier of the related WorkSpace.

", "RestoreWorkspaceRequest$WorkspaceId": "

The identifier of the WorkSpace.

", "StandbyWorkspace$PrimaryWorkspaceId": "

The identifier of the standby WorkSpace.

", + "StandbyWorkspacesProperties$StandbyWorkspaceId": "

The identifier of the standby WorkSpace

", "StartRequest$WorkspaceId": "

The identifier of the WorkSpace.

", "StopRequest$WorkspaceId": "

The identifier of the WorkSpace.

", "TerminateRequest$WorkspaceId": "

The identifier of the WorkSpace.

", diff --git a/gems/aws-partitions/CHANGELOG.md b/gems/aws-partitions/CHANGELOG.md index d604a3cc723..dc5e8cd44a1 100644 --- a/gems/aws-partitions/CHANGELOG.md +++ b/gems/aws-partitions/CHANGELOG.md @@ -1,6 +1,21 @@ Unreleased Changes ------------------ +1.857.0 (2023-11-27) +------------------ + +* Feature - Added support for enumerating regions for `Aws::WorkSpacesThinClient`. + +* Feature - Added support for enumerating regions for `Aws::Repostspace`. + +* Feature - Added support for enumerating regions for `Aws::FreeTier`. + +* Feature - Added support for enumerating regions for `Aws::EKSAuth`. + +* Feature - Added support for enumerating regions for `Aws::CostOptimizationHub`. + +* Feature - Added support for enumerating regions for `Aws::BCMDataExports`. + 1.856.0 (2023-11-22) ------------------ diff --git a/gems/aws-partitions/VERSION b/gems/aws-partitions/VERSION index 1c441027385..46ec776d6c7 100644 --- a/gems/aws-partitions/VERSION +++ b/gems/aws-partitions/VERSION @@ -1 +1 @@ -1.856.0 +1.857.0 diff --git a/gems/aws-partitions/lib/aws-partitions.rb b/gems/aws-partitions/lib/aws-partitions.rb index c3dd39f2520..f53ddc4b062 100644 --- a/gems/aws-partitions/lib/aws-partitions.rb +++ b/gems/aws-partitions/lib/aws-partitions.rb @@ -275,6 +275,7 @@ def service_ids 'AugmentedAIRuntime' => 'a2i-runtime.sagemaker', 'AutoScaling' => 'autoscaling', 'AutoScalingPlans' => 'autoscaling-plans', + 'BCMDataExports' => 'bcm-data-exports', 'Backup' => 'backup', 'BackupGateway' => 'backup-gateway', 'BackupStorage' => 'backupstorage', @@ -334,6 +335,7 @@ def service_ids 'ConnectWisdomService' => 'wisdom', 'ControlTower' => 'controltower', 'CostExplorer' => 'ce', + 'CostOptimizationHub' => 'cost-optimization-hub', 'CostandUsageReportService' => 'cur', 'CustomerProfiles' => 'profile', 'DAX' => 'dax', @@ -361,6 +363,7 @@ def service_ids 'ECS' => 'ecs', 'EFS' => 'elasticfilesystem', 'EKS' => 'eks', + 'EKSAuth' => 'eks-auth', 'EMR' => 'elasticmapreduce', 'EMRContainers' => 'emr-containers', 'EMRServerless' => 'emr-serverless', @@ -382,6 +385,7 @@ def service_ids 'ForecastQueryService' => 'forecastquery', 'ForecastService' => 'forecast', 'FraudDetector' => 'frauddetector', + 'FreeTier' => 'freetier', 'GameLift' => 'gamelift', 'Glacier' => 'glacier', 'GlobalAccelerator' => 'globalaccelerator', @@ -525,6 +529,7 @@ def service_ids 'RedshiftDataAPIService' => 'redshift-data', 'RedshiftServerless' => 'redshift-serverless', 'Rekognition' => 'rekognition', + 'Repostspace' => 'repostspace', 'ResilienceHub' => 'resiliencehub', 'ResourceExplorer2' => 'resource-explorer-2', 'ResourceGroups' => 'resource-groups', @@ -602,6 +607,7 @@ def service_ids 'WorkMail' => 'workmail', 'WorkMailMessageFlow' => 'workmailmessageflow', 'WorkSpaces' => 'workspaces', + 'WorkSpacesThinClient' => 'thinclient', 'WorkSpacesWeb' => 'workspaces-web', 'XRay' => 'xray', } diff --git a/gems/aws-partitions/partitions.json b/gems/aws-partitions/partitions.json index 01340a41583..97ad54337e8 100644 --- a/gems/aws-partitions/partitions.json +++ b/gems/aws-partitions/partitions.json @@ -4267,6 +4267,16 @@ } } }, + "cost-optimization-hub" : { + "endpoints" : { + "us-east-1" : { + "credentialScope" : { + "region" : "us-east-1" + }, + "hostname" : "cost-optimization-hub.us-east-1.amazonaws.com" + } + } + }, "cur" : { "endpoints" : { "us-east-1" : { } @@ -20815,6 +20825,12 @@ } } }, + "arc-zonal-shift" : { + "endpoints" : { + "us-gov-east-1" : { }, + "us-gov-west-1" : { } + } + }, "athena" : { "endpoints" : { "fips-us-gov-east-1" : { @@ -25443,8 +25459,66 @@ }, "rds" : { "endpoints" : { - "us-iso-east-1" : { }, - "us-iso-west-1" : { } + "rds-fips.us-iso-east-1" : { + "credentialScope" : { + "region" : "us-iso-east-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-iso-east-1.c2s.ic.gov" + }, + "rds-fips.us-iso-west-1" : { + "credentialScope" : { + "region" : "us-iso-west-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-iso-west-1.c2s.ic.gov" + }, + "rds.us-iso-east-1" : { + "credentialScope" : { + "region" : "us-iso-east-1" + }, + "deprecated" : true, + "variants" : [ { + "hostname" : "rds-fips.us-iso-east-1.c2s.ic.gov", + "tags" : [ "fips" ] + } ] + }, + "rds.us-iso-west-1" : { + "credentialScope" : { + "region" : "us-iso-west-1" + }, + "deprecated" : true, + "variants" : [ { + "hostname" : "rds-fips.us-iso-west-1.c2s.ic.gov", + "tags" : [ "fips" ] + } ] + }, + "us-iso-east-1" : { + "variants" : [ { + "hostname" : "rds-fips.us-iso-east-1.c2s.ic.gov", + "tags" : [ "fips" ] + } ] + }, + "us-iso-east-1-fips" : { + "credentialScope" : { + "region" : "us-iso-east-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-iso-east-1.c2s.ic.gov" + }, + "us-iso-west-1" : { + "variants" : [ { + "hostname" : "rds-fips.us-iso-west-1.c2s.ic.gov", + "tags" : [ "fips" ] + } ] + }, + "us-iso-west-1-fips" : { + "credentialScope" : { + "region" : "us-iso-west-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-iso-west-1.c2s.ic.gov" + } } }, "redshift" : { @@ -25954,7 +26028,36 @@ }, "rds" : { "endpoints" : { - "us-isob-east-1" : { } + "rds-fips.us-isob-east-1" : { + "credentialScope" : { + "region" : "us-isob-east-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-isob-east-1.sc2s.sgov.gov" + }, + "rds.us-isob-east-1" : { + "credentialScope" : { + "region" : "us-isob-east-1" + }, + "deprecated" : true, + "variants" : [ { + "hostname" : "rds-fips.us-isob-east-1.sc2s.sgov.gov", + "tags" : [ "fips" ] + } ] + }, + "us-isob-east-1" : { + "variants" : [ { + "hostname" : "rds-fips.us-isob-east-1.sc2s.sgov.gov", + "tags" : [ "fips" ] + } ] + }, + "us-isob-east-1-fips" : { + "credentialScope" : { + "region" : "us-isob-east-1" + }, + "deprecated" : true, + "hostname" : "rds-fips.us-isob-east-1.sc2s.sgov.gov" + } } }, "redshift" : { diff --git a/gems/aws-sdk-accessanalyzer/CHANGELOG.md b/gems/aws-sdk-accessanalyzer/CHANGELOG.md index dee50bb7490..38e16b8faf7 100644 --- a/gems/aws-sdk-accessanalyzer/CHANGELOG.md +++ b/gems/aws-sdk-accessanalyzer/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.43.0 (2023-11-27) +------------------ + +* Feature - IAM Access Analyzer now continuously monitors IAM roles and users in your AWS account or organization to generate findings for unused access. Additionally, IAM Access Analyzer now provides custom policy checks to validate that IAM policies adhere to your security standards ahead of deployments. + 1.42.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-accessanalyzer/VERSION b/gems/aws-sdk-accessanalyzer/VERSION index a50908ca3da..b978278f05f 100644 --- a/gems/aws-sdk-accessanalyzer/VERSION +++ b/gems/aws-sdk-accessanalyzer/VERSION @@ -1 +1 @@ -1.42.0 +1.43.0 diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer.rb index 2bf886fe293..0162464322a 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer.rb @@ -52,6 +52,6 @@ # @!group service module Aws::AccessAnalyzer - GEM_VERSION = '1.42.0' + GEM_VERSION = '1.43.0' end diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client.rb index 30491b92e5e..bbc3185d57a 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client.rb @@ -447,6 +447,125 @@ def cancel_policy_generation(params = {}, options = {}) req.send_request(options) end + # Checks whether the specified access isn't allowed by a policy. + # + # @option params [required, String] :policy_document + # The JSON policy document to use as the content for the policy. + # + # @option params [required, Array] :access + # An access object containing the permissions that shouldn't be granted + # by the specified policy. + # + # @option params [required, String] :policy_type + # The type of policy. Identity policies grant permissions to IAM + # principals. Identity policies include managed and inline policies for + # IAM roles, users, and groups. + # + # Resource policies grant permissions on Amazon Web Services resources. + # Resource policies include trust policies for IAM roles and bucket + # policies for Amazon S3 buckets. You can provide a generic input such + # as identity policy or resource policy or a specific input such as + # managed policy or Amazon S3 bucket policy. + # + # @return [Types::CheckAccessNotGrantedResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CheckAccessNotGrantedResponse#result #result} => String + # * {Types::CheckAccessNotGrantedResponse#message #message} => String + # * {Types::CheckAccessNotGrantedResponse#reasons #reasons} => Array<Types::ReasonSummary> + # + # @example Request syntax with placeholder values + # + # resp = client.check_access_not_granted({ + # policy_document: "AccessCheckPolicyDocument", # required + # access: [ # required + # { + # actions: ["Action"], # required + # }, + # ], + # policy_type: "IDENTITY_POLICY", # required, accepts IDENTITY_POLICY, RESOURCE_POLICY + # }) + # + # @example Response structure + # + # resp.result #=> String, one of "PASS", "FAIL" + # resp.message #=> String + # resp.reasons #=> Array + # resp.reasons[0].description #=> String + # resp.reasons[0].statement_index #=> Integer + # resp.reasons[0].statement_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckAccessNotGranted AWS API Documentation + # + # @overload check_access_not_granted(params = {}) + # @param [Hash] params ({}) + def check_access_not_granted(params = {}, options = {}) + req = build_request(:check_access_not_granted, params) + req.send_request(options) + end + + # Checks whether new access is allowed for an updated policy when + # compared to the existing policy. + # + # You can find examples for reference policies and learn how to set up + # and run a custom policy check for new access in the [IAM Access + # Analyzer custom policy checks samples][1] repository on GitHub. The + # reference policies in this repository are meant to be passed to the + # `existingPolicyDocument` request parameter. + # + # + # + # [1]: https://github.com/aws-samples/iam-access-analyzer-custom-policy-check-samples + # + # @option params [required, String] :new_policy_document + # The JSON policy document to use as the content for the updated policy. + # + # @option params [required, String] :existing_policy_document + # The JSON policy document to use as the content for the existing + # policy. + # + # @option params [required, String] :policy_type + # The type of policy to compare. Identity policies grant permissions to + # IAM principals. Identity policies include managed and inline policies + # for IAM roles, users, and groups. + # + # Resource policies grant permissions on Amazon Web Services resources. + # Resource policies include trust policies for IAM roles and bucket + # policies for Amazon S3 buckets. You can provide a generic input such + # as identity policy or resource policy or a specific input such as + # managed policy or Amazon S3 bucket policy. + # + # @return [Types::CheckNoNewAccessResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CheckNoNewAccessResponse#result #result} => String + # * {Types::CheckNoNewAccessResponse#message #message} => String + # * {Types::CheckNoNewAccessResponse#reasons #reasons} => Array<Types::ReasonSummary> + # + # @example Request syntax with placeholder values + # + # resp = client.check_no_new_access({ + # new_policy_document: "AccessCheckPolicyDocument", # required + # existing_policy_document: "AccessCheckPolicyDocument", # required + # policy_type: "IDENTITY_POLICY", # required, accepts IDENTITY_POLICY, RESOURCE_POLICY + # }) + # + # @example Response structure + # + # resp.result #=> String, one of "PASS", "FAIL" + # resp.message #=> String + # resp.reasons #=> Array + # resp.reasons[0].description #=> String + # resp.reasons[0].statement_index #=> Integer + # resp.reasons[0].statement_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckNoNewAccess AWS API Documentation + # + # @overload check_no_new_access(params = {}) + # @param [Hash] params ({}) + def check_no_new_access(params = {}, options = {}) + req = build_request(:check_no_new_access, params) + req.send_request(options) + end + # Creates an access preview that allows you to preview IAM Access # Analyzer findings for your resource before deploying resource # permissions. @@ -600,10 +719,10 @@ def create_access_preview(params = {}, options = {}) # The name of the analyzer to create. # # @option params [required, String] :type - # The type of analyzer to create. Only ACCOUNT and ORGANIZATION - # analyzers are supported. You can create only one analyzer per account - # per Region. You can create up to 5 analyzers per organization per - # Region. + # The type of analyzer to create. Only `ACCOUNT`, `ORGANIZATION`, + # `ACCOUNT_UNUSED_ACCESS`, and `ORGANIZTAION_UNUSED_ACCESS` analyzers + # are supported. You can create only one analyzer per account per + # Region. You can create up to 5 analyzers per organization per Region. # # @option params [Array] :archive_rules # Specifies the archive rules to add for the analyzer. Archive rules @@ -611,7 +730,7 @@ def create_access_preview(params = {}, options = {}) # the rule. # # @option params [Hash] :tags - # The tags to apply to the analyzer. + # An array of key-value pairs to apply to the analyzer. # # @option params [String] :client_token # A client token. @@ -619,6 +738,12 @@ def create_access_preview(params = {}, options = {}) # **A suitable default value is auto-generated.** You should normally # not need to pass this option.** # + # @option params [Types::AnalyzerConfiguration] :configuration + # Specifies the configuration of the analyzer. If the analyzer is an + # unused access analyzer, the specified scope of unused access is used + # for the configuration. If the analyzer is an external access analyzer, + # this field is not used. + # # @return [Types::CreateAnalyzerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateAnalyzerResponse#arn #arn} => String @@ -627,7 +752,7 @@ def create_access_preview(params = {}, options = {}) # # resp = client.create_analyzer({ # analyzer_name: "Name", # required - # type: "ACCOUNT", # required, accepts ACCOUNT, ORGANIZATION + # type: "ACCOUNT", # required, accepts ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS, ORGANIZATION_UNUSED_ACCESS # archive_rules: [ # { # rule_name: "Name", # required @@ -645,6 +770,11 @@ def create_access_preview(params = {}, options = {}) # "String" => "String", # }, # client_token: "String", + # configuration: { + # unused_access: { + # unused_access_age: 1, + # }, + # }, # }) # # @example Response structure @@ -932,7 +1062,7 @@ def get_analyzed_resource(params = {}, options = {}) # # resp.analyzer.arn #=> String # resp.analyzer.name #=> String - # resp.analyzer.type #=> String, one of "ACCOUNT", "ORGANIZATION" + # resp.analyzer.type #=> String, one of "ACCOUNT", "ORGANIZATION", "ACCOUNT_UNUSED_ACCESS", "ORGANIZATION_UNUSED_ACCESS" # resp.analyzer.created_at #=> Time # resp.analyzer.last_resource_analyzed #=> String # resp.analyzer.last_resource_analyzed_at #=> Time @@ -940,6 +1070,7 @@ def get_analyzed_resource(params = {}, options = {}) # resp.analyzer.tags["String"] #=> String # resp.analyzer.status #=> String, one of "ACTIVE", "CREATING", "DISABLED", "FAILED" # resp.analyzer.status_reason.code #=> String, one of "AWS_SERVICE_ACCESS_DISABLED", "DELEGATED_ADMINISTRATOR_DEREGISTERED", "ORGANIZATION_DELETED", "SERVICE_LINKED_ROLE_CREATION_FAILED" + # resp.analyzer.configuration.unused_access.unused_access_age #=> Integer # # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetAnalyzer AWS API Documentation # @@ -1054,6 +1185,94 @@ def get_finding(params = {}, options = {}) req.send_request(options) end + # Retrieves information about the specified finding. + # + # @option params [required, String] :analyzer_arn + # The [ARN of the analyzer][1] that generated the finding. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources + # + # @option params [required, String] :id + # The ID of the finding to retrieve. + # + # @option params [Integer] :max_results + # The maximum number of results to return in the response. + # + # @option params [String] :next_token + # A token used for pagination of results returned. + # + # @return [Types::GetFindingV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetFindingV2Response#analyzed_at #analyzed_at} => Time + # * {Types::GetFindingV2Response#created_at #created_at} => Time + # * {Types::GetFindingV2Response#error #error} => String + # * {Types::GetFindingV2Response#id #id} => String + # * {Types::GetFindingV2Response#next_token #next_token} => String + # * {Types::GetFindingV2Response#resource #resource} => String + # * {Types::GetFindingV2Response#resource_type #resource_type} => String + # * {Types::GetFindingV2Response#resource_owner_account #resource_owner_account} => String + # * {Types::GetFindingV2Response#status #status} => String + # * {Types::GetFindingV2Response#updated_at #updated_at} => Time + # * {Types::GetFindingV2Response#finding_details #finding_details} => Array<Types::FindingDetails> + # * {Types::GetFindingV2Response#finding_type #finding_type} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.get_finding_v2({ + # analyzer_arn: "AnalyzerArn", # required + # id: "FindingId", # required + # max_results: 1, + # next_token: "Token", + # }) + # + # @example Response structure + # + # resp.analyzed_at #=> Time + # resp.created_at #=> Time + # resp.error #=> String + # resp.id #=> String + # resp.next_token #=> String + # resp.resource #=> String + # resp.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" + # resp.resource_owner_account #=> String + # resp.status #=> String, one of "ACTIVE", "ARCHIVED", "RESOLVED" + # resp.updated_at #=> Time + # resp.finding_details #=> Array + # resp.finding_details[0].external_access_details.action #=> Array + # resp.finding_details[0].external_access_details.action[0] #=> String + # resp.finding_details[0].external_access_details.condition #=> Hash + # resp.finding_details[0].external_access_details.condition["String"] #=> String + # resp.finding_details[0].external_access_details.is_public #=> Boolean + # resp.finding_details[0].external_access_details.principal #=> Hash + # resp.finding_details[0].external_access_details.principal["String"] #=> String + # resp.finding_details[0].external_access_details.sources #=> Array + # resp.finding_details[0].external_access_details.sources[0].type #=> String, one of "POLICY", "BUCKET_ACL", "S3_ACCESS_POINT", "S3_ACCESS_POINT_ACCOUNT" + # resp.finding_details[0].external_access_details.sources[0].detail.access_point_arn #=> String + # resp.finding_details[0].external_access_details.sources[0].detail.access_point_account #=> String + # resp.finding_details[0].unused_permission_details.actions #=> Array + # resp.finding_details[0].unused_permission_details.actions[0].action #=> String + # resp.finding_details[0].unused_permission_details.actions[0].last_accessed #=> Time + # resp.finding_details[0].unused_permission_details.service_namespace #=> String + # resp.finding_details[0].unused_permission_details.last_accessed #=> Time + # resp.finding_details[0].unused_iam_user_access_key_details.access_key_id #=> String + # resp.finding_details[0].unused_iam_user_access_key_details.last_accessed #=> Time + # resp.finding_details[0].unused_iam_role_details.last_accessed #=> Time + # resp.finding_details[0].unused_iam_user_password_details.last_accessed #=> Time + # resp.finding_type #=> String, one of "ExternalAccess", "UnusedIAMRole", "UnusedIAMUserAccessKey", "UnusedIAMUserPassword", "UnusedPermission" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingV2 AWS API Documentation + # + # @overload get_finding_v2(params = {}) + # @param [Hash] params ({}) + def get_finding_v2(params = {}, options = {}) + req = build_request(:get_finding_v2, params) + req.send_request(options) + end + # Retrieves the policy that was generated using `StartPolicyGeneration`. # # @option params [required, String] :job_id @@ -1327,7 +1546,7 @@ def list_analyzed_resources(params = {}, options = {}) # resp = client.list_analyzers({ # next_token: "Token", # max_results: 1, - # type: "ACCOUNT", # accepts ACCOUNT, ORGANIZATION + # type: "ACCOUNT", # accepts ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS, ORGANIZATION_UNUSED_ACCESS # }) # # @example Response structure @@ -1335,7 +1554,7 @@ def list_analyzed_resources(params = {}, options = {}) # resp.analyzers #=> Array # resp.analyzers[0].arn #=> String # resp.analyzers[0].name #=> String - # resp.analyzers[0].type #=> String, one of "ACCOUNT", "ORGANIZATION" + # resp.analyzers[0].type #=> String, one of "ACCOUNT", "ORGANIZATION", "ACCOUNT_UNUSED_ACCESS", "ORGANIZATION_UNUSED_ACCESS" # resp.analyzers[0].created_at #=> Time # resp.analyzers[0].last_resource_analyzed #=> String # resp.analyzers[0].last_resource_analyzed_at #=> Time @@ -1343,6 +1562,7 @@ def list_analyzed_resources(params = {}, options = {}) # resp.analyzers[0].tags["String"] #=> String # resp.analyzers[0].status #=> String, one of "ACTIVE", "CREATING", "DISABLED", "FAILED" # resp.analyzers[0].status_reason.code #=> String, one of "AWS_SERVICE_ACCESS_DISABLED", "DELEGATED_ADMINISTRATOR_DEREGISTERED", "ORGANIZATION_DELETED", "SERVICE_LINKED_ROLE_CREATION_FAILED" + # resp.analyzers[0].configuration.unused_access.unused_access_age #=> Integer # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListAnalyzers AWS API Documentation @@ -1495,6 +1715,86 @@ def list_findings(params = {}, options = {}) req.send_request(options) end + # Retrieves a list of findings generated by the specified analyzer. + # + # To learn about filter keys that you can use to retrieve a list of + # findings, see [IAM Access Analyzer filter keys][1] in the **IAM User + # Guide**. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-filter-keys.html + # + # @option params [required, String] :analyzer_arn + # The [ARN of the analyzer][1] to retrieve findings from. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources + # + # @option params [Hash] :filter + # A filter to match for the findings to return. + # + # @option params [Integer] :max_results + # The maximum number of results to return in the response. + # + # @option params [String] :next_token + # A token used for pagination of results returned. + # + # @option params [Types::SortCriteria] :sort + # The criteria used to sort. + # + # @return [Types::ListFindingsV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListFindingsV2Response#findings #findings} => Array<Types::FindingSummaryV2> + # * {Types::ListFindingsV2Response#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_findings_v2({ + # analyzer_arn: "AnalyzerArn", # required + # filter: { + # "String" => { + # eq: ["String"], + # neq: ["String"], + # contains: ["String"], + # exists: false, + # }, + # }, + # max_results: 1, + # next_token: "Token", + # sort: { + # attribute_name: "String", + # order_by: "ASC", # accepts ASC, DESC + # }, + # }) + # + # @example Response structure + # + # resp.findings #=> Array + # resp.findings[0].analyzed_at #=> Time + # resp.findings[0].created_at #=> Time + # resp.findings[0].error #=> String + # resp.findings[0].id #=> String + # resp.findings[0].resource #=> String + # 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" + # resp.findings[0].resource_owner_account #=> String + # resp.findings[0].status #=> String, one of "ACTIVE", "ARCHIVED", "RESOLVED" + # resp.findings[0].updated_at #=> Time + # resp.findings[0].finding_type #=> String, one of "ExternalAccess", "UnusedIAMRole", "UnusedIAMUserAccessKey", "UnusedIAMUserPassword", "UnusedPermission" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListFindingsV2 AWS API Documentation + # + # @overload list_findings_v2(params = {}) + # @param [Hash] params ({}) + def list_findings_v2(params = {}, options = {}) + req = build_request(:list_findings_v2, params) + req.send_request(options) + end + # Lists all of the policy generations requested in the last seven days. # # @option params [String] :principal_arn @@ -1837,9 +2137,7 @@ def update_findings(params = {}, options = {}) # @option params [required, String] :policy_type # The type of policy to validate. Identity policies grant permissions to # IAM principals. Identity policies include managed and inline policies - # for IAM roles, users, and groups. They also include service-control - # policies (SCPs) that are attached to an Amazon Web Services - # organization, organizational unit (OU), or an account. + # for IAM roles, users, and groups. # # Resource policies grant permissions on Amazon Web Services resources. # Resource policies include trust policies for IAM roles and bucket @@ -1847,6 +2145,10 @@ def update_findings(params = {}, options = {}) # as identity policy or resource policy or a specific input such as # managed policy or Amazon S3 bucket policy. # + # Service control policies (SCPs) are a type of organization policy + # attached to an Amazon Web Services organization, organizational unit + # (OU), or an account. + # # @option params [String] :validate_policy_resource_type # The type of resource to attach to your resource policy. Specify a # value for the policy validation resource type only if the policy type @@ -1922,7 +2224,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-accessanalyzer' - context[:gem_version] = '1.42.0' + context[:gem_version] = '1.43.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client_api.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client_api.rb index 1ad207a7e11..9af2df38c51 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client_api.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/client_api.rb @@ -13,6 +13,10 @@ module ClientApi include Seahorse::Model + Access = Shapes::StructureShape.new(name: 'Access') + AccessActionsList = Shapes::ListShape.new(name: 'AccessActionsList') + AccessCheckPolicyDocument = Shapes::StringShape.new(name: 'AccessCheckPolicyDocument') + AccessCheckPolicyType = Shapes::StringShape.new(name: 'AccessCheckPolicyType') AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') AccessPointArn = Shapes::StringShape.new(name: 'AccessPointArn') AccessPointPolicy = Shapes::StringShape.new(name: 'AccessPointPolicy') @@ -30,11 +34,13 @@ module ClientApi AclGrantee = Shapes::UnionShape.new(name: 'AclGrantee') AclPermission = Shapes::StringShape.new(name: 'AclPermission') AclUri = Shapes::StringShape.new(name: 'AclUri') + Action = Shapes::StringShape.new(name: 'Action') ActionList = Shapes::ListShape.new(name: 'ActionList') AnalyzedResource = Shapes::StructureShape.new(name: 'AnalyzedResource') AnalyzedResourceSummary = Shapes::StructureShape.new(name: 'AnalyzedResourceSummary') AnalyzedResourcesList = Shapes::ListShape.new(name: 'AnalyzedResourcesList') AnalyzerArn = Shapes::StringShape.new(name: 'AnalyzerArn') + AnalyzerConfiguration = Shapes::UnionShape.new(name: 'AnalyzerConfiguration') AnalyzerStatus = Shapes::StringShape.new(name: 'AnalyzerStatus') AnalyzerSummary = Shapes::StructureShape.new(name: 'AnalyzerSummary') AnalyzersList = Shapes::ListShape.new(name: 'AnalyzersList') @@ -44,6 +50,13 @@ module ClientApi Boolean = Shapes::BooleanShape.new(name: 'Boolean') CancelPolicyGenerationRequest = Shapes::StructureShape.new(name: 'CancelPolicyGenerationRequest') CancelPolicyGenerationResponse = Shapes::StructureShape.new(name: 'CancelPolicyGenerationResponse') + CheckAccessNotGrantedRequest = Shapes::StructureShape.new(name: 'CheckAccessNotGrantedRequest') + CheckAccessNotGrantedRequestAccessList = Shapes::ListShape.new(name: 'CheckAccessNotGrantedRequestAccessList') + CheckAccessNotGrantedResponse = Shapes::StructureShape.new(name: 'CheckAccessNotGrantedResponse') + CheckAccessNotGrantedResult = Shapes::StringShape.new(name: 'CheckAccessNotGrantedResult') + CheckNoNewAccessRequest = Shapes::StructureShape.new(name: 'CheckNoNewAccessRequest') + CheckNoNewAccessResponse = Shapes::StructureShape.new(name: 'CheckNoNewAccessResponse') + CheckNoNewAccessResult = Shapes::StringShape.new(name: 'CheckNoNewAccessResult') CloudTrailArn = Shapes::StringShape.new(name: 'CloudTrailArn') CloudTrailDetails = Shapes::StructureShape.new(name: 'CloudTrailDetails') CloudTrailProperties = Shapes::StructureShape.new(name: 'CloudTrailProperties') @@ -70,9 +83,12 @@ module ClientApi EcrRepositoryPolicy = Shapes::StringShape.new(name: 'EcrRepositoryPolicy') EfsFileSystemConfiguration = Shapes::StructureShape.new(name: 'EfsFileSystemConfiguration') EfsFileSystemPolicy = Shapes::StringShape.new(name: 'EfsFileSystemPolicy') + ExternalAccessDetails = Shapes::StructureShape.new(name: 'ExternalAccessDetails') FilterCriteriaMap = Shapes::MapShape.new(name: 'FilterCriteriaMap') Finding = Shapes::StructureShape.new(name: 'Finding') FindingChangeType = Shapes::StringShape.new(name: 'FindingChangeType') + FindingDetails = Shapes::UnionShape.new(name: 'FindingDetails') + FindingDetailsList = Shapes::ListShape.new(name: 'FindingDetailsList') FindingId = Shapes::StringShape.new(name: 'FindingId') FindingIdList = Shapes::ListShape.new(name: 'FindingIdList') FindingSource = Shapes::StructureShape.new(name: 'FindingSource') @@ -82,7 +98,10 @@ module ClientApi FindingStatus = Shapes::StringShape.new(name: 'FindingStatus') FindingStatusUpdate = Shapes::StringShape.new(name: 'FindingStatusUpdate') FindingSummary = Shapes::StructureShape.new(name: 'FindingSummary') + FindingSummaryV2 = Shapes::StructureShape.new(name: 'FindingSummaryV2') + FindingType = Shapes::StringShape.new(name: 'FindingType') FindingsList = Shapes::ListShape.new(name: 'FindingsList') + FindingsListV2 = Shapes::ListShape.new(name: 'FindingsListV2') GeneratedPolicy = Shapes::StructureShape.new(name: 'GeneratedPolicy') GeneratedPolicyList = Shapes::ListShape.new(name: 'GeneratedPolicyList') GeneratedPolicyProperties = Shapes::StructureShape.new(name: 'GeneratedPolicyProperties') @@ -97,6 +116,8 @@ module ClientApi GetArchiveRuleResponse = Shapes::StructureShape.new(name: 'GetArchiveRuleResponse') GetFindingRequest = Shapes::StructureShape.new(name: 'GetFindingRequest') GetFindingResponse = Shapes::StructureShape.new(name: 'GetFindingResponse') + GetFindingV2Request = Shapes::StructureShape.new(name: 'GetFindingV2Request') + GetFindingV2Response = Shapes::StructureShape.new(name: 'GetFindingV2Response') GetGeneratedPolicyRequest = Shapes::StructureShape.new(name: 'GetGeneratedPolicyRequest') GetGeneratedPolicyResponse = Shapes::StructureShape.new(name: 'GetGeneratedPolicyResponse') GranteePrincipal = Shapes::StringShape.new(name: 'GranteePrincipal') @@ -107,6 +128,7 @@ module ClientApi Integer = Shapes::IntegerShape.new(name: 'Integer') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') InternetConfiguration = Shapes::StructureShape.new(name: 'InternetConfiguration') + InvalidParameterException = Shapes::StructureShape.new(name: 'InvalidParameterException') IssueCode = Shapes::StringShape.new(name: 'IssueCode') IssuingAccount = Shapes::StringShape.new(name: 'IssuingAccount') JobDetails = Shapes::StructureShape.new(name: 'JobDetails') @@ -138,6 +160,8 @@ module ClientApi ListArchiveRulesResponse = Shapes::StructureShape.new(name: 'ListArchiveRulesResponse') ListFindingsRequest = Shapes::StructureShape.new(name: 'ListFindingsRequest') ListFindingsResponse = Shapes::StructureShape.new(name: 'ListFindingsResponse') + ListFindingsV2Request = Shapes::StructureShape.new(name: 'ListFindingsV2Request') + ListFindingsV2Response = Shapes::StructureShape.new(name: 'ListFindingsV2Response') ListPolicyGenerationsRequest = Shapes::StructureShape.new(name: 'ListPolicyGenerationsRequest') ListPolicyGenerationsRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListPolicyGenerationsRequestMaxResultsInteger') ListPolicyGenerationsResponse = Shapes::StructureShape.new(name: 'ListPolicyGenerationsResponse') @@ -175,6 +199,8 @@ module ClientApi RdsDbSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbSnapshotConfiguration') RdsDbSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbSnapshotKmsKeyId') ReasonCode = Shapes::StringShape.new(name: 'ReasonCode') + ReasonSummary = Shapes::StructureShape.new(name: 'ReasonSummary') + ReasonSummaryList = Shapes::ListShape.new(name: 'ReasonSummaryList') RegionList = Shapes::ListShape.new(name: 'RegionList') ResourceArn = Shapes::StringShape.new(name: 'ResourceArn') ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') @@ -217,8 +243,16 @@ module ClientApi TrailProperties = Shapes::StructureShape.new(name: 'TrailProperties') TrailPropertiesList = Shapes::ListShape.new(name: 'TrailPropertiesList') Type = Shapes::StringShape.new(name: 'Type') + UnprocessableEntityException = Shapes::StructureShape.new(name: 'UnprocessableEntityException') UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') + UnusedAccessConfiguration = Shapes::StructureShape.new(name: 'UnusedAccessConfiguration') + UnusedAction = Shapes::StructureShape.new(name: 'UnusedAction') + UnusedActionList = Shapes::ListShape.new(name: 'UnusedActionList') + UnusedIamRoleDetails = Shapes::StructureShape.new(name: 'UnusedIamRoleDetails') + UnusedIamUserAccessKeyDetails = Shapes::StructureShape.new(name: 'UnusedIamUserAccessKeyDetails') + UnusedIamUserPasswordDetails = Shapes::StructureShape.new(name: 'UnusedIamUserPasswordDetails') + UnusedPermissionDetails = Shapes::StructureShape.new(name: 'UnusedPermissionDetails') UpdateArchiveRuleRequest = Shapes::StructureShape.new(name: 'UpdateArchiveRuleRequest') UpdateFindingsRequest = Shapes::StructureShape.new(name: 'UpdateFindingsRequest') ValidatePolicyFinding = Shapes::StructureShape.new(name: 'ValidatePolicyFinding') @@ -235,6 +269,11 @@ module ClientApi VpcConfiguration = Shapes::StructureShape.new(name: 'VpcConfiguration') VpcId = Shapes::StringShape.new(name: 'VpcId') + Access.add_member(:actions, Shapes::ShapeRef.new(shape: AccessActionsList, required: true, location_name: "actions")) + Access.struct_class = Types::Access + + AccessActionsList.member = Shapes::ShapeRef.new(shape: Action) + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) AccessDeniedException.struct_class = Types::AccessDeniedException @@ -307,6 +346,12 @@ module ClientApi AnalyzedResourcesList.member = Shapes::ShapeRef.new(shape: AnalyzedResourceSummary) + AnalyzerConfiguration.add_member(:unused_access, Shapes::ShapeRef.new(shape: UnusedAccessConfiguration, location_name: "unusedAccess")) + AnalyzerConfiguration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + AnalyzerConfiguration.add_member_subclass(:unused_access, Types::AnalyzerConfiguration::UnusedAccess) + AnalyzerConfiguration.add_member_subclass(:unknown, Types::AnalyzerConfiguration::Unknown) + AnalyzerConfiguration.struct_class = Types::AnalyzerConfiguration + AnalyzerSummary.add_member(:arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "arn")) AnalyzerSummary.add_member(:name, Shapes::ShapeRef.new(shape: Name, required: true, location_name: "name")) AnalyzerSummary.add_member(:type, Shapes::ShapeRef.new(shape: Type, required: true, location_name: "type")) @@ -316,6 +361,7 @@ module ClientApi AnalyzerSummary.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags")) AnalyzerSummary.add_member(:status, Shapes::ShapeRef.new(shape: AnalyzerStatus, required: true, location_name: "status")) AnalyzerSummary.add_member(:status_reason, Shapes::ShapeRef.new(shape: StatusReason, location_name: "statusReason")) + AnalyzerSummary.add_member(:configuration, Shapes::ShapeRef.new(shape: AnalyzerConfiguration, location_name: "configuration")) AnalyzerSummary.struct_class = Types::AnalyzerSummary AnalyzersList.member = Shapes::ShapeRef.new(shape: AnalyzerSummary) @@ -338,6 +384,28 @@ module ClientApi CancelPolicyGenerationResponse.struct_class = Types::CancelPolicyGenerationResponse + CheckAccessNotGrantedRequest.add_member(:policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "policyDocument")) + CheckAccessNotGrantedRequest.add_member(:access, Shapes::ShapeRef.new(shape: CheckAccessNotGrantedRequestAccessList, required: true, location_name: "access")) + CheckAccessNotGrantedRequest.add_member(:policy_type, Shapes::ShapeRef.new(shape: AccessCheckPolicyType, required: true, location_name: "policyType")) + CheckAccessNotGrantedRequest.struct_class = Types::CheckAccessNotGrantedRequest + + CheckAccessNotGrantedRequestAccessList.member = Shapes::ShapeRef.new(shape: Access) + + CheckAccessNotGrantedResponse.add_member(:result, Shapes::ShapeRef.new(shape: CheckAccessNotGrantedResult, location_name: "result")) + CheckAccessNotGrantedResponse.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + CheckAccessNotGrantedResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons")) + CheckAccessNotGrantedResponse.struct_class = Types::CheckAccessNotGrantedResponse + + CheckNoNewAccessRequest.add_member(:new_policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "newPolicyDocument")) + CheckNoNewAccessRequest.add_member(:existing_policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "existingPolicyDocument")) + CheckNoNewAccessRequest.add_member(:policy_type, Shapes::ShapeRef.new(shape: AccessCheckPolicyType, required: true, location_name: "policyType")) + CheckNoNewAccessRequest.struct_class = Types::CheckNoNewAccessRequest + + CheckNoNewAccessResponse.add_member(:result, Shapes::ShapeRef.new(shape: CheckNoNewAccessResult, location_name: "result")) + CheckNoNewAccessResponse.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + CheckNoNewAccessResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons")) + CheckNoNewAccessResponse.struct_class = Types::CheckNoNewAccessResponse + CloudTrailDetails.add_member(:trails, Shapes::ShapeRef.new(shape: TrailList, required: true, location_name: "trails")) CloudTrailDetails.add_member(:access_role, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "accessRole")) CloudTrailDetails.add_member(:start_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startTime")) @@ -399,6 +467,7 @@ module ClientApi CreateAnalyzerRequest.add_member(:archive_rules, Shapes::ShapeRef.new(shape: InlineArchiveRulesList, location_name: "archiveRules")) CreateAnalyzerRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags")) CreateAnalyzerRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: String, location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + CreateAnalyzerRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: AnalyzerConfiguration, location_name: "configuration")) CreateAnalyzerRequest.struct_class = Types::CreateAnalyzerRequest CreateAnalyzerResponse.add_member(:arn, Shapes::ShapeRef.new(shape: AnalyzerArn, location_name: "arn")) @@ -440,6 +509,13 @@ module ClientApi EfsFileSystemConfiguration.add_member(:file_system_policy, Shapes::ShapeRef.new(shape: EfsFileSystemPolicy, location_name: "fileSystemPolicy")) EfsFileSystemConfiguration.struct_class = Types::EfsFileSystemConfiguration + ExternalAccessDetails.add_member(:action, Shapes::ShapeRef.new(shape: ActionList, location_name: "action")) + ExternalAccessDetails.add_member(:condition, Shapes::ShapeRef.new(shape: ConditionKeyMap, required: true, location_name: "condition")) + ExternalAccessDetails.add_member(:is_public, Shapes::ShapeRef.new(shape: Boolean, location_name: "isPublic")) + ExternalAccessDetails.add_member(:principal, Shapes::ShapeRef.new(shape: PrincipalMap, location_name: "principal")) + ExternalAccessDetails.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources")) + ExternalAccessDetails.struct_class = Types::ExternalAccessDetails + FilterCriteriaMap.key = Shapes::ShapeRef.new(shape: String) FilterCriteriaMap.value = Shapes::ShapeRef.new(shape: Criterion) @@ -459,6 +535,22 @@ module ClientApi Finding.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources")) Finding.struct_class = Types::Finding + FindingDetails.add_member(:external_access_details, Shapes::ShapeRef.new(shape: ExternalAccessDetails, location_name: "externalAccessDetails")) + FindingDetails.add_member(:unused_permission_details, Shapes::ShapeRef.new(shape: UnusedPermissionDetails, location_name: "unusedPermissionDetails")) + FindingDetails.add_member(:unused_iam_user_access_key_details, Shapes::ShapeRef.new(shape: UnusedIamUserAccessKeyDetails, location_name: "unusedIamUserAccessKeyDetails")) + FindingDetails.add_member(:unused_iam_role_details, Shapes::ShapeRef.new(shape: UnusedIamRoleDetails, location_name: "unusedIamRoleDetails")) + FindingDetails.add_member(:unused_iam_user_password_details, Shapes::ShapeRef.new(shape: UnusedIamUserPasswordDetails, location_name: "unusedIamUserPasswordDetails")) + FindingDetails.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + FindingDetails.add_member_subclass(:external_access_details, Types::FindingDetails::ExternalAccessDetails) + FindingDetails.add_member_subclass(:unused_permission_details, Types::FindingDetails::UnusedPermissionDetails) + FindingDetails.add_member_subclass(:unused_iam_user_access_key_details, Types::FindingDetails::UnusedIamUserAccessKeyDetails) + FindingDetails.add_member_subclass(:unused_iam_role_details, Types::FindingDetails::UnusedIamRoleDetails) + FindingDetails.add_member_subclass(:unused_iam_user_password_details, Types::FindingDetails::UnusedIamUserPasswordDetails) + FindingDetails.add_member_subclass(:unknown, Types::FindingDetails::Unknown) + FindingDetails.struct_class = Types::FindingDetails + + FindingDetailsList.member = Shapes::ShapeRef.new(shape: FindingDetails) + FindingIdList.member = Shapes::ShapeRef.new(shape: FindingId) FindingSource.add_member(:type, Shapes::ShapeRef.new(shape: FindingSourceType, required: true, location_name: "type")) @@ -487,8 +579,22 @@ module ClientApi FindingSummary.add_member(:sources, Shapes::ShapeRef.new(shape: FindingSourceList, location_name: "sources")) FindingSummary.struct_class = Types::FindingSummary + FindingSummaryV2.add_member(:analyzed_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "analyzedAt")) + FindingSummaryV2.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt")) + FindingSummaryV2.add_member(:error, Shapes::ShapeRef.new(shape: String, location_name: "error")) + FindingSummaryV2.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location_name: "id")) + FindingSummaryV2.add_member(:resource, Shapes::ShapeRef.new(shape: String, location_name: "resource")) + FindingSummaryV2.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "resourceType")) + FindingSummaryV2.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceOwnerAccount")) + FindingSummaryV2.add_member(:status, Shapes::ShapeRef.new(shape: FindingStatus, required: true, location_name: "status")) + FindingSummaryV2.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "updatedAt")) + FindingSummaryV2.add_member(:finding_type, Shapes::ShapeRef.new(shape: FindingType, location_name: "findingType")) + FindingSummaryV2.struct_class = Types::FindingSummaryV2 + FindingsList.member = Shapes::ShapeRef.new(shape: FindingSummary) + FindingsListV2.member = Shapes::ShapeRef.new(shape: FindingSummaryV2) + GeneratedPolicy.add_member(:policy, Shapes::ShapeRef.new(shape: String, required: true, location_name: "policy")) GeneratedPolicy.struct_class = Types::GeneratedPolicy @@ -537,6 +643,26 @@ module ClientApi GetFindingResponse.add_member(:finding, Shapes::ShapeRef.new(shape: Finding, location_name: "finding")) GetFindingResponse.struct_class = Types::GetFindingResponse + GetFindingV2Request.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn")) + GetFindingV2Request.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location: "uri", location_name: "id")) + GetFindingV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: Integer, location: "querystring", location_name: "maxResults")) + GetFindingV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "nextToken")) + GetFindingV2Request.struct_class = Types::GetFindingV2Request + + GetFindingV2Response.add_member(:analyzed_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "analyzedAt")) + GetFindingV2Response.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt")) + GetFindingV2Response.add_member(:error, Shapes::ShapeRef.new(shape: String, location_name: "error")) + GetFindingV2Response.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location_name: "id")) + GetFindingV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken")) + GetFindingV2Response.add_member(:resource, Shapes::ShapeRef.new(shape: String, location_name: "resource")) + GetFindingV2Response.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "resourceType")) + GetFindingV2Response.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceOwnerAccount")) + GetFindingV2Response.add_member(:status, Shapes::ShapeRef.new(shape: FindingStatus, required: true, location_name: "status")) + GetFindingV2Response.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "updatedAt")) + GetFindingV2Response.add_member(:finding_details, Shapes::ShapeRef.new(shape: FindingDetailsList, required: true, location_name: "findingDetails")) + GetFindingV2Response.add_member(:finding_type, Shapes::ShapeRef.new(shape: FindingType, location_name: "findingType")) + GetFindingV2Response.struct_class = Types::GetFindingV2Response + GetGeneratedPolicyRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "jobId")) GetGeneratedPolicyRequest.add_member(:include_resource_placeholders, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeResourcePlaceholders")) GetGeneratedPolicyRequest.add_member(:include_service_level_template, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "includeServiceLevelTemplate")) @@ -561,6 +687,9 @@ module ClientApi InternetConfiguration.struct_class = Types::InternetConfiguration + InvalidParameterException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + InvalidParameterException.struct_class = Types::InvalidParameterException + JobDetails.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location_name: "jobId")) JobDetails.add_member(:status, Shapes::ShapeRef.new(shape: JobStatus, required: true, location_name: "status")) JobDetails.add_member(:started_on, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startedOn")) @@ -656,6 +785,17 @@ module ClientApi ListFindingsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken")) ListFindingsResponse.struct_class = Types::ListFindingsResponse + ListFindingsV2Request.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "analyzerArn")) + ListFindingsV2Request.add_member(:filter, Shapes::ShapeRef.new(shape: FilterCriteriaMap, location_name: "filter")) + ListFindingsV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: Integer, location_name: "maxResults")) + ListFindingsV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken")) + ListFindingsV2Request.add_member(:sort, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "sort")) + ListFindingsV2Request.struct_class = Types::ListFindingsV2Request + + ListFindingsV2Response.add_member(:findings, Shapes::ShapeRef.new(shape: FindingsListV2, required: true, location_name: "findings")) + ListFindingsV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken")) + ListFindingsV2Response.struct_class = Types::ListFindingsV2Response + ListPolicyGenerationsRequest.add_member(:principal_arn, Shapes::ShapeRef.new(shape: PrincipalArn, location: "querystring", location_name: "principalArn")) ListPolicyGenerationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListPolicyGenerationsRequestMaxResultsInteger, location: "querystring", location_name: "maxResults")) ListPolicyGenerationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "nextToken")) @@ -749,6 +889,13 @@ module ClientApi RdsDbSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbSnapshotKmsKeyId, location_name: "kmsKeyId")) RdsDbSnapshotConfiguration.struct_class = Types::RdsDbSnapshotConfiguration + ReasonSummary.add_member(:description, Shapes::ShapeRef.new(shape: String, location_name: "description")) + ReasonSummary.add_member(:statement_index, Shapes::ShapeRef.new(shape: Integer, location_name: "statementIndex")) + ReasonSummary.add_member(:statement_id, Shapes::ShapeRef.new(shape: String, location_name: "statementId")) + ReasonSummary.struct_class = Types::ReasonSummary + + ReasonSummaryList.member = Shapes::ShapeRef.new(shape: ReasonSummary) + RegionList.member = Shapes::ShapeRef.new(shape: String) ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) @@ -854,12 +1001,39 @@ module ClientApi TrailPropertiesList.member = Shapes::ShapeRef.new(shape: TrailProperties) + UnprocessableEntityException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + UnprocessableEntityException.struct_class = Types::UnprocessableEntityException + UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeys, required: true, location: "querystring", location_name: "tagKeys")) UntagResourceRequest.struct_class = Types::UntagResourceRequest UntagResourceResponse.struct_class = Types::UntagResourceResponse + UnusedAccessConfiguration.add_member(:unused_access_age, Shapes::ShapeRef.new(shape: Integer, location_name: "unusedAccessAge")) + UnusedAccessConfiguration.struct_class = Types::UnusedAccessConfiguration + + UnusedAction.add_member(:action, Shapes::ShapeRef.new(shape: String, required: true, location_name: "action")) + UnusedAction.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed")) + UnusedAction.struct_class = Types::UnusedAction + + UnusedActionList.member = Shapes::ShapeRef.new(shape: UnusedAction) + + UnusedIamRoleDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed")) + UnusedIamRoleDetails.struct_class = Types::UnusedIamRoleDetails + + UnusedIamUserAccessKeyDetails.add_member(:access_key_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "accessKeyId")) + UnusedIamUserAccessKeyDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed")) + UnusedIamUserAccessKeyDetails.struct_class = Types::UnusedIamUserAccessKeyDetails + + UnusedIamUserPasswordDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed")) + UnusedIamUserPasswordDetails.struct_class = Types::UnusedIamUserPasswordDetails + + UnusedPermissionDetails.add_member(:actions, Shapes::ShapeRef.new(shape: UnusedActionList, location_name: "actions")) + UnusedPermissionDetails.add_member(:service_namespace, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceNamespace")) + UnusedPermissionDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed")) + UnusedPermissionDetails.struct_class = Types::UnusedPermissionDetails + UpdateArchiveRuleRequest.add_member(:analyzer_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "analyzerName")) UpdateArchiveRuleRequest.add_member(:rule_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "ruleName")) UpdateArchiveRuleRequest.add_member(:filter, Shapes::ShapeRef.new(shape: FilterCriteriaMap, required: true, location_name: "filter")) @@ -953,6 +1127,34 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) end) + api.add_operation(:check_access_not_granted, Seahorse::Model::Operation.new.tap do |o| + o.name = "CheckAccessNotGranted" + o.http_method = "POST" + o.http_request_uri = "/policy/check-access-not-granted" + o.input = Shapes::ShapeRef.new(shape: CheckAccessNotGrantedRequest) + o.output = Shapes::ShapeRef.new(shape: CheckAccessNotGrantedResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: UnprocessableEntityException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + end) + + api.add_operation(:check_no_new_access, Seahorse::Model::Operation.new.tap do |o| + o.name = "CheckNoNewAccess" + o.http_method = "POST" + o.http_request_uri = "/policy/check-no-new-access" + o.input = Shapes::ShapeRef.new(shape: CheckNoNewAccessRequest) + o.output = Shapes::ShapeRef.new(shape: CheckNoNewAccessResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: UnprocessableEntityException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + end) + api.add_operation(:create_access_preview, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateAccessPreview" o.http_method = "PUT" @@ -1088,6 +1290,25 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) end) + api.add_operation(:get_finding_v2, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetFindingV2" + o.http_method = "GET" + o.http_request_uri = "/findingv2/{id}" + o.input = Shapes::ShapeRef.new(shape: GetFindingV2Request) + o.output = Shapes::ShapeRef.new(shape: GetFindingV2Response) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:get_generated_policy, Seahorse::Model::Operation.new.tap do |o| o.name = "GetGeneratedPolicy" o.http_method = "GET" @@ -1213,6 +1434,25 @@ module ClientApi ) end) + api.add_operation(:list_findings_v2, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListFindingsV2" + o.http_method = "POST" + o.http_request_uri = "/findingv2" + o.input = Shapes::ShapeRef.new(shape: ListFindingsV2Request) + o.output = Shapes::ShapeRef.new(shape: ListFindingsV2Response) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_policy_generations, Seahorse::Model::Operation.new.tap do |o| o.name = "ListPolicyGenerations" o.http_method = "GET" diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoint_provider.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoint_provider.rb index 6188d11e4e4..9f90694fd36 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoint_provider.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoint_provider.rb @@ -32,8 +32,8 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) - if Aws::Endpoints::Matchers.string_equals?("aws-us-gov", Aws::Endpoints::Matchers.attr(partition_result, "name")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-us-gov") return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer.#{region}.amazonaws.com", headers: {}, properties: {}) end return Aws::Endpoints::Endpoint.new(url: "https://access-analyzer-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoints.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoints.rb index 65dcd3cf5bc..d71600b026b 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoints.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/endpoints.rb @@ -40,6 +40,34 @@ def self.build(context) end end + class CheckAccessNotGranted + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::AccessAnalyzer::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class CheckNoNewAccess + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::AccessAnalyzer::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateAccessPreview def self.build(context) unless context.config.regional_endpoint @@ -180,6 +208,20 @@ def self.build(context) end end + class GetFindingV2 + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::AccessAnalyzer::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetGeneratedPolicy def self.build(context) unless context.config.regional_endpoint @@ -278,6 +320,20 @@ def self.build(context) end end + class ListFindingsV2 + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::AccessAnalyzer::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListPolicyGenerations def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/errors.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/errors.rb index c51bb773860..28b857ce29a 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/errors.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/errors.rb @@ -30,9 +30,11 @@ module Aws::AccessAnalyzer # * {AccessDeniedException} # * {ConflictException} # * {InternalServerException} + # * {InvalidParameterException} # * {ResourceNotFoundException} # * {ServiceQuotaExceededException} # * {ThrottlingException} + # * {UnprocessableEntityException} # * {ValidationException} # # Additionally, error classes are dynamically generated for service errors based on the error code @@ -105,6 +107,21 @@ def retryable? end end + class InvalidParameterException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::AccessAnalyzer::Types::InvalidParameterException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + class ResourceNotFoundException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -183,6 +200,25 @@ def throttling? end end + class UnprocessableEntityException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::AccessAnalyzer::Types::UnprocessableEntityException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + def retryable? + true + end + end + class ValidationException < ServiceError # @param [Seahorse::Client::RequestContext] context diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/plugins/endpoints.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/plugins/endpoints.rb index 06f128de629..93bb6d54c1b 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/plugins/endpoints.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/plugins/endpoints.rb @@ -60,6 +60,10 @@ def parameters_for_operation(context) Aws::AccessAnalyzer::Endpoints::ApplyArchiveRule.build(context) when :cancel_policy_generation Aws::AccessAnalyzer::Endpoints::CancelPolicyGeneration.build(context) + when :check_access_not_granted + Aws::AccessAnalyzer::Endpoints::CheckAccessNotGranted.build(context) + when :check_no_new_access + Aws::AccessAnalyzer::Endpoints::CheckNoNewAccess.build(context) when :create_access_preview Aws::AccessAnalyzer::Endpoints::CreateAccessPreview.build(context) when :create_analyzer @@ -80,6 +84,8 @@ def parameters_for_operation(context) Aws::AccessAnalyzer::Endpoints::GetArchiveRule.build(context) when :get_finding Aws::AccessAnalyzer::Endpoints::GetFinding.build(context) + when :get_finding_v2 + Aws::AccessAnalyzer::Endpoints::GetFindingV2.build(context) when :get_generated_policy Aws::AccessAnalyzer::Endpoints::GetGeneratedPolicy.build(context) when :list_access_preview_findings @@ -94,6 +100,8 @@ def parameters_for_operation(context) Aws::AccessAnalyzer::Endpoints::ListArchiveRules.build(context) when :list_findings Aws::AccessAnalyzer::Endpoints::ListFindings.build(context) + when :list_findings_v2 + Aws::AccessAnalyzer::Endpoints::ListFindingsV2.build(context) when :list_policy_generations Aws::AccessAnalyzer::Endpoints::ListPolicyGenerations.build(context) when :list_tags_for_resource diff --git a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/types.rb b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/types.rb index 8580c15d44f..835c29afbc1 100644 --- a/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/types.rb +++ b/gems/aws-sdk-accessanalyzer/lib/aws-sdk-accessanalyzer/types.rb @@ -10,6 +10,21 @@ module Aws::AccessAnalyzer module Types + # Contains information about actions that define permissions to check + # against a policy. + # + # @!attribute [rw] actions + # A list of actions for the access permissions. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/Access AWS API Documentation + # + class Access < Struct.new( + :actions) + SENSITIVE = [] + include Aws::Structure + end + # You do not have sufficient access to perform this action. # # @!attribute [rw] message @@ -379,6 +394,32 @@ class AnalyzedResourceSummary < Struct.new( include Aws::Structure end + # Contains information about the configuration of an unused access + # analyzer for an Amazon Web Services organization or account. + # + # @note AnalyzerConfiguration is a union - when making an API calls you must set exactly one of the members. + # + # @note AnalyzerConfiguration is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of AnalyzerConfiguration corresponding to the set member. + # + # @!attribute [rw] unused_access + # Specifies the configuration of an unused access analyzer for an + # Amazon Web Services organization or account. External access + # analyzers do not support any configuration. + # @return [Types::UnusedAccessConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/AnalyzerConfiguration AWS API Documentation + # + class AnalyzerConfiguration < Struct.new( + :unused_access, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class UnusedAccess < AnalyzerConfiguration; end + class Unknown < AnalyzerConfiguration; end + end + # Contains information about the analyzer. # # @!attribute [rw] arn @@ -429,6 +470,11 @@ class AnalyzedResourceSummary < Struct.new( # Web Services organization. # @return [Types::StatusReason] # + # @!attribute [rw] configuration + # Specifies whether the analyzer is an external access or unused + # access analyzer. + # @return [Types::AnalyzerConfiguration] + # # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/AnalyzerSummary AWS API Documentation # class AnalyzerSummary < Struct.new( @@ -440,7 +486,8 @@ class AnalyzerSummary < Struct.new( :last_resource_analyzed_at, :tags, :status, - :status_reason) + :status_reason, + :configuration) SENSITIVE = [] include Aws::Structure end @@ -520,6 +567,119 @@ class CancelPolicyGenerationRequest < Struct.new( # class CancelPolicyGenerationResponse < Aws::EmptyStructure; end + # @!attribute [rw] policy_document + # The JSON policy document to use as the content for the policy. + # @return [String] + # + # @!attribute [rw] access + # An access object containing the permissions that shouldn't be + # granted by the specified policy. + # @return [Array] + # + # @!attribute [rw] policy_type + # The type of policy. Identity policies grant permissions to IAM + # principals. Identity policies include managed and inline policies + # for IAM roles, users, and groups. + # + # Resource policies grant permissions on Amazon Web Services + # resources. Resource policies include trust policies for IAM roles + # and bucket policies for Amazon S3 buckets. You can provide a generic + # input such as identity policy or resource policy or a specific input + # such as managed policy or Amazon S3 bucket policy. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckAccessNotGrantedRequest AWS API Documentation + # + class CheckAccessNotGrantedRequest < Struct.new( + :policy_document, + :access, + :policy_type) + SENSITIVE = [:policy_document] + include Aws::Structure + end + + # @!attribute [rw] result + # The result of the check for whether the access is allowed. If the + # result is `PASS`, the specified policy doesn't allow any of the + # specified permissions in the access object. If the result is `FAIL`, + # the specified policy might allow some or all of the permissions in + # the access object. + # @return [String] + # + # @!attribute [rw] message + # The message indicating whether the specified access is allowed. + # @return [String] + # + # @!attribute [rw] reasons + # A description of the reasoning of the result. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckAccessNotGrantedResponse AWS API Documentation + # + class CheckAccessNotGrantedResponse < Struct.new( + :result, + :message, + :reasons) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] new_policy_document + # The JSON policy document to use as the content for the updated + # policy. + # @return [String] + # + # @!attribute [rw] existing_policy_document + # The JSON policy document to use as the content for the existing + # policy. + # @return [String] + # + # @!attribute [rw] policy_type + # The type of policy to compare. Identity policies grant permissions + # to IAM principals. Identity policies include managed and inline + # policies for IAM roles, users, and groups. + # + # Resource policies grant permissions on Amazon Web Services + # resources. Resource policies include trust policies for IAM roles + # and bucket policies for Amazon S3 buckets. You can provide a generic + # input such as identity policy or resource policy or a specific input + # such as managed policy or Amazon S3 bucket policy. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckNoNewAccessRequest AWS API Documentation + # + class CheckNoNewAccessRequest < Struct.new( + :new_policy_document, + :existing_policy_document, + :policy_type) + SENSITIVE = [:new_policy_document, :existing_policy_document] + include Aws::Structure + end + + # @!attribute [rw] result + # The result of the check for new access. If the result is `PASS`, no + # new access is allowed by the updated policy. If the result is + # `FAIL`, the updated policy might allow new access. + # @return [String] + # + # @!attribute [rw] message + # The message indicating whether the updated policy allows new access. + # @return [String] + # + # @!attribute [rw] reasons + # A description of the reasoning of the result. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckNoNewAccessResponse AWS API Documentation + # + class CheckNoNewAccessResponse < Struct.new( + :result, + :message, + :reasons) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about CloudTrail access. # # @!attribute [rw] trails @@ -749,10 +909,11 @@ class CreateAccessPreviewResponse < Struct.new( # @return [String] # # @!attribute [rw] type - # The type of analyzer to create. Only ACCOUNT and ORGANIZATION - # analyzers are supported. You can create only one analyzer per - # account per Region. You can create up to 5 analyzers per - # organization per Region. + # The type of analyzer to create. Only `ACCOUNT`, `ORGANIZATION`, + # `ACCOUNT_UNUSED_ACCESS`, and `ORGANIZTAION_UNUSED_ACCESS` analyzers + # are supported. You can create only one analyzer per account per + # Region. You can create up to 5 analyzers per organization per + # Region. # @return [String] # # @!attribute [rw] archive_rules @@ -762,7 +923,7 @@ class CreateAccessPreviewResponse < Struct.new( # @return [Array] # # @!attribute [rw] tags - # The tags to apply to the analyzer. + # An array of key-value pairs to apply to the analyzer. # @return [Hash] # # @!attribute [rw] client_token @@ -772,6 +933,13 @@ class CreateAccessPreviewResponse < Struct.new( # not need to pass this option. # @return [String] # + # @!attribute [rw] configuration + # Specifies the configuration of the analyzer. If the analyzer is an + # unused access analyzer, the specified scope of unused access is used + # for the configuration. If the analyzer is an external access + # analyzer, this field is not used. + # @return [Types::AnalyzerConfiguration] + # # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CreateAnalyzerRequest AWS API Documentation # class CreateAnalyzerRequest < Struct.new( @@ -779,7 +947,8 @@ class CreateAnalyzerRequest < Struct.new( :type, :archive_rules, :tags, - :client_token) + :client_token, + :configuration) SENSITIVE = [] include Aws::Structure end @@ -1065,6 +1234,45 @@ class EfsFileSystemConfiguration < Struct.new( include Aws::Structure end + # Contains information about an external access finding. + # + # @!attribute [rw] action + # The action in the analyzed policy statement that an external + # principal has permission to use. + # @return [Array] + # + # @!attribute [rw] condition + # The condition in the analyzed policy statement that resulted in an + # external access finding. + # @return [Hash] + # + # @!attribute [rw] is_public + # Specifies whether the external access finding is public. + # @return [Boolean] + # + # @!attribute [rw] principal + # The external principal that has access to a resource within the zone + # of trust. + # @return [Hash] + # + # @!attribute [rw] sources + # The sources of the external access finding. This indicates how the + # access that generated the finding is granted. It is populated for + # Amazon S3 bucket findings. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ExternalAccessDetails AWS API Documentation + # + class ExternalAccessDetails < Struct.new( + :action, + :condition, + :is_public, + :principal, + :sources) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about a finding. # # @!attribute [rw] id @@ -1072,8 +1280,8 @@ class EfsFileSystemConfiguration < Struct.new( # @return [String] # # @!attribute [rw] principal - # The external principal that access to a resource within the zone of - # trust. + # The external principal that has access to a resource within the zone + # of trust. # @return [Hash] # # @!attribute [rw] action @@ -1150,6 +1358,56 @@ class Finding < Struct.new( include Aws::Structure end + # Contains information about an external access or unused access + # finding. Only one parameter can be used in a `FindingDetails` object. + # + # @note FindingDetails is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of FindingDetails corresponding to the set member. + # + # @!attribute [rw] external_access_details + # The details for an external access analyzer finding. + # @return [Types::ExternalAccessDetails] + # + # @!attribute [rw] unused_permission_details + # The details for an unused access analyzer finding with an unused + # permission finding type. + # @return [Types::UnusedPermissionDetails] + # + # @!attribute [rw] unused_iam_user_access_key_details + # The details for an unused access analyzer finding with an unused IAM + # user access key finding type. + # @return [Types::UnusedIamUserAccessKeyDetails] + # + # @!attribute [rw] unused_iam_role_details + # The details for an unused access analyzer finding with an unused IAM + # role finding type. + # @return [Types::UnusedIamRoleDetails] + # + # @!attribute [rw] unused_iam_user_password_details + # The details for an unused access analyzer finding with an unused IAM + # user password finding type. + # @return [Types::UnusedIamUserPasswordDetails] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/FindingDetails AWS API Documentation + # + class FindingDetails < Struct.new( + :external_access_details, + :unused_permission_details, + :unused_iam_user_access_key_details, + :unused_iam_role_details, + :unused_iam_user_password_details, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class ExternalAccessDetails < FindingDetails; end + class UnusedPermissionDetails < FindingDetails; end + class UnusedIamUserAccessKeyDetails < FindingDetails; end + class UnusedIamRoleDetails < FindingDetails; end + class UnusedIamUserPasswordDetails < FindingDetails; end + class Unknown < FindingDetails; end + end + # The source of the finding. This indicates how the access that # generated the finding is granted. It is populated for Amazon S3 bucket # findings. @@ -1281,6 +1539,66 @@ class FindingSummary < Struct.new( include Aws::Structure end + # Contains information about a finding. + # + # @!attribute [rw] analyzed_at + # The time at which the resource-based policy or IAM entity that + # generated the finding was analyzed. + # @return [Time] + # + # @!attribute [rw] created_at + # The time at which the finding was created. + # @return [Time] + # + # @!attribute [rw] error + # The error that resulted in an Error finding. + # @return [String] + # + # @!attribute [rw] id + # The ID of the finding. + # @return [String] + # + # @!attribute [rw] resource + # The resource that the external principal has access to. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource that the external principal has access to. + # @return [String] + # + # @!attribute [rw] resource_owner_account + # The Amazon Web Services account ID that owns the resource. + # @return [String] + # + # @!attribute [rw] status + # The status of the finding. + # @return [String] + # + # @!attribute [rw] updated_at + # The time at which the finding was most recently updated. + # @return [Time] + # + # @!attribute [rw] finding_type + # The type of the external access or unused access finding. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/FindingSummaryV2 AWS API Documentation + # + class FindingSummaryV2 < Struct.new( + :analyzed_at, + :created_at, + :error, + :id, + :resource, + :resource_type, + :resource_owner_account, + :status, + :updated_at, + :finding_type) + SENSITIVE = [] + include Aws::Structure + end + # Contains the text for the generated policy. # # @!attribute [rw] policy @@ -1522,6 +1840,109 @@ class GetFindingResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] analyzer_arn + # The [ARN of the analyzer][1] that generated the finding. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources + # @return [String] + # + # @!attribute [rw] id + # The ID of the finding to retrieve. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of results to return in the response. + # @return [Integer] + # + # @!attribute [rw] next_token + # A token used for pagination of results returned. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingV2Request AWS API Documentation + # + class GetFindingV2Request < Struct.new( + :analyzer_arn, + :id, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] analyzed_at + # The time at which the resource-based policy or IAM entity that + # generated the finding was analyzed. + # @return [Time] + # + # @!attribute [rw] created_at + # The time at which the finding was created. + # @return [Time] + # + # @!attribute [rw] error + # An error. + # @return [String] + # + # @!attribute [rw] id + # The ID of the finding to retrieve. + # @return [String] + # + # @!attribute [rw] next_token + # A token used for pagination of results returned. + # @return [String] + # + # @!attribute [rw] resource + # The resource that generated the finding. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource identified in the finding. + # @return [String] + # + # @!attribute [rw] resource_owner_account + # Tye Amazon Web Services account ID that owns the resource. + # @return [String] + # + # @!attribute [rw] status + # The status of the finding. + # @return [String] + # + # @!attribute [rw] updated_at + # The time at which the finding was updated. + # @return [Time] + # + # @!attribute [rw] finding_details + # A localized message that explains the finding and provides guidance + # on how to address it. + # @return [Array] + # + # @!attribute [rw] finding_type + # The type of the finding. For external access analyzers, the type is + # `ExternalAccess`. For unused access analyzers, the type can be + # `UnusedIAMRole`, `UnusedIAMUserAccessKey`, `UnusedIAMUserPassword`, + # or `UnusedPermission`. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingV2Response AWS API Documentation + # + class GetFindingV2Response < Struct.new( + :analyzed_at, + :created_at, + :error, + :id, + :next_token, + :resource, + :resource_type, + :resource_owner_account, + :status, + :updated_at, + :finding_details, + :finding_type) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] job_id # The `JobId` that is returned by the `StartPolicyGeneration` # operation. The `JobId` can be used with `GetGeneratedPolicy` to @@ -1650,6 +2071,19 @@ class InternalServerException < Struct.new( # class InternetConfiguration < Aws::EmptyStructure; end + # The specified parameter is invalid. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/InvalidParameterException AWS API Documentation + # + class InvalidParameterException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # Contains details about the policy generation request. # # @!attribute [rw] job_id @@ -2144,6 +2578,60 @@ class ListFindingsResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] analyzer_arn + # The [ARN of the analyzer][1] to retrieve findings from. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources + # @return [String] + # + # @!attribute [rw] filter + # A filter to match for the findings to return. + # @return [Hash] + # + # @!attribute [rw] max_results + # The maximum number of results to return in the response. + # @return [Integer] + # + # @!attribute [rw] next_token + # A token used for pagination of results returned. + # @return [String] + # + # @!attribute [rw] sort + # The criteria used to sort. + # @return [Types::SortCriteria] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListFindingsV2Request AWS API Documentation + # + class ListFindingsV2Request < Struct.new( + :analyzer_arn, + :filter, + :max_results, + :next_token, + :sort) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] findings + # A list of findings retrieved from the analyzer that match the filter + # criteria specified, if any. + # @return [Array] + # + # @!attribute [rw] next_token + # A token used for pagination of results returned. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListFindingsV2Response AWS API Documentation + # + class ListFindingsV2Response < Struct.new( + :findings, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] principal_arn # The ARN of the IAM entity (user or role) for which you are # generating a policy. Use this with `ListGeneratedPolicies` to filter @@ -2566,6 +3054,31 @@ class RdsDbSnapshotConfiguration < Struct.new( include Aws::Structure end + # Contains information about the reasoning why a check for access passed + # or failed. + # + # @!attribute [rw] description + # A description of the reasoning of a result of checking for access. + # @return [String] + # + # @!attribute [rw] statement_index + # The index number of the reason statement. + # @return [Integer] + # + # @!attribute [rw] statement_id + # The identifier for the reason statement. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ReasonSummary AWS API Documentation + # + class ReasonSummary < Struct.new( + :description, + :statement_index, + :statement_id) + SENSITIVE = [] + include Aws::Structure + end + # The specified resource could not be found. # # @!attribute [rw] message @@ -3128,6 +3641,19 @@ class TrailProperties < Struct.new( include Aws::Structure end + # The specified entity could not be processed. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnprocessableEntityException AWS API Documentation + # + class UnprocessableEntityException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # Removes a tag from the specified resource. # # @!attribute [rw] resource_arn @@ -3153,6 +3679,153 @@ class UntagResourceRequest < Struct.new( # class UntagResourceResponse < Aws::EmptyStructure; end + # Contains information about an unused access analyzer. + # + # @!attribute [rw] unused_access_age + # The specified access age in days for which to generate findings for + # unused access. For example, if you specify 90 days, the analyzer + # will generate findings for IAM entities within the accounts of the + # selected organization for any access that hasn't been used in 90 or + # more days since the analyzer's last scan. You can choose a value + # between 1 and 180 days. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedAccessConfiguration AWS API Documentation + # + class UnusedAccessConfiguration < Struct.new( + :unused_access_age) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about an unused access finding for an action. IAM + # Access Analyzer charges for unused access analysis based on the number + # of IAM roles and users analyzed per month. For more details on + # pricing, see [IAM Access Analyzer pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/iam/access-analyzer/pricing + # + # @!attribute [rw] action + # The action for which the unused access finding was generated. + # @return [String] + # + # @!attribute [rw] last_accessed + # The time at which the action was last accessed. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedAction AWS API Documentation + # + class UnusedAction < Struct.new( + :action, + :last_accessed) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about an unused access finding for an IAM role. + # IAM Access Analyzer charges for unused access analysis based on the + # number of IAM roles and users analyzed per month. For more details on + # pricing, see [IAM Access Analyzer pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/iam/access-analyzer/pricing + # + # @!attribute [rw] last_accessed + # The time at which the role was last accessed. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedIamRoleDetails AWS API Documentation + # + class UnusedIamRoleDetails < Struct.new( + :last_accessed) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about an unused access finding for an IAM user + # access key. IAM Access Analyzer charges for unused access analysis + # based on the number of IAM roles and users analyzed per month. For + # more details on pricing, see [IAM Access Analyzer pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/iam/access-analyzer/pricing + # + # @!attribute [rw] access_key_id + # The ID of the access key for which the unused access finding was + # generated. + # @return [String] + # + # @!attribute [rw] last_accessed + # The time at which the access key was last accessed. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedIamUserAccessKeyDetails AWS API Documentation + # + class UnusedIamUserAccessKeyDetails < Struct.new( + :access_key_id, + :last_accessed) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about an unused access finding for an IAM user + # password. IAM Access Analyzer charges for unused access analysis based + # on the number of IAM roles and users analyzed per month. For more + # details on pricing, see [IAM Access Analyzer pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/iam/access-analyzer/pricing + # + # @!attribute [rw] last_accessed + # The time at which the password was last accessed. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedIamUserPasswordDetails AWS API Documentation + # + class UnusedIamUserPasswordDetails < Struct.new( + :last_accessed) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about an unused access finding for a permission. + # IAM Access Analyzer charges for unused access analysis based on the + # number of IAM roles and users analyzed per month. For more details on + # pricing, see [IAM Access Analyzer pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/iam/access-analyzer/pricing + # + # @!attribute [rw] actions + # A list of unused actions for which the unused access finding was + # generated. + # @return [Array] + # + # @!attribute [rw] service_namespace + # The namespace of the Amazon Web Services service that contains the + # unused actions. + # @return [String] + # + # @!attribute [rw] last_accessed + # The time at which the permission last accessed. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedPermissionDetails AWS API Documentation + # + class UnusedPermissionDetails < Struct.new( + :actions, + :service_namespace, + :last_accessed) + SENSITIVE = [] + include Aws::Structure + end + # Updates the specified archive rule. # # @!attribute [rw] analyzer_name @@ -3299,15 +3972,17 @@ class ValidatePolicyFinding < Struct.new( # @!attribute [rw] policy_type # The type of policy to validate. Identity policies grant permissions # to IAM principals. Identity policies include managed and inline - # policies for IAM roles, users, and groups. They also include - # service-control policies (SCPs) that are attached to an Amazon Web - # Services organization, organizational unit (OU), or an account. + # policies for IAM roles, users, and groups. # # Resource policies grant permissions on Amazon Web Services # resources. Resource policies include trust policies for IAM roles # and bucket policies for Amazon S3 buckets. You can provide a generic # input such as identity policy or resource policy or a specific input # such as managed policy or Amazon S3 bucket policy. + # + # Service control policies (SCPs) are a type of organization policy + # attached to an Amazon Web Services organization, organizational unit + # (OU), or an account. # @return [String] # # @!attribute [rw] validate_policy_resource_type diff --git a/gems/aws-sdk-bcmdataexports/CHANGELOG.md b/gems/aws-sdk-bcmdataexports/CHANGELOG.md new file mode 100644 index 00000000000..eaf010a63ea --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-bcmdataexports`. + diff --git a/gems/aws-sdk-bcmdataexports/LICENSE.txt b/gems/aws-sdk-bcmdataexports/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-bcmdataexports/VERSION b/gems/aws-sdk-bcmdataexports/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-bcmdataexports/aws-sdk-bcmdataexports.gemspec b/gems/aws-sdk-bcmdataexports/aws-sdk-bcmdataexports.gemspec new file mode 100644 index 00000000000..138fbd9f61d --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/aws-sdk-bcmdataexports.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-bcmdataexports' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - AWS Billing and Cost Management Data Exports' + spec.description = 'Official AWS Ruby gem for AWS Billing and Cost Management Data Exports. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-bcmdataexports', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-bcmdataexports/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-bcmdataexports/features/env.rb b/gems/aws-sdk-bcmdataexports/features/env.rb new file mode 100644 index 00000000000..81d5f7b1b32 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-bcmdataexports' + +Aws::BCMDataExports::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-bcmdataexports/features/step_definitions.rb b/gems/aws-sdk-bcmdataexports/features/step_definitions.rb new file mode 100644 index 00000000000..bf7e056c04c --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@bcmdataexports") do + @service = Aws::BCMDataExports::Resource.new + @client = @service.client +end + +After("@bcmdataexports") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports.rb new file mode 100644 index 00000000000..1106c00da2f --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-bcmdataexports/types' +require_relative 'aws-sdk-bcmdataexports/client_api' +require_relative 'aws-sdk-bcmdataexports/plugins/endpoints.rb' +require_relative 'aws-sdk-bcmdataexports/client' +require_relative 'aws-sdk-bcmdataexports/errors' +require_relative 'aws-sdk-bcmdataexports/resource' +require_relative 'aws-sdk-bcmdataexports/endpoint_parameters' +require_relative 'aws-sdk-bcmdataexports/endpoint_provider' +require_relative 'aws-sdk-bcmdataexports/endpoints' +require_relative 'aws-sdk-bcmdataexports/customizations' + +# This module provides support for AWS Billing and Cost Management Data Exports. This module is available in the +# `aws-sdk-bcmdataexports` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# bcm_data_exports = Aws::BCMDataExports::Client.new +# resp = bcm_data_exports.create_export(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from AWS Billing and Cost Management Data Exports are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::BCMDataExports::Errors::ServiceError +# # rescues all AWS Billing and Cost Management Data Exports API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::BCMDataExports + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client.rb new file mode 100644 index 00000000000..02e8f42f331 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client.rb @@ -0,0 +1,1003 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/json_rpc.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:bcmdataexports) + +module Aws::BCMDataExports + # An API client for BCMDataExports. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::BCMDataExports::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :bcmdataexports + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::JsonRpc) + add_plugin(Aws::BCMDataExports::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :simple_json (false) + # Disables request parameter conversion, validation, and formatting. + # Also disable response data type conversions. This option is useful + # when you want to ensure the highest level of performance by + # avoiding overhead of walking request parameters and response data + # structures. + # + # When `:simple_json` is enabled, the request parameters hash must + # be formatted exactly as the DynamoDB API expects. + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::BCMDataExports::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::BCMDataExports::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # Creates a data export and specifies the data query, the delivery + # preference, and any optional resource tags. + # + # A `DataQuery` consists of both a `QueryStatement` and + # `TableConfigurations`. + # + # The `QueryStatement` is an SQL statement. Data Exports only supports a + # limited subset of the SQL syntax. For more information on the SQL + # syntax that is supported, see [Data query][1]. To view the available + # tables and columns, see the [Data Exports table dictionary][2]. + # + # The `TableConfigurations` is a collection of specified + # `TableProperties` for the table being queried in the `QueryStatement`. + # TableProperties are additional configurations you can provide to + # change the data and schema of a table. Each table can have different + # TableProperties. However, tables are not required to have any + # TableProperties. Each table property has a default value that it + # assumes if not specified. For more information on table + # configurations, see [Data query][1]. To view the table properties + # available for each table, see the [Data Exports table dictionary][2] + # or use the `ListTables` API to get a response of all tables and their + # available properties. + # + # + # + # [1]: https://docs.aws.amazon.com/cur/latest/userguide/de-data-query.html + # [2]: https://docs.aws.amazon.com/cur/latest/userguide/de-table-dictionary.html + # + # @option params [required, Types::Export] :export + # The details of the export, including data query, name, description, + # and destination configuration. + # + # @option params [Array] :resource_tags + # An optional list of tags to associate with the specified export. Each + # tag consists of a key and a value, and each key must be unique for the + # resource. + # + # @return [Types::CreateExportResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateExportResponse#export_arn #export_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_export({ + # export: { # required + # data_query: { # required + # query_statement: "QueryStatement", # required + # table_configurations: { + # "TableName" => { + # "TableProperty" => "GenericString", + # }, + # }, + # }, + # description: "GenericString", + # destination_configurations: { # required + # s3_destination: { # required + # s3_bucket: "GenericString", # required + # s3_output_configurations: { # required + # compression: "GZIP", # required, accepts GZIP, PARQUET + # format: "TEXT_OR_CSV", # required, accepts TEXT_OR_CSV, PARQUET + # output_type: "CUSTOM", # required, accepts CUSTOM + # overwrite: "CREATE_NEW_REPORT", # required, accepts CREATE_NEW_REPORT, OVERWRITE_REPORT + # }, + # s3_prefix: "GenericString", # required + # s3_region: "GenericString", # required + # }, + # }, + # export_arn: "Arn", + # name: "ExportName", # required + # refresh_cadence: { # required + # frequency: "SYNCHRONOUS", # required, accepts SYNCHRONOUS + # }, + # }, + # resource_tags: [ + # { + # key: "ResourceTagKey", # required + # value: "ResourceTagValue", # required + # }, + # ], + # }) + # + # @example Response structure + # + # resp.export_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/CreateExport AWS API Documentation + # + # @overload create_export(params = {}) + # @param [Hash] params ({}) + def create_export(params = {}, options = {}) + req = build_request(:create_export, params) + req.send_request(options) + end + + # Deletes an existing data export. + # + # @option params [required, String] :export_arn + # The Amazon Resource Name (ARN) for this export. + # + # @return [Types::DeleteExportResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DeleteExportResponse#export_arn #export_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.delete_export({ + # export_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.export_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/DeleteExport AWS API Documentation + # + # @overload delete_export(params = {}) + # @param [Hash] params ({}) + def delete_export(params = {}, options = {}) + req = build_request(:delete_export, params) + req.send_request(options) + end + + # Exports data based on the source data update. + # + # @option params [required, String] :execution_id + # The ID for this specific execution. + # + # @option params [required, String] :export_arn + # The Amazon Resource Name (ARN) of the Export object that generated + # this specific execution. + # + # @return [Types::GetExecutionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetExecutionResponse#execution_id #execution_id} => String + # * {Types::GetExecutionResponse#execution_status #execution_status} => Types::ExecutionStatus + # * {Types::GetExecutionResponse#export #export} => Types::Export + # + # @example Request syntax with placeholder values + # + # resp = client.get_execution({ + # execution_id: "GenericString", # required + # export_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.execution_id #=> String + # resp.execution_status.completed_at #=> Time + # resp.execution_status.created_at #=> Time + # resp.execution_status.last_updated_at #=> Time + # resp.execution_status.status_code #=> String, one of "INITIATION_IN_PROCESS", "QUERY_QUEUED", "QUERY_IN_PROCESS", "QUERY_FAILURE", "DELIVERY_IN_PROCESS", "DELIVERY_SUCCESS", "DELIVERY_FAILURE" + # resp.execution_status.status_reason #=> String, one of "INSUFFICIENT_PERMISSION", "BILL_OWNER_CHANGED", "INTERNAL_FAILURE" + # resp.export.data_query.query_statement #=> String + # resp.export.data_query.table_configurations #=> Hash + # resp.export.data_query.table_configurations["TableName"] #=> Hash + # resp.export.data_query.table_configurations["TableName"]["TableProperty"] #=> String + # resp.export.description #=> String + # resp.export.destination_configurations.s3_destination.s3_bucket #=> String + # resp.export.destination_configurations.s3_destination.s3_output_configurations.compression #=> String, one of "GZIP", "PARQUET" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.format #=> String, one of "TEXT_OR_CSV", "PARQUET" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.output_type #=> String, one of "CUSTOM" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.overwrite #=> String, one of "CREATE_NEW_REPORT", "OVERWRITE_REPORT" + # resp.export.destination_configurations.s3_destination.s3_prefix #=> String + # resp.export.destination_configurations.s3_destination.s3_region #=> String + # resp.export.export_arn #=> String + # resp.export.name #=> String + # resp.export.refresh_cadence.frequency #=> String, one of "SYNCHRONOUS" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExecution AWS API Documentation + # + # @overload get_execution(params = {}) + # @param [Hash] params ({}) + def get_execution(params = {}, options = {}) + req = build_request(:get_execution, params) + req.send_request(options) + end + + # Views the definition of an existing data export. + # + # @option params [required, String] :export_arn + # The Amazon Resource Name (ARN) for this export. + # + # @return [Types::GetExportResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetExportResponse#export #export} => Types::Export + # * {Types::GetExportResponse#export_status #export_status} => Types::ExportStatus + # + # @example Request syntax with placeholder values + # + # resp = client.get_export({ + # export_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.export.data_query.query_statement #=> String + # resp.export.data_query.table_configurations #=> Hash + # resp.export.data_query.table_configurations["TableName"] #=> Hash + # resp.export.data_query.table_configurations["TableName"]["TableProperty"] #=> String + # resp.export.description #=> String + # resp.export.destination_configurations.s3_destination.s3_bucket #=> String + # resp.export.destination_configurations.s3_destination.s3_output_configurations.compression #=> String, one of "GZIP", "PARQUET" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.format #=> String, one of "TEXT_OR_CSV", "PARQUET" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.output_type #=> String, one of "CUSTOM" + # resp.export.destination_configurations.s3_destination.s3_output_configurations.overwrite #=> String, one of "CREATE_NEW_REPORT", "OVERWRITE_REPORT" + # resp.export.destination_configurations.s3_destination.s3_prefix #=> String + # resp.export.destination_configurations.s3_destination.s3_region #=> String + # resp.export.export_arn #=> String + # resp.export.name #=> String + # resp.export.refresh_cadence.frequency #=> String, one of "SYNCHRONOUS" + # resp.export_status.created_at #=> Time + # resp.export_status.last_refreshed_at #=> Time + # resp.export_status.last_updated_at #=> Time + # resp.export_status.status_code #=> String, one of "HEALTHY", "UNHEALTHY" + # resp.export_status.status_reason #=> String, one of "INSUFFICIENT_PERMISSION", "BILL_OWNER_CHANGED", "INTERNAL_FAILURE" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExport AWS API Documentation + # + # @overload get_export(params = {}) + # @param [Hash] params ({}) + def get_export(params = {}, options = {}) + req = build_request(:get_export, params) + req.send_request(options) + end + + # Returns the metadata for the specified table and table properties. + # This includes the list of columns in the table schema, their data + # types, and column descriptions. + # + # @option params [required, String] :table_name + # The name of the table. + # + # @option params [Hash] :table_properties + # TableProperties are additional configurations you can provide to + # change the data and schema of a table. Each table can have different + # TableProperties. Tables are not required to have any TableProperties. + # Each table property has a default value that it assumes if not + # specified. + # + # @return [Types::GetTableResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetTableResponse#description #description} => String + # * {Types::GetTableResponse#schema #schema} => Array<Types::Column> + # * {Types::GetTableResponse#table_name #table_name} => String + # * {Types::GetTableResponse#table_properties #table_properties} => Hash<String,String> + # + # @example Request syntax with placeholder values + # + # resp = client.get_table({ + # table_name: "TableName", # required + # table_properties: { + # "TableProperty" => "GenericString", + # }, + # }) + # + # @example Response structure + # + # resp.description #=> String + # resp.schema #=> Array + # resp.schema[0].description #=> String + # resp.schema[0].name #=> String + # resp.schema[0].type #=> String + # resp.table_name #=> String + # resp.table_properties #=> Hash + # resp.table_properties["TableProperty"] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetTable AWS API Documentation + # + # @overload get_table(params = {}) + # @param [Hash] params ({}) + def get_table(params = {}, options = {}) + req = build_request(:get_table, params) + req.send_request(options) + end + + # Lists the historical executions for the export. + # + # @option params [required, String] :export_arn + # The Amazon Resource Name (ARN) for this export. + # + # @option params [Integer] :max_results + # The maximum number of objects that are returned for the request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @return [Types::ListExecutionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListExecutionsResponse#executions #executions} => Array<Types::ExecutionReference> + # * {Types::ListExecutionsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_executions({ + # export_arn: "Arn", # required + # max_results: 1, + # next_token: "NextPageToken", + # }) + # + # @example Response structure + # + # resp.executions #=> Array + # resp.executions[0].execution_id #=> String + # resp.executions[0].execution_status.completed_at #=> Time + # resp.executions[0].execution_status.created_at #=> Time + # resp.executions[0].execution_status.last_updated_at #=> Time + # resp.executions[0].execution_status.status_code #=> String, one of "INITIATION_IN_PROCESS", "QUERY_QUEUED", "QUERY_IN_PROCESS", "QUERY_FAILURE", "DELIVERY_IN_PROCESS", "DELIVERY_SUCCESS", "DELIVERY_FAILURE" + # resp.executions[0].execution_status.status_reason #=> String, one of "INSUFFICIENT_PERMISSION", "BILL_OWNER_CHANGED", "INTERNAL_FAILURE" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExecutions AWS API Documentation + # + # @overload list_executions(params = {}) + # @param [Hash] params ({}) + def list_executions(params = {}, options = {}) + req = build_request(:list_executions, params) + req.send_request(options) + end + + # Lists all data export definitions. + # + # @option params [Integer] :max_results + # The maximum number of objects that are returned for the request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @return [Types::ListExportsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListExportsResponse#exports #exports} => Array<Types::ExportReference> + # * {Types::ListExportsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_exports({ + # max_results: 1, + # next_token: "NextPageToken", + # }) + # + # @example Response structure + # + # resp.exports #=> Array + # resp.exports[0].export_arn #=> String + # resp.exports[0].export_name #=> String + # resp.exports[0].export_status.created_at #=> Time + # resp.exports[0].export_status.last_refreshed_at #=> Time + # resp.exports[0].export_status.last_updated_at #=> Time + # resp.exports[0].export_status.status_code #=> String, one of "HEALTHY", "UNHEALTHY" + # resp.exports[0].export_status.status_reason #=> String, one of "INSUFFICIENT_PERMISSION", "BILL_OWNER_CHANGED", "INTERNAL_FAILURE" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExports AWS API Documentation + # + # @overload list_exports(params = {}) + # @param [Hash] params ({}) + def list_exports(params = {}, options = {}) + req = build_request(:list_exports, params) + req.send_request(options) + end + + # Lists all available tables in data exports. + # + # @option params [Integer] :max_results + # The maximum number of objects that are returned for the request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @return [Types::ListTablesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListTablesResponse#next_token #next_token} => String + # * {Types::ListTablesResponse#tables #tables} => Array<Types::Table> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_tables({ + # max_results: 1, + # next_token: "NextPageToken", + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.tables #=> Array + # resp.tables[0].description #=> String + # resp.tables[0].table_name #=> String + # resp.tables[0].table_properties #=> Array + # resp.tables[0].table_properties[0].default_value #=> String + # resp.tables[0].table_properties[0].description #=> String + # resp.tables[0].table_properties[0].name #=> String + # resp.tables[0].table_properties[0].valid_values #=> Array + # resp.tables[0].table_properties[0].valid_values[0] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTables AWS API Documentation + # + # @overload list_tables(params = {}) + # @param [Hash] params ({}) + def list_tables(params = {}, options = {}) + req = build_request(:list_tables, params) + req.send_request(options) + end + + # List tags associated with an existing data export. + # + # @option params [Integer] :max_results + # The maximum number of objects that are returned for the request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @option params [required, String] :resource_arn + # The unique identifier for the resource. + # + # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListTagsForResourceResponse#next_token #next_token} => String + # * {Types::ListTagsForResourceResponse#resource_tags #resource_tags} => Array<Types::ResourceTag> + # + # @example Request syntax with placeholder values + # + # resp = client.list_tags_for_resource({ + # max_results: 1, + # next_token: "NextPageToken", + # resource_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.resource_tags #=> Array + # resp.resource_tags[0].key #=> String + # resp.resource_tags[0].value #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTagsForResource AWS API Documentation + # + # @overload list_tags_for_resource(params = {}) + # @param [Hash] params ({}) + def list_tags_for_resource(params = {}, options = {}) + req = build_request(:list_tags_for_resource, params) + req.send_request(options) + end + + # Adds tags for an existing data export definition. + # + # @option params [required, String] :resource_arn + # The unique identifier for the resource. + # + # @option params [required, Array] :resource_tags + # The tags to associate with the resource. Each tag consists of a key + # and a value, and each key must be unique for the resource. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.tag_resource({ + # resource_arn: "Arn", # required + # resource_tags: [ # required + # { + # key: "ResourceTagKey", # required + # value: "ResourceTagValue", # required + # }, + # ], + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/TagResource AWS API Documentation + # + # @overload tag_resource(params = {}) + # @param [Hash] params ({}) + def tag_resource(params = {}, options = {}) + req = build_request(:tag_resource, params) + req.send_request(options) + end + + # Deletes tags associated with an existing data export definition. + # + # @option params [required, String] :resource_arn + # The unique identifier for the resource. + # + # @option params [required, Array] :resource_tag_keys + # The tag keys that are associated with the resource ARN. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.untag_resource({ + # resource_arn: "Arn", # required + # resource_tag_keys: ["ResourceTagKey"], # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UntagResource AWS API Documentation + # + # @overload untag_resource(params = {}) + # @param [Hash] params ({}) + def untag_resource(params = {}, options = {}) + req = build_request(:untag_resource, params) + req.send_request(options) + end + + # Updates an existing data export by overwriting all export parameters. + # All export parameters must be provided in the UpdateExport request. + # + # @option params [required, Types::Export] :export + # The name and query details for the export. + # + # @option params [required, String] :export_arn + # The Amazon Resource Name (ARN) for this export. + # + # @return [Types::UpdateExportResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateExportResponse#export_arn #export_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_export({ + # export: { # required + # data_query: { # required + # query_statement: "QueryStatement", # required + # table_configurations: { + # "TableName" => { + # "TableProperty" => "GenericString", + # }, + # }, + # }, + # description: "GenericString", + # destination_configurations: { # required + # s3_destination: { # required + # s3_bucket: "GenericString", # required + # s3_output_configurations: { # required + # compression: "GZIP", # required, accepts GZIP, PARQUET + # format: "TEXT_OR_CSV", # required, accepts TEXT_OR_CSV, PARQUET + # output_type: "CUSTOM", # required, accepts CUSTOM + # overwrite: "CREATE_NEW_REPORT", # required, accepts CREATE_NEW_REPORT, OVERWRITE_REPORT + # }, + # s3_prefix: "GenericString", # required + # s3_region: "GenericString", # required + # }, + # }, + # export_arn: "Arn", + # name: "ExportName", # required + # refresh_cadence: { # required + # frequency: "SYNCHRONOUS", # required, accepts SYNCHRONOUS + # }, + # }, + # export_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.export_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UpdateExport AWS API Documentation + # + # @overload update_export(params = {}) + # @param [Hash] params ({}) + def update_export(params = {}, options = {}) + req = build_request(:update_export, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-bcmdataexports' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client_api.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client_api.rb new file mode 100644 index 00000000000..da31e066502 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/client_api.rb @@ -0,0 +1,490 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + # @api private + module ClientApi + + include Seahorse::Model + + Arn = Shapes::StringShape.new(name: 'Arn') + Column = Shapes::StructureShape.new(name: 'Column') + ColumnList = Shapes::ListShape.new(name: 'ColumnList') + CompressionOption = Shapes::StringShape.new(name: 'CompressionOption') + CreateExportRequest = Shapes::StructureShape.new(name: 'CreateExportRequest') + CreateExportResponse = Shapes::StructureShape.new(name: 'CreateExportResponse') + DataQuery = Shapes::StructureShape.new(name: 'DataQuery') + DeleteExportRequest = Shapes::StructureShape.new(name: 'DeleteExportRequest') + DeleteExportResponse = Shapes::StructureShape.new(name: 'DeleteExportResponse') + DestinationConfigurations = Shapes::StructureShape.new(name: 'DestinationConfigurations') + ExecutionReference = Shapes::StructureShape.new(name: 'ExecutionReference') + ExecutionReferenceList = Shapes::ListShape.new(name: 'ExecutionReferenceList') + ExecutionStatus = Shapes::StructureShape.new(name: 'ExecutionStatus') + ExecutionStatusCode = Shapes::StringShape.new(name: 'ExecutionStatusCode') + ExecutionStatusReason = Shapes::StringShape.new(name: 'ExecutionStatusReason') + Export = Shapes::StructureShape.new(name: 'Export') + ExportName = Shapes::StringShape.new(name: 'ExportName') + ExportReference = Shapes::StructureShape.new(name: 'ExportReference') + ExportReferenceList = Shapes::ListShape.new(name: 'ExportReferenceList') + ExportStatus = Shapes::StructureShape.new(name: 'ExportStatus') + ExportStatusCode = Shapes::StringShape.new(name: 'ExportStatusCode') + FormatOption = Shapes::StringShape.new(name: 'FormatOption') + FrequencyOption = Shapes::StringShape.new(name: 'FrequencyOption') + GenericString = Shapes::StringShape.new(name: 'GenericString') + GenericStringList = Shapes::ListShape.new(name: 'GenericStringList') + GetExecutionRequest = Shapes::StructureShape.new(name: 'GetExecutionRequest') + GetExecutionResponse = Shapes::StructureShape.new(name: 'GetExecutionResponse') + GetExportRequest = Shapes::StructureShape.new(name: 'GetExportRequest') + GetExportResponse = Shapes::StructureShape.new(name: 'GetExportResponse') + GetTableRequest = Shapes::StructureShape.new(name: 'GetTableRequest') + GetTableResponse = Shapes::StructureShape.new(name: 'GetTableResponse') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + ListExecutionsRequest = Shapes::StructureShape.new(name: 'ListExecutionsRequest') + ListExecutionsResponse = Shapes::StructureShape.new(name: 'ListExecutionsResponse') + ListExportsRequest = Shapes::StructureShape.new(name: 'ListExportsRequest') + ListExportsResponse = Shapes::StructureShape.new(name: 'ListExportsResponse') + ListTablesRequest = Shapes::StructureShape.new(name: 'ListTablesRequest') + ListTablesResponse = Shapes::StructureShape.new(name: 'ListTablesResponse') + ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') + ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') + MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') + NextPageToken = Shapes::StringShape.new(name: 'NextPageToken') + OverwriteOption = Shapes::StringShape.new(name: 'OverwriteOption') + QueryStatement = Shapes::StringShape.new(name: 'QueryStatement') + RefreshCadence = Shapes::StructureShape.new(name: 'RefreshCadence') + ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + ResourceTag = Shapes::StructureShape.new(name: 'ResourceTag') + ResourceTagKey = Shapes::StringShape.new(name: 'ResourceTagKey') + ResourceTagKeyList = Shapes::ListShape.new(name: 'ResourceTagKeyList') + ResourceTagList = Shapes::ListShape.new(name: 'ResourceTagList') + ResourceTagValue = Shapes::StringShape.new(name: 'ResourceTagValue') + S3Destination = Shapes::StructureShape.new(name: 'S3Destination') + S3OutputConfigurations = Shapes::StructureShape.new(name: 'S3OutputConfigurations') + S3OutputType = Shapes::StringShape.new(name: 'S3OutputType') + ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') + SyntheticTimestamp_date_time = Shapes::TimestampShape.new(name: 'SyntheticTimestamp_date_time', timestampFormat: "iso8601") + Table = Shapes::StructureShape.new(name: 'Table') + TableConfigurations = Shapes::MapShape.new(name: 'TableConfigurations') + TableList = Shapes::ListShape.new(name: 'TableList') + TableName = Shapes::StringShape.new(name: 'TableName') + TableProperties = Shapes::MapShape.new(name: 'TableProperties') + TableProperty = Shapes::StringShape.new(name: 'TableProperty') + TablePropertyDescription = Shapes::StructureShape.new(name: 'TablePropertyDescription') + TablePropertyDescriptionList = Shapes::ListShape.new(name: 'TablePropertyDescriptionList') + TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest') + TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') + UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') + UpdateExportRequest = Shapes::StructureShape.new(name: 'UpdateExportRequest') + UpdateExportResponse = Shapes::StructureShape.new(name: 'UpdateExportResponse') + ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + ValidationExceptionField = Shapes::StructureShape.new(name: 'ValidationExceptionField') + ValidationExceptionFieldList = Shapes::ListShape.new(name: 'ValidationExceptionFieldList') + ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason') + + Column.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "Description")) + Column.add_member(:name, Shapes::ShapeRef.new(shape: GenericString, location_name: "Name")) + Column.add_member(:type, Shapes::ShapeRef.new(shape: GenericString, location_name: "Type")) + Column.struct_class = Types::Column + + ColumnList.member = Shapes::ShapeRef.new(shape: Column) + + CreateExportRequest.add_member(:export, Shapes::ShapeRef.new(shape: Export, required: true, location_name: "Export")) + CreateExportRequest.add_member(:resource_tags, Shapes::ShapeRef.new(shape: ResourceTagList, location_name: "ResourceTags")) + CreateExportRequest.struct_class = Types::CreateExportRequest + + CreateExportResponse.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "ExportArn")) + CreateExportResponse.struct_class = Types::CreateExportResponse + + DataQuery.add_member(:query_statement, Shapes::ShapeRef.new(shape: QueryStatement, required: true, location_name: "QueryStatement")) + DataQuery.add_member(:table_configurations, Shapes::ShapeRef.new(shape: TableConfigurations, location_name: "TableConfigurations")) + DataQuery.struct_class = Types::DataQuery + + DeleteExportRequest.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + DeleteExportRequest.struct_class = Types::DeleteExportRequest + + DeleteExportResponse.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "ExportArn")) + DeleteExportResponse.struct_class = Types::DeleteExportResponse + + DestinationConfigurations.add_member(:s3_destination, Shapes::ShapeRef.new(shape: S3Destination, required: true, location_name: "S3Destination")) + DestinationConfigurations.struct_class = Types::DestinationConfigurations + + ExecutionReference.add_member(:execution_id, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "ExecutionId")) + ExecutionReference.add_member(:execution_status, Shapes::ShapeRef.new(shape: ExecutionStatus, required: true, location_name: "ExecutionStatus")) + ExecutionReference.struct_class = Types::ExecutionReference + + ExecutionReferenceList.member = Shapes::ShapeRef.new(shape: ExecutionReference) + + ExecutionStatus.add_member(:completed_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "CompletedAt")) + ExecutionStatus.add_member(:created_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "CreatedAt")) + ExecutionStatus.add_member(:last_updated_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "LastUpdatedAt")) + ExecutionStatus.add_member(:status_code, Shapes::ShapeRef.new(shape: ExecutionStatusCode, location_name: "StatusCode")) + ExecutionStatus.add_member(:status_reason, Shapes::ShapeRef.new(shape: ExecutionStatusReason, location_name: "StatusReason")) + ExecutionStatus.struct_class = Types::ExecutionStatus + + Export.add_member(:data_query, Shapes::ShapeRef.new(shape: DataQuery, required: true, location_name: "DataQuery")) + Export.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "Description")) + Export.add_member(:destination_configurations, Shapes::ShapeRef.new(shape: DestinationConfigurations, required: true, location_name: "DestinationConfigurations")) + Export.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "ExportArn")) + Export.add_member(:name, Shapes::ShapeRef.new(shape: ExportName, required: true, location_name: "Name")) + Export.add_member(:refresh_cadence, Shapes::ShapeRef.new(shape: RefreshCadence, required: true, location_name: "RefreshCadence")) + Export.struct_class = Types::Export + + ExportReference.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + ExportReference.add_member(:export_name, Shapes::ShapeRef.new(shape: ExportName, required: true, location_name: "ExportName")) + ExportReference.add_member(:export_status, Shapes::ShapeRef.new(shape: ExportStatus, required: true, location_name: "ExportStatus")) + ExportReference.struct_class = Types::ExportReference + + ExportReferenceList.member = Shapes::ShapeRef.new(shape: ExportReference) + + ExportStatus.add_member(:created_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "CreatedAt")) + ExportStatus.add_member(:last_refreshed_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "LastRefreshedAt")) + ExportStatus.add_member(:last_updated_at, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "LastUpdatedAt")) + ExportStatus.add_member(:status_code, Shapes::ShapeRef.new(shape: ExportStatusCode, location_name: "StatusCode")) + ExportStatus.add_member(:status_reason, Shapes::ShapeRef.new(shape: ExecutionStatusReason, location_name: "StatusReason")) + ExportStatus.struct_class = Types::ExportStatus + + GenericStringList.member = Shapes::ShapeRef.new(shape: GenericString) + + GetExecutionRequest.add_member(:execution_id, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "ExecutionId")) + GetExecutionRequest.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + GetExecutionRequest.struct_class = Types::GetExecutionRequest + + GetExecutionResponse.add_member(:execution_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "ExecutionId")) + GetExecutionResponse.add_member(:execution_status, Shapes::ShapeRef.new(shape: ExecutionStatus, location_name: "ExecutionStatus")) + GetExecutionResponse.add_member(:export, Shapes::ShapeRef.new(shape: Export, location_name: "Export")) + GetExecutionResponse.struct_class = Types::GetExecutionResponse + + GetExportRequest.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + GetExportRequest.struct_class = Types::GetExportRequest + + GetExportResponse.add_member(:export, Shapes::ShapeRef.new(shape: Export, location_name: "Export")) + GetExportResponse.add_member(:export_status, Shapes::ShapeRef.new(shape: ExportStatus, location_name: "ExportStatus")) + GetExportResponse.struct_class = Types::GetExportResponse + + GetTableRequest.add_member(:table_name, Shapes::ShapeRef.new(shape: TableName, required: true, location_name: "TableName")) + GetTableRequest.add_member(:table_properties, Shapes::ShapeRef.new(shape: TableProperties, location_name: "TableProperties")) + GetTableRequest.struct_class = Types::GetTableRequest + + GetTableResponse.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "Description")) + GetTableResponse.add_member(:schema, Shapes::ShapeRef.new(shape: ColumnList, location_name: "Schema")) + GetTableResponse.add_member(:table_name, Shapes::ShapeRef.new(shape: TableName, location_name: "TableName")) + GetTableResponse.add_member(:table_properties, Shapes::ShapeRef.new(shape: TableProperties, location_name: "TableProperties")) + GetTableResponse.struct_class = Types::GetTableResponse + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + InternalServerException.struct_class = Types::InternalServerException + + ListExecutionsRequest.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + ListExecutionsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListExecutionsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListExecutionsRequest.struct_class = Types::ListExecutionsRequest + + ListExecutionsResponse.add_member(:executions, Shapes::ShapeRef.new(shape: ExecutionReferenceList, location_name: "Executions")) + ListExecutionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListExecutionsResponse.struct_class = Types::ListExecutionsResponse + + ListExportsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListExportsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListExportsRequest.struct_class = Types::ListExportsRequest + + ListExportsResponse.add_member(:exports, Shapes::ShapeRef.new(shape: ExportReferenceList, location_name: "Exports")) + ListExportsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListExportsResponse.struct_class = Types::ListExportsResponse + + ListTablesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListTablesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListTablesRequest.struct_class = Types::ListTablesRequest + + ListTablesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListTablesResponse.add_member(:tables, Shapes::ShapeRef.new(shape: TableList, location_name: "Tables")) + ListTablesResponse.struct_class = Types::ListTablesResponse + + ListTagsForResourceRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListTagsForResourceRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ResourceArn")) + ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest + + ListTagsForResourceResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextToken")) + ListTagsForResourceResponse.add_member(:resource_tags, Shapes::ShapeRef.new(shape: ResourceTagList, location_name: "ResourceTags")) + ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse + + RefreshCadence.add_member(:frequency, Shapes::ShapeRef.new(shape: FrequencyOption, required: true, location_name: "Frequency")) + RefreshCadence.struct_class = Types::RefreshCadence + + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + ResourceNotFoundException.add_member(:resource_id, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "ResourceId")) + ResourceNotFoundException.add_member(:resource_type, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "ResourceType")) + ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + + ResourceTag.add_member(:key, Shapes::ShapeRef.new(shape: ResourceTagKey, required: true, location_name: "Key")) + ResourceTag.add_member(:value, Shapes::ShapeRef.new(shape: ResourceTagValue, required: true, location_name: "Value")) + ResourceTag.struct_class = Types::ResourceTag + + ResourceTagKeyList.member = Shapes::ShapeRef.new(shape: ResourceTagKey) + + ResourceTagList.member = Shapes::ShapeRef.new(shape: ResourceTag) + + S3Destination.add_member(:s3_bucket, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "S3Bucket")) + S3Destination.add_member(:s3_output_configurations, Shapes::ShapeRef.new(shape: S3OutputConfigurations, required: true, location_name: "S3OutputConfigurations")) + S3Destination.add_member(:s3_prefix, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "S3Prefix")) + S3Destination.add_member(:s3_region, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "S3Region")) + S3Destination.struct_class = Types::S3Destination + + S3OutputConfigurations.add_member(:compression, Shapes::ShapeRef.new(shape: CompressionOption, required: true, location_name: "Compression")) + S3OutputConfigurations.add_member(:format, Shapes::ShapeRef.new(shape: FormatOption, required: true, location_name: "Format")) + S3OutputConfigurations.add_member(:output_type, Shapes::ShapeRef.new(shape: S3OutputType, required: true, location_name: "OutputType")) + S3OutputConfigurations.add_member(:overwrite, Shapes::ShapeRef.new(shape: OverwriteOption, required: true, location_name: "Overwrite")) + S3OutputConfigurations.struct_class = Types::S3OutputConfigurations + + ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + ServiceQuotaExceededException.add_member(:quota_code, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "QuotaCode")) + ServiceQuotaExceededException.add_member(:resource_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "ResourceId")) + ServiceQuotaExceededException.add_member(:resource_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "ResourceType")) + ServiceQuotaExceededException.add_member(:service_code, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "ServiceCode")) + ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException + + Table.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "Description")) + Table.add_member(:table_name, Shapes::ShapeRef.new(shape: TableName, location_name: "TableName")) + Table.add_member(:table_properties, Shapes::ShapeRef.new(shape: TablePropertyDescriptionList, location_name: "TableProperties")) + Table.struct_class = Types::Table + + TableConfigurations.key = Shapes::ShapeRef.new(shape: TableName) + TableConfigurations.value = Shapes::ShapeRef.new(shape: TableProperties) + + TableList.member = Shapes::ShapeRef.new(shape: Table) + + TableProperties.key = Shapes::ShapeRef.new(shape: TableProperty) + TableProperties.value = Shapes::ShapeRef.new(shape: GenericString) + + TablePropertyDescription.add_member(:default_value, Shapes::ShapeRef.new(shape: GenericString, location_name: "DefaultValue")) + TablePropertyDescription.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "Description")) + TablePropertyDescription.add_member(:name, Shapes::ShapeRef.new(shape: GenericString, location_name: "Name")) + TablePropertyDescription.add_member(:valid_values, Shapes::ShapeRef.new(shape: GenericStringList, location_name: "ValidValues")) + TablePropertyDescription.struct_class = Types::TablePropertyDescription + + TablePropertyDescriptionList.member = Shapes::ShapeRef.new(shape: TablePropertyDescription) + + TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ResourceArn")) + TagResourceRequest.add_member(:resource_tags, Shapes::ShapeRef.new(shape: ResourceTagList, required: true, location_name: "ResourceTags")) + TagResourceRequest.struct_class = Types::TagResourceRequest + + TagResourceResponse.struct_class = Types::TagResourceResponse + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + ThrottlingException.add_member(:quota_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "QuotaCode")) + ThrottlingException.add_member(:service_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "ServiceCode")) + ThrottlingException.struct_class = Types::ThrottlingException + + UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ResourceArn")) + UntagResourceRequest.add_member(:resource_tag_keys, Shapes::ShapeRef.new(shape: ResourceTagKeyList, required: true, location_name: "ResourceTagKeys")) + UntagResourceRequest.struct_class = Types::UntagResourceRequest + + UntagResourceResponse.struct_class = Types::UntagResourceResponse + + UpdateExportRequest.add_member(:export, Shapes::ShapeRef.new(shape: Export, required: true, location_name: "Export")) + UpdateExportRequest.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "ExportArn")) + UpdateExportRequest.struct_class = Types::UpdateExportRequest + + UpdateExportResponse.add_member(:export_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "ExportArn")) + UpdateExportResponse.struct_class = Types::UpdateExportResponse + + ValidationException.add_member(:fields, Shapes::ShapeRef.new(shape: ValidationExceptionFieldList, location_name: "Fields")) + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, location_name: "Reason")) + ValidationException.struct_class = Types::ValidationException + + ValidationExceptionField.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Message")) + ValidationExceptionField.add_member(:name, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Name")) + ValidationExceptionField.struct_class = Types::ValidationExceptionField + + ValidationExceptionFieldList.member = Shapes::ShapeRef.new(shape: ValidationExceptionField) + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2023-11-26" + + api.metadata = { + "apiVersion" => "2023-11-26", + "endpointPrefix" => "bcm-data-exports", + "jsonVersion" => "1.1", + "protocol" => "json", + "serviceFullName" => "AWS Billing and Cost Management Data Exports", + "serviceId" => "BCM Data Exports", + "signatureVersion" => "v4", + "signingName" => "bcm-data-exports", + "targetPrefix" => "AWSBillingAndCostManagementDataExports", + "uid" => "bcm-data-exports-2023-11-26", + } + + api.add_operation(:create_export, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateExport" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CreateExportRequest) + o.output = Shapes::ShapeRef.new(shape: CreateExportResponse) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:delete_export, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteExport" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DeleteExportRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteExportResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:get_execution, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetExecution" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetExecutionRequest) + o.output = Shapes::ShapeRef.new(shape: GetExecutionResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:get_export, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetExport" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetExportRequest) + o.output = Shapes::ShapeRef.new(shape: GetExportResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:get_table, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetTable" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetTableRequest) + o.output = Shapes::ShapeRef.new(shape: GetTableResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:list_executions, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListExecutions" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListExecutionsRequest) + o.output = Shapes::ShapeRef.new(shape: ListExecutionsResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_exports, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListExports" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListExportsRequest) + o.output = Shapes::ShapeRef.new(shape: ListExportsResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_tables, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListTables" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListTablesRequest) + o.output = Shapes::ShapeRef.new(shape: ListTablesResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListTagsForResource" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListTagsForResourceRequest) + o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "TagResource" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: TagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: TagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "UntagResource" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UntagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: UntagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + + api.add_operation(:update_export, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateExport" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateExportRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateExportResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/customizations.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_parameters.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_parameters.rb new file mode 100644 index 00000000000..01b589c373e --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_parameters.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_provider.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_provider.rb new file mode 100644 index 00000000000..bdc3c24effd --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoint_provider.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws") + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports-fips.#{region}.api.aws", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports.us-east-1.api.aws", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"bcm-data-exports", "signingRegion"=>"us-east-1"}]}) + end + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://bcm-data-exports.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoints.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoints.rb new file mode 100644 index 00000000000..c00c641b340 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/endpoints.rb @@ -0,0 +1,172 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::BCMDataExports + # @api private + module Endpoints + + class CreateExport + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteExport + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetExecution + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetExport + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetTable + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListExecutions + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListExports + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListTables + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListTagsForResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class TagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UntagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateExport + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::BCMDataExports::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/errors.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/errors.rb new file mode 100644 index 00000000000..0338d72218b --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/errors.rb @@ -0,0 +1,168 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + + # When BCMDataExports returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::BCMDataExports::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all BCMDataExports errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::BCMDataExports::Errors::ServiceError + # # rescues all BCMDataExports API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {InternalServerException} + # * {ResourceNotFoundException} + # * {ServiceQuotaExceededException} + # * {ThrottlingException} + # * {ValidationException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::BCMDataExports::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ResourceNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::BCMDataExports::Types::ResourceNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + end + + class ServiceQuotaExceededException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::BCMDataExports::Types::ServiceQuotaExceededException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + + # @return [String] + def service_code + @data[:service_code] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::BCMDataExports::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + + # @return [String] + def service_code + @data[:service_code] + end + end + + class ValidationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::BCMDataExports::Types::ValidationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def fields + @data[:fields] + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def reason + @data[:reason] + end + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/plugins/endpoints.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/plugins/endpoints.rb new file mode 100644 index 00000000000..36b88c5251f --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/plugins/endpoints.rb @@ -0,0 +1,92 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::BCMDataExports + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::BCMDataExports::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::BCMDataExports::EndpointParameters`' + ) do |cfg| + Aws::BCMDataExports::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :create_export + Aws::BCMDataExports::Endpoints::CreateExport.build(context) + when :delete_export + Aws::BCMDataExports::Endpoints::DeleteExport.build(context) + when :get_execution + Aws::BCMDataExports::Endpoints::GetExecution.build(context) + when :get_export + Aws::BCMDataExports::Endpoints::GetExport.build(context) + when :get_table + Aws::BCMDataExports::Endpoints::GetTable.build(context) + when :list_executions + Aws::BCMDataExports::Endpoints::ListExecutions.build(context) + when :list_exports + Aws::BCMDataExports::Endpoints::ListExports.build(context) + when :list_tables + Aws::BCMDataExports::Endpoints::ListTables.build(context) + when :list_tags_for_resource + Aws::BCMDataExports::Endpoints::ListTagsForResource.build(context) + when :tag_resource + Aws::BCMDataExports::Endpoints::TagResource.build(context) + when :untag_resource + Aws::BCMDataExports::Endpoints::UntagResource.build(context) + when :update_export + Aws::BCMDataExports::Endpoints::UpdateExport.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/resource.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/resource.rb new file mode 100644 index 00000000000..0f39aed72ea --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/types.rb b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/types.rb new file mode 100644 index 00000000000..da828fcf4ac --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/lib/aws-sdk-bcmdataexports/types.rb @@ -0,0 +1,919 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::BCMDataExports + module Types + + # Includes basic information for a data column such as its description, + # name, and type. + # + # @!attribute [rw] description + # The description for a column. + # @return [String] + # + # @!attribute [rw] name + # The column name. + # @return [String] + # + # @!attribute [rw] type + # The kind of data a column stores. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/Column AWS API Documentation + # + class Column < Struct.new( + :description, + :name, + :type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export + # The details of the export, including data query, name, description, + # and destination configuration. + # @return [Types::Export] + # + # @!attribute [rw] resource_tags + # An optional list of tags to associate with the specified export. + # Each tag consists of a key and a value, and each key must be unique + # for the resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/CreateExportRequest AWS API Documentation + # + class CreateExportRequest < Struct.new( + :export, + :resource_tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/CreateExportResponse AWS API Documentation + # + class CreateExportResponse < Struct.new( + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # The SQL query of column selections and row filters from the data table + # you want. + # + # @!attribute [rw] query_statement + # The query statement. + # @return [String] + # + # @!attribute [rw] table_configurations + # The table configuration. + # @return [Hash>] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/DataQuery AWS API Documentation + # + class DataQuery < Struct.new( + :query_statement, + :table_configurations) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/DeleteExportRequest AWS API Documentation + # + class DeleteExportRequest < Struct.new( + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/DeleteExportResponse AWS API Documentation + # + class DeleteExportResponse < Struct.new( + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # The destinations used for data exports. + # + # @!attribute [rw] s3_destination + # An object that describes the destination of the data exports file. + # @return [Types::S3Destination] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/DestinationConfigurations AWS API Documentation + # + class DestinationConfigurations < Struct.new( + :s3_destination) + SENSITIVE = [] + include Aws::Structure + end + + # The reference for the data export update. + # + # @!attribute [rw] execution_id + # The ID for this specific execution. + # @return [String] + # + # @!attribute [rw] execution_status + # The status of this specific execution. + # @return [Types::ExecutionStatus] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ExecutionReference AWS API Documentation + # + class ExecutionReference < Struct.new( + :execution_id, + :execution_status) + SENSITIVE = [] + include Aws::Structure + end + + # The status of the execution. + # + # @!attribute [rw] completed_at + # The time when the execution was completed. + # @return [Time] + # + # @!attribute [rw] created_at + # The time when the execution was created. + # @return [Time] + # + # @!attribute [rw] last_updated_at + # The time when the execution was last updated. + # @return [Time] + # + # @!attribute [rw] status_code + # The code for the status of the execution. + # @return [String] + # + # @!attribute [rw] status_reason + # The reason for the failed status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ExecutionStatus AWS API Documentation + # + class ExecutionStatus < Struct.new( + :completed_at, + :created_at, + :last_updated_at, + :status_code, + :status_reason) + SENSITIVE = [] + include Aws::Structure + end + + # The details that are available for an export. + # + # @!attribute [rw] data_query + # The data query for this specific data export. + # @return [Types::DataQuery] + # + # @!attribute [rw] description + # The description for this specific data export. + # @return [String] + # + # @!attribute [rw] destination_configurations + # The destination configuration for this specific data export. + # @return [Types::DestinationConfigurations] + # + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @!attribute [rw] name + # The name of this specific data export. + # @return [String] + # + # @!attribute [rw] refresh_cadence + # The cadence for Amazon Web Services to update the export in your S3 + # bucket. + # @return [Types::RefreshCadence] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/Export AWS API Documentation + # + class Export < Struct.new( + :data_query, + :description, + :destination_configurations, + :export_arn, + :name, + :refresh_cadence) + SENSITIVE = [] + include Aws::Structure + end + + # The reference details for a given export. + # + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @!attribute [rw] export_name + # The name of this specific data export. + # @return [String] + # + # @!attribute [rw] export_status + # The status of this specific data export. + # @return [Types::ExportStatus] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ExportReference AWS API Documentation + # + class ExportReference < Struct.new( + :export_arn, + :export_name, + :export_status) + SENSITIVE = [] + include Aws::Structure + end + + # The status of the data export. + # + # @!attribute [rw] created_at + # The timestamp of when the export was created. + # @return [Time] + # + # @!attribute [rw] last_refreshed_at + # The timestamp of when the export was last generated. + # @return [Time] + # + # @!attribute [rw] last_updated_at + # The timestamp of when the export was updated. + # @return [Time] + # + # @!attribute [rw] status_code + # The status code for the request. + # @return [String] + # + # @!attribute [rw] status_reason + # The description for the status code. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ExportStatus AWS API Documentation + # + class ExportStatus < Struct.new( + :created_at, + :last_refreshed_at, + :last_updated_at, + :status_code, + :status_reason) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] execution_id + # The ID for this specific execution. + # @return [String] + # + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) of the Export object that generated + # this specific execution. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExecutionRequest AWS API Documentation + # + class GetExecutionRequest < Struct.new( + :execution_id, + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] execution_id + # The ID for this specific execution. + # @return [String] + # + # @!attribute [rw] execution_status + # The status of this specific execution. + # @return [Types::ExecutionStatus] + # + # @!attribute [rw] export + # The export data for this specific execution. This export data is a + # snapshot from when the execution was generated. The data could be + # different from the current export data if the export was updated + # since the execution was generated. + # @return [Types::Export] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExecutionResponse AWS API Documentation + # + class GetExecutionResponse < Struct.new( + :execution_id, + :execution_status, + :export) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExportRequest AWS API Documentation + # + class GetExportRequest < Struct.new( + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export + # The data for this specific export. + # @return [Types::Export] + # + # @!attribute [rw] export_status + # The status of this specific export. + # @return [Types::ExportStatus] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetExportResponse AWS API Documentation + # + class GetExportResponse < Struct.new( + :export, + :export_status) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] table_name + # The name of the table. + # @return [String] + # + # @!attribute [rw] table_properties + # TableProperties are additional configurations you can provide to + # change the data and schema of a table. Each table can have different + # TableProperties. Tables are not required to have any + # TableProperties. Each table property has a default value that it + # assumes if not specified. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetTableRequest AWS API Documentation + # + class GetTableRequest < Struct.new( + :table_name, + :table_properties) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] description + # The table description. + # @return [String] + # + # @!attribute [rw] schema + # The schema of the table. + # @return [Array] + # + # @!attribute [rw] table_name + # The name of the table. + # @return [String] + # + # @!attribute [rw] table_properties + # TableProperties are additional configurations you can provide to + # change the data and schema of a table. Each table can have different + # TableProperties. Tables are not required to have any + # TableProperties. Each table property has a default value that it + # assumes if not specified. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/GetTableResponse AWS API Documentation + # + class GetTableResponse < Struct.new( + :description, + :schema, + :table_name, + :table_properties) + SENSITIVE = [] + include Aws::Structure + end + + # An error on the server occurred during the processing of your request. + # Try again later. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of objects that are returned for the request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExecutionsRequest AWS API Documentation + # + class ListExecutionsRequest < Struct.new( + :export_arn, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] executions + # The list of executions. + # @return [Array] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExecutionsResponse AWS API Documentation + # + class ListExecutionsResponse < Struct.new( + :executions, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] max_results + # The maximum number of objects that are returned for the request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExportsRequest AWS API Documentation + # + class ListExportsRequest < Struct.new( + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] exports + # The details of the exports, including name and export status. + # @return [Array] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListExportsResponse AWS API Documentation + # + class ListExportsResponse < Struct.new( + :exports, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] max_results + # The maximum number of objects that are returned for the request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTablesRequest AWS API Documentation + # + class ListTablesRequest < Struct.new( + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @!attribute [rw] tables + # The list of tables. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTablesResponse AWS API Documentation + # + class ListTablesResponse < Struct.new( + :next_token, + :tables) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] max_results + # The maximum number of objects that are returned for the request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @!attribute [rw] resource_arn + # The unique identifier for the resource. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTagsForResourceRequest AWS API Documentation + # + class ListTagsForResourceRequest < Struct.new( + :max_results, + :next_token, + :resource_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @!attribute [rw] resource_tags + # An optional list of tags to associate with the specified export. + # Each tag consists of a key and a value, and each key must be unique + # for the resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ListTagsForResourceResponse AWS API Documentation + # + class ListTagsForResourceResponse < Struct.new( + :next_token, + :resource_tags) + SENSITIVE = [] + include Aws::Structure + end + + # The cadence for Amazon Web Services to update the data export in your + # S3 bucket. + # + # @!attribute [rw] frequency + # The frequency that data exports are updated. The export refreshes + # each time the source data updates, up to three times daily. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/RefreshCadence AWS API Documentation + # + class RefreshCadence < Struct.new( + :frequency) + SENSITIVE = [] + include Aws::Structure + end + + # The specified Amazon Resource Name (ARN) in the request doesn't + # exist. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The identifier of the resource that was not found. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource that was not found. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message, + :resource_id, + :resource_type) + SENSITIVE = [] + include Aws::Structure + end + + # The tag structure that contains a tag key and value. + # + # @!attribute [rw] key + # The key that's associated with the tag. + # @return [String] + # + # @!attribute [rw] value + # The value that's associated with the tag. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ResourceTag AWS API Documentation + # + class ResourceTag < Struct.new( + :key, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the destination Amazon Simple Storage Service (Amazon S3) + # bucket name and object keys of a data exports file. + # + # @!attribute [rw] s3_bucket + # The name of the Amazon S3 bucket used as the destination of a data + # export file. + # @return [String] + # + # @!attribute [rw] s3_output_configurations + # The output configuration for the data export. + # @return [Types::S3OutputConfigurations] + # + # @!attribute [rw] s3_prefix + # The S3 path prefix you want prepended to the name of your data + # export. + # @return [String] + # + # @!attribute [rw] s3_region + # The S3 bucket Region. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/S3Destination AWS API Documentation + # + class S3Destination < Struct.new( + :s3_bucket, + :s3_output_configurations, + :s3_prefix, + :s3_region) + SENSITIVE = [] + include Aws::Structure + end + + # The compression type, file format, and overwrite preference for the + # data export. + # + # @!attribute [rw] compression + # The compression type for the data export. + # @return [String] + # + # @!attribute [rw] format + # The file format for the data export. + # @return [String] + # + # @!attribute [rw] output_type + # The output type for the data export. + # @return [String] + # + # @!attribute [rw] overwrite + # The rule to follow when generating a version of the data export + # file. You have the choice to overwrite the previous version or to be + # delivered in addition to the previous versions. Overwriting exports + # can save on Amazon S3 storage costs. Creating new export versions + # allows you to track the changes in cost and usage data over time. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/S3OutputConfigurations AWS API Documentation + # + class S3OutputConfigurations < Struct.new( + :compression, + :format, + :output_type, + :overwrite) + SENSITIVE = [] + include Aws::Structure + end + + # You've reached the limit on the number of resources you can create, + # or exceeded the size of an individual resource. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] quota_code + # The quota code that was exceeded. + # @return [String] + # + # @!attribute [rw] resource_id + # The identifier of the resource that exceeded quota. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource that exceeded quota. + # @return [String] + # + # @!attribute [rw] service_code + # The service code that exceeded quota. It will always be + # “AWSBillingAndCostManagementDataExports”. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ServiceQuotaExceededException AWS API Documentation + # + class ServiceQuotaExceededException < Struct.new( + :message, + :quota_code, + :resource_id, + :resource_type, + :service_code) + SENSITIVE = [] + include Aws::Structure + end + + # The details for the data export table. + # + # @!attribute [rw] description + # The description for the table. + # @return [String] + # + # @!attribute [rw] table_name + # The name of the table. + # @return [String] + # + # @!attribute [rw] table_properties + # The properties for the table. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/Table AWS API Documentation + # + class Table < Struct.new( + :description, + :table_name, + :table_properties) + SENSITIVE = [] + include Aws::Structure + end + + # The properties for the data export table. + # + # @!attribute [rw] default_value + # The default value for the table. + # @return [String] + # + # @!attribute [rw] description + # The description for the table. + # @return [String] + # + # @!attribute [rw] name + # The name of the table. + # @return [String] + # + # @!attribute [rw] valid_values + # The valid values for the table. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/TablePropertyDescription AWS API Documentation + # + class TablePropertyDescription < Struct.new( + :default_value, + :description, + :name, + :valid_values) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The unique identifier for the resource. + # @return [String] + # + # @!attribute [rw] resource_tags + # The tags to associate with the resource. Each tag consists of a key + # and a value, and each key must be unique for the resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/TagResourceRequest AWS API Documentation + # + class TagResourceRequest < Struct.new( + :resource_arn, + :resource_tags) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/TagResourceResponse AWS API Documentation + # + class TagResourceResponse < Aws::EmptyStructure; end + + # The request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] quota_code + # The quota code that exceeded the throttling limit. + # @return [String] + # + # @!attribute [rw] service_code + # The service code that exceeded the throttling limit. It will always + # be “AWSBillingAndCostManagementDataExports”. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message, + :quota_code, + :service_code) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The unique identifier for the resource. + # @return [String] + # + # @!attribute [rw] resource_tag_keys + # The tag keys that are associated with the resource ARN. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UntagResourceRequest AWS API Documentation + # + class UntagResourceRequest < Struct.new( + :resource_arn, + :resource_tag_keys) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UntagResourceResponse AWS API Documentation + # + class UntagResourceResponse < Aws::EmptyStructure; end + + # @!attribute [rw] export + # The name and query details for the export. + # @return [Types::Export] + # + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UpdateExportRequest AWS API Documentation + # + class UpdateExportRequest < Struct.new( + :export, + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] export_arn + # The Amazon Resource Name (ARN) for this export. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/UpdateExportResponse AWS API Documentation + # + class UpdateExportResponse < Struct.new( + :export_arn) + SENSITIVE = [] + include Aws::Structure + end + + # The input fails to satisfy the constraints specified by an Amazon Web + # Services service. + # + # @!attribute [rw] fields + # The list of fields that are invalid. + # @return [Array] + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] reason + # The reason for the validation exception. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ValidationException AWS API Documentation + # + class ValidationException < Struct.new( + :fields, + :message, + :reason) + SENSITIVE = [] + include Aws::Structure + end + + # The input failed to meet the constraints specified by the Amazon Web + # Services service in a specified field. + # + # @!attribute [rw] message + # A message with the reason for the validation exception error. + # @return [String] + # + # @!attribute [rw] name + # The field name where the invalid entry was detected. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/bcm-data-exports-2023-11-26/ValidationExceptionField AWS API Documentation + # + class ValidationExceptionField < Struct.new( + :message, + :name) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/spec/endpoint_provider_spec.rb b/gems/aws-sdk-bcmdataexports/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..b16846b7fb4 --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/spec/endpoint_provider_spec.rb @@ -0,0 +1,170 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::BCMDataExports + describe EndpointProvider do + subject { Aws::BCMDataExports::EndpointProvider.new } + + context 'For region aws-global with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"bcm-data-exports", "signingRegion"=>"us-east-1"}]}, "url"=>"https://bcm-data-exports.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"aws-global", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://bcm-data-exports-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"bcm-data-exports", "signingRegion"=>"us-east-1"}]}, "url"=>"https://bcm-data-exports.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://bcm-data-exports-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://bcm-data-exports.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://bcm-data-exports-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://bcm-data-exports.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-bcmdataexports/spec/spec_helper.rb b/gems/aws-sdk-bcmdataexports/spec/spec_helper.rb new file mode 100644 index 00000000000..27d11e27aca --- /dev/null +++ b/gems/aws-sdk-bcmdataexports/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-bcmdataexports' diff --git a/gems/aws-sdk-cloudtrail/CHANGELOG.md b/gems/aws-sdk-cloudtrail/CHANGELOG.md index e5b5c7c9f14..4e13090f133 100644 --- a/gems/aws-sdk-cloudtrail/CHANGELOG.md +++ b/gems/aws-sdk-cloudtrail/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.73.0 (2023-11-27) +------------------ + +* Feature - CloudTrail Lake now supports federating event data stores. giving users the ability to run queries against their event data using Amazon Athena. + 1.72.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-cloudtrail/VERSION b/gems/aws-sdk-cloudtrail/VERSION index 0834888f558..5e3a4256626 100644 --- a/gems/aws-sdk-cloudtrail/VERSION +++ b/gems/aws-sdk-cloudtrail/VERSION @@ -1 +1 @@ -1.72.0 +1.73.0 diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail.rb index 14a1c7e31da..e3e841bd6df 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail.rb @@ -52,6 +52,6 @@ # @!group service module Aws::CloudTrail - GEM_VERSION = '1.72.0' + GEM_VERSION = '1.73.0' end diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client.rb index ef613f419f2..dfc54edfd5d 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client.rb @@ -997,8 +997,9 @@ def delete_channel(params = {}, options = {}) # the event data store enters a `PENDING_DELETION` state, and is # automatically deleted after a wait period of seven days. # `TerminationProtectionEnabled` must be set to `False` on the event - # data store; this operation cannot work if - # `TerminationProtectionEnabled` is `True`. + # data store and the `FederationStatus` must be `DISABLED`. You cannot + # delete an event data store if `TerminationProtectionEnabled` is `True` + # or the `FederationStatus` is `ENABLED`. # # After you run `DeleteEventDataStore` on an event data store, you # cannot run `ListQueries`, `DescribeQuery`, or `GetQueryResults` on @@ -1238,6 +1239,109 @@ def describe_trails(params = {}, options = {}) req.send_request(options) end + # Disables Lake query federation on the specified event data store. When + # you disable federation, CloudTrail removes the metadata associated + # with the federated event data store in the Glue Data Catalog and + # removes registration for the federation role ARN and event data store + # in Lake Formation. No CloudTrail Lake data is deleted when you disable + # federation. + # + # @option params [required, String] :event_data_store + # The ARN (or ID suffix of the ARN) of the event data store for which + # you want to disable Lake query federation. + # + # @return [Types::DisableFederationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DisableFederationResponse#event_data_store_arn #event_data_store_arn} => String + # * {Types::DisableFederationResponse#federation_status #federation_status} => String + # + # @example Request syntax with placeholder values + # + # resp = client.disable_federation({ + # event_data_store: "EventDataStoreArn", # required + # }) + # + # @example Response structure + # + # resp.event_data_store_arn #=> String + # resp.federation_status #=> String, one of "ENABLING", "ENABLED", "DISABLING", "DISABLED" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/DisableFederation AWS API Documentation + # + # @overload disable_federation(params = {}) + # @param [Hash] params ({}) + def disable_federation(params = {}, options = {}) + req = build_request(:disable_federation, params) + req.send_request(options) + end + + # Enables Lake query federation on the specified event data store. + # Federating an event data store lets you view the metadata associated + # with the event data store in the Glue [Data Catalog][1] and run SQL + # queries against your event data using Amazon Athena. The table + # metadata stored in the Glue Data Catalog lets the Athena query engine + # know how to find, read, and process the data that you want to query. + # + # When you enable Lake query federation, CloudTrail creates a federated + # database named `aws:cloudtrail` (if the database doesn't already + # exist) and a federated table in the Glue Data Catalog. The event data + # store ID is used for the table name. CloudTrail registers the role ARN + # and event data store in [Lake Formation][2], the service responsible + # for revoking or granting permissions to the federated resources in the + # Glue Data Catalog. + # + # For more information about Lake query federation, see [Federate an + # event data store][3]. + # + # + # + # [1]: https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro + # [2]: https://docs.aws.amazon.com/lake-formation/latest/dg/how-it-works.html + # [3]: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-federation.html + # + # @option params [required, String] :event_data_store + # The ARN (or ID suffix of the ARN) of the event data store for which + # you want to enable Lake query federation. + # + # @option params [required, String] :federation_role_arn + # The ARN of the federation role to use for the event data store. Amazon + # Web Services services like Lake Formation use this federation role to + # access data for the federated event data store. The federation role + # must exist in your account and provide the [required minimum + # permissions][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-federation.html#query-federation-permissions-role + # + # @return [Types::EnableFederationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::EnableFederationResponse#event_data_store_arn #event_data_store_arn} => String + # * {Types::EnableFederationResponse#federation_status #federation_status} => String + # * {Types::EnableFederationResponse#federation_role_arn #federation_role_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.enable_federation({ + # event_data_store: "EventDataStoreArn", # required + # federation_role_arn: "FederationRoleArn", # required + # }) + # + # @example Response structure + # + # resp.event_data_store_arn #=> String + # resp.federation_status #=> String, one of "ENABLING", "ENABLED", "DISABLING", "DISABLED" + # resp.federation_role_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/EnableFederation AWS API Documentation + # + # @overload enable_federation(params = {}) + # @param [Hash] params ({}) + def enable_federation(params = {}, options = {}) + req = build_request(:enable_federation, params) + req.send_request(options) + end + # Returns information about a specific channel. # # @option params [required, String] :channel @@ -1319,6 +1423,8 @@ def get_channel(params = {}, options = {}) # * {Types::GetEventDataStoreResponse#updated_timestamp #updated_timestamp} => Time # * {Types::GetEventDataStoreResponse#kms_key_id #kms_key_id} => String # * {Types::GetEventDataStoreResponse#billing_mode #billing_mode} => String + # * {Types::GetEventDataStoreResponse#federation_status #federation_status} => String + # * {Types::GetEventDataStoreResponse#federation_role_arn #federation_role_arn} => String # # @example Request syntax with placeholder values # @@ -1355,6 +1461,8 @@ def get_channel(params = {}, options = {}) # resp.updated_timestamp #=> Time # resp.kms_key_id #=> String # resp.billing_mode #=> String, one of "EXTENDABLE_RETENTION_PRICING", "FIXED_RETENTION_PRICING" + # resp.federation_status #=> String, one of "ENABLING", "ENABLED", "DISABLING", "DISABLED" + # resp.federation_role_arn #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/GetEventDataStore AWS API Documentation # @@ -3340,6 +3448,8 @@ def update_channel(params = {}, options = {}) # * {Types::UpdateEventDataStoreResponse#updated_timestamp #updated_timestamp} => Time # * {Types::UpdateEventDataStoreResponse#kms_key_id #kms_key_id} => String # * {Types::UpdateEventDataStoreResponse#billing_mode #billing_mode} => String + # * {Types::UpdateEventDataStoreResponse#federation_status #federation_status} => String + # * {Types::UpdateEventDataStoreResponse#federation_role_arn #federation_role_arn} => String # # @example Request syntax with placeholder values # @@ -3399,6 +3509,8 @@ def update_channel(params = {}, options = {}) # resp.updated_timestamp #=> Time # resp.kms_key_id #=> String # resp.billing_mode #=> String, one of "EXTENDABLE_RETENTION_PRICING", "FIXED_RETENTION_PRICING" + # resp.federation_status #=> String, one of "ENABLING", "ENABLED", "DISABLING", "DISABLED" + # resp.federation_role_arn #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/UpdateEventDataStore AWS API Documentation # @@ -3619,7 +3731,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-cloudtrail' - context[:gem_version] = '1.72.0' + context[:gem_version] = '1.73.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client_api.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client_api.rb index 594c902afc2..41efdd41e91 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client_api.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/client_api.rb @@ -13,6 +13,7 @@ module ClientApi include Seahorse::Model + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') AccountHasOngoingImportException = Shapes::StructureShape.new(name: 'AccountHasOngoingImportException') AccountId = Shapes::StringShape.new(name: 'AccountId') AccountNotFoundException = Shapes::StructureShape.new(name: 'AccountNotFoundException') @@ -43,6 +44,7 @@ module ClientApi CloudTrailAccessNotEnabledException = Shapes::StructureShape.new(name: 'CloudTrailAccessNotEnabledException') CloudTrailInvalidClientTokenIdException = Shapes::StructureShape.new(name: 'CloudTrailInvalidClientTokenIdException') CloudWatchLogsDeliveryUnavailableException = Shapes::StructureShape.new(name: 'CloudWatchLogsDeliveryUnavailableException') + ConcurrentModificationException = Shapes::StructureShape.new(name: 'ConcurrentModificationException') ConflictException = Shapes::StructureShape.new(name: 'ConflictException') CreateChannelRequest = Shapes::StructureShape.new(name: 'CreateChannelRequest') CreateChannelResponse = Shapes::StructureShape.new(name: 'CreateChannelResponse') @@ -74,6 +76,10 @@ module ClientApi Destination = Shapes::StructureShape.new(name: 'Destination') DestinationType = Shapes::StringShape.new(name: 'DestinationType') Destinations = Shapes::ListShape.new(name: 'Destinations') + DisableFederationRequest = Shapes::StructureShape.new(name: 'DisableFederationRequest') + DisableFederationResponse = Shapes::StructureShape.new(name: 'DisableFederationResponse') + EnableFederationRequest = Shapes::StructureShape.new(name: 'EnableFederationRequest') + EnableFederationResponse = Shapes::StructureShape.new(name: 'EnableFederationResponse') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') Event = Shapes::StructureShape.new(name: 'Event') EventCategory = Shapes::StringShape.new(name: 'EventCategory') @@ -81,6 +87,7 @@ module ClientApi EventDataStoreARNInvalidException = Shapes::StructureShape.new(name: 'EventDataStoreARNInvalidException') EventDataStoreAlreadyExistsException = Shapes::StructureShape.new(name: 'EventDataStoreAlreadyExistsException') EventDataStoreArn = Shapes::StringShape.new(name: 'EventDataStoreArn') + EventDataStoreFederationEnabledException = Shapes::StructureShape.new(name: 'EventDataStoreFederationEnabledException') EventDataStoreHasOngoingImportException = Shapes::StructureShape.new(name: 'EventDataStoreHasOngoingImportException') EventDataStoreKmsKeyId = Shapes::StringShape.new(name: 'EventDataStoreKmsKeyId') EventDataStoreMaxLimitExceededException = Shapes::StructureShape.new(name: 'EventDataStoreMaxLimitExceededException') @@ -93,6 +100,8 @@ module ClientApi EventSelectors = Shapes::ListShape.new(name: 'EventSelectors') EventsList = Shapes::ListShape.new(name: 'EventsList') ExcludeManagementEventSources = Shapes::ListShape.new(name: 'ExcludeManagementEventSources') + FederationRoleArn = Shapes::StringShape.new(name: 'FederationRoleArn') + FederationStatus = Shapes::StringShape.new(name: 'FederationStatus') GetChannelRequest = Shapes::StructureShape.new(name: 'GetChannelRequest') GetChannelResponse = Shapes::StructureShape.new(name: 'GetChannelResponse') GetEventDataStoreRequest = Shapes::StructureShape.new(name: 'GetEventDataStoreRequest') @@ -293,6 +302,8 @@ module ClientApi UpdateTrailRequest = Shapes::StructureShape.new(name: 'UpdateTrailRequest') UpdateTrailResponse = Shapes::StructureShape.new(name: 'UpdateTrailResponse') + AccessDeniedException.struct_class = Types::AccessDeniedException + AccountHasOngoingImportException.struct_class = Types::AccountHasOngoingImportException AccountNotFoundException.struct_class = Types::AccountNotFoundException @@ -358,6 +369,8 @@ module ClientApi CloudWatchLogsDeliveryUnavailableException.struct_class = Types::CloudWatchLogsDeliveryUnavailableException + ConcurrentModificationException.struct_class = Types::ConcurrentModificationException + ConflictException.struct_class = Types::ConflictException CreateChannelRequest.add_member(:name, Shapes::ShapeRef.new(shape: ChannelName, required: true, location_name: "Name")) @@ -491,6 +504,22 @@ module ClientApi Destinations.member = Shapes::ShapeRef.new(shape: Destination) + DisableFederationRequest.add_member(:event_data_store, Shapes::ShapeRef.new(shape: EventDataStoreArn, required: true, location_name: "EventDataStore")) + DisableFederationRequest.struct_class = Types::DisableFederationRequest + + DisableFederationResponse.add_member(:event_data_store_arn, Shapes::ShapeRef.new(shape: EventDataStoreArn, location_name: "EventDataStoreArn")) + DisableFederationResponse.add_member(:federation_status, Shapes::ShapeRef.new(shape: FederationStatus, location_name: "FederationStatus")) + DisableFederationResponse.struct_class = Types::DisableFederationResponse + + EnableFederationRequest.add_member(:event_data_store, Shapes::ShapeRef.new(shape: EventDataStoreArn, required: true, location_name: "EventDataStore")) + EnableFederationRequest.add_member(:federation_role_arn, Shapes::ShapeRef.new(shape: FederationRoleArn, required: true, location_name: "FederationRoleArn")) + EnableFederationRequest.struct_class = Types::EnableFederationRequest + + EnableFederationResponse.add_member(:event_data_store_arn, Shapes::ShapeRef.new(shape: EventDataStoreArn, location_name: "EventDataStoreArn")) + EnableFederationResponse.add_member(:federation_status, Shapes::ShapeRef.new(shape: FederationStatus, location_name: "FederationStatus")) + EnableFederationResponse.add_member(:federation_role_arn, Shapes::ShapeRef.new(shape: FederationRoleArn, location_name: "FederationRoleArn")) + EnableFederationResponse.struct_class = Types::EnableFederationResponse + Event.add_member(:event_id, Shapes::ShapeRef.new(shape: String, location_name: "EventId")) Event.add_member(:event_name, Shapes::ShapeRef.new(shape: String, location_name: "EventName")) Event.add_member(:read_only, Shapes::ShapeRef.new(shape: String, location_name: "ReadOnly")) @@ -518,6 +547,8 @@ module ClientApi EventDataStoreAlreadyExistsException.struct_class = Types::EventDataStoreAlreadyExistsException + EventDataStoreFederationEnabledException.struct_class = Types::EventDataStoreFederationEnabledException + EventDataStoreHasOngoingImportException.struct_class = Types::EventDataStoreHasOngoingImportException EventDataStoreMaxLimitExceededException.struct_class = Types::EventDataStoreMaxLimitExceededException @@ -566,6 +597,8 @@ module ClientApi GetEventDataStoreResponse.add_member(:updated_timestamp, Shapes::ShapeRef.new(shape: Date, location_name: "UpdatedTimestamp")) GetEventDataStoreResponse.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: EventDataStoreKmsKeyId, location_name: "KmsKeyId")) GetEventDataStoreResponse.add_member(:billing_mode, Shapes::ShapeRef.new(shape: BillingMode, location_name: "BillingMode")) + GetEventDataStoreResponse.add_member(:federation_status, Shapes::ShapeRef.new(shape: FederationStatus, location_name: "FederationStatus")) + GetEventDataStoreResponse.add_member(:federation_role_arn, Shapes::ShapeRef.new(shape: FederationRoleArn, location_name: "FederationRoleArn")) GetEventDataStoreResponse.struct_class = Types::GetEventDataStoreResponse GetEventSelectorsRequest.add_member(:trail_name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "TrailName")) @@ -1143,6 +1176,8 @@ module ClientApi UpdateEventDataStoreResponse.add_member(:updated_timestamp, Shapes::ShapeRef.new(shape: Date, location_name: "UpdatedTimestamp")) UpdateEventDataStoreResponse.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: EventDataStoreKmsKeyId, location_name: "KmsKeyId")) UpdateEventDataStoreResponse.add_member(:billing_mode, Shapes::ShapeRef.new(shape: BillingMode, location_name: "BillingMode")) + UpdateEventDataStoreResponse.add_member(:federation_status, Shapes::ShapeRef.new(shape: FederationStatus, location_name: "FederationStatus")) + UpdateEventDataStoreResponse.add_member(:federation_role_arn, Shapes::ShapeRef.new(shape: FederationRoleArn, location_name: "FederationRoleArn")) UpdateEventDataStoreResponse.struct_class = Types::UpdateEventDataStoreResponse UpdateTrailRequest.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "Name")) @@ -1350,6 +1385,8 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: NoManagementAccountSLRExistsException) o.errors << Shapes::ShapeRef.new(shape: ChannelExistsForEDSException) o.errors << Shapes::ShapeRef.new(shape: InsufficientDependencyServiceAccessPermissionException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreFederationEnabledException) end) api.add_operation(:delete_resource_policy, Seahorse::Model::Operation.new.tap do |o| @@ -1432,6 +1469,51 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: NoManagementAccountSLRExistsException) end) + api.add_operation(:disable_federation, Seahorse::Model::Operation.new.tap do |o| + o.name = "DisableFederation" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DisableFederationRequest) + o.output = Shapes::ShapeRef.new(shape: DisableFederationResponse) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreARNInvalidException) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: InactiveEventDataStoreException) + o.errors << Shapes::ShapeRef.new(shape: OperationNotPermittedException) + o.errors << Shapes::ShapeRef.new(shape: UnsupportedOperationException) + o.errors << Shapes::ShapeRef.new(shape: CloudTrailAccessNotEnabledException) + o.errors << Shapes::ShapeRef.new(shape: InsufficientDependencyServiceAccessPermissionException) + o.errors << Shapes::ShapeRef.new(shape: NotOrganizationMasterAccountException) + o.errors << Shapes::ShapeRef.new(shape: NoManagementAccountSLRExistsException) + o.errors << Shapes::ShapeRef.new(shape: OrganizationsNotInUseException) + o.errors << Shapes::ShapeRef.new(shape: OrganizationNotInAllFeaturesModeException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + end) + + api.add_operation(:enable_federation, Seahorse::Model::Operation.new.tap do |o| + o.name = "EnableFederation" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: EnableFederationRequest) + o.output = Shapes::ShapeRef.new(shape: EnableFederationResponse) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreARNInvalidException) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: InactiveEventDataStoreException) + o.errors << Shapes::ShapeRef.new(shape: OperationNotPermittedException) + o.errors << Shapes::ShapeRef.new(shape: UnsupportedOperationException) + o.errors << Shapes::ShapeRef.new(shape: CloudTrailAccessNotEnabledException) + o.errors << Shapes::ShapeRef.new(shape: InsufficientDependencyServiceAccessPermissionException) + o.errors << Shapes::ShapeRef.new(shape: NotOrganizationMasterAccountException) + o.errors << Shapes::ShapeRef.new(shape: NoManagementAccountSLRExistsException) + o.errors << Shapes::ShapeRef.new(shape: OrganizationsNotInUseException) + o.errors << Shapes::ShapeRef.new(shape: OrganizationNotInAllFeaturesModeException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: EventDataStoreFederationEnabledException) + end) + api.add_operation(:get_channel, Seahorse::Model::Operation.new.tap do |o| o.name = "GetChannel" o.http_method = "POST" diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/endpoints.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/endpoints.rb index 256fe71c14d..e679e54cb1e 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/endpoints.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/endpoints.rb @@ -180,6 +180,34 @@ def self.build(context) end end + class DisableFederation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudTrail::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class EnableFederation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudTrail::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetChannel def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/errors.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/errors.rb index a9b742a23b4..311ee6bdbc6 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/errors.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/errors.rb @@ -27,6 +27,7 @@ module Aws::CloudTrail # See {Seahorse::Client::RequestContext} for more information. # # ## Error Classes + # * {AccessDeniedException} # * {AccountHasOngoingImportException} # * {AccountNotFoundException} # * {AccountNotRegisteredException} @@ -41,10 +42,12 @@ module Aws::CloudTrail # * {CloudTrailAccessNotEnabledException} # * {CloudTrailInvalidClientTokenIdException} # * {CloudWatchLogsDeliveryUnavailableException} + # * {ConcurrentModificationException} # * {ConflictException} # * {DelegatedAdminAccountLimitExceededException} # * {EventDataStoreARNInvalidException} # * {EventDataStoreAlreadyExistsException} + # * {EventDataStoreFederationEnabledException} # * {EventDataStoreHasOngoingImportException} # * {EventDataStoreMaxLimitExceededException} # * {EventDataStoreNotFoundException} @@ -114,6 +117,16 @@ module Errors extend Aws::Errors::DynamicErrors + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CloudTrail::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class AccountHasOngoingImportException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -254,6 +267,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class ConcurrentModificationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CloudTrail::Types::ConcurrentModificationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class ConflictException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -294,6 +317,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class EventDataStoreFederationEnabledException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CloudTrail::Types::EventDataStoreFederationEnabledException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class EventDataStoreHasOngoingImportException < ServiceError # @param [Seahorse::Client::RequestContext] context diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/plugins/endpoints.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/plugins/endpoints.rb index 280f4a18b15..4c024b53350 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/plugins/endpoints.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/plugins/endpoints.rb @@ -80,6 +80,10 @@ def parameters_for_operation(context) Aws::CloudTrail::Endpoints::DescribeQuery.build(context) when :describe_trails Aws::CloudTrail::Endpoints::DescribeTrails.build(context) + when :disable_federation + Aws::CloudTrail::Endpoints::DisableFederation.build(context) + when :enable_federation + Aws::CloudTrail::Endpoints::EnableFederation.build(context) when :get_channel Aws::CloudTrail::Endpoints::GetChannel.build(context) when :get_event_data_store diff --git a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/types.rb b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/types.rb index 907f59b0eaf..b7cf8a1a494 100644 --- a/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/types.rb +++ b/gems/aws-sdk-cloudtrail/lib/aws-sdk-cloudtrail/types.rb @@ -10,6 +10,12 @@ module Aws::CloudTrail module Types + # You do not have sufficient access to perform this action. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Aws::EmptyStructure; end + # This exception is thrown when you start a new import and a previous # import is still in progress. # @@ -689,6 +695,14 @@ class CloudTrailInvalidClientTokenIdException < Aws::EmptyStructure; end # class CloudWatchLogsDeliveryUnavailableException < Aws::EmptyStructure; end + # You are trying to update a resource when another request is in + # progress. Allow sufficient wait time for the previous request to + # complete, then retry your request. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/ConcurrentModificationException AWS API Documentation + # + class ConcurrentModificationException < Aws::EmptyStructure; end + # This exception is thrown when the specified resource is not ready for # an operation. This can occur when you try to run an operation on a # resource before CloudTrail has time to fully load the resource, or @@ -1718,6 +1732,86 @@ class Destination < Struct.new( include Aws::Structure end + # @!attribute [rw] event_data_store + # The ARN (or ID suffix of the ARN) of the event data store for which + # you want to disable Lake query federation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/DisableFederationRequest AWS API Documentation + # + class DisableFederationRequest < Struct.new( + :event_data_store) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] event_data_store_arn + # The ARN of the event data store for which you disabled Lake query + # federation. + # @return [String] + # + # @!attribute [rw] federation_status + # The federation status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/DisableFederationResponse AWS API Documentation + # + class DisableFederationResponse < Struct.new( + :event_data_store_arn, + :federation_status) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] event_data_store + # The ARN (or ID suffix of the ARN) of the event data store for which + # you want to enable Lake query federation. + # @return [String] + # + # @!attribute [rw] federation_role_arn + # The ARN of the federation role to use for the event data store. + # Amazon Web Services services like Lake Formation use this federation + # role to access data for the federated event data store. The + # federation role must exist in your account and provide the [required + # minimum permissions][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-federation.html#query-federation-permissions-role + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/EnableFederationRequest AWS API Documentation + # + class EnableFederationRequest < Struct.new( + :event_data_store, + :federation_role_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] event_data_store_arn + # The ARN of the event data store for which you enabled Lake query + # federation. + # @return [String] + # + # @!attribute [rw] federation_status + # The federation status. + # @return [String] + # + # @!attribute [rw] federation_role_arn + # The ARN of the federation role. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/EnableFederationResponse AWS API Documentation + # + class EnableFederationResponse < Struct.new( + :event_data_store_arn, + :federation_status, + :federation_role_arn) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about an event that was returned by a lookup # request. The result includes a representation of a CloudTrail event. # @@ -1862,6 +1956,15 @@ class EventDataStoreARNInvalidException < Aws::EmptyStructure; end # class EventDataStoreAlreadyExistsException < Aws::EmptyStructure; end + # You cannot delete the event data store because Lake query federation + # is enabled. To delete the event data store, run the + # `DisableFederation` operation to disable Lake query federation on the + # event data store. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/EventDataStoreFederationEnabledException AWS API Documentation + # + class EventDataStoreFederationEnabledException < Aws::EmptyStructure; end + # This exception is thrown when you try to update or delete an event # data store that currently has an import in progress. # @@ -2100,6 +2203,23 @@ class GetEventDataStoreRequest < Struct.new( # The billing mode for the event data store. # @return [String] # + # @!attribute [rw] federation_status + # Indicates the [Lake query federation][1] status. The status is + # `ENABLED` if Lake query federation is enabled, or `DISABLED` if Lake + # query federation is disabled. You cannot delete an event data store + # if the `FederationStatus` is `ENABLED`. + # + # + # + # [1]: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-federation.html + # @return [String] + # + # @!attribute [rw] federation_role_arn + # If Lake query federation is enabled, provides the ARN of the + # federation role used to access the resources for the federated event + # data store. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/GetEventDataStoreResponse AWS API Documentation # class GetEventDataStoreResponse < Struct.new( @@ -2114,7 +2234,9 @@ class GetEventDataStoreResponse < Struct.new( :created_timestamp, :updated_timestamp, :kms_key_id, - :billing_mode) + :billing_mode, + :federation_status, + :federation_role_arn) SENSITIVE = [] include Aws::Structure end @@ -5000,6 +5122,23 @@ class UpdateEventDataStoreRequest < Struct.new( # The billing mode for the event data store. # @return [String] # + # @!attribute [rw] federation_status + # Indicates the [Lake query federation][1] status. The status is + # `ENABLED` if Lake query federation is enabled, or `DISABLED` if Lake + # query federation is disabled. You cannot delete an event data store + # if the `FederationStatus` is `ENABLED`. + # + # + # + # [1]: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-federation.html + # @return [String] + # + # @!attribute [rw] federation_role_arn + # If Lake query federation is enabled, provides the ARN of the + # federation role used to access the resources for the federated event + # data store. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/UpdateEventDataStoreResponse AWS API Documentation # class UpdateEventDataStoreResponse < Struct.new( @@ -5014,7 +5153,9 @@ class UpdateEventDataStoreResponse < Struct.new( :created_timestamp, :updated_timestamp, :kms_key_id, - :billing_mode) + :billing_mode, + :federation_status, + :federation_role_arn) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-cloudwatchlogs/CHANGELOG.md b/gems/aws-sdk-cloudwatchlogs/CHANGELOG.md index 468798dfe46..ee2bd08de71 100644 --- a/gems/aws-sdk-cloudwatchlogs/CHANGELOG.md +++ b/gems/aws-sdk-cloudwatchlogs/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.74.0 (2023-11-27) +------------------ + +* Feature - Added APIs to Create, Update, Get, List and Delete LogAnomalyDetectors and List and Update Anomalies in Detector. Added LogGroupClass attribute for LogGroups to classify loggroup as Standard loggroup with all capabilities or InfrequentAccess loggroup with limited capabilities. + 1.73.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-cloudwatchlogs/VERSION b/gems/aws-sdk-cloudwatchlogs/VERSION index 5e3a4256626..dc87e8af82f 100644 --- a/gems/aws-sdk-cloudwatchlogs/VERSION +++ b/gems/aws-sdk-cloudwatchlogs/VERSION @@ -1 +1 @@ -1.73.0 +1.74.0 diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs.rb index ecb6b07efb4..a12381d643e 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs.rb @@ -52,6 +52,6 @@ # @!group service module Aws::CloudWatchLogs - GEM_VERSION = '1.73.0' + GEM_VERSION = '1.74.0' end diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client.rb index b233e8df0eb..abec08be50d 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client.rb @@ -589,7 +589,7 @@ def cancel_export_task(params = {}, options = {}) # # # - # [1]: https://docs.aws.amazon.com/ AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html # [4]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html @@ -738,6 +738,132 @@ def create_export_task(params = {}, options = {}) req.send_request(options) end + # Creates an *anomaly detector* that regularly scans one or more log + # groups and look for patterns and anomalies in the logs. + # + # An anomaly detector can help surface issues by automatically + # discovering anomalies in your log event traffic. An anomaly detector + # uses machine learning algorithms to scan log events and find + # *patterns*. A pattern is a shared text structure that recurs among + # your log fields. Patterns provide a useful tool for analyzing large + # sets of logs because a large number of log events can often be + # compressed into a few patterns. + # + # The anomaly detector uses pattern recognition to find `anomalies`, + # which are unusual log events. It uses the `evaluationFrequency` to + # compare current log events and patterns with trained baselines. + # + # Fields within a pattern are called *tokens*. Fields that vary within a + # pattern, such as a request ID or timestamp, are referred to as + # *dynamic tokens* and represented by `<*>`. + # + # The following is an example of a pattern: + # + # `[INFO] Request time: <*> ms` + # + # This pattern represents log events like `[INFO] Request time: 327 ms` + # and other similar log events that differ only by the number, in this + # csse 327. When the pattern is displayed, the different numbers are + # replaced by `<*>` + # + # Any parts of log events that are masked as sensitive data are not + # scanned for anomalies. For more information about masking sensitive + # data, see [Help protect sensitive log data with masking][1]. + # + # + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html + # + # @option params [required, Array] :log_group_arn_list + # An array containing the ARNs of the log groups that this anomaly + # detector will watch. You must specify at least one ARN. + # + # @option params [String] :detector_name + # A name for this anomaly detector. + # + # @option params [String] :evaluation_frequency + # Specifies how often the anomaly detector is to run and look for + # anomalies. Set this value according to the frequency that the log + # group receives new logs. For example, if the log group receives new + # log events every 10 minutes, then 15 minutes might be a good setting + # for `evaluationFrequency` . + # + # @option params [String] :filter_pattern + # You can use this parameter to limit the anomaly detection model to + # examine only log events that match the pattern you specify here. For + # more information, see [Filter and Pattern Syntax][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html + # + # @option params [String] :kms_key_id + # Optionally assigns a KMS key to secure this anomaly detector and its + # findings. If a key is assigned, the anomalies found and the model used + # by this detector are encrypted at rest with the key. If a key is + # assigned to an anomaly detector, a user must have permissions for both + # this key and for the anomaly detector to retrieve information about + # the anomalies that it finds. + # + # For more information about using a KMS key and to see the required IAM + # policy, see [Use a KMS key with an anomaly detector][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/LogsAnomalyDetection-KMS.html + # + # @option params [Integer] :anomaly_visibility_time + # The number of days to have visibility on an anomaly. After this time + # period has elapsed for an anomaly, it will be automatically baselined + # and the anomaly detector will treat new occurrences of a similar + # anomaly as normal. Therefore, if you do not correct the cause of an + # anomaly during the time period specified in `anomalyVisibilityTime`, + # it will be considered normal going forward and will not be detected as + # an anomaly. + # + # @option params [Hash] :tags + # An optional list of key-value pairs to associate with the resource. + # + # For more information about tagging, see [Tagging Amazon Web Services + # resources][1] + # + # + # + # [1]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html + # + # @return [Types::CreateLogAnomalyDetectorResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateLogAnomalyDetectorResponse#anomaly_detector_arn #anomaly_detector_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_log_anomaly_detector({ + # log_group_arn_list: ["LogGroupArn"], # required + # detector_name: "DetectorName", + # evaluation_frequency: "ONE_MIN", # accepts ONE_MIN, FIVE_MIN, TEN_MIN, FIFTEEN_MIN, THIRTY_MIN, ONE_HOUR + # filter_pattern: "FilterPattern", + # kms_key_id: "KmsKeyId", + # anomaly_visibility_time: 1, + # tags: { + # "TagKey" => "TagValue", + # }, + # }) + # + # @example Response structure + # + # resp.anomaly_detector_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/CreateLogAnomalyDetector AWS API Documentation + # + # @overload create_log_anomaly_detector(params = {}) + # @param [Hash] params ({}) + def create_log_anomaly_detector(params = {}, options = {}) + req = build_request(:create_log_anomaly_detector, params) + req.send_request(options) + end + # Creates a log group with the specified name. You can create up to # 1,000,000 log groups per Region per account. # @@ -775,7 +901,7 @@ def create_export_task(params = {}, options = {}) # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html # # @option params [required, String] :log_group_name - # The name of the log group. + # A name for the log group. # # @option params [String] :kms_key_id # The Amazon Resource Name (ARN) of the KMS key to use when encrypting @@ -802,6 +928,24 @@ def create_export_task(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html # + # @option params [String] :log_group_class + # Use this parameter to specify the log group class for this log group. + # There are two classes: + # + # * The `Standard` log class supports all CloudWatch Logs features. + # + # * The `Infrequent Access` log class supports a subset of CloudWatch + # Logs features and incurs lower costs. + # + # If you omit this parameter, the default of `STANDARD` is used. + # + # For details about the features supported by each class, see [Log + # classes][1] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html + # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values @@ -812,6 +956,7 @@ def create_export_task(params = {}, options = {}) # tags: { # "TagKey" => "TagValue", # }, + # log_group_class: "STANDARD", # accepts STANDARD, INFREQUENT_ACCESS # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/CreateLogGroup AWS API Documentation @@ -1077,6 +1222,34 @@ def delete_destination(params = {}, options = {}) req.send_request(options) end + # Deletes the specified CloudWatch Logs anomaly detector. + # + # @option params [required, String] :anomaly_detector_arn + # The ARN of the anomaly detector to delete. You can find the ARNs of + # log anomaly detectors in your account by using the + # [ListLogAnomalyDetectors][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListLogAnomalyDetectors.html + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_log_anomaly_detector({ + # anomaly_detector_arn: "AnomalyDetectorArn", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteLogAnomalyDetector AWS API Documentation + # + # @overload delete_log_anomaly_detector(params = {}) + # @param [Hash] params ({}) + def delete_log_anomaly_detector(params = {}, options = {}) + req = build_request(:delete_log_anomaly_detector, params) + req.send_request(options) + end + # Deletes the specified log group and permanently deletes all the # archived log events associated with the log group. # @@ -1635,6 +1808,22 @@ def describe_export_tasks(params = {}, options = {}) # account and all log groups in all source accounts that are linked to # the monitoring account. # + # @option params [String] :log_group_class + # Specifies the log group class for this log group. There are two + # classes: + # + # * The `Standard` log class supports all CloudWatch Logs features. + # + # * The `Infrequent Access` log class supports a subset of CloudWatch + # Logs features and incurs lower costs. + # + # For details about the features supported by each class, see [Log + # classes][1] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html + # # @return [Types::DescribeLogGroupsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::DescribeLogGroupsResponse#log_groups #log_groups} => Array<Types::LogGroup> @@ -1651,6 +1840,7 @@ def describe_export_tasks(params = {}, options = {}) # next_token: "NextToken", # limit: 1, # include_linked_accounts: false, + # log_group_class: "STANDARD", # accepts STANDARD, INFREQUENT_ACCESS # }) # # @example Response structure @@ -1666,6 +1856,7 @@ def describe_export_tasks(params = {}, options = {}) # resp.log_groups[0].data_protection_status #=> String, one of "ACTIVATED", "DELETED", "ARCHIVED", "DISABLED" # resp.log_groups[0].inherited_properties #=> Array # resp.log_groups[0].inherited_properties[0] #=> String, one of "ACCOUNT_DATA_PROTECTION" + # resp.log_groups[0].log_group_class #=> String, one of "STANDARD", "INFREQUENT_ACCESS" # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeLogGroups AWS API Documentation @@ -2482,6 +2673,57 @@ def get_delivery_source(params = {}, options = {}) req.send_request(options) end + # Retrieves information about the log anomaly detector that you specify. + # + # @option params [required, String] :anomaly_detector_arn + # The ARN of the anomaly detector to retrieve information about. You can + # find the ARNs of log anomaly detectors in your account by using the + # [ListLogAnomalyDetectors][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListLogAnomalyDetectors.html + # + # @return [Types::GetLogAnomalyDetectorResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetLogAnomalyDetectorResponse#detector_name #detector_name} => String + # * {Types::GetLogAnomalyDetectorResponse#log_group_arn_list #log_group_arn_list} => Array<String> + # * {Types::GetLogAnomalyDetectorResponse#evaluation_frequency #evaluation_frequency} => String + # * {Types::GetLogAnomalyDetectorResponse#filter_pattern #filter_pattern} => String + # * {Types::GetLogAnomalyDetectorResponse#anomaly_detector_status #anomaly_detector_status} => String + # * {Types::GetLogAnomalyDetectorResponse#kms_key_id #kms_key_id} => String + # * {Types::GetLogAnomalyDetectorResponse#creation_time_stamp #creation_time_stamp} => Integer + # * {Types::GetLogAnomalyDetectorResponse#last_modified_time_stamp #last_modified_time_stamp} => Integer + # * {Types::GetLogAnomalyDetectorResponse#anomaly_visibility_time #anomaly_visibility_time} => Integer + # + # @example Request syntax with placeholder values + # + # resp = client.get_log_anomaly_detector({ + # anomaly_detector_arn: "AnomalyDetectorArn", # required + # }) + # + # @example Response structure + # + # resp.detector_name #=> String + # resp.log_group_arn_list #=> Array + # resp.log_group_arn_list[0] #=> String + # resp.evaluation_frequency #=> String, one of "ONE_MIN", "FIVE_MIN", "TEN_MIN", "FIFTEEN_MIN", "THIRTY_MIN", "ONE_HOUR" + # resp.filter_pattern #=> String + # resp.anomaly_detector_status #=> String, one of "INITIALIZING", "TRAINING", "ANALYZING", "FAILED", "DELETED", "PAUSED" + # resp.kms_key_id #=> String + # resp.creation_time_stamp #=> Integer + # resp.last_modified_time_stamp #=> Integer + # resp.anomaly_visibility_time #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetLogAnomalyDetector AWS API Documentation + # + # @overload get_log_anomaly_detector(params = {}) + # @param [Hash] params ({}) + def get_log_anomaly_detector(params = {}, options = {}) + req = build_request(:get_log_anomaly_detector, params) + req.send_request(options) + end + # Lists log events from the specified log stream. You can list all of # the log events or filter using a time range. # @@ -2793,6 +3035,137 @@ def get_query_results(params = {}, options = {}) req.send_request(options) end + # Returns a list of anomalies that log anomaly detectors have found. For + # details about the structure format of each anomaly object that is + # returned, see the example in this section. + # + # @option params [String] :anomaly_detector_arn + # Use this to optionally limit the results to only the anomalies found + # by a certain anomaly detector. + # + # @option params [String] :suppression_state + # You can specify this parameter if you want to the operation to return + # only anomalies that are currently either suppressed or unsuppressed. + # + # @option params [Integer] :limit + # The maximum number of items to return. If you don't specify a value, + # the default maximum value of 50 items is used. + # + # @option params [String] :next_token + # The token for the next set of items to return. The token expires after + # 24 hours. + # + # @return [Types::ListAnomaliesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListAnomaliesResponse#anomalies #anomalies} => Array<Types::Anomaly> + # * {Types::ListAnomaliesResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_anomalies({ + # anomaly_detector_arn: "AnomalyDetectorArn", + # suppression_state: "SUPPRESSED", # accepts SUPPRESSED, UNSUPPRESSED + # limit: 1, + # next_token: "NextToken", + # }) + # + # @example Response structure + # + # resp.anomalies #=> Array + # resp.anomalies[0].anomaly_id #=> String + # resp.anomalies[0].pattern_id #=> String + # resp.anomalies[0].anomaly_detector_arn #=> String + # resp.anomalies[0].pattern_string #=> String + # resp.anomalies[0].pattern_regex #=> String + # resp.anomalies[0].priority #=> String + # resp.anomalies[0].first_seen #=> Integer + # resp.anomalies[0].last_seen #=> Integer + # resp.anomalies[0].description #=> String + # resp.anomalies[0].active #=> Boolean + # resp.anomalies[0].state #=> String, one of "Active", "Suppressed", "Baseline" + # resp.anomalies[0].histogram #=> Hash + # resp.anomalies[0].histogram["Time"] #=> Integer + # resp.anomalies[0].log_samples #=> Array + # resp.anomalies[0].log_samples[0] #=> String + # resp.anomalies[0].pattern_tokens #=> Array + # resp.anomalies[0].pattern_tokens[0].dynamic_token_position #=> Integer + # resp.anomalies[0].pattern_tokens[0].is_dynamic #=> Boolean + # resp.anomalies[0].pattern_tokens[0].token_string #=> String + # resp.anomalies[0].pattern_tokens[0].enumerations #=> Hash + # resp.anomalies[0].pattern_tokens[0].enumerations["TokenString"] #=> Integer + # resp.anomalies[0].log_group_arn_list #=> Array + # resp.anomalies[0].log_group_arn_list[0] #=> String + # resp.anomalies[0].suppressed #=> Boolean + # resp.anomalies[0].suppressed_date #=> Integer + # resp.anomalies[0].suppressed_until #=> Integer + # resp.anomalies[0].is_pattern_level_suppression #=> Boolean + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListAnomalies AWS API Documentation + # + # @overload list_anomalies(params = {}) + # @param [Hash] params ({}) + def list_anomalies(params = {}, options = {}) + req = build_request(:list_anomalies, params) + req.send_request(options) + end + + # Retrieves a list of the log anomaly detectors in the account. + # + # @option params [String] :filter_log_group_arn + # Use this to optionally filter the results to only include anomaly + # detectors that are associated with the specified log group. + # + # @option params [Integer] :limit + # The maximum number of items to return. If you don't specify a value, + # the default maximum value of 50 items is used. + # + # @option params [String] :next_token + # The token for the next set of items to return. The token expires after + # 24 hours. + # + # @return [Types::ListLogAnomalyDetectorsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListLogAnomalyDetectorsResponse#anomaly_detectors #anomaly_detectors} => Array<Types::AnomalyDetector> + # * {Types::ListLogAnomalyDetectorsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_log_anomaly_detectors({ + # filter_log_group_arn: "LogGroupArn", + # limit: 1, + # next_token: "NextToken", + # }) + # + # @example Response structure + # + # resp.anomaly_detectors #=> Array + # resp.anomaly_detectors[0].anomaly_detector_arn #=> String + # resp.anomaly_detectors[0].detector_name #=> String + # resp.anomaly_detectors[0].log_group_arn_list #=> Array + # resp.anomaly_detectors[0].log_group_arn_list[0] #=> String + # resp.anomaly_detectors[0].evaluation_frequency #=> String, one of "ONE_MIN", "FIVE_MIN", "TEN_MIN", "FIFTEEN_MIN", "THIRTY_MIN", "ONE_HOUR" + # resp.anomaly_detectors[0].filter_pattern #=> String + # resp.anomaly_detectors[0].anomaly_detector_status #=> String, one of "INITIALIZING", "TRAINING", "ANALYZING", "FAILED", "DELETED", "PAUSED" + # resp.anomaly_detectors[0].kms_key_id #=> String + # resp.anomaly_detectors[0].creation_time_stamp #=> Integer + # resp.anomaly_detectors[0].last_modified_time_stamp #=> Integer + # resp.anomaly_detectors[0].anomaly_visibility_time #=> Integer + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListLogAnomalyDetectors AWS API Documentation + # + # @overload list_log_anomaly_detectors(params = {}) + # @param [Hash] params ({}) + def list_log_anomaly_detectors(params = {}, options = {}) + req = build_request(:list_log_anomaly_detectors, params) + req.send_request(options) + end + # Displays the tags associated with a CloudWatch Logs resource. # Currently, log groups and destinations support tagging. # @@ -3161,7 +3534,7 @@ def put_data_protection_policy(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html - # [4]: https://docs.aws.amazon.com/ AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions + # [4]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html # # @option params [required, String] :name # A name for this delivery destination. This name must be unique for all @@ -3255,7 +3628,7 @@ def put_delivery_destination(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html - # [4]: https://docs.aws.amazon.com/ AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions + # [4]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html # # @option params [required, String] :delivery_destination_name # The name of the delivery destination to assign this policy to. @@ -3332,7 +3705,7 @@ def put_delivery_destination_policy(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html - # [4]: https://docs.aws.amazon.com/ AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions + # [4]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html # # @option params [required, String] :name # A name for this delivery source. This name must be unique for all @@ -4406,6 +4779,126 @@ def untag_resource(params = {}, options = {}) req.send_request(options) end + # Use this operation to *suppress* anomaly detection for a specified + # anomaly or pattern. If you suppress an anomaly, CloudWatch Logs won’t + # report new occurrences of that anomaly and won't update that anomaly + # with new data. If you suppress a pattern, CloudWatch Logs won’t report + # any anomalies related to that pattern. + # + # You must specify either `anomalyId` or `patternId`, but you can't + # specify both parameters in the same operation. + # + # If you have previously used this operation to suppress detection of a + # pattern or anomaly, you can use it again to cause CloudWatch Logs to + # end the suppression. To do this, use this operation and specify the + # anomaly or pattern to stop suppressing, and omit the `suppressionType` + # and `suppressionPeriod` parameters. + # + # @option params [String] :anomaly_id + # If you are suppressing or unsuppressing an anomaly, specify its unique + # ID here. You can find anomaly IDs by using the [ListAnomalies][1] + # operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html + # + # @option params [String] :pattern_id + # If you are suppressing or unsuppressing an pattern, specify its unique + # ID here. You can find pattern IDs by using the [ListAnomalies][1] + # operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html + # + # @option params [required, String] :anomaly_detector_arn + # The ARN of the anomaly detector that this operation is to act on. + # + # @option params [String] :suppression_type + # Use this to specify whether the suppression to be temporary or + # infinite. If you specify `LIMITED`, you must also specify a + # `suppressionPeriod`. If you specify `INFINITE`, any value for + # `suppressionPeriod` is ignored. + # + # @option params [Types::SuppressionPeriod] :suppression_period + # If you are temporarily suppressing an anomaly or pattern, use this + # structure to specify how long the suppression is to last. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_anomaly({ + # anomaly_id: "AnomalyId", + # pattern_id: "PatternId", + # anomaly_detector_arn: "AnomalyDetectorArn", # required + # suppression_type: "LIMITED", # accepts LIMITED, INFINITE + # suppression_period: { + # value: 1, + # suppression_unit: "SECONDS", # accepts SECONDS, MINUTES, HOURS + # }, + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/UpdateAnomaly AWS API Documentation + # + # @overload update_anomaly(params = {}) + # @param [Hash] params ({}) + def update_anomaly(params = {}, options = {}) + req = build_request(:update_anomaly, params) + req.send_request(options) + end + + # Updates an existing log anomaly detector. + # + # @option params [required, String] :anomaly_detector_arn + # The ARN of the anomaly detector that you want to update. + # + # @option params [String] :evaluation_frequency + # Specifies how often the anomaly detector runs and look for anomalies. + # Set this value according to the frequency that the log group receives + # new logs. For example, if the log group receives new log events every + # 10 minutes, then setting `evaluationFrequency` to `FIFTEEN_MIN` might + # be appropriate. + # + # @option params [String] :filter_pattern + # A symbolic description of how CloudWatch Logs should interpret the + # data in each log event. For example, a log event can contain + # timestamps, IP addresses, strings, and so on. You use the filter + # pattern to specify what to look for in the log event message. + # + # @option params [Integer] :anomaly_visibility_time + # The number of days to use as the life cycle of anomalies. After this + # time, anomalies are automatically baselined and the anomaly detector + # model will treat new occurrences of similar event as normal. + # Therefore, if you do not correct the cause of an anomaly during this + # time, it will be considered normal going forward and will not be + # detected. + # + # @option params [required, Boolean] :enabled + # Use this parameter to pause or restart the anomaly detector. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_log_anomaly_detector({ + # anomaly_detector_arn: "AnomalyDetectorArn", # required + # evaluation_frequency: "ONE_MIN", # accepts ONE_MIN, FIVE_MIN, TEN_MIN, FIFTEEN_MIN, THIRTY_MIN, ONE_HOUR + # filter_pattern: "FilterPattern", + # anomaly_visibility_time: 1, + # enabled: false, # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/UpdateLogAnomalyDetector AWS API Documentation + # + # @overload update_log_anomaly_detector(params = {}) + # @param [Hash] params ({}) + def update_log_anomaly_detector(params = {}, options = {}) + req = build_request(:update_log_anomaly_detector, params) + req.send_request(options) + end + # @!endgroup # @param params ({}) @@ -4419,7 +4912,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-cloudwatchlogs' - context[:gem_version] = '1.73.0' + context[:gem_version] = '1.74.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client_api.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client_api.rb index 4e0d5959a71..6750627c56f 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client_api.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/client_api.rb @@ -21,15 +21,27 @@ module ClientApi AccountPolicy = Shapes::StructureShape.new(name: 'AccountPolicy') AccountPolicyDocument = Shapes::StringShape.new(name: 'AccountPolicyDocument') AmazonResourceName = Shapes::StringShape.new(name: 'AmazonResourceName') + Anomalies = Shapes::ListShape.new(name: 'Anomalies') + Anomaly = Shapes::StructureShape.new(name: 'Anomaly') + AnomalyDetector = Shapes::StructureShape.new(name: 'AnomalyDetector') + AnomalyDetectorArn = Shapes::StringShape.new(name: 'AnomalyDetectorArn') + AnomalyDetectorStatus = Shapes::StringShape.new(name: 'AnomalyDetectorStatus') + AnomalyDetectors = Shapes::ListShape.new(name: 'AnomalyDetectors') + AnomalyId = Shapes::StringShape.new(name: 'AnomalyId') + AnomalyVisibilityTime = Shapes::IntegerShape.new(name: 'AnomalyVisibilityTime') Arn = Shapes::StringShape.new(name: 'Arn') AssociateKmsKeyRequest = Shapes::StructureShape.new(name: 'AssociateKmsKeyRequest') + Boolean = Shapes::BooleanShape.new(name: 'Boolean') CancelExportTaskRequest = Shapes::StructureShape.new(name: 'CancelExportTaskRequest') ClientToken = Shapes::StringShape.new(name: 'ClientToken') ConflictException = Shapes::StructureShape.new(name: 'ConflictException') + Count = Shapes::IntegerShape.new(name: 'Count') CreateDeliveryRequest = Shapes::StructureShape.new(name: 'CreateDeliveryRequest') CreateDeliveryResponse = Shapes::StructureShape.new(name: 'CreateDeliveryResponse') CreateExportTaskRequest = Shapes::StructureShape.new(name: 'CreateExportTaskRequest') CreateExportTaskResponse = Shapes::StructureShape.new(name: 'CreateExportTaskResponse') + CreateLogAnomalyDetectorRequest = Shapes::StructureShape.new(name: 'CreateLogAnomalyDetectorRequest') + CreateLogAnomalyDetectorResponse = Shapes::StructureShape.new(name: 'CreateLogAnomalyDetectorResponse') CreateLogGroupRequest = Shapes::StructureShape.new(name: 'CreateLogGroupRequest') CreateLogStreamRequest = Shapes::StructureShape.new(name: 'CreateLogStreamRequest') DataAlreadyAcceptedException = Shapes::StructureShape.new(name: 'DataAlreadyAcceptedException') @@ -44,6 +56,7 @@ module ClientApi DeleteDeliveryRequest = Shapes::StructureShape.new(name: 'DeleteDeliveryRequest') DeleteDeliverySourceRequest = Shapes::StructureShape.new(name: 'DeleteDeliverySourceRequest') DeleteDestinationRequest = Shapes::StructureShape.new(name: 'DeleteDestinationRequest') + DeleteLogAnomalyDetectorRequest = Shapes::StructureShape.new(name: 'DeleteLogAnomalyDetectorRequest') DeleteLogGroupRequest = Shapes::StructureShape.new(name: 'DeleteLogGroupRequest') DeleteLogStreamRequest = Shapes::StructureShape.new(name: 'DeleteLogStreamRequest') DeleteMetricFilterRequest = Shapes::StructureShape.new(name: 'DeleteMetricFilterRequest') @@ -93,16 +106,22 @@ module ClientApi DescribeResourcePoliciesResponse = Shapes::StructureShape.new(name: 'DescribeResourcePoliciesResponse') DescribeSubscriptionFiltersRequest = Shapes::StructureShape.new(name: 'DescribeSubscriptionFiltersRequest') DescribeSubscriptionFiltersResponse = Shapes::StructureShape.new(name: 'DescribeSubscriptionFiltersResponse') + Description = Shapes::StringShape.new(name: 'Description') Destination = Shapes::StructureShape.new(name: 'Destination') DestinationArn = Shapes::StringShape.new(name: 'DestinationArn') DestinationName = Shapes::StringShape.new(name: 'DestinationName') Destinations = Shapes::ListShape.new(name: 'Destinations') + DetectorName = Shapes::StringShape.new(name: 'DetectorName') Dimensions = Shapes::MapShape.new(name: 'Dimensions') DimensionsKey = Shapes::StringShape.new(name: 'DimensionsKey') DimensionsValue = Shapes::StringShape.new(name: 'DimensionsValue') DisassociateKmsKeyRequest = Shapes::StructureShape.new(name: 'DisassociateKmsKeyRequest') Distribution = Shapes::StringShape.new(name: 'Distribution') + DynamicTokenPosition = Shapes::IntegerShape.new(name: 'DynamicTokenPosition') EncryptionKey = Shapes::StringShape.new(name: 'EncryptionKey') + Enumerations = Shapes::MapShape.new(name: 'Enumerations') + EpochMillis = Shapes::IntegerShape.new(name: 'EpochMillis') + EvaluationFrequency = Shapes::StringShape.new(name: 'EvaluationFrequency') EventId = Shapes::StringShape.new(name: 'EventId') EventMessage = Shapes::StringShape.new(name: 'EventMessage') EventNumber = Shapes::IntegerShape.new(name: 'EventNumber') @@ -137,6 +156,8 @@ module ClientApi GetDeliveryResponse = Shapes::StructureShape.new(name: 'GetDeliveryResponse') GetDeliverySourceRequest = Shapes::StructureShape.new(name: 'GetDeliverySourceRequest') GetDeliverySourceResponse = Shapes::StructureShape.new(name: 'GetDeliverySourceResponse') + GetLogAnomalyDetectorRequest = Shapes::StructureShape.new(name: 'GetLogAnomalyDetectorRequest') + GetLogAnomalyDetectorResponse = Shapes::StructureShape.new(name: 'GetLogAnomalyDetectorResponse') GetLogEventsRequest = Shapes::StructureShape.new(name: 'GetLogEventsRequest') GetLogEventsResponse = Shapes::StructureShape.new(name: 'GetLogEventsResponse') GetLogGroupFieldsRequest = Shapes::StructureShape.new(name: 'GetLogGroupFieldsRequest') @@ -145,24 +166,36 @@ module ClientApi GetLogRecordResponse = Shapes::StructureShape.new(name: 'GetLogRecordResponse') GetQueryResultsRequest = Shapes::StructureShape.new(name: 'GetQueryResultsRequest') GetQueryResultsResponse = Shapes::StructureShape.new(name: 'GetQueryResultsResponse') + Histogram = Shapes::MapShape.new(name: 'Histogram') IncludeLinkedAccounts = Shapes::BooleanShape.new(name: 'IncludeLinkedAccounts') InheritedProperties = Shapes::ListShape.new(name: 'InheritedProperties') InheritedProperty = Shapes::StringShape.new(name: 'InheritedProperty') InputLogEvent = Shapes::StructureShape.new(name: 'InputLogEvent') InputLogEvents = Shapes::ListShape.new(name: 'InputLogEvents') InputLogStreamNames = Shapes::ListShape.new(name: 'InputLogStreamNames') + Integer = Shapes::IntegerShape.new(name: 'Integer') Interleaved = Shapes::BooleanShape.new(name: 'Interleaved') InvalidOperationException = Shapes::StructureShape.new(name: 'InvalidOperationException') InvalidParameterException = Shapes::StructureShape.new(name: 'InvalidParameterException') InvalidSequenceTokenException = Shapes::StructureShape.new(name: 'InvalidSequenceTokenException') KmsKeyId = Shapes::StringShape.new(name: 'KmsKeyId') LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException') + ListAnomaliesLimit = Shapes::IntegerShape.new(name: 'ListAnomaliesLimit') + ListAnomaliesRequest = Shapes::StructureShape.new(name: 'ListAnomaliesRequest') + ListAnomaliesResponse = Shapes::StructureShape.new(name: 'ListAnomaliesResponse') + ListLogAnomalyDetectorsLimit = Shapes::IntegerShape.new(name: 'ListLogAnomalyDetectorsLimit') + ListLogAnomalyDetectorsRequest = Shapes::StructureShape.new(name: 'ListLogAnomalyDetectorsRequest') + ListLogAnomalyDetectorsResponse = Shapes::StructureShape.new(name: 'ListLogAnomalyDetectorsResponse') ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') ListTagsLogGroupRequest = Shapes::StructureShape.new(name: 'ListTagsLogGroupRequest') ListTagsLogGroupResponse = Shapes::StructureShape.new(name: 'ListTagsLogGroupResponse') + LogEvent = Shapes::StringShape.new(name: 'LogEvent') LogEventIndex = Shapes::IntegerShape.new(name: 'LogEventIndex') LogGroup = Shapes::StructureShape.new(name: 'LogGroup') + LogGroupArn = Shapes::StringShape.new(name: 'LogGroupArn') + LogGroupArnList = Shapes::ListShape.new(name: 'LogGroupArnList') + LogGroupClass = Shapes::StringShape.new(name: 'LogGroupClass') LogGroupField = Shapes::StructureShape.new(name: 'LogGroupField') LogGroupFieldList = Shapes::ListShape.new(name: 'LogGroupFieldList') LogGroupIdentifier = Shapes::StringShape.new(name: 'LogGroupIdentifier') @@ -173,6 +206,7 @@ module ClientApi LogGroups = Shapes::ListShape.new(name: 'LogGroups') LogRecord = Shapes::MapShape.new(name: 'LogRecord') LogRecordPointer = Shapes::StringShape.new(name: 'LogRecordPointer') + LogSamples = Shapes::ListShape.new(name: 'LogSamples') LogStream = Shapes::StructureShape.new(name: 'LogStream') LogStreamName = Shapes::StringShape.new(name: 'LogStreamName') LogStreamSearchedCompletely = Shapes::BooleanShape.new(name: 'LogStreamSearchedCompletely') @@ -195,11 +229,17 @@ module ClientApi OutputFormat = Shapes::StringShape.new(name: 'OutputFormat') OutputLogEvent = Shapes::StructureShape.new(name: 'OutputLogEvent') OutputLogEvents = Shapes::ListShape.new(name: 'OutputLogEvents') + PatternId = Shapes::StringShape.new(name: 'PatternId') + PatternRegex = Shapes::StringShape.new(name: 'PatternRegex') + PatternString = Shapes::StringShape.new(name: 'PatternString') + PatternToken = Shapes::StructureShape.new(name: 'PatternToken') + PatternTokens = Shapes::ListShape.new(name: 'PatternTokens') Percentage = Shapes::IntegerShape.new(name: 'Percentage') Policy = Shapes::StructureShape.new(name: 'Policy') PolicyDocument = Shapes::StringShape.new(name: 'PolicyDocument') PolicyName = Shapes::StringShape.new(name: 'PolicyName') PolicyType = Shapes::StringShape.new(name: 'PolicyType') + Priority = Shapes::StringShape.new(name: 'Priority') PutAccountPolicyRequest = Shapes::StructureShape.new(name: 'PutAccountPolicyRequest') PutAccountPolicyResponse = Shapes::StructureShape.new(name: 'PutAccountPolicyResponse') PutDataProtectionPolicyRequest = Shapes::StructureShape.new(name: 'PutDataProtectionPolicyRequest') @@ -258,6 +298,7 @@ module ClientApi StartFromHead = Shapes::BooleanShape.new(name: 'StartFromHead') StartQueryRequest = Shapes::StructureShape.new(name: 'StartQueryRequest') StartQueryResponse = Shapes::StructureShape.new(name: 'StartQueryResponse') + State = Shapes::StringShape.new(name: 'State') StatsValue = Shapes::FloatShape.new(name: 'StatsValue') StopQueryRequest = Shapes::StructureShape.new(name: 'StopQueryRequest') StopQueryResponse = Shapes::StructureShape.new(name: 'StopQueryResponse') @@ -265,6 +306,10 @@ module ClientApi SubscriptionFilter = Shapes::StructureShape.new(name: 'SubscriptionFilter') SubscriptionFilters = Shapes::ListShape.new(name: 'SubscriptionFilters') Success = Shapes::BooleanShape.new(name: 'Success') + SuppressionPeriod = Shapes::StructureShape.new(name: 'SuppressionPeriod') + SuppressionState = Shapes::StringShape.new(name: 'SuppressionState') + SuppressionType = Shapes::StringShape.new(name: 'SuppressionType') + SuppressionUnit = Shapes::StringShape.new(name: 'SuppressionUnit') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') TagList = Shapes::ListShape.new(name: 'TagList') @@ -277,13 +322,18 @@ module ClientApi TestMetricFilterRequest = Shapes::StructureShape.new(name: 'TestMetricFilterRequest') TestMetricFilterResponse = Shapes::StructureShape.new(name: 'TestMetricFilterResponse') ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Time = Shapes::StringShape.new(name: 'Time') Timestamp = Shapes::IntegerShape.new(name: 'Timestamp') Token = Shapes::StringShape.new(name: 'Token') + TokenString = Shapes::StringShape.new(name: 'TokenString') + TokenValue = Shapes::IntegerShape.new(name: 'TokenValue') TooManyTagsException = Shapes::StructureShape.new(name: 'TooManyTagsException') Unmask = Shapes::BooleanShape.new(name: 'Unmask') UnrecognizedClientException = Shapes::StructureShape.new(name: 'UnrecognizedClientException') UntagLogGroupRequest = Shapes::StructureShape.new(name: 'UntagLogGroupRequest') UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') + UpdateAnomalyRequest = Shapes::StructureShape.new(name: 'UpdateAnomalyRequest') + UpdateLogAnomalyDetectorRequest = Shapes::StructureShape.new(name: 'UpdateLogAnomalyDetectorRequest') ValidationException = Shapes::StructureShape.new(name: 'ValidationException') Value = Shapes::StringShape.new(name: 'Value') @@ -301,6 +351,43 @@ module ClientApi AccountPolicy.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId")) AccountPolicy.struct_class = Types::AccountPolicy + Anomalies.member = Shapes::ShapeRef.new(shape: Anomaly) + + Anomaly.add_member(:anomaly_id, Shapes::ShapeRef.new(shape: AnomalyId, required: true, location_name: "anomalyId")) + Anomaly.add_member(:pattern_id, Shapes::ShapeRef.new(shape: PatternId, required: true, location_name: "patternId")) + Anomaly.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, required: true, location_name: "anomalyDetectorArn")) + Anomaly.add_member(:pattern_string, Shapes::ShapeRef.new(shape: PatternString, required: true, location_name: "patternString")) + Anomaly.add_member(:pattern_regex, Shapes::ShapeRef.new(shape: PatternRegex, location_name: "patternRegex")) + Anomaly.add_member(:priority, Shapes::ShapeRef.new(shape: Priority, location_name: "priority")) + Anomaly.add_member(:first_seen, Shapes::ShapeRef.new(shape: EpochMillis, required: true, location_name: "firstSeen")) + Anomaly.add_member(:last_seen, Shapes::ShapeRef.new(shape: EpochMillis, required: true, location_name: "lastSeen")) + Anomaly.add_member(:description, Shapes::ShapeRef.new(shape: Description, required: true, location_name: "description")) + Anomaly.add_member(:active, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "active")) + Anomaly.add_member(:state, Shapes::ShapeRef.new(shape: State, required: true, location_name: "state")) + Anomaly.add_member(:histogram, Shapes::ShapeRef.new(shape: Histogram, required: true, location_name: "histogram")) + Anomaly.add_member(:log_samples, Shapes::ShapeRef.new(shape: LogSamples, required: true, location_name: "logSamples")) + Anomaly.add_member(:pattern_tokens, Shapes::ShapeRef.new(shape: PatternTokens, required: true, location_name: "patternTokens")) + Anomaly.add_member(:log_group_arn_list, Shapes::ShapeRef.new(shape: LogGroupArnList, required: true, location_name: "logGroupArnList")) + Anomaly.add_member(:suppressed, Shapes::ShapeRef.new(shape: Boolean, location_name: "suppressed")) + Anomaly.add_member(:suppressed_date, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "suppressedDate")) + Anomaly.add_member(:suppressed_until, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "suppressedUntil")) + Anomaly.add_member(:is_pattern_level_suppression, Shapes::ShapeRef.new(shape: Boolean, location_name: "isPatternLevelSuppression")) + Anomaly.struct_class = Types::Anomaly + + AnomalyDetector.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, location_name: "anomalyDetectorArn")) + AnomalyDetector.add_member(:detector_name, Shapes::ShapeRef.new(shape: DetectorName, location_name: "detectorName")) + AnomalyDetector.add_member(:log_group_arn_list, Shapes::ShapeRef.new(shape: LogGroupArnList, location_name: "logGroupArnList")) + AnomalyDetector.add_member(:evaluation_frequency, Shapes::ShapeRef.new(shape: EvaluationFrequency, location_name: "evaluationFrequency")) + AnomalyDetector.add_member(:filter_pattern, Shapes::ShapeRef.new(shape: FilterPattern, location_name: "filterPattern")) + AnomalyDetector.add_member(:anomaly_detector_status, Shapes::ShapeRef.new(shape: AnomalyDetectorStatus, location_name: "anomalyDetectorStatus")) + AnomalyDetector.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "kmsKeyId")) + AnomalyDetector.add_member(:creation_time_stamp, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "creationTimeStamp")) + AnomalyDetector.add_member(:last_modified_time_stamp, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "lastModifiedTimeStamp")) + AnomalyDetector.add_member(:anomaly_visibility_time, Shapes::ShapeRef.new(shape: AnomalyVisibilityTime, location_name: "anomalyVisibilityTime")) + AnomalyDetector.struct_class = Types::AnomalyDetector + + AnomalyDetectors.member = Shapes::ShapeRef.new(shape: AnomalyDetector) + AssociateKmsKeyRequest.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, location_name: "logGroupName")) AssociateKmsKeyRequest.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, required: true, location_name: "kmsKeyId")) AssociateKmsKeyRequest.add_member(:resource_identifier, Shapes::ShapeRef.new(shape: ResourceIdentifier, location_name: "resourceIdentifier")) @@ -331,9 +418,22 @@ module ClientApi CreateExportTaskResponse.add_member(:task_id, Shapes::ShapeRef.new(shape: ExportTaskId, location_name: "taskId")) CreateExportTaskResponse.struct_class = Types::CreateExportTaskResponse + CreateLogAnomalyDetectorRequest.add_member(:log_group_arn_list, Shapes::ShapeRef.new(shape: LogGroupArnList, required: true, location_name: "logGroupArnList")) + CreateLogAnomalyDetectorRequest.add_member(:detector_name, Shapes::ShapeRef.new(shape: DetectorName, location_name: "detectorName")) + CreateLogAnomalyDetectorRequest.add_member(:evaluation_frequency, Shapes::ShapeRef.new(shape: EvaluationFrequency, location_name: "evaluationFrequency")) + CreateLogAnomalyDetectorRequest.add_member(:filter_pattern, Shapes::ShapeRef.new(shape: FilterPattern, location_name: "filterPattern")) + CreateLogAnomalyDetectorRequest.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "kmsKeyId")) + CreateLogAnomalyDetectorRequest.add_member(:anomaly_visibility_time, Shapes::ShapeRef.new(shape: AnomalyVisibilityTime, location_name: "anomalyVisibilityTime")) + CreateLogAnomalyDetectorRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + CreateLogAnomalyDetectorRequest.struct_class = Types::CreateLogAnomalyDetectorRequest + + CreateLogAnomalyDetectorResponse.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, location_name: "anomalyDetectorArn")) + CreateLogAnomalyDetectorResponse.struct_class = Types::CreateLogAnomalyDetectorResponse + CreateLogGroupRequest.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, required: true, location_name: "logGroupName")) CreateLogGroupRequest.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "kmsKeyId")) CreateLogGroupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + CreateLogGroupRequest.add_member(:log_group_class, Shapes::ShapeRef.new(shape: LogGroupClass, location_name: "logGroupClass")) CreateLogGroupRequest.struct_class = Types::CreateLogGroupRequest CreateLogStreamRequest.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, required: true, location_name: "logGroupName")) @@ -365,6 +465,9 @@ module ClientApi DeleteDestinationRequest.add_member(:destination_name, Shapes::ShapeRef.new(shape: DestinationName, required: true, location_name: "destinationName")) DeleteDestinationRequest.struct_class = Types::DeleteDestinationRequest + DeleteLogAnomalyDetectorRequest.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, required: true, location_name: "anomalyDetectorArn")) + DeleteLogAnomalyDetectorRequest.struct_class = Types::DeleteLogAnomalyDetectorRequest + DeleteLogGroupRequest.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, required: true, location_name: "logGroupName")) DeleteLogGroupRequest.struct_class = Types::DeleteLogGroupRequest @@ -482,6 +585,7 @@ module ClientApi DescribeLogGroupsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) DescribeLogGroupsRequest.add_member(:limit, Shapes::ShapeRef.new(shape: DescribeLimit, location_name: "limit")) DescribeLogGroupsRequest.add_member(:include_linked_accounts, Shapes::ShapeRef.new(shape: IncludeLinkedAccounts, location_name: "includeLinkedAccounts")) + DescribeLogGroupsRequest.add_member(:log_group_class, Shapes::ShapeRef.new(shape: LogGroupClass, location_name: "logGroupClass")) DescribeLogGroupsRequest.struct_class = Types::DescribeLogGroupsRequest DescribeLogGroupsResponse.add_member(:log_groups, Shapes::ShapeRef.new(shape: LogGroups, location_name: "logGroups")) @@ -567,6 +671,9 @@ module ClientApi DisassociateKmsKeyRequest.add_member(:resource_identifier, Shapes::ShapeRef.new(shape: ResourceIdentifier, location_name: "resourceIdentifier")) DisassociateKmsKeyRequest.struct_class = Types::DisassociateKmsKeyRequest + Enumerations.key = Shapes::ShapeRef.new(shape: TokenString) + Enumerations.value = Shapes::ShapeRef.new(shape: TokenValue) + ExportTask.add_member(:task_id, Shapes::ShapeRef.new(shape: ExportTaskId, location_name: "taskId")) ExportTask.add_member(:task_name, Shapes::ShapeRef.new(shape: ExportTaskName, location_name: "taskName")) ExportTask.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, location_name: "logGroupName")) @@ -650,6 +757,20 @@ module ClientApi GetDeliverySourceResponse.add_member(:delivery_source, Shapes::ShapeRef.new(shape: DeliverySource, location_name: "deliverySource")) GetDeliverySourceResponse.struct_class = Types::GetDeliverySourceResponse + GetLogAnomalyDetectorRequest.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, required: true, location_name: "anomalyDetectorArn")) + GetLogAnomalyDetectorRequest.struct_class = Types::GetLogAnomalyDetectorRequest + + GetLogAnomalyDetectorResponse.add_member(:detector_name, Shapes::ShapeRef.new(shape: DetectorName, location_name: "detectorName")) + GetLogAnomalyDetectorResponse.add_member(:log_group_arn_list, Shapes::ShapeRef.new(shape: LogGroupArnList, location_name: "logGroupArnList")) + GetLogAnomalyDetectorResponse.add_member(:evaluation_frequency, Shapes::ShapeRef.new(shape: EvaluationFrequency, location_name: "evaluationFrequency")) + GetLogAnomalyDetectorResponse.add_member(:filter_pattern, Shapes::ShapeRef.new(shape: FilterPattern, location_name: "filterPattern")) + GetLogAnomalyDetectorResponse.add_member(:anomaly_detector_status, Shapes::ShapeRef.new(shape: AnomalyDetectorStatus, location_name: "anomalyDetectorStatus")) + GetLogAnomalyDetectorResponse.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "kmsKeyId")) + GetLogAnomalyDetectorResponse.add_member(:creation_time_stamp, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "creationTimeStamp")) + GetLogAnomalyDetectorResponse.add_member(:last_modified_time_stamp, Shapes::ShapeRef.new(shape: EpochMillis, location_name: "lastModifiedTimeStamp")) + GetLogAnomalyDetectorResponse.add_member(:anomaly_visibility_time, Shapes::ShapeRef.new(shape: AnomalyVisibilityTime, location_name: "anomalyVisibilityTime")) + GetLogAnomalyDetectorResponse.struct_class = Types::GetLogAnomalyDetectorResponse + GetLogEventsRequest.add_member(:log_group_name, Shapes::ShapeRef.new(shape: LogGroupName, location_name: "logGroupName")) GetLogEventsRequest.add_member(:log_group_identifier, Shapes::ShapeRef.new(shape: LogGroupIdentifier, location_name: "logGroupIdentifier")) GetLogEventsRequest.add_member(:log_stream_name, Shapes::ShapeRef.new(shape: LogStreamName, required: true, location_name: "logStreamName")) @@ -690,6 +811,9 @@ module ClientApi GetQueryResultsResponse.add_member(:encryption_key, Shapes::ShapeRef.new(shape: EncryptionKey, location_name: "encryptionKey")) GetQueryResultsResponse.struct_class = Types::GetQueryResultsResponse + Histogram.key = Shapes::ShapeRef.new(shape: Time) + Histogram.value = Shapes::ShapeRef.new(shape: Count) + InheritedProperties.member = Shapes::ShapeRef.new(shape: InheritedProperty) InputLogEvent.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "timestamp")) @@ -709,6 +833,25 @@ module ClientApi LimitExceededException.struct_class = Types::LimitExceededException + ListAnomaliesRequest.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, location_name: "anomalyDetectorArn")) + ListAnomaliesRequest.add_member(:suppression_state, Shapes::ShapeRef.new(shape: SuppressionState, location_name: "suppressionState")) + ListAnomaliesRequest.add_member(:limit, Shapes::ShapeRef.new(shape: ListAnomaliesLimit, location_name: "limit")) + ListAnomaliesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListAnomaliesRequest.struct_class = Types::ListAnomaliesRequest + + ListAnomaliesResponse.add_member(:anomalies, Shapes::ShapeRef.new(shape: Anomalies, location_name: "anomalies")) + ListAnomaliesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListAnomaliesResponse.struct_class = Types::ListAnomaliesResponse + + ListLogAnomalyDetectorsRequest.add_member(:filter_log_group_arn, Shapes::ShapeRef.new(shape: LogGroupArn, location_name: "filterLogGroupArn")) + ListLogAnomalyDetectorsRequest.add_member(:limit, Shapes::ShapeRef.new(shape: ListLogAnomalyDetectorsLimit, location_name: "limit")) + ListLogAnomalyDetectorsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListLogAnomalyDetectorsRequest.struct_class = Types::ListLogAnomalyDetectorsRequest + + ListLogAnomalyDetectorsResponse.add_member(:anomaly_detectors, Shapes::ShapeRef.new(shape: AnomalyDetectors, location_name: "anomalyDetectors")) + ListLogAnomalyDetectorsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListLogAnomalyDetectorsResponse.struct_class = Types::ListLogAnomalyDetectorsResponse + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: AmazonResourceName, required: true, location_name: "resourceArn")) ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest @@ -730,8 +873,11 @@ module ClientApi LogGroup.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "kmsKeyId")) LogGroup.add_member(:data_protection_status, Shapes::ShapeRef.new(shape: DataProtectionStatus, location_name: "dataProtectionStatus")) LogGroup.add_member(:inherited_properties, Shapes::ShapeRef.new(shape: InheritedProperties, location_name: "inheritedProperties")) + LogGroup.add_member(:log_group_class, Shapes::ShapeRef.new(shape: LogGroupClass, location_name: "logGroupClass")) LogGroup.struct_class = Types::LogGroup + LogGroupArnList.member = Shapes::ShapeRef.new(shape: LogGroupArn) + LogGroupField.add_member(:name, Shapes::ShapeRef.new(shape: Field, location_name: "name")) LogGroupField.add_member(:percent, Shapes::ShapeRef.new(shape: Percentage, location_name: "percent")) LogGroupField.struct_class = Types::LogGroupField @@ -747,6 +893,8 @@ module ClientApi LogRecord.key = Shapes::ShapeRef.new(shape: Field) LogRecord.value = Shapes::ShapeRef.new(shape: Value) + LogSamples.member = Shapes::ShapeRef.new(shape: LogEvent) + LogStream.add_member(:log_stream_name, Shapes::ShapeRef.new(shape: LogStreamName, location_name: "logStreamName")) LogStream.add_member(:creation_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationTime")) LogStream.add_member(:first_event_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "firstEventTimestamp")) @@ -797,6 +945,14 @@ module ClientApi OutputLogEvents.member = Shapes::ShapeRef.new(shape: OutputLogEvent) + PatternToken.add_member(:dynamic_token_position, Shapes::ShapeRef.new(shape: DynamicTokenPosition, location_name: "dynamicTokenPosition")) + PatternToken.add_member(:is_dynamic, Shapes::ShapeRef.new(shape: Boolean, location_name: "isDynamic")) + PatternToken.add_member(:token_string, Shapes::ShapeRef.new(shape: TokenString, location_name: "tokenString")) + PatternToken.add_member(:enumerations, Shapes::ShapeRef.new(shape: Enumerations, location_name: "enumerations")) + PatternToken.struct_class = Types::PatternToken + + PatternTokens.member = Shapes::ShapeRef.new(shape: PatternToken) + Policy.add_member(:delivery_destination_policy, Shapes::ShapeRef.new(shape: DeliveryDestinationPolicy, location_name: "deliveryDestinationPolicy")) Policy.struct_class = Types::Policy @@ -998,6 +1154,10 @@ module ClientApi SubscriptionFilters.member = Shapes::ShapeRef.new(shape: SubscriptionFilter) + SuppressionPeriod.add_member(:value, Shapes::ShapeRef.new(shape: Integer, location_name: "value")) + SuppressionPeriod.add_member(:suppression_unit, Shapes::ShapeRef.new(shape: SuppressionUnit, location_name: "suppressionUnit")) + SuppressionPeriod.struct_class = Types::SuppressionPeriod + TagKeyList.member = Shapes::ShapeRef.new(shape: TagKey) TagList.member = Shapes::ShapeRef.new(shape: TagKey) @@ -1038,6 +1198,20 @@ module ClientApi UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeyList, required: true, location_name: "tagKeys")) UntagResourceRequest.struct_class = Types::UntagResourceRequest + UpdateAnomalyRequest.add_member(:anomaly_id, Shapes::ShapeRef.new(shape: AnomalyId, location_name: "anomalyId")) + UpdateAnomalyRequest.add_member(:pattern_id, Shapes::ShapeRef.new(shape: PatternId, location_name: "patternId")) + UpdateAnomalyRequest.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, required: true, location_name: "anomalyDetectorArn")) + UpdateAnomalyRequest.add_member(:suppression_type, Shapes::ShapeRef.new(shape: SuppressionType, location_name: "suppressionType")) + UpdateAnomalyRequest.add_member(:suppression_period, Shapes::ShapeRef.new(shape: SuppressionPeriod, location_name: "suppressionPeriod")) + UpdateAnomalyRequest.struct_class = Types::UpdateAnomalyRequest + + UpdateLogAnomalyDetectorRequest.add_member(:anomaly_detector_arn, Shapes::ShapeRef.new(shape: AnomalyDetectorArn, required: true, location_name: "anomalyDetectorArn")) + UpdateLogAnomalyDetectorRequest.add_member(:evaluation_frequency, Shapes::ShapeRef.new(shape: EvaluationFrequency, location_name: "evaluationFrequency")) + UpdateLogAnomalyDetectorRequest.add_member(:filter_pattern, Shapes::ShapeRef.new(shape: FilterPattern, location_name: "filterPattern")) + UpdateLogAnomalyDetectorRequest.add_member(:anomaly_visibility_time, Shapes::ShapeRef.new(shape: AnomalyVisibilityTime, location_name: "anomalyVisibilityTime")) + UpdateLogAnomalyDetectorRequest.add_member(:enabled, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "enabled")) + UpdateLogAnomalyDetectorRequest.struct_class = Types::UpdateLogAnomalyDetectorRequest + ValidationException.struct_class = Types::ValidationException @@ -1111,6 +1285,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceAlreadyExistsException) end) + api.add_operation(:create_log_anomaly_detector, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateLogAnomalyDetector" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CreateLogAnomalyDetectorRequest) + o.output = Shapes::ShapeRef.new(shape: CreateLogAnomalyDetectorResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + end) + api.add_operation(:create_log_group, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateLogGroup" o.http_method = "POST" @@ -1226,6 +1413,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + api.add_operation(:delete_log_anomaly_detector, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteLogAnomalyDetector" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DeleteLogAnomalyDetectorRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + end) + api.add_operation(:delete_log_group, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteLogGroup" o.http_method = "POST" @@ -1589,6 +1788,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) end) + api.add_operation(:get_log_anomaly_detector, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetLogAnomalyDetector" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetLogAnomalyDetectorRequest) + o.output = Shapes::ShapeRef.new(shape: GetLogAnomalyDetectorResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + end) + api.add_operation(:get_log_events, Seahorse::Model::Operation.new.tap do |o| o.name = "GetLogEvents" o.http_method = "POST" @@ -1641,6 +1852,42 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + api.add_operation(:list_anomalies, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListAnomalies" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListAnomaliesRequest) + o.output = Shapes::ShapeRef.new(shape: ListAnomaliesResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + o[:pager] = Aws::Pager.new( + limit_key: "limit", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_log_anomaly_detectors, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListLogAnomalyDetectors" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListLogAnomalyDetectorsRequest) + o.output = Shapes::ShapeRef.new(shape: ListLogAnomalyDetectorsResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + o[:pager] = Aws::Pager.new( + limit_key: "limit", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "ListTagsForResource" o.http_method = "POST" @@ -1902,6 +2149,30 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + + api.add_operation(:update_anomaly, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateAnomaly" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateAnomalyRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + end) + + api.add_operation(:update_log_anomaly_detector, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateLogAnomalyDetector" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateLogAnomalyDetectorRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o.errors << Shapes::ShapeRef.new(shape: OperationAbortedException) + end) end end diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/endpoints.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/endpoints.rb index ea351debd24..c97be4f0796 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/endpoints.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/endpoints.rb @@ -68,6 +68,20 @@ def self.build(context) end end + class CreateLogAnomalyDetector + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateLogGroup def self.build(context) unless context.config.regional_endpoint @@ -194,6 +208,20 @@ def self.build(context) end end + class DeleteLogAnomalyDetector + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteLogGroup def self.build(context) unless context.config.regional_endpoint @@ -572,6 +600,20 @@ def self.build(context) end end + class GetLogAnomalyDetector + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetLogEvents def self.build(context) unless context.config.regional_endpoint @@ -628,6 +670,34 @@ def self.build(context) end end + class ListAnomalies + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListLogAnomalyDetectors + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListTagsForResource def self.build(context) unless context.config.regional_endpoint @@ -936,5 +1006,33 @@ def self.build(context) end end + class UpdateAnomaly + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateLogAnomalyDetector + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CloudWatchLogs::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + end end diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/plugins/endpoints.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/plugins/endpoints.rb index 4b479747bbb..84410510597 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/plugins/endpoints.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/plugins/endpoints.rb @@ -64,6 +64,8 @@ def parameters_for_operation(context) Aws::CloudWatchLogs::Endpoints::CreateDelivery.build(context) when :create_export_task Aws::CloudWatchLogs::Endpoints::CreateExportTask.build(context) + when :create_log_anomaly_detector + Aws::CloudWatchLogs::Endpoints::CreateLogAnomalyDetector.build(context) when :create_log_group Aws::CloudWatchLogs::Endpoints::CreateLogGroup.build(context) when :create_log_stream @@ -82,6 +84,8 @@ def parameters_for_operation(context) Aws::CloudWatchLogs::Endpoints::DeleteDeliverySource.build(context) when :delete_destination Aws::CloudWatchLogs::Endpoints::DeleteDestination.build(context) + when :delete_log_anomaly_detector + Aws::CloudWatchLogs::Endpoints::DeleteLogAnomalyDetector.build(context) when :delete_log_group Aws::CloudWatchLogs::Endpoints::DeleteLogGroup.build(context) when :delete_log_stream @@ -136,6 +140,8 @@ def parameters_for_operation(context) Aws::CloudWatchLogs::Endpoints::GetDeliveryDestinationPolicy.build(context) when :get_delivery_source Aws::CloudWatchLogs::Endpoints::GetDeliverySource.build(context) + when :get_log_anomaly_detector + Aws::CloudWatchLogs::Endpoints::GetLogAnomalyDetector.build(context) when :get_log_events Aws::CloudWatchLogs::Endpoints::GetLogEvents.build(context) when :get_log_group_fields @@ -144,6 +150,10 @@ def parameters_for_operation(context) Aws::CloudWatchLogs::Endpoints::GetLogRecord.build(context) when :get_query_results Aws::CloudWatchLogs::Endpoints::GetQueryResults.build(context) + when :list_anomalies + Aws::CloudWatchLogs::Endpoints::ListAnomalies.build(context) + when :list_log_anomaly_detectors + Aws::CloudWatchLogs::Endpoints::ListLogAnomalyDetectors.build(context) when :list_tags_for_resource Aws::CloudWatchLogs::Endpoints::ListTagsForResource.build(context) when :list_tags_log_group @@ -188,6 +198,10 @@ def parameters_for_operation(context) Aws::CloudWatchLogs::Endpoints::UntagLogGroup.build(context) when :untag_resource Aws::CloudWatchLogs::Endpoints::UntagResource.build(context) + when :update_anomaly + Aws::CloudWatchLogs::Endpoints::UpdateAnomaly.build(context) + when :update_log_anomaly_detector + Aws::CloudWatchLogs::Endpoints::UpdateLogAnomalyDetector.build(context) end end end diff --git a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/types.rb b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/types.rb index e7f4667df42..814f54daecc 100644 --- a/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/types.rb +++ b/gems/aws-sdk-cloudwatchlogs/lib/aws-sdk-cloudwatchlogs/types.rb @@ -59,6 +59,223 @@ class AccountPolicy < Struct.new( include Aws::Structure end + # This structure represents one anomaly that has been found by a logs + # anomaly detector. + # + # For more information about patterns and anomalies, see + # [CreateLogAnomalyDetector][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogAnomalyDetector.html + # + # @!attribute [rw] anomaly_id + # The unique ID that CloudWatch Logs assigned to this anomaly. + # @return [String] + # + # @!attribute [rw] pattern_id + # The ID of the pattern used to help identify this anomaly. + # @return [String] + # + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector that identified this anomaly. + # @return [String] + # + # @!attribute [rw] pattern_string + # The pattern used to help identify this anomaly, in string format. + # @return [String] + # + # @!attribute [rw] pattern_regex + # The pattern used to help identify this anomaly, in regular + # expression format. + # @return [String] + # + # @!attribute [rw] priority + # The priority level of this anomaly, as determined by CloudWatch + # Logs. Priority is computed based on log severity labels such as + # `FATAL` and `ERROR` and the amount of deviation from the baseline. + # Possible values are `HIGH`, `MEDIUM`, and `LOW`. + # @return [String] + # + # @!attribute [rw] first_seen + # The date and time when the anomaly detector first saw this anomaly. + # It is specified as epoch time, which is the number of seconds since + # `January 1, 1970, 00:00:00 UTC`. + # @return [Integer] + # + # @!attribute [rw] last_seen + # The date and time when the anomaly detector most recently saw this + # anomaly. It is specified as epoch time, which is the number of + # seconds since `January 1, 1970, 00:00:00 UTC`. + # @return [Integer] + # + # @!attribute [rw] description + # A human-readable description of the anomaly. This description is + # generated by CloudWatch Logs. + # @return [String] + # + # @!attribute [rw] active + # Specifies whether this anomaly is still ongoing. + # @return [Boolean] + # + # @!attribute [rw] state + # Indicates the current state of this anomaly. If it is still being + # treated as an anomaly, the value is `Active`. If you have suppressed + # this anomaly by using the [UpdateAnomaly][1] operation, the value is + # `Suppressed`. If this behavior is now considered to be normal, the + # value is `Baseline`. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateAnomaly.html + # @return [String] + # + # @!attribute [rw] histogram + # A map showing times when the anomaly detector ran, and the number of + # occurrences of this anomaly that were detected at each of those + # runs. The times are specified in epoch time, which is the number of + # seconds since `January 1, 1970, 00:00:00 UTC`. + # @return [Hash] + # + # @!attribute [rw] log_samples + # An array of sample log event messages that are considered to be part + # of this anomaly. + # @return [Array] + # + # @!attribute [rw] pattern_tokens + # An array of structures where each structure contains information + # about one token that makes up the pattern. + # @return [Array] + # + # @!attribute [rw] log_group_arn_list + # An array of ARNS of the log groups that contained log events + # considered to be part of this anomaly. + # @return [Array] + # + # @!attribute [rw] suppressed + # Indicates whether this anomaly is currently suppressed. To suppress + # an anomaly, use [UpdateAnomaly][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateAnomaly.html + # @return [Boolean] + # + # @!attribute [rw] suppressed_date + # If the anomaly is suppressed, this indicates when it was suppressed. + # @return [Integer] + # + # @!attribute [rw] suppressed_until + # If the anomaly is suppressed, this indicates when the suppression + # will end. If this value is `0`, the anomaly was suppressed with no + # expiration, with the `INFINITE` value. + # @return [Integer] + # + # @!attribute [rw] is_pattern_level_suppression + # If this anomaly is suppressed, this field is `true` if the + # suppression is because the pattern is suppressed. If `false`, then + # only this particular anomaly is suppressed. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/Anomaly AWS API Documentation + # + class Anomaly < Struct.new( + :anomaly_id, + :pattern_id, + :anomaly_detector_arn, + :pattern_string, + :pattern_regex, + :priority, + :first_seen, + :last_seen, + :description, + :active, + :state, + :histogram, + :log_samples, + :pattern_tokens, + :log_group_arn_list, + :suppressed, + :suppressed_date, + :suppressed_until, + :is_pattern_level_suppression) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about one anomaly detector in the account. + # + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector. + # @return [String] + # + # @!attribute [rw] detector_name + # The name of the anomaly detector. + # @return [String] + # + # @!attribute [rw] log_group_arn_list + # A list of the ARNs of the log groups that this anomaly detector + # watches. + # @return [Array] + # + # @!attribute [rw] evaluation_frequency + # Specifies how often the anomaly detector runs and look for + # anomalies. + # @return [String] + # + # @!attribute [rw] filter_pattern + # A symbolic description of how CloudWatch Logs should interpret the + # data in each log event. For example, a log event can contain + # timestamps, IP addresses, strings, and so on. You use the filter + # pattern to specify what to look for in the log event message. + # @return [String] + # + # @!attribute [rw] anomaly_detector_status + # Specifies the current status of the anomaly detector. To pause an + # anomaly detector, use the `enabled` parameter in the + # [UpdateLogAnomalyDetector][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateLogAnomalyDetector.html + # @return [String] + # + # @!attribute [rw] kms_key_id + # The ID of the KMS key assigned to this anomaly detector, if any. + # @return [String] + # + # @!attribute [rw] creation_time_stamp + # The date and time when this anomaly detector was created. + # @return [Integer] + # + # @!attribute [rw] last_modified_time_stamp + # The date and time when this anomaly detector was most recently + # modified. + # @return [Integer] + # + # @!attribute [rw] anomaly_visibility_time + # The number of days used as the life cycle of anomalies. After this + # time, anomalies are automatically baselined and the anomaly detector + # model will treat new occurrences of similar event as normal. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/AnomalyDetector AWS API Documentation + # + class AnomalyDetector < Struct.new( + :anomaly_detector_arn, + :detector_name, + :log_group_arn_list, + :evaluation_frequency, + :filter_pattern, + :anomaly_detector_status, + :kms_key_id, + :creation_time_stamp, + :last_modified_time_stamp, + :anomaly_visibility_time) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] log_group_name # The name of the log group. # @@ -240,8 +457,98 @@ class CreateExportTaskResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] log_group_arn_list + # An array containing the ARNs of the log groups that this anomaly + # detector will watch. You must specify at least one ARN. + # @return [Array] + # + # @!attribute [rw] detector_name + # A name for this anomaly detector. + # @return [String] + # + # @!attribute [rw] evaluation_frequency + # Specifies how often the anomaly detector is to run and look for + # anomalies. Set this value according to the frequency that the log + # group receives new logs. For example, if the log group receives new + # log events every 10 minutes, then 15 minutes might be a good setting + # for `evaluationFrequency` . + # @return [String] + # + # @!attribute [rw] filter_pattern + # You can use this parameter to limit the anomaly detection model to + # examine only log events that match the pattern you specify here. For + # more information, see [Filter and Pattern Syntax][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html + # @return [String] + # + # @!attribute [rw] kms_key_id + # Optionally assigns a KMS key to secure this anomaly detector and its + # findings. If a key is assigned, the anomalies found and the model + # used by this detector are encrypted at rest with the key. If a key + # is assigned to an anomaly detector, a user must have permissions for + # both this key and for the anomaly detector to retrieve information + # about the anomalies that it finds. + # + # For more information about using a KMS key and to see the required + # IAM policy, see [Use a KMS key with an anomaly detector][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/LogsAnomalyDetection-KMS.html + # @return [String] + # + # @!attribute [rw] anomaly_visibility_time + # The number of days to have visibility on an anomaly. After this time + # period has elapsed for an anomaly, it will be automatically + # baselined and the anomaly detector will treat new occurrences of a + # similar anomaly as normal. Therefore, if you do not correct the + # cause of an anomaly during the time period specified in + # `anomalyVisibilityTime`, it will be considered normal going forward + # and will not be detected as an anomaly. + # @return [Integer] + # + # @!attribute [rw] tags + # An optional list of key-value pairs to associate with the resource. + # + # For more information about tagging, see [Tagging Amazon Web Services + # resources][1] + # + # + # + # [1]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/CreateLogAnomalyDetectorRequest AWS API Documentation + # + class CreateLogAnomalyDetectorRequest < Struct.new( + :log_group_arn_list, + :detector_name, + :evaluation_frequency, + :filter_pattern, + :kms_key_id, + :anomaly_visibility_time, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] anomaly_detector_arn + # The ARN of the log anomaly detector that you just created. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/CreateLogAnomalyDetectorResponse AWS API Documentation + # + class CreateLogAnomalyDetectorResponse < Struct.new( + :anomaly_detector_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] log_group_name - # The name of the log group. + # A name for the log group. # @return [String] # # @!attribute [rw] kms_key_id @@ -271,12 +578,32 @@ class CreateExportTaskResponse < Struct.new( # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html # @return [Hash] # + # @!attribute [rw] log_group_class + # Use this parameter to specify the log group class for this log + # group. There are two classes: + # + # * The `Standard` log class supports all CloudWatch Logs features. + # + # * The `Infrequent Access` log class supports a subset of CloudWatch + # Logs features and incurs lower costs. + # + # If you omit this parameter, the default of `STANDARD` is used. + # + # For details about the features supported by each class, see [Log + # classes][1] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/CreateLogGroupRequest AWS API Documentation # class CreateLogGroupRequest < Struct.new( :log_group_name, :kms_key_id, - :tags) + :tags, + :log_group_class) SENSITIVE = [] include Aws::Structure end @@ -418,6 +745,24 @@ class DeleteDestinationRequest < Struct.new( include Aws::Structure end + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector to delete. You can find the ARNs of + # log anomaly detectors in your account by using the + # [ListLogAnomalyDetectors][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListLogAnomalyDetectors.html + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteLogAnomalyDetectorRequest AWS API Documentation + # + class DeleteLogAnomalyDetectorRequest < Struct.new( + :anomaly_detector_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] log_group_name # The name of the log group. # @return [String] @@ -594,9 +939,9 @@ class Delivery < Struct.new( # This structure contains information about one *delivery destination* # in your account. A delivery destination is an Amazon Web Services - # resource that represents an shared id="AWS"/> service that logs - # can be sent to. CloudWatch Logs, Amazon S3, are supported as Kinesis - # Data Firehose delivery destinations. + # resource that represents an Amazon Web Services service that logs can + # be sent to. CloudWatch Logs, Amazon S3, are supported as Kinesis Data + # Firehose delivery destinations. # # To configure logs delivery between a supported Amazon Web Services # service and a destination, you must do the following: @@ -721,7 +1066,7 @@ class DeliveryDestinationConfiguration < Struct.new( # # # - # [1]: https://docs.aws.amazon.com/ AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html # [4]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html @@ -1072,6 +1417,23 @@ class DescribeExportTasksResponse < Struct.new( # the monitoring account. # @return [Boolean] # + # @!attribute [rw] log_group_class + # Specifies the log group class for this log group. There are two + # classes: + # + # * The `Standard` log class supports all CloudWatch Logs features. + # + # * The `Infrequent Access` log class supports a subset of CloudWatch + # Logs features and incurs lower costs. + # + # For details about the features supported by each class, see [Log + # classes][1] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeLogGroupsRequest AWS API Documentation # class DescribeLogGroupsRequest < Struct.new( @@ -1080,7 +1442,8 @@ class DescribeLogGroupsRequest < Struct.new( :log_group_name_pattern, :next_token, :limit, - :include_linked_accounts) + :include_linked_accounts, + :log_group_class) SENSITIVE = [] include Aws::Structure end @@ -1929,6 +2292,93 @@ class GetDeliverySourceResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector to retrieve information about. You + # can find the ARNs of log anomaly detectors in your account by using + # the [ListLogAnomalyDetectors][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListLogAnomalyDetectors.html + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetLogAnomalyDetectorRequest AWS API Documentation + # + class GetLogAnomalyDetectorRequest < Struct.new( + :anomaly_detector_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] detector_name + # The name of the log anomaly detector + # @return [String] + # + # @!attribute [rw] log_group_arn_list + # An array of structures, where each structure contains the ARN of a + # log group associated with this anomaly detector. + # @return [Array] + # + # @!attribute [rw] evaluation_frequency + # Specifies how often the anomaly detector runs and look for + # anomalies. Set this value according to the frequency that the log + # group receives new logs. For example, if the log group receives new + # log events every 10 minutes, then setting `evaluationFrequency` to + # `FIFTEEN_MIN` might be appropriate. + # @return [String] + # + # @!attribute [rw] filter_pattern + # A symbolic description of how CloudWatch Logs should interpret the + # data in each log event. For example, a log event can contain + # timestamps, IP addresses, strings, and so on. You use the filter + # pattern to specify what to look for in the log event message. + # @return [String] + # + # @!attribute [rw] anomaly_detector_status + # Specifies whether the anomaly detector is currently active. To + # change its status, use the `enabled` parameter in the + # [UpdateLogAnomalyDetector][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateLogAnomalyDetector.html + # @return [String] + # + # @!attribute [rw] kms_key_id + # The ID of the KMS key assigned to this anomaly detector, if any. + # @return [String] + # + # @!attribute [rw] creation_time_stamp + # The date and time when this anomaly detector was created. + # @return [Integer] + # + # @!attribute [rw] last_modified_time_stamp + # The date and time when this anomaly detector was most recently + # modified. + # @return [Integer] + # + # @!attribute [rw] anomaly_visibility_time + # The number of days used as the life cycle of anomalies. After this + # time, anomalies are automatically baselined and the anomaly detector + # model will treat new occurrences of similar event as normal. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetLogAnomalyDetectorResponse AWS API Documentation + # + class GetLogAnomalyDetectorResponse < Struct.new( + :detector_name, + :log_group_arn_list, + :evaluation_frequency, + :filter_pattern, + :anomaly_detector_status, + :kms_key_id, + :creation_time_stamp, + :last_modified_time_stamp, + :anomaly_visibility_time) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] log_group_name # The name of the log group. # @@ -2247,6 +2697,101 @@ class InvalidSequenceTokenException < Struct.new( # class LimitExceededException < Aws::EmptyStructure; end + # @!attribute [rw] anomaly_detector_arn + # Use this to optionally limit the results to only the anomalies found + # by a certain anomaly detector. + # @return [String] + # + # @!attribute [rw] suppression_state + # You can specify this parameter if you want to the operation to + # return only anomalies that are currently either suppressed or + # unsuppressed. + # @return [String] + # + # @!attribute [rw] limit + # The maximum number of items to return. If you don't specify a + # value, the default maximum value of 50 items is used. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token for the next set of items to return. The token expires + # after 24 hours. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListAnomaliesRequest AWS API Documentation + # + class ListAnomaliesRequest < Struct.new( + :anomaly_detector_arn, + :suppression_state, + :limit, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] anomalies + # An array of structures, where each structure contains information + # about one anomaly that a log anomaly detector has found. + # @return [Array] + # + # @!attribute [rw] next_token + # The token for the next set of items to return. The token expires + # after 24 hours. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListAnomaliesResponse AWS API Documentation + # + class ListAnomaliesResponse < Struct.new( + :anomalies, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] filter_log_group_arn + # Use this to optionally filter the results to only include anomaly + # detectors that are associated with the specified log group. + # @return [String] + # + # @!attribute [rw] limit + # The maximum number of items to return. If you don't specify a + # value, the default maximum value of 50 items is used. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token for the next set of items to return. The token expires + # after 24 hours. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListLogAnomalyDetectorsRequest AWS API Documentation + # + class ListLogAnomalyDetectorsRequest < Struct.new( + :filter_log_group_arn, + :limit, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] anomaly_detectors + # An array of structures, where each structure in the array contains + # information about one anomaly detector. + # @return [Array] + # + # @!attribute [rw] next_token + # The token for the next set of items to return. The token expires + # after 24 hours. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListLogAnomalyDetectorsResponse AWS API Documentation + # + class ListLogAnomalyDetectorsResponse < Struct.new( + :anomaly_detectors, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The ARN of the resource that you want to view tags for. # @@ -2365,6 +2910,23 @@ class ListTagsLogGroupResponse < Struct.new( # account-level settings. # @return [Array] # + # @!attribute [rw] log_group_class + # This specifies the log group class for this log group. There are two + # classes: + # + # * The `Standard` log class supports all CloudWatch Logs features. + # + # * The `Infrequent Access` log class supports a subset of CloudWatch + # Logs features and incurs lower costs. + # + # For details about the features supported by each class, see [Log + # classes][1] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/LogGroup AWS API Documentation # class LogGroup < Struct.new( @@ -2376,7 +2938,8 @@ class LogGroup < Struct.new( :stored_bytes, :kms_key_id, :data_protection_status, - :inherited_properties) + :inherited_properties, + :log_group_class) SENSITIVE = [] include Aws::Structure end @@ -2663,6 +3226,48 @@ class OutputLogEvent < Struct.new( include Aws::Structure end + # A tructures that contains information about one pattern token related + # to an anomaly. + # + # For more information about patterns and tokens, see + # [CreateLogAnomalyDetector][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogAnomalyDetector.html + # + # @!attribute [rw] dynamic_token_position + # For a dynamic token, this indicates where in the pattern that this + # token appears, related to other dynamic tokens. The dynamic token + # that appears first has a value of `1`, the one that appears second + # is `2`, and so on. + # @return [Integer] + # + # @!attribute [rw] is_dynamic + # Specifies whether this is a dynamic token. + # @return [Boolean] + # + # @!attribute [rw] token_string + # The string represented by this token. If this is a dynamic token, + # the value will be `<*>` + # @return [String] + # + # @!attribute [rw] enumerations + # Contains the values found for a dynamic token, and the number of + # times each value was found. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PatternToken AWS API Documentation + # + class PatternToken < Struct.new( + :dynamic_token_position, + :is_dynamic, + :token_string, + :enumerations) + SENSITIVE = [] + include Aws::Structure + end + # A structure that contains information about one delivery destination # policy. # @@ -3810,6 +4415,28 @@ class SubscriptionFilter < Struct.new( include Aws::Structure end + # If you are suppressing an anomaly temporariliy, this structure defines + # how long the suppression period is to be. + # + # @!attribute [rw] value + # Specifies the number of seconds, minutes or hours to suppress this + # anomaly. There is no maximum. + # @return [Integer] + # + # @!attribute [rw] suppression_unit + # Specifies whether the value of `value` is in seconds, minutes, or + # hours. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/SuppressionPeriod AWS API Documentation + # + class SuppressionPeriod < Struct.new( + :value, + :suppression_unit) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] log_group_name # The name of the log group. # @return [String] @@ -3968,6 +4595,98 @@ class UntagResourceRequest < Struct.new( include Aws::Structure end + # @!attribute [rw] anomaly_id + # If you are suppressing or unsuppressing an anomaly, specify its + # unique ID here. You can find anomaly IDs by using the + # [ListAnomalies][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html + # @return [String] + # + # @!attribute [rw] pattern_id + # If you are suppressing or unsuppressing an pattern, specify its + # unique ID here. You can find pattern IDs by using the + # [ListAnomalies][1] operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html + # @return [String] + # + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector that this operation is to act on. + # @return [String] + # + # @!attribute [rw] suppression_type + # Use this to specify whether the suppression to be temporary or + # infinite. If you specify `LIMITED`, you must also specify a + # `suppressionPeriod`. If you specify `INFINITE`, any value for + # `suppressionPeriod` is ignored. + # @return [String] + # + # @!attribute [rw] suppression_period + # If you are temporarily suppressing an anomaly or pattern, use this + # structure to specify how long the suppression is to last. + # @return [Types::SuppressionPeriod] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/UpdateAnomalyRequest AWS API Documentation + # + class UpdateAnomalyRequest < Struct.new( + :anomaly_id, + :pattern_id, + :anomaly_detector_arn, + :suppression_type, + :suppression_period) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] anomaly_detector_arn + # The ARN of the anomaly detector that you want to update. + # @return [String] + # + # @!attribute [rw] evaluation_frequency + # Specifies how often the anomaly detector runs and look for + # anomalies. Set this value according to the frequency that the log + # group receives new logs. For example, if the log group receives new + # log events every 10 minutes, then setting `evaluationFrequency` to + # `FIFTEEN_MIN` might be appropriate. + # @return [String] + # + # @!attribute [rw] filter_pattern + # A symbolic description of how CloudWatch Logs should interpret the + # data in each log event. For example, a log event can contain + # timestamps, IP addresses, strings, and so on. You use the filter + # pattern to specify what to look for in the log event message. + # @return [String] + # + # @!attribute [rw] anomaly_visibility_time + # The number of days to use as the life cycle of anomalies. After this + # time, anomalies are automatically baselined and the anomaly detector + # model will treat new occurrences of similar event as normal. + # Therefore, if you do not correct the cause of an anomaly during this + # time, it will be considered normal going forward and will not be + # detected. + # @return [Integer] + # + # @!attribute [rw] enabled + # Use this parameter to pause or restart the anomaly detector. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/UpdateLogAnomalyDetectorRequest AWS API Documentation + # + class UpdateLogAnomalyDetectorRequest < Struct.new( + :anomaly_detector_arn, + :evaluation_frequency, + :filter_pattern, + :anomaly_visibility_time, + :enabled) + SENSITIVE = [] + include Aws::Structure + end + # One of the parameters for the request is not valid. # # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ValidationException AWS API Documentation diff --git a/gems/aws-sdk-codestarconnections/CHANGELOG.md b/gems/aws-sdk-codestarconnections/CHANGELOG.md index d9215e942ed..72225f9f0bb 100644 --- a/gems/aws-sdk-codestarconnections/CHANGELOG.md +++ b/gems/aws-sdk-codestarconnections/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.37.0 (2023-11-27) +------------------ + +* Feature - This release adds support for the CloudFormation Git sync feature. Git sync enables updating a CloudFormation stack from a template stored in a Git repository. + 1.36.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-codestarconnections/VERSION b/gems/aws-sdk-codestarconnections/VERSION index 39fc130ef85..bf50e910e62 100644 --- a/gems/aws-sdk-codestarconnections/VERSION +++ b/gems/aws-sdk-codestarconnections/VERSION @@ -1 +1 @@ -1.36.0 +1.37.0 diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections.rb index 7e64484afb0..1157b9438f5 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections.rb @@ -52,6 +52,6 @@ # @!group service module Aws::CodeStarconnections - GEM_VERSION = '1.36.0' + GEM_VERSION = '1.37.0' end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client.rb index bf2088ac173..941773d4a63 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client.rb @@ -483,6 +483,7 @@ def create_connection(params = {}, options = {}) # already be connected to the VPC. # # @option params [Array] :tags + # Tags for the host to be created. # # @return [Types::CreateHostOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # @@ -525,6 +526,133 @@ def create_host(params = {}, options = {}) req.send_request(options) end + # Creates a link to a specified external Git repository. A repository + # link allows Git sync to monitor and sync changes to files in a + # specified Git repository. + # + # @option params [required, String] :connection_arn + # The Amazon Resource Name (ARN) of the connection to be associated with + # the repository link. + # + # @option params [required, String] :owner_id + # The owner ID for the repository associated with a specific sync + # configuration, such as the owner ID in GitHub. + # + # @option params [required, String] :repository_name + # The name of the repository to be associated with the repository link. + # + # @option params [String] :encryption_key_arn + # The Amazon Resource Name (ARN) encryption key for the repository to be + # associated with the repository link. + # + # @option params [Array] :tags + # The tags for the repository to be associated with the repository link. + # + # @return [Types::CreateRepositoryLinkOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateRepositoryLinkOutput#repository_link_info #repository_link_info} => Types::RepositoryLinkInfo + # + # @example Request syntax with placeholder values + # + # resp = client.create_repository_link({ + # connection_arn: "ConnectionArn", # required + # owner_id: "OwnerId", # required + # repository_name: "RepositoryName", # required + # encryption_key_arn: "KmsKeyArn", + # tags: [ + # { + # key: "TagKey", # required + # value: "TagValue", # required + # }, + # ], + # }) + # + # @example Response structure + # + # resp.repository_link_info.connection_arn #=> String + # resp.repository_link_info.encryption_key_arn #=> String + # resp.repository_link_info.owner_id #=> String + # resp.repository_link_info.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.repository_link_info.repository_link_arn #=> String + # resp.repository_link_info.repository_link_id #=> String + # resp.repository_link_info.repository_name #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateRepositoryLink AWS API Documentation + # + # @overload create_repository_link(params = {}) + # @param [Hash] params ({}) + def create_repository_link(params = {}, options = {}) + req = build_request(:create_repository_link, params) + req.send_request(options) + end + + # Creates a sync configuration which allows Amazon Web Services to sync + # content from a Git repository to update a specified Amazon Web + # Services resource. Parameters for the sync configuration are + # determined by the sync type. + # + # @option params [required, String] :branch + # The branch in the repository from which changes will be synced. + # + # @option params [required, String] :config_file + # The file name of the configuration file that manages syncing between + # the connection and the repository. This configuration file is stored + # in the repository. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link created for the connection. A repository + # link allows Git sync to monitor and sync changes to files in a + # specified Git repository. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource (for example, a + # CloudFormation stack in the case of CFN\_STACK\_SYNC) that will be + # synchronized from the linked repository. + # + # @option params [required, String] :role_arn + # The ARN of the IAM role that grants permission for Amazon Web Services + # to use Git sync to update a given Amazon Web Services resource on your + # behalf. + # + # @option params [required, String] :sync_type + # The type of sync configuration. + # + # @return [Types::CreateSyncConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateSyncConfigurationOutput#sync_configuration #sync_configuration} => Types::SyncConfiguration + # + # @example Request syntax with placeholder values + # + # resp = client.create_sync_configuration({ + # branch: "BranchName", # required + # config_file: "DeploymentFilePath", # required + # repository_link_id: "RepositoryLinkId", # required + # resource_name: "ResourceName", # required + # role_arn: "IamRoleArn", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.sync_configuration.branch #=> String + # resp.sync_configuration.config_file #=> String + # resp.sync_configuration.owner_id #=> String + # resp.sync_configuration.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.sync_configuration.repository_link_id #=> String + # resp.sync_configuration.repository_name #=> String + # resp.sync_configuration.resource_name #=> String + # resp.sync_configuration.role_arn #=> String + # resp.sync_configuration.sync_type #=> String, one of "CFN_STACK_SYNC" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateSyncConfiguration AWS API Documentation + # + # @overload create_sync_configuration(params = {}) + # @param [Hash] params ({}) + def create_sync_configuration(params = {}, options = {}) + req = build_request(:create_sync_configuration, params) + req.send_request(options) + end + # The connection to be deleted. # # @option params [required, String] :connection_arn @@ -579,6 +707,57 @@ def delete_host(params = {}, options = {}) req.send_request(options) end + # Deletes the association between your connection and a specified + # external Git repository. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link to be deleted. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_repository_link({ + # repository_link_id: "RepositoryLinkId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteRepositoryLink AWS API Documentation + # + # @overload delete_repository_link(params = {}) + # @param [Hash] params ({}) + def delete_repository_link(params = {}, options = {}) + req = build_request(:delete_repository_link, params) + req.send_request(options) + end + + # Deletes the sync configuration for a specified repository and + # connection. + # + # @option params [required, String] :sync_type + # The type of sync configuration to be deleted. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource associated with the sync + # configuration to be deleted. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_sync_configuration({ + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # resource_name: "ResourceName", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteSyncConfiguration AWS API Documentation + # + # @overload delete_sync_configuration(params = {}) + # @param [Hash] params ({}) + def delete_sync_configuration(params = {}, options = {}) + req = build_request(:delete_sync_configuration, params) + req.send_request(options) + end + # Returns the connection ARN and details such as status, owner, and # provider type. # @@ -655,6 +834,258 @@ def get_host(params = {}, options = {}) req.send_request(options) end + # Returns details about a repository link. A repository link allows Git + # sync to monitor and sync changes from files in a specified Git + # repository. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link to get. + # + # @return [Types::GetRepositoryLinkOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetRepositoryLinkOutput#repository_link_info #repository_link_info} => Types::RepositoryLinkInfo + # + # @example Request syntax with placeholder values + # + # resp = client.get_repository_link({ + # repository_link_id: "RepositoryLinkId", # required + # }) + # + # @example Response structure + # + # resp.repository_link_info.connection_arn #=> String + # resp.repository_link_info.encryption_key_arn #=> String + # resp.repository_link_info.owner_id #=> String + # resp.repository_link_info.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.repository_link_info.repository_link_arn #=> String + # resp.repository_link_info.repository_link_id #=> String + # resp.repository_link_info.repository_name #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositoryLink AWS API Documentation + # + # @overload get_repository_link(params = {}) + # @param [Hash] params ({}) + def get_repository_link(params = {}, options = {}) + req = build_request(:get_repository_link, params) + req.send_request(options) + end + + # Returns details about the sync status for a repository. A repository + # sync uses Git sync to push and pull changes from your remote + # repository. + # + # @option params [required, String] :branch + # The branch of the repository link for the requested repository sync + # status. + # + # @option params [required, String] :repository_link_id + # The repository link ID for the requested repository sync status. + # + # @option params [required, String] :sync_type + # The sync type of the requested sync status. + # + # @return [Types::GetRepositorySyncStatusOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetRepositorySyncStatusOutput#latest_sync #latest_sync} => Types::RepositorySyncAttempt + # + # @example Request syntax with placeholder values + # + # resp = client.get_repository_sync_status({ + # branch: "BranchName", # required + # repository_link_id: "RepositoryLinkId", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.latest_sync.started_at #=> Time + # resp.latest_sync.status #=> String, one of "FAILED", "INITIATED", "IN_PROGRESS", "SUCCEEDED", "QUEUED" + # resp.latest_sync.events #=> Array + # resp.latest_sync.events[0].event #=> String + # resp.latest_sync.events[0].external_id #=> String + # resp.latest_sync.events[0].time #=> Time + # resp.latest_sync.events[0].type #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositorySyncStatus AWS API Documentation + # + # @overload get_repository_sync_status(params = {}) + # @param [Hash] params ({}) + def get_repository_sync_status(params = {}, options = {}) + req = build_request(:get_repository_sync_status, params) + req.send_request(options) + end + + # Returns the status of the sync with the Git repository for a specific + # Amazon Web Services resource. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource for the sync status with + # the Git repository. + # + # @option params [required, String] :sync_type + # The sync type for the sync status with the Git repository. + # + # @return [Types::GetResourceSyncStatusOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetResourceSyncStatusOutput#desired_state #desired_state} => Types::Revision + # * {Types::GetResourceSyncStatusOutput#latest_successful_sync #latest_successful_sync} => Types::ResourceSyncAttempt + # * {Types::GetResourceSyncStatusOutput#latest_sync #latest_sync} => Types::ResourceSyncAttempt + # + # @example Request syntax with placeholder values + # + # resp = client.get_resource_sync_status({ + # resource_name: "ResourceName", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.desired_state.branch #=> String + # resp.desired_state.directory #=> String + # resp.desired_state.owner_id #=> String + # resp.desired_state.repository_name #=> String + # resp.desired_state.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.desired_state.sha #=> String + # resp.latest_successful_sync.events #=> Array + # resp.latest_successful_sync.events[0].event #=> String + # resp.latest_successful_sync.events[0].external_id #=> String + # resp.latest_successful_sync.events[0].time #=> Time + # resp.latest_successful_sync.events[0].type #=> String + # resp.latest_successful_sync.initial_revision.branch #=> String + # resp.latest_successful_sync.initial_revision.directory #=> String + # resp.latest_successful_sync.initial_revision.owner_id #=> String + # resp.latest_successful_sync.initial_revision.repository_name #=> String + # resp.latest_successful_sync.initial_revision.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.latest_successful_sync.initial_revision.sha #=> String + # resp.latest_successful_sync.started_at #=> Time + # resp.latest_successful_sync.status #=> String, one of "FAILED", "INITIATED", "IN_PROGRESS", "SUCCEEDED" + # resp.latest_successful_sync.target_revision.branch #=> String + # resp.latest_successful_sync.target_revision.directory #=> String + # resp.latest_successful_sync.target_revision.owner_id #=> String + # resp.latest_successful_sync.target_revision.repository_name #=> String + # resp.latest_successful_sync.target_revision.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.latest_successful_sync.target_revision.sha #=> String + # resp.latest_successful_sync.target #=> String + # resp.latest_sync.events #=> Array + # resp.latest_sync.events[0].event #=> String + # resp.latest_sync.events[0].external_id #=> String + # resp.latest_sync.events[0].time #=> Time + # resp.latest_sync.events[0].type #=> String + # resp.latest_sync.initial_revision.branch #=> String + # resp.latest_sync.initial_revision.directory #=> String + # resp.latest_sync.initial_revision.owner_id #=> String + # resp.latest_sync.initial_revision.repository_name #=> String + # resp.latest_sync.initial_revision.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.latest_sync.initial_revision.sha #=> String + # resp.latest_sync.started_at #=> Time + # resp.latest_sync.status #=> String, one of "FAILED", "INITIATED", "IN_PROGRESS", "SUCCEEDED" + # resp.latest_sync.target_revision.branch #=> String + # resp.latest_sync.target_revision.directory #=> String + # resp.latest_sync.target_revision.owner_id #=> String + # resp.latest_sync.target_revision.repository_name #=> String + # resp.latest_sync.target_revision.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.latest_sync.target_revision.sha #=> String + # resp.latest_sync.target #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetResourceSyncStatus AWS API Documentation + # + # @overload get_resource_sync_status(params = {}) + # @param [Hash] params ({}) + def get_resource_sync_status(params = {}, options = {}) + req = build_request(:get_resource_sync_status, params) + req.send_request(options) + end + + # Returns a list of the most recent sync blockers. + # + # @option params [required, String] :sync_type + # The sync type for the sync blocker summary. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource currently blocked from + # automatically being synced from a Git repository. + # + # @return [Types::GetSyncBlockerSummaryOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetSyncBlockerSummaryOutput#sync_blocker_summary #sync_blocker_summary} => Types::SyncBlockerSummary + # + # @example Request syntax with placeholder values + # + # resp = client.get_sync_blocker_summary({ + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # resource_name: "ResourceName", # required + # }) + # + # @example Response structure + # + # resp.sync_blocker_summary.resource_name #=> String + # resp.sync_blocker_summary.parent_resource_name #=> String + # resp.sync_blocker_summary.latest_blockers #=> Array + # resp.sync_blocker_summary.latest_blockers[0].id #=> String + # resp.sync_blocker_summary.latest_blockers[0].type #=> String, one of "AUTOMATED" + # resp.sync_blocker_summary.latest_blockers[0].status #=> String, one of "ACTIVE", "RESOLVED" + # resp.sync_blocker_summary.latest_blockers[0].created_reason #=> String + # resp.sync_blocker_summary.latest_blockers[0].created_at #=> Time + # resp.sync_blocker_summary.latest_blockers[0].contexts #=> Array + # resp.sync_blocker_summary.latest_blockers[0].contexts[0].key #=> String + # resp.sync_blocker_summary.latest_blockers[0].contexts[0].value #=> String + # resp.sync_blocker_summary.latest_blockers[0].resolved_reason #=> String + # resp.sync_blocker_summary.latest_blockers[0].resolved_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncBlockerSummary AWS API Documentation + # + # @overload get_sync_blocker_summary(params = {}) + # @param [Hash] params ({}) + def get_sync_blocker_summary(params = {}, options = {}) + req = build_request(:get_sync_blocker_summary, params) + req.send_request(options) + end + + # Returns details about a sync configuration, including the sync type + # and resource name. A sync configuration allows the configuration to + # sync (push and pull) changes from the remote repository for a + # specified branch in a Git repository. + # + # @option params [required, String] :sync_type + # The sync type for the sync configuration for which you want to + # retrieve information. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource for the sync + # configuration for which you want to retrieve information. + # + # @return [Types::GetSyncConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetSyncConfigurationOutput#sync_configuration #sync_configuration} => Types::SyncConfiguration + # + # @example Request syntax with placeholder values + # + # resp = client.get_sync_configuration({ + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # resource_name: "ResourceName", # required + # }) + # + # @example Response structure + # + # resp.sync_configuration.branch #=> String + # resp.sync_configuration.config_file #=> String + # resp.sync_configuration.owner_id #=> String + # resp.sync_configuration.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.sync_configuration.repository_link_id #=> String + # resp.sync_configuration.repository_name #=> String + # resp.sync_configuration.resource_name #=> String + # resp.sync_configuration.role_arn #=> String + # resp.sync_configuration.sync_type #=> String, one of "CFN_STACK_SYNC" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncConfiguration AWS API Documentation + # + # @overload get_sync_configuration(params = {}) + # @param [Hash] params ({}) + def get_sync_configuration(params = {}, options = {}) + req = build_request(:get_sync_configuration, params) + req.send_request(options) + end + # Lists the connections associated with your account. # # @option params [String] :provider_type_filter @@ -761,6 +1192,148 @@ def list_hosts(params = {}, options = {}) req.send_request(options) end + # Lists the repository links created for connections in your account. + # + # @option params [Integer] :max_results + # A non-zero, non-negative integer used to limit the number of returned + # results. + # + # @option params [String] :next_token + # An enumeration token that, when provided in a request, returns the + # next batch of the results. + # + # @return [Types::ListRepositoryLinksOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListRepositoryLinksOutput#repository_links #repository_links} => Array<Types::RepositoryLinkInfo> + # * {Types::ListRepositoryLinksOutput#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_repository_links({ + # max_results: 1, + # next_token: "SharpNextToken", + # }) + # + # @example Response structure + # + # resp.repository_links #=> Array + # resp.repository_links[0].connection_arn #=> String + # resp.repository_links[0].encryption_key_arn #=> String + # resp.repository_links[0].owner_id #=> String + # resp.repository_links[0].provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.repository_links[0].repository_link_arn #=> String + # resp.repository_links[0].repository_link_id #=> String + # resp.repository_links[0].repository_name #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositoryLinks AWS API Documentation + # + # @overload list_repository_links(params = {}) + # @param [Hash] params ({}) + def list_repository_links(params = {}, options = {}) + req = build_request(:list_repository_links, params) + req.send_request(options) + end + + # Lists the repository sync definitions for repository links in your + # account. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link for the sync definition for which you + # want to retrieve information. + # + # @option params [required, String] :sync_type + # The sync type of the repository link for the the sync definition for + # which you want to retrieve information. + # + # @return [Types::ListRepositorySyncDefinitionsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListRepositorySyncDefinitionsOutput#repository_sync_definitions #repository_sync_definitions} => Array<Types::RepositorySyncDefinition> + # * {Types::ListRepositorySyncDefinitionsOutput#next_token #next_token} => String + # + # @example Request syntax with placeholder values + # + # resp = client.list_repository_sync_definitions({ + # repository_link_id: "RepositoryLinkId", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.repository_sync_definitions #=> Array + # resp.repository_sync_definitions[0].branch #=> String + # resp.repository_sync_definitions[0].directory #=> String + # resp.repository_sync_definitions[0].parent #=> String + # resp.repository_sync_definitions[0].target #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositorySyncDefinitions AWS API Documentation + # + # @overload list_repository_sync_definitions(params = {}) + # @param [Hash] params ({}) + def list_repository_sync_definitions(params = {}, options = {}) + req = build_request(:list_repository_sync_definitions, params) + req.send_request(options) + end + + # Returns a list of sync configurations for a specified repository. + # + # @option params [Integer] :max_results + # A non-zero, non-negative integer used to limit the number of returned + # results. + # + # @option params [String] :next_token + # An enumeration token that allows the operation to batch the results of + # the operation. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link for the requested list of sync + # configurations. + # + # @option params [required, String] :sync_type + # The sync type for the requested list of sync configurations. + # + # @return [Types::ListSyncConfigurationsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListSyncConfigurationsOutput#sync_configurations #sync_configurations} => Array<Types::SyncConfiguration> + # * {Types::ListSyncConfigurationsOutput#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_sync_configurations({ + # max_results: 1, + # next_token: "SharpNextToken", + # repository_link_id: "RepositoryLinkId", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.sync_configurations #=> Array + # resp.sync_configurations[0].branch #=> String + # resp.sync_configurations[0].config_file #=> String + # resp.sync_configurations[0].owner_id #=> String + # resp.sync_configurations[0].provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.sync_configurations[0].repository_link_id #=> String + # resp.sync_configurations[0].repository_name #=> String + # resp.sync_configurations[0].resource_name #=> String + # resp.sync_configurations[0].role_arn #=> String + # resp.sync_configurations[0].sync_type #=> String, one of "CFN_STACK_SYNC" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListSyncConfigurations AWS API Documentation + # + # @overload list_sync_configurations(params = {}) + # @param [Hash] params ({}) + def list_sync_configurations(params = {}, options = {}) + req = build_request(:list_sync_configurations, params) + req.send_request(options) + end + # Gets the set of key-value pairs (metadata) that are used to manage the # resource. # @@ -889,6 +1462,167 @@ def update_host(params = {}, options = {}) req.send_request(options) end + # Updates the association between your connection and a specified + # external Git repository. A repository link allows Git sync to monitor + # and sync changes to files in a specified Git repository. + # + # @option params [String] :connection_arn + # The Amazon Resource Name (ARN) of the connection for the repository + # link to be updated. The updated connection ARN must have the same + # providerType (such as GitHub) as the original connection ARN for the + # repo link. + # + # @option params [String] :encryption_key_arn + # The Amazon Resource Name (ARN) of the encryption key for the + # repository link to be updated. + # + # @option params [required, String] :repository_link_id + # The ID of the repository link to be updated. + # + # @return [Types::UpdateRepositoryLinkOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateRepositoryLinkOutput#repository_link_info #repository_link_info} => Types::RepositoryLinkInfo + # + # @example Request syntax with placeholder values + # + # resp = client.update_repository_link({ + # connection_arn: "ConnectionArn", + # encryption_key_arn: "KmsKeyArn", + # repository_link_id: "RepositoryLinkId", # required + # }) + # + # @example Response structure + # + # resp.repository_link_info.connection_arn #=> String + # resp.repository_link_info.encryption_key_arn #=> String + # resp.repository_link_info.owner_id #=> String + # resp.repository_link_info.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.repository_link_info.repository_link_arn #=> String + # resp.repository_link_info.repository_link_id #=> String + # resp.repository_link_info.repository_name #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateRepositoryLink AWS API Documentation + # + # @overload update_repository_link(params = {}) + # @param [Hash] params ({}) + def update_repository_link(params = {}, options = {}) + req = build_request(:update_repository_link, params) + req.send_request(options) + end + + # Allows you to update the status of a sync blocker, resolving the + # blocker and allowing syncing to continue. + # + # @option params [required, String] :id + # The ID of the sync blocker to be updated. + # + # @option params [required, String] :sync_type + # The sync type of the sync blocker to be updated. + # + # @option params [required, String] :resource_name + # The name of the resource for the sync blocker to be updated. + # + # @option params [required, String] :resolved_reason + # The reason for resolving the sync blocker. + # + # @return [Types::UpdateSyncBlockerOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateSyncBlockerOutput#resource_name #resource_name} => String + # * {Types::UpdateSyncBlockerOutput#parent_resource_name #parent_resource_name} => String + # * {Types::UpdateSyncBlockerOutput#sync_blocker #sync_blocker} => Types::SyncBlocker + # + # @example Request syntax with placeholder values + # + # resp = client.update_sync_blocker({ + # id: "Id", # required + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # resource_name: "ResourceName", # required + # resolved_reason: "ResolvedReason", # required + # }) + # + # @example Response structure + # + # resp.resource_name #=> String + # resp.parent_resource_name #=> String + # resp.sync_blocker.id #=> String + # resp.sync_blocker.type #=> String, one of "AUTOMATED" + # resp.sync_blocker.status #=> String, one of "ACTIVE", "RESOLVED" + # resp.sync_blocker.created_reason #=> String + # resp.sync_blocker.created_at #=> Time + # resp.sync_blocker.contexts #=> Array + # resp.sync_blocker.contexts[0].key #=> String + # resp.sync_blocker.contexts[0].value #=> String + # resp.sync_blocker.resolved_reason #=> String + # resp.sync_blocker.resolved_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncBlocker AWS API Documentation + # + # @overload update_sync_blocker(params = {}) + # @param [Hash] params ({}) + def update_sync_blocker(params = {}, options = {}) + req = build_request(:update_sync_blocker, params) + req.send_request(options) + end + + # Updates the sync configuration for your connection and a specified + # external Git repository. + # + # @option params [String] :branch + # The branch for the sync configuration to be updated. + # + # @option params [String] :config_file + # The configuration file for the sync configuration to be updated. + # + # @option params [String] :repository_link_id + # The ID of the repository link for the sync configuration to be + # updated. + # + # @option params [required, String] :resource_name + # The name of the Amazon Web Services resource for the sync + # configuration to be updated. + # + # @option params [String] :role_arn + # The ARN of the IAM role for the sync configuration to be updated. + # + # @option params [required, String] :sync_type + # The sync type for the sync configuration to be updated. + # + # @return [Types::UpdateSyncConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateSyncConfigurationOutput#sync_configuration #sync_configuration} => Types::SyncConfiguration + # + # @example Request syntax with placeholder values + # + # resp = client.update_sync_configuration({ + # branch: "BranchName", + # config_file: "DeploymentFilePath", + # repository_link_id: "RepositoryLinkId", + # resource_name: "ResourceName", # required + # role_arn: "IamRoleArn", + # sync_type: "CFN_STACK_SYNC", # required, accepts CFN_STACK_SYNC + # }) + # + # @example Response structure + # + # resp.sync_configuration.branch #=> String + # resp.sync_configuration.config_file #=> String + # resp.sync_configuration.owner_id #=> String + # resp.sync_configuration.provider_type #=> String, one of "Bitbucket", "GitHub", "GitHubEnterpriseServer", "GitLab" + # resp.sync_configuration.repository_link_id #=> String + # resp.sync_configuration.repository_name #=> String + # resp.sync_configuration.resource_name #=> String + # resp.sync_configuration.role_arn #=> String + # resp.sync_configuration.sync_type #=> String, one of "CFN_STACK_SYNC" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncConfiguration AWS API Documentation + # + # @overload update_sync_configuration(params = {}) + # @param [Hash] params ({}) + def update_sync_configuration(params = {}, options = {}) + req = build_request(:update_sync_configuration, params) + req.send_request(options) + end + # @!endgroup # @param params ({}) @@ -902,7 +1636,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-codestarconnections' - context[:gem_version] = '1.36.0' + context[:gem_version] = '1.37.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client_api.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client_api.rb index 3054f21aeaf..fc9f983cc79 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client_api.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/client_api.rb @@ -13,8 +13,14 @@ module ClientApi include Seahorse::Model + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') AccountId = Shapes::StringShape.new(name: 'AccountId') AmazonResourceName = Shapes::StringShape.new(name: 'AmazonResourceName') + BlockerStatus = Shapes::StringShape.new(name: 'BlockerStatus') + BlockerType = Shapes::StringShape.new(name: 'BlockerType') + BranchName = Shapes::StringShape.new(name: 'BranchName') + ConcurrentModificationException = Shapes::StructureShape.new(name: 'ConcurrentModificationException') + ConditionalCheckFailedException = Shapes::StructureShape.new(name: 'ConditionalCheckFailedException') ConflictException = Shapes::StructureShape.new(name: 'ConflictException') Connection = Shapes::StructureShape.new(name: 'Connection') ConnectionArn = Shapes::StringShape.new(name: 'ConnectionArn') @@ -25,37 +31,107 @@ module ClientApi CreateConnectionOutput = Shapes::StructureShape.new(name: 'CreateConnectionOutput') CreateHostInput = Shapes::StructureShape.new(name: 'CreateHostInput') CreateHostOutput = Shapes::StructureShape.new(name: 'CreateHostOutput') + CreateRepositoryLinkInput = Shapes::StructureShape.new(name: 'CreateRepositoryLinkInput') + CreateRepositoryLinkOutput = Shapes::StructureShape.new(name: 'CreateRepositoryLinkOutput') + CreateSyncConfigurationInput = Shapes::StructureShape.new(name: 'CreateSyncConfigurationInput') + CreateSyncConfigurationOutput = Shapes::StructureShape.new(name: 'CreateSyncConfigurationOutput') + CreatedReason = Shapes::StringShape.new(name: 'CreatedReason') DeleteConnectionInput = Shapes::StructureShape.new(name: 'DeleteConnectionInput') DeleteConnectionOutput = Shapes::StructureShape.new(name: 'DeleteConnectionOutput') DeleteHostInput = Shapes::StructureShape.new(name: 'DeleteHostInput') DeleteHostOutput = Shapes::StructureShape.new(name: 'DeleteHostOutput') + DeleteRepositoryLinkInput = Shapes::StructureShape.new(name: 'DeleteRepositoryLinkInput') + DeleteRepositoryLinkOutput = Shapes::StructureShape.new(name: 'DeleteRepositoryLinkOutput') + DeleteSyncConfigurationInput = Shapes::StructureShape.new(name: 'DeleteSyncConfigurationInput') + DeleteSyncConfigurationOutput = Shapes::StructureShape.new(name: 'DeleteSyncConfigurationOutput') + DeploymentFilePath = Shapes::StringShape.new(name: 'DeploymentFilePath') + Directory = Shapes::StringShape.new(name: 'Directory') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') + Event = Shapes::StringShape.new(name: 'Event') + ExternalId = Shapes::StringShape.new(name: 'ExternalId') GetConnectionInput = Shapes::StructureShape.new(name: 'GetConnectionInput') GetConnectionOutput = Shapes::StructureShape.new(name: 'GetConnectionOutput') GetHostInput = Shapes::StructureShape.new(name: 'GetHostInput') GetHostOutput = Shapes::StructureShape.new(name: 'GetHostOutput') + GetRepositoryLinkInput = Shapes::StructureShape.new(name: 'GetRepositoryLinkInput') + GetRepositoryLinkOutput = Shapes::StructureShape.new(name: 'GetRepositoryLinkOutput') + GetRepositorySyncStatusInput = Shapes::StructureShape.new(name: 'GetRepositorySyncStatusInput') + GetRepositorySyncStatusOutput = Shapes::StructureShape.new(name: 'GetRepositorySyncStatusOutput') + GetResourceSyncStatusInput = Shapes::StructureShape.new(name: 'GetResourceSyncStatusInput') + GetResourceSyncStatusOutput = Shapes::StructureShape.new(name: 'GetResourceSyncStatusOutput') + GetSyncBlockerSummaryInput = Shapes::StructureShape.new(name: 'GetSyncBlockerSummaryInput') + GetSyncBlockerSummaryOutput = Shapes::StructureShape.new(name: 'GetSyncBlockerSummaryOutput') + GetSyncConfigurationInput = Shapes::StructureShape.new(name: 'GetSyncConfigurationInput') + GetSyncConfigurationOutput = Shapes::StructureShape.new(name: 'GetSyncConfigurationOutput') Host = Shapes::StructureShape.new(name: 'Host') HostArn = Shapes::StringShape.new(name: 'HostArn') HostList = Shapes::ListShape.new(name: 'HostList') HostName = Shapes::StringShape.new(name: 'HostName') HostStatus = Shapes::StringShape.new(name: 'HostStatus') HostStatusMessage = Shapes::StringShape.new(name: 'HostStatusMessage') + IamRoleArn = Shapes::StringShape.new(name: 'IamRoleArn') + Id = Shapes::StringShape.new(name: 'Id') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + InvalidInputException = Shapes::StructureShape.new(name: 'InvalidInputException') + KmsKeyArn = Shapes::StringShape.new(name: 'KmsKeyArn') + LatestSyncBlockerList = Shapes::ListShape.new(name: 'LatestSyncBlockerList') LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException') ListConnectionsInput = Shapes::StructureShape.new(name: 'ListConnectionsInput') ListConnectionsOutput = Shapes::StructureShape.new(name: 'ListConnectionsOutput') ListHostsInput = Shapes::StructureShape.new(name: 'ListHostsInput') ListHostsOutput = Shapes::StructureShape.new(name: 'ListHostsOutput') + ListRepositoryLinksInput = Shapes::StructureShape.new(name: 'ListRepositoryLinksInput') + ListRepositoryLinksOutput = Shapes::StructureShape.new(name: 'ListRepositoryLinksOutput') + ListRepositorySyncDefinitionsInput = Shapes::StructureShape.new(name: 'ListRepositorySyncDefinitionsInput') + ListRepositorySyncDefinitionsOutput = Shapes::StructureShape.new(name: 'ListRepositorySyncDefinitionsOutput') + ListSyncConfigurationsInput = Shapes::StructureShape.new(name: 'ListSyncConfigurationsInput') + ListSyncConfigurationsOutput = Shapes::StructureShape.new(name: 'ListSyncConfigurationsOutput') ListTagsForResourceInput = Shapes::StructureShape.new(name: 'ListTagsForResourceInput') ListTagsForResourceOutput = Shapes::StructureShape.new(name: 'ListTagsForResourceOutput') MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') NextToken = Shapes::StringShape.new(name: 'NextToken') + OwnerId = Shapes::StringShape.new(name: 'OwnerId') + Parent = Shapes::StringShape.new(name: 'Parent') ProviderType = Shapes::StringShape.new(name: 'ProviderType') + RepositoryLinkArn = Shapes::StringShape.new(name: 'RepositoryLinkArn') + RepositoryLinkId = Shapes::StringShape.new(name: 'RepositoryLinkId') + RepositoryLinkInfo = Shapes::StructureShape.new(name: 'RepositoryLinkInfo') + RepositoryLinkList = Shapes::ListShape.new(name: 'RepositoryLinkList') + RepositoryName = Shapes::StringShape.new(name: 'RepositoryName') + RepositorySyncAttempt = Shapes::StructureShape.new(name: 'RepositorySyncAttempt') + RepositorySyncDefinition = Shapes::StructureShape.new(name: 'RepositorySyncDefinition') + RepositorySyncDefinitionList = Shapes::ListShape.new(name: 'RepositorySyncDefinitionList') + RepositorySyncEvent = Shapes::StructureShape.new(name: 'RepositorySyncEvent') + RepositorySyncEventList = Shapes::ListShape.new(name: 'RepositorySyncEventList') + RepositorySyncStatus = Shapes::StringShape.new(name: 'RepositorySyncStatus') + ResolvedReason = Shapes::StringShape.new(name: 'ResolvedReason') + ResourceAlreadyExistsException = Shapes::StructureShape.new(name: 'ResourceAlreadyExistsException') + ResourceName = Shapes::StringShape.new(name: 'ResourceName') ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + ResourceSyncAttempt = Shapes::StructureShape.new(name: 'ResourceSyncAttempt') + ResourceSyncEvent = Shapes::StructureShape.new(name: 'ResourceSyncEvent') + ResourceSyncEventList = Shapes::ListShape.new(name: 'ResourceSyncEventList') + ResourceSyncStatus = Shapes::StringShape.new(name: 'ResourceSyncStatus') ResourceUnavailableException = Shapes::StructureShape.new(name: 'ResourceUnavailableException') + RetryLatestCommitFailedException = Shapes::StructureShape.new(name: 'RetryLatestCommitFailedException') + Revision = Shapes::StructureShape.new(name: 'Revision') + SHA = Shapes::StringShape.new(name: 'SHA') SecurityGroupId = Shapes::StringShape.new(name: 'SecurityGroupId') SecurityGroupIds = Shapes::ListShape.new(name: 'SecurityGroupIds') + SharpNextToken = Shapes::StringShape.new(name: 'SharpNextToken') SubnetId = Shapes::StringShape.new(name: 'SubnetId') SubnetIds = Shapes::ListShape.new(name: 'SubnetIds') + SyncBlocker = Shapes::StructureShape.new(name: 'SyncBlocker') + SyncBlockerContext = Shapes::StructureShape.new(name: 'SyncBlockerContext') + SyncBlockerContextKey = Shapes::StringShape.new(name: 'SyncBlockerContextKey') + SyncBlockerContextList = Shapes::ListShape.new(name: 'SyncBlockerContextList') + SyncBlockerContextValue = Shapes::StringShape.new(name: 'SyncBlockerContextValue') + SyncBlockerDoesNotExistException = Shapes::StructureShape.new(name: 'SyncBlockerDoesNotExistException') + SyncBlockerSummary = Shapes::StructureShape.new(name: 'SyncBlockerSummary') + SyncConfiguration = Shapes::StructureShape.new(name: 'SyncConfiguration') + SyncConfigurationList = Shapes::ListShape.new(name: 'SyncConfigurationList') + SyncConfigurationStillExistsException = Shapes::StructureShape.new(name: 'SyncConfigurationStillExistsException') + SyncConfigurationType = Shapes::StringShape.new(name: 'SyncConfigurationType') Tag = Shapes::StructureShape.new(name: 'Tag') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') @@ -63,16 +139,37 @@ module ClientApi TagResourceInput = Shapes::StructureShape.new(name: 'TagResourceInput') TagResourceOutput = Shapes::StructureShape.new(name: 'TagResourceOutput') TagValue = Shapes::StringShape.new(name: 'TagValue') + Target = Shapes::StringShape.new(name: 'Target') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') TlsCertificate = Shapes::StringShape.new(name: 'TlsCertificate') + Type = Shapes::StringShape.new(name: 'Type') UnsupportedOperationException = Shapes::StructureShape.new(name: 'UnsupportedOperationException') + UnsupportedProviderTypeException = Shapes::StructureShape.new(name: 'UnsupportedProviderTypeException') UntagResourceInput = Shapes::StructureShape.new(name: 'UntagResourceInput') UntagResourceOutput = Shapes::StructureShape.new(name: 'UntagResourceOutput') UpdateHostInput = Shapes::StructureShape.new(name: 'UpdateHostInput') UpdateHostOutput = Shapes::StructureShape.new(name: 'UpdateHostOutput') + UpdateOutOfSyncException = Shapes::StructureShape.new(name: 'UpdateOutOfSyncException') + UpdateRepositoryLinkInput = Shapes::StructureShape.new(name: 'UpdateRepositoryLinkInput') + UpdateRepositoryLinkOutput = Shapes::StructureShape.new(name: 'UpdateRepositoryLinkOutput') + UpdateSyncBlockerInput = Shapes::StructureShape.new(name: 'UpdateSyncBlockerInput') + UpdateSyncBlockerOutput = Shapes::StructureShape.new(name: 'UpdateSyncBlockerOutput') + UpdateSyncConfigurationInput = Shapes::StructureShape.new(name: 'UpdateSyncConfigurationInput') + UpdateSyncConfigurationOutput = Shapes::StructureShape.new(name: 'UpdateSyncConfigurationOutput') Url = Shapes::StringShape.new(name: 'Url') VpcConfiguration = Shapes::StructureShape.new(name: 'VpcConfiguration') VpcId = Shapes::StringShape.new(name: 'VpcId') + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + AccessDeniedException.struct_class = Types::AccessDeniedException + + ConcurrentModificationException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + ConcurrentModificationException.struct_class = Types::ConcurrentModificationException + + ConditionalCheckFailedException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + ConditionalCheckFailedException.struct_class = Types::ConditionalCheckFailedException + ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) ConflictException.struct_class = Types::ConflictException @@ -107,6 +204,27 @@ module ClientApi CreateHostOutput.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) CreateHostOutput.struct_class = Types::CreateHostOutput + CreateRepositoryLinkInput.add_member(:connection_arn, Shapes::ShapeRef.new(shape: ConnectionArn, required: true, location_name: "ConnectionArn")) + CreateRepositoryLinkInput.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, required: true, location_name: "OwnerId")) + CreateRepositoryLinkInput.add_member(:repository_name, Shapes::ShapeRef.new(shape: RepositoryName, required: true, location_name: "RepositoryName")) + CreateRepositoryLinkInput.add_member(:encryption_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "EncryptionKeyArn")) + CreateRepositoryLinkInput.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateRepositoryLinkInput.struct_class = Types::CreateRepositoryLinkInput + + CreateRepositoryLinkOutput.add_member(:repository_link_info, Shapes::ShapeRef.new(shape: RepositoryLinkInfo, required: true, location_name: "RepositoryLinkInfo")) + CreateRepositoryLinkOutput.struct_class = Types::CreateRepositoryLinkOutput + + CreateSyncConfigurationInput.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, required: true, location_name: "Branch")) + CreateSyncConfigurationInput.add_member(:config_file, Shapes::ShapeRef.new(shape: DeploymentFilePath, required: true, location_name: "ConfigFile")) + CreateSyncConfigurationInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + CreateSyncConfigurationInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + CreateSyncConfigurationInput.add_member(:role_arn, Shapes::ShapeRef.new(shape: IamRoleArn, required: true, location_name: "RoleArn")) + CreateSyncConfigurationInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + CreateSyncConfigurationInput.struct_class = Types::CreateSyncConfigurationInput + + CreateSyncConfigurationOutput.add_member(:sync_configuration, Shapes::ShapeRef.new(shape: SyncConfiguration, required: true, location_name: "SyncConfiguration")) + CreateSyncConfigurationOutput.struct_class = Types::CreateSyncConfigurationOutput + DeleteConnectionInput.add_member(:connection_arn, Shapes::ShapeRef.new(shape: ConnectionArn, required: true, location_name: "ConnectionArn")) DeleteConnectionInput.struct_class = Types::DeleteConnectionInput @@ -117,6 +235,17 @@ module ClientApi DeleteHostOutput.struct_class = Types::DeleteHostOutput + DeleteRepositoryLinkInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + DeleteRepositoryLinkInput.struct_class = Types::DeleteRepositoryLinkInput + + DeleteRepositoryLinkOutput.struct_class = Types::DeleteRepositoryLinkOutput + + DeleteSyncConfigurationInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + DeleteSyncConfigurationInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + DeleteSyncConfigurationInput.struct_class = Types::DeleteSyncConfigurationInput + + DeleteSyncConfigurationOutput.struct_class = Types::DeleteSyncConfigurationOutput + GetConnectionInput.add_member(:connection_arn, Shapes::ShapeRef.new(shape: ConnectionArn, required: true, location_name: "ConnectionArn")) GetConnectionInput.struct_class = Types::GetConnectionInput @@ -133,6 +262,43 @@ module ClientApi GetHostOutput.add_member(:vpc_configuration, Shapes::ShapeRef.new(shape: VpcConfiguration, location_name: "VpcConfiguration")) GetHostOutput.struct_class = Types::GetHostOutput + GetRepositoryLinkInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + GetRepositoryLinkInput.struct_class = Types::GetRepositoryLinkInput + + GetRepositoryLinkOutput.add_member(:repository_link_info, Shapes::ShapeRef.new(shape: RepositoryLinkInfo, required: true, location_name: "RepositoryLinkInfo")) + GetRepositoryLinkOutput.struct_class = Types::GetRepositoryLinkOutput + + GetRepositorySyncStatusInput.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, required: true, location_name: "Branch")) + GetRepositorySyncStatusInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + GetRepositorySyncStatusInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + GetRepositorySyncStatusInput.struct_class = Types::GetRepositorySyncStatusInput + + GetRepositorySyncStatusOutput.add_member(:latest_sync, Shapes::ShapeRef.new(shape: RepositorySyncAttempt, required: true, location_name: "LatestSync")) + GetRepositorySyncStatusOutput.struct_class = Types::GetRepositorySyncStatusOutput + + GetResourceSyncStatusInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + GetResourceSyncStatusInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + GetResourceSyncStatusInput.struct_class = Types::GetResourceSyncStatusInput + + GetResourceSyncStatusOutput.add_member(:desired_state, Shapes::ShapeRef.new(shape: Revision, location_name: "DesiredState")) + GetResourceSyncStatusOutput.add_member(:latest_successful_sync, Shapes::ShapeRef.new(shape: ResourceSyncAttempt, location_name: "LatestSuccessfulSync")) + GetResourceSyncStatusOutput.add_member(:latest_sync, Shapes::ShapeRef.new(shape: ResourceSyncAttempt, required: true, location_name: "LatestSync")) + GetResourceSyncStatusOutput.struct_class = Types::GetResourceSyncStatusOutput + + GetSyncBlockerSummaryInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + GetSyncBlockerSummaryInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + GetSyncBlockerSummaryInput.struct_class = Types::GetSyncBlockerSummaryInput + + GetSyncBlockerSummaryOutput.add_member(:sync_blocker_summary, Shapes::ShapeRef.new(shape: SyncBlockerSummary, required: true, location_name: "SyncBlockerSummary")) + GetSyncBlockerSummaryOutput.struct_class = Types::GetSyncBlockerSummaryOutput + + GetSyncConfigurationInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + GetSyncConfigurationInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + GetSyncConfigurationInput.struct_class = Types::GetSyncConfigurationInput + + GetSyncConfigurationOutput.add_member(:sync_configuration, Shapes::ShapeRef.new(shape: SyncConfiguration, required: true, location_name: "SyncConfiguration")) + GetSyncConfigurationOutput.struct_class = Types::GetSyncConfigurationOutput + Host.add_member(:name, Shapes::ShapeRef.new(shape: HostName, location_name: "Name")) Host.add_member(:host_arn, Shapes::ShapeRef.new(shape: HostArn, location_name: "HostArn")) Host.add_member(:provider_type, Shapes::ShapeRef.new(shape: ProviderType, location_name: "ProviderType")) @@ -144,6 +310,14 @@ module ClientApi HostList.member = Shapes::ShapeRef.new(shape: Host) + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + InternalServerException.struct_class = Types::InternalServerException + + InvalidInputException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + InvalidInputException.struct_class = Types::InvalidInputException + + LatestSyncBlockerList.member = Shapes::ShapeRef.new(shape: SyncBlocker) + LimitExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) LimitExceededException.struct_class = Types::LimitExceededException @@ -165,22 +339,150 @@ module ClientApi ListHostsOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken")) ListHostsOutput.struct_class = Types::ListHostsOutput + ListRepositoryLinksInput.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListRepositoryLinksInput.add_member(:next_token, Shapes::ShapeRef.new(shape: SharpNextToken, location_name: "NextToken")) + ListRepositoryLinksInput.struct_class = Types::ListRepositoryLinksInput + + ListRepositoryLinksOutput.add_member(:repository_links, Shapes::ShapeRef.new(shape: RepositoryLinkList, required: true, location_name: "RepositoryLinks")) + ListRepositoryLinksOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: SharpNextToken, location_name: "NextToken")) + ListRepositoryLinksOutput.struct_class = Types::ListRepositoryLinksOutput + + ListRepositorySyncDefinitionsInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + ListRepositorySyncDefinitionsInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + ListRepositorySyncDefinitionsInput.struct_class = Types::ListRepositorySyncDefinitionsInput + + ListRepositorySyncDefinitionsOutput.add_member(:repository_sync_definitions, Shapes::ShapeRef.new(shape: RepositorySyncDefinitionList, required: true, location_name: "RepositorySyncDefinitions")) + ListRepositorySyncDefinitionsOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: SharpNextToken, location_name: "NextToken")) + ListRepositorySyncDefinitionsOutput.struct_class = Types::ListRepositorySyncDefinitionsOutput + + ListSyncConfigurationsInput.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListSyncConfigurationsInput.add_member(:next_token, Shapes::ShapeRef.new(shape: SharpNextToken, location_name: "NextToken")) + ListSyncConfigurationsInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + ListSyncConfigurationsInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + ListSyncConfigurationsInput.struct_class = Types::ListSyncConfigurationsInput + + ListSyncConfigurationsOutput.add_member(:sync_configurations, Shapes::ShapeRef.new(shape: SyncConfigurationList, required: true, location_name: "SyncConfigurations")) + ListSyncConfigurationsOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: SharpNextToken, location_name: "NextToken")) + ListSyncConfigurationsOutput.struct_class = Types::ListSyncConfigurationsOutput + ListTagsForResourceInput.add_member(:resource_arn, Shapes::ShapeRef.new(shape: AmazonResourceName, required: true, location_name: "ResourceArn")) ListTagsForResourceInput.struct_class = Types::ListTagsForResourceInput ListTagsForResourceOutput.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) ListTagsForResourceOutput.struct_class = Types::ListTagsForResourceOutput + RepositoryLinkInfo.add_member(:connection_arn, Shapes::ShapeRef.new(shape: ConnectionArn, required: true, location_name: "ConnectionArn")) + RepositoryLinkInfo.add_member(:encryption_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "EncryptionKeyArn")) + RepositoryLinkInfo.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, required: true, location_name: "OwnerId")) + RepositoryLinkInfo.add_member(:provider_type, Shapes::ShapeRef.new(shape: ProviderType, required: true, location_name: "ProviderType")) + RepositoryLinkInfo.add_member(:repository_link_arn, Shapes::ShapeRef.new(shape: RepositoryLinkArn, required: true, location_name: "RepositoryLinkArn")) + RepositoryLinkInfo.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + RepositoryLinkInfo.add_member(:repository_name, Shapes::ShapeRef.new(shape: RepositoryName, required: true, location_name: "RepositoryName")) + RepositoryLinkInfo.struct_class = Types::RepositoryLinkInfo + + RepositoryLinkList.member = Shapes::ShapeRef.new(shape: RepositoryLinkInfo) + + RepositorySyncAttempt.add_member(:started_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartedAt")) + RepositorySyncAttempt.add_member(:status, Shapes::ShapeRef.new(shape: RepositorySyncStatus, required: true, location_name: "Status")) + RepositorySyncAttempt.add_member(:events, Shapes::ShapeRef.new(shape: RepositorySyncEventList, required: true, location_name: "Events")) + RepositorySyncAttempt.struct_class = Types::RepositorySyncAttempt + + RepositorySyncDefinition.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, required: true, location_name: "Branch")) + RepositorySyncDefinition.add_member(:directory, Shapes::ShapeRef.new(shape: Directory, required: true, location_name: "Directory")) + RepositorySyncDefinition.add_member(:parent, Shapes::ShapeRef.new(shape: Parent, required: true, location_name: "Parent")) + RepositorySyncDefinition.add_member(:target, Shapes::ShapeRef.new(shape: Target, required: true, location_name: "Target")) + RepositorySyncDefinition.struct_class = Types::RepositorySyncDefinition + + RepositorySyncDefinitionList.member = Shapes::ShapeRef.new(shape: RepositorySyncDefinition) + + RepositorySyncEvent.add_member(:event, Shapes::ShapeRef.new(shape: Event, required: true, location_name: "Event")) + RepositorySyncEvent.add_member(:external_id, Shapes::ShapeRef.new(shape: ExternalId, location_name: "ExternalId")) + RepositorySyncEvent.add_member(:time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "Time")) + RepositorySyncEvent.add_member(:type, Shapes::ShapeRef.new(shape: Type, required: true, location_name: "Type")) + RepositorySyncEvent.struct_class = Types::RepositorySyncEvent + + RepositorySyncEventList.member = Shapes::ShapeRef.new(shape: RepositorySyncEvent) + + ResourceAlreadyExistsException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + ResourceAlreadyExistsException.struct_class = Types::ResourceAlreadyExistsException + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + ResourceSyncAttempt.add_member(:events, Shapes::ShapeRef.new(shape: ResourceSyncEventList, required: true, location_name: "Events")) + ResourceSyncAttempt.add_member(:initial_revision, Shapes::ShapeRef.new(shape: Revision, required: true, location_name: "InitialRevision")) + ResourceSyncAttempt.add_member(:started_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartedAt")) + ResourceSyncAttempt.add_member(:status, Shapes::ShapeRef.new(shape: ResourceSyncStatus, required: true, location_name: "Status")) + ResourceSyncAttempt.add_member(:target_revision, Shapes::ShapeRef.new(shape: Revision, required: true, location_name: "TargetRevision")) + ResourceSyncAttempt.add_member(:target, Shapes::ShapeRef.new(shape: Target, required: true, location_name: "Target")) + ResourceSyncAttempt.struct_class = Types::ResourceSyncAttempt + + ResourceSyncEvent.add_member(:event, Shapes::ShapeRef.new(shape: Event, required: true, location_name: "Event")) + ResourceSyncEvent.add_member(:external_id, Shapes::ShapeRef.new(shape: ExternalId, location_name: "ExternalId")) + ResourceSyncEvent.add_member(:time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "Time")) + ResourceSyncEvent.add_member(:type, Shapes::ShapeRef.new(shape: Type, required: true, location_name: "Type")) + ResourceSyncEvent.struct_class = Types::ResourceSyncEvent + + ResourceSyncEventList.member = Shapes::ShapeRef.new(shape: ResourceSyncEvent) + ResourceUnavailableException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) ResourceUnavailableException.struct_class = Types::ResourceUnavailableException + RetryLatestCommitFailedException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + RetryLatestCommitFailedException.struct_class = Types::RetryLatestCommitFailedException + + Revision.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, required: true, location_name: "Branch")) + Revision.add_member(:directory, Shapes::ShapeRef.new(shape: Directory, required: true, location_name: "Directory")) + Revision.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, required: true, location_name: "OwnerId")) + Revision.add_member(:repository_name, Shapes::ShapeRef.new(shape: RepositoryName, required: true, location_name: "RepositoryName")) + Revision.add_member(:provider_type, Shapes::ShapeRef.new(shape: ProviderType, required: true, location_name: "ProviderType")) + Revision.add_member(:sha, Shapes::ShapeRef.new(shape: SHA, required: true, location_name: "Sha")) + Revision.struct_class = Types::Revision + SecurityGroupIds.member = Shapes::ShapeRef.new(shape: SecurityGroupId) SubnetIds.member = Shapes::ShapeRef.new(shape: SubnetId) + SyncBlocker.add_member(:id, Shapes::ShapeRef.new(shape: Id, required: true, location_name: "Id")) + SyncBlocker.add_member(:type, Shapes::ShapeRef.new(shape: BlockerType, required: true, location_name: "Type")) + SyncBlocker.add_member(:status, Shapes::ShapeRef.new(shape: BlockerStatus, required: true, location_name: "Status")) + SyncBlocker.add_member(:created_reason, Shapes::ShapeRef.new(shape: CreatedReason, required: true, location_name: "CreatedReason")) + SyncBlocker.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "CreatedAt")) + SyncBlocker.add_member(:contexts, Shapes::ShapeRef.new(shape: SyncBlockerContextList, location_name: "Contexts")) + SyncBlocker.add_member(:resolved_reason, Shapes::ShapeRef.new(shape: ResolvedReason, location_name: "ResolvedReason")) + SyncBlocker.add_member(:resolved_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "ResolvedAt")) + SyncBlocker.struct_class = Types::SyncBlocker + + SyncBlockerContext.add_member(:key, Shapes::ShapeRef.new(shape: SyncBlockerContextKey, required: true, location_name: "Key")) + SyncBlockerContext.add_member(:value, Shapes::ShapeRef.new(shape: SyncBlockerContextValue, required: true, location_name: "Value")) + SyncBlockerContext.struct_class = Types::SyncBlockerContext + + SyncBlockerContextList.member = Shapes::ShapeRef.new(shape: SyncBlockerContext) + + SyncBlockerDoesNotExistException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + SyncBlockerDoesNotExistException.struct_class = Types::SyncBlockerDoesNotExistException + + SyncBlockerSummary.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + SyncBlockerSummary.add_member(:parent_resource_name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "ParentResourceName")) + SyncBlockerSummary.add_member(:latest_blockers, Shapes::ShapeRef.new(shape: LatestSyncBlockerList, location_name: "LatestBlockers")) + SyncBlockerSummary.struct_class = Types::SyncBlockerSummary + + SyncConfiguration.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, required: true, location_name: "Branch")) + SyncConfiguration.add_member(:config_file, Shapes::ShapeRef.new(shape: DeploymentFilePath, location_name: "ConfigFile")) + SyncConfiguration.add_member(:owner_id, Shapes::ShapeRef.new(shape: OwnerId, required: true, location_name: "OwnerId")) + SyncConfiguration.add_member(:provider_type, Shapes::ShapeRef.new(shape: ProviderType, required: true, location_name: "ProviderType")) + SyncConfiguration.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + SyncConfiguration.add_member(:repository_name, Shapes::ShapeRef.new(shape: RepositoryName, required: true, location_name: "RepositoryName")) + SyncConfiguration.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + SyncConfiguration.add_member(:role_arn, Shapes::ShapeRef.new(shape: IamRoleArn, required: true, location_name: "RoleArn")) + SyncConfiguration.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + SyncConfiguration.struct_class = Types::SyncConfiguration + + SyncConfigurationList.member = Shapes::ShapeRef.new(shape: SyncConfiguration) + + SyncConfigurationStillExistsException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + SyncConfigurationStillExistsException.struct_class = Types::SyncConfigurationStillExistsException + Tag.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, required: true, location_name: "Key")) Tag.add_member(:value, Shapes::ShapeRef.new(shape: TagValue, required: true, location_name: "Value")) Tag.struct_class = Types::Tag @@ -195,9 +497,15 @@ module ClientApi TagResourceOutput.struct_class = Types::TagResourceOutput + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + ThrottlingException.struct_class = Types::ThrottlingException + UnsupportedOperationException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) UnsupportedOperationException.struct_class = Types::UnsupportedOperationException + UnsupportedProviderTypeException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + UnsupportedProviderTypeException.struct_class = Types::UnsupportedProviderTypeException + UntagResourceInput.add_member(:resource_arn, Shapes::ShapeRef.new(shape: AmazonResourceName, required: true, location_name: "ResourceArn")) UntagResourceInput.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeyList, required: true, location_name: "TagKeys")) UntagResourceInput.struct_class = Types::UntagResourceInput @@ -211,6 +519,39 @@ module ClientApi UpdateHostOutput.struct_class = Types::UpdateHostOutput + UpdateOutOfSyncException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + UpdateOutOfSyncException.struct_class = Types::UpdateOutOfSyncException + + UpdateRepositoryLinkInput.add_member(:connection_arn, Shapes::ShapeRef.new(shape: ConnectionArn, location_name: "ConnectionArn")) + UpdateRepositoryLinkInput.add_member(:encryption_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "EncryptionKeyArn")) + UpdateRepositoryLinkInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, required: true, location_name: "RepositoryLinkId")) + UpdateRepositoryLinkInput.struct_class = Types::UpdateRepositoryLinkInput + + UpdateRepositoryLinkOutput.add_member(:repository_link_info, Shapes::ShapeRef.new(shape: RepositoryLinkInfo, required: true, location_name: "RepositoryLinkInfo")) + UpdateRepositoryLinkOutput.struct_class = Types::UpdateRepositoryLinkOutput + + UpdateSyncBlockerInput.add_member(:id, Shapes::ShapeRef.new(shape: Id, required: true, location_name: "Id")) + UpdateSyncBlockerInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + UpdateSyncBlockerInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + UpdateSyncBlockerInput.add_member(:resolved_reason, Shapes::ShapeRef.new(shape: ResolvedReason, required: true, location_name: "ResolvedReason")) + UpdateSyncBlockerInput.struct_class = Types::UpdateSyncBlockerInput + + UpdateSyncBlockerOutput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + UpdateSyncBlockerOutput.add_member(:parent_resource_name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "ParentResourceName")) + UpdateSyncBlockerOutput.add_member(:sync_blocker, Shapes::ShapeRef.new(shape: SyncBlocker, required: true, location_name: "SyncBlocker")) + UpdateSyncBlockerOutput.struct_class = Types::UpdateSyncBlockerOutput + + UpdateSyncConfigurationInput.add_member(:branch, Shapes::ShapeRef.new(shape: BranchName, location_name: "Branch")) + UpdateSyncConfigurationInput.add_member(:config_file, Shapes::ShapeRef.new(shape: DeploymentFilePath, location_name: "ConfigFile")) + UpdateSyncConfigurationInput.add_member(:repository_link_id, Shapes::ShapeRef.new(shape: RepositoryLinkId, location_name: "RepositoryLinkId")) + UpdateSyncConfigurationInput.add_member(:resource_name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "ResourceName")) + UpdateSyncConfigurationInput.add_member(:role_arn, Shapes::ShapeRef.new(shape: IamRoleArn, location_name: "RoleArn")) + UpdateSyncConfigurationInput.add_member(:sync_type, Shapes::ShapeRef.new(shape: SyncConfigurationType, required: true, location_name: "SyncType")) + UpdateSyncConfigurationInput.struct_class = Types::UpdateSyncConfigurationInput + + UpdateSyncConfigurationOutput.add_member(:sync_configuration, Shapes::ShapeRef.new(shape: SyncConfiguration, required: true, location_name: "SyncConfiguration")) + UpdateSyncConfigurationOutput.struct_class = Types::UpdateSyncConfigurationOutput + VpcConfiguration.add_member(:vpc_id, Shapes::ShapeRef.new(shape: VpcId, required: true, location_name: "VpcId")) VpcConfiguration.add_member(:subnet_ids, Shapes::ShapeRef.new(shape: SubnetIds, required: true, location_name: "SubnetIds")) VpcConfiguration.add_member(:security_group_ids, Shapes::ShapeRef.new(shape: SecurityGroupIds, required: true, location_name: "SecurityGroupIds")) @@ -256,6 +597,36 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) end) + api.add_operation(:create_repository_link, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateRepositoryLink" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CreateRepositoryLinkInput) + o.output = Shapes::ShapeRef.new(shape: CreateRepositoryLinkOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ResourceAlreadyExistsException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:create_sync_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateSyncConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CreateSyncConfigurationInput) + o.output = Shapes::ShapeRef.new(shape: CreateSyncConfigurationOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ResourceAlreadyExistsException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + api.add_operation(:delete_connection, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteConnection" o.http_method = "POST" @@ -275,6 +646,36 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceUnavailableException) end) + api.add_operation(:delete_repository_link, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteRepositoryLink" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DeleteRepositoryLinkInput) + o.output = Shapes::ShapeRef.new(shape: DeleteRepositoryLinkOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: SyncConfigurationStillExistsException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: UnsupportedProviderTypeException) + end) + + api.add_operation(:delete_sync_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteSyncConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DeleteSyncConfigurationInput) + o.output = Shapes::ShapeRef.new(shape: DeleteSyncConfigurationOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + api.add_operation(:get_connection, Seahorse::Model::Operation.new.tap do |o| o.name = "GetConnection" o.http_method = "POST" @@ -295,6 +696,72 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceUnavailableException) end) + api.add_operation(:get_repository_link, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetRepositoryLink" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetRepositoryLinkInput) + o.output = Shapes::ShapeRef.new(shape: GetRepositoryLinkOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:get_repository_sync_status, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetRepositorySyncStatus" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetRepositorySyncStatusInput) + o.output = Shapes::ShapeRef.new(shape: GetRepositorySyncStatusOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:get_resource_sync_status, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetResourceSyncStatus" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetResourceSyncStatusInput) + o.output = Shapes::ShapeRef.new(shape: GetResourceSyncStatusOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:get_sync_blocker_summary, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetSyncBlockerSummary" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetSyncBlockerSummaryInput) + o.output = Shapes::ShapeRef.new(shape: GetSyncBlockerSummaryOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:get_sync_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetSyncConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetSyncConfigurationInput) + o.output = Shapes::ShapeRef.new(shape: GetSyncConfigurationOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + api.add_operation(:list_connections, Seahorse::Model::Operation.new.tap do |o| o.name = "ListConnections" o.http_method = "POST" @@ -324,6 +791,58 @@ module ClientApi ) end) + api.add_operation(:list_repository_links, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListRepositoryLinks" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListRepositoryLinksInput) + o.output = Shapes::ShapeRef.new(shape: ListRepositoryLinksOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_repository_sync_definitions, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListRepositorySyncDefinitions" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListRepositorySyncDefinitionsInput) + o.output = Shapes::ShapeRef.new(shape: ListRepositorySyncDefinitionsOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:list_sync_configurations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListSyncConfigurations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListSyncConfigurationsInput) + o.output = Shapes::ShapeRef.new(shape: ListSyncConfigurationsOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "ListTagsForResource" o.http_method = "POST" @@ -363,6 +882,51 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceUnavailableException) o.errors << Shapes::ShapeRef.new(shape: UnsupportedOperationException) end) + + api.add_operation(:update_repository_link, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateRepositoryLink" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateRepositoryLinkInput) + o.output = Shapes::ShapeRef.new(shape: UpdateRepositoryLinkOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConditionalCheckFailedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: UpdateOutOfSyncException) + end) + + api.add_operation(:update_sync_blocker, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSyncBlocker" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateSyncBlockerInput) + o.output = Shapes::ShapeRef.new(shape: UpdateSyncBlockerOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: RetryLatestCommitFailedException) + o.errors << Shapes::ShapeRef.new(shape: SyncBlockerDoesNotExistException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:update_sync_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSyncConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateSyncConfigurationInput) + o.output = Shapes::ShapeRef.new(shape: UpdateSyncConfigurationOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: UpdateOutOfSyncException) + end) end end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/endpoints.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/endpoints.rb index b28315ddba7..8ad2aaf7399 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/endpoints.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/endpoints.rb @@ -40,6 +40,34 @@ def self.build(context) end end + class CreateRepositoryLink + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class CreateSyncConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteConnection def self.build(context) unless context.config.regional_endpoint @@ -68,6 +96,34 @@ def self.build(context) end end + class DeleteRepositoryLink + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteSyncConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetConnection def self.build(context) unless context.config.regional_endpoint @@ -96,6 +152,76 @@ def self.build(context) end end + class GetRepositoryLink + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetRepositorySyncStatus + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetResourceSyncStatus + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetSyncBlockerSummary + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetSyncConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListConnections def self.build(context) unless context.config.regional_endpoint @@ -124,6 +250,48 @@ def self.build(context) end end + class ListRepositoryLinks + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListRepositorySyncDefinitions + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListSyncConfigurations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListTagsForResource def self.build(context) unless context.config.regional_endpoint @@ -180,5 +348,47 @@ def self.build(context) end end + class UpdateRepositoryLink + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateSyncBlocker + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateSyncConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CodeStarconnections::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + end end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/errors.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/errors.rb index a16888a137f..d66b536262c 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/errors.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/errors.rb @@ -27,11 +27,23 @@ module Aws::CodeStarconnections # See {Seahorse::Client::RequestContext} for more information. # # ## Error Classes + # * {AccessDeniedException} + # * {ConcurrentModificationException} + # * {ConditionalCheckFailedException} # * {ConflictException} + # * {InternalServerException} + # * {InvalidInputException} # * {LimitExceededException} + # * {ResourceAlreadyExistsException} # * {ResourceNotFoundException} # * {ResourceUnavailableException} + # * {RetryLatestCommitFailedException} + # * {SyncBlockerDoesNotExistException} + # * {SyncConfigurationStillExistsException} + # * {ThrottlingException} # * {UnsupportedOperationException} + # * {UnsupportedProviderTypeException} + # * {UpdateOutOfSyncException} # # Additionally, error classes are dynamically generated for service errors based on the error code # if they are not defined above. @@ -39,6 +51,51 @@ module Errors extend Aws::Errors::DynamicErrors + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ConcurrentModificationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::ConcurrentModificationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ConditionalCheckFailedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::ConditionalCheckFailedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + class ConflictException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -54,6 +111,36 @@ def message end end + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InvalidInputException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::InvalidInputException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + class LimitExceededException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -69,6 +156,21 @@ def message end end + class ResourceAlreadyExistsException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::ResourceAlreadyExistsException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + class ResourceNotFoundException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -99,6 +201,66 @@ def message end end + class RetryLatestCommitFailedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::RetryLatestCommitFailedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class SyncBlockerDoesNotExistException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::SyncBlockerDoesNotExistException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class SyncConfigurationStillExistsException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::SyncConfigurationStillExistsException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + class UnsupportedOperationException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -114,5 +276,35 @@ def message end end + class UnsupportedProviderTypeException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::UnsupportedProviderTypeException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class UpdateOutOfSyncException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CodeStarconnections::Types::UpdateOutOfSyncException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + end end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/plugins/endpoints.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/plugins/endpoints.rb index 504f4698d2c..60eeb3be110 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/plugins/endpoints.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/plugins/endpoints.rb @@ -60,18 +60,42 @@ def parameters_for_operation(context) Aws::CodeStarconnections::Endpoints::CreateConnection.build(context) when :create_host Aws::CodeStarconnections::Endpoints::CreateHost.build(context) + when :create_repository_link + Aws::CodeStarconnections::Endpoints::CreateRepositoryLink.build(context) + when :create_sync_configuration + Aws::CodeStarconnections::Endpoints::CreateSyncConfiguration.build(context) when :delete_connection Aws::CodeStarconnections::Endpoints::DeleteConnection.build(context) when :delete_host Aws::CodeStarconnections::Endpoints::DeleteHost.build(context) + when :delete_repository_link + Aws::CodeStarconnections::Endpoints::DeleteRepositoryLink.build(context) + when :delete_sync_configuration + Aws::CodeStarconnections::Endpoints::DeleteSyncConfiguration.build(context) when :get_connection Aws::CodeStarconnections::Endpoints::GetConnection.build(context) when :get_host Aws::CodeStarconnections::Endpoints::GetHost.build(context) + when :get_repository_link + Aws::CodeStarconnections::Endpoints::GetRepositoryLink.build(context) + when :get_repository_sync_status + Aws::CodeStarconnections::Endpoints::GetRepositorySyncStatus.build(context) + when :get_resource_sync_status + Aws::CodeStarconnections::Endpoints::GetResourceSyncStatus.build(context) + when :get_sync_blocker_summary + Aws::CodeStarconnections::Endpoints::GetSyncBlockerSummary.build(context) + when :get_sync_configuration + Aws::CodeStarconnections::Endpoints::GetSyncConfiguration.build(context) when :list_connections Aws::CodeStarconnections::Endpoints::ListConnections.build(context) when :list_hosts Aws::CodeStarconnections::Endpoints::ListHosts.build(context) + when :list_repository_links + Aws::CodeStarconnections::Endpoints::ListRepositoryLinks.build(context) + when :list_repository_sync_definitions + Aws::CodeStarconnections::Endpoints::ListRepositorySyncDefinitions.build(context) + when :list_sync_configurations + Aws::CodeStarconnections::Endpoints::ListSyncConfigurations.build(context) when :list_tags_for_resource Aws::CodeStarconnections::Endpoints::ListTagsForResource.build(context) when :tag_resource @@ -80,6 +104,12 @@ def parameters_for_operation(context) Aws::CodeStarconnections::Endpoints::UntagResource.build(context) when :update_host Aws::CodeStarconnections::Endpoints::UpdateHost.build(context) + when :update_repository_link + Aws::CodeStarconnections::Endpoints::UpdateRepositoryLink.build(context) + when :update_sync_blocker + Aws::CodeStarconnections::Endpoints::UpdateSyncBlocker.build(context) + when :update_sync_configuration + Aws::CodeStarconnections::Endpoints::UpdateSyncConfiguration.build(context) end end end diff --git a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/types.rb b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/types.rb index 48757202c90..42300f18f7d 100644 --- a/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/types.rb +++ b/gems/aws-sdk-codestarconnections/lib/aws-sdk-codestarconnections/types.rb @@ -10,6 +10,47 @@ module Aws::CodeStarconnections module Types + # You do not have sufficient access to perform this action. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Exception thrown as a result of concurrent modification to an + # application. For example, two individuals attempting to edit the same + # application at the same time. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ConcurrentModificationException AWS API Documentation + # + class ConcurrentModificationException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The conditional check failed. Try again later. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ConditionalCheckFailedException AWS API Documentation + # + class ConditionalCheckFailedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # Two conflicting operations have been made on the same resource. # # @!attribute [rw] message @@ -153,6 +194,7 @@ class CreateConnectionOutput < Struct.new( # @return [Types::VpcConfiguration] # # @!attribute [rw] tags + # Tags for the host to be created. # @return [Array] # # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateHostInput AWS API Documentation @@ -172,6 +214,7 @@ class CreateHostInput < Struct.new( # @return [String] # # @!attribute [rw] tags + # Tags for the created host. # @return [Array] # # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateHostOutput AWS API Documentation @@ -183,6 +226,114 @@ class CreateHostOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] connection_arn + # The Amazon Resource Name (ARN) of the connection to be associated + # with the repository link. + # @return [String] + # + # @!attribute [rw] owner_id + # The owner ID for the repository associated with a specific sync + # configuration, such as the owner ID in GitHub. + # @return [String] + # + # @!attribute [rw] repository_name + # The name of the repository to be associated with the repository + # link. + # @return [String] + # + # @!attribute [rw] encryption_key_arn + # The Amazon Resource Name (ARN) encryption key for the repository to + # be associated with the repository link. + # @return [String] + # + # @!attribute [rw] tags + # The tags for the repository to be associated with the repository + # link. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateRepositoryLinkInput AWS API Documentation + # + class CreateRepositoryLinkInput < Struct.new( + :connection_arn, + :owner_id, + :repository_name, + :encryption_key_arn, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] repository_link_info + # The returned information about the created repository link. + # @return [Types::RepositoryLinkInfo] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateRepositoryLinkOutput AWS API Documentation + # + class CreateRepositoryLinkOutput < Struct.new( + :repository_link_info) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] branch + # The branch in the repository from which changes will be synced. + # @return [String] + # + # @!attribute [rw] config_file + # The file name of the configuration file that manages syncing between + # the connection and the repository. This configuration file is stored + # in the repository. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The ID of the repository link created for the connection. A + # repository link allows Git sync to monitor and sync changes to files + # in a specified Git repository. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource (for example, a + # CloudFormation stack in the case of CFN\_STACK\_SYNC) that will be + # synchronized from the linked repository. + # @return [String] + # + # @!attribute [rw] role_arn + # The ARN of the IAM role that grants permission for Amazon Web + # Services to use Git sync to update a given Amazon Web Services + # resource on your behalf. + # @return [String] + # + # @!attribute [rw] sync_type + # The type of sync configuration. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateSyncConfigurationInput AWS API Documentation + # + class CreateSyncConfigurationInput < Struct.new( + :branch, + :config_file, + :repository_link_id, + :resource_name, + :role_arn, + :sync_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_configuration + # The created sync configuration for the connection. A sync + # configuration allows Amazon Web Services to sync content from a Git + # repository to update a specified Amazon Web Services resource. + # @return [Types::SyncConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/CreateSyncConfigurationOutput AWS API Documentation + # + class CreateSyncConfigurationOutput < Struct.new( + :sync_configuration) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] connection_arn # The Amazon Resource Name (ARN) of the connection to be deleted. # @@ -219,6 +370,44 @@ class DeleteHostInput < Struct.new( # class DeleteHostOutput < Aws::EmptyStructure; end + # @!attribute [rw] repository_link_id + # The ID of the repository link to be deleted. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteRepositoryLinkInput AWS API Documentation + # + class DeleteRepositoryLinkInput < Struct.new( + :repository_link_id) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteRepositoryLinkOutput AWS API Documentation + # + class DeleteRepositoryLinkOutput < Aws::EmptyStructure; end + + # @!attribute [rw] sync_type + # The type of sync configuration to be deleted. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource associated with the + # sync configuration to be deleted. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteSyncConfigurationInput AWS API Documentation + # + class DeleteSyncConfigurationInput < Struct.new( + :sync_type, + :resource_name) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/DeleteSyncConfigurationOutput AWS API Documentation + # + class DeleteSyncConfigurationOutput < Aws::EmptyStructure; end + # @!attribute [rw] connection_arn # The Amazon Resource Name (ARN) of a connection. # @return [String] @@ -289,6 +478,171 @@ class GetHostOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] repository_link_id + # The ID of the repository link to get. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositoryLinkInput AWS API Documentation + # + class GetRepositoryLinkInput < Struct.new( + :repository_link_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] repository_link_info + # The information returned for a specified repository link. + # @return [Types::RepositoryLinkInfo] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositoryLinkOutput AWS API Documentation + # + class GetRepositoryLinkOutput < Struct.new( + :repository_link_info) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] branch + # The branch of the repository link for the requested repository sync + # status. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The repository link ID for the requested repository sync status. + # @return [String] + # + # @!attribute [rw] sync_type + # The sync type of the requested sync status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositorySyncStatusInput AWS API Documentation + # + class GetRepositorySyncStatusInput < Struct.new( + :branch, + :repository_link_id, + :sync_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] latest_sync + # The status of the latest sync returned for a specified repository + # and branch. + # @return [Types::RepositorySyncAttempt] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetRepositorySyncStatusOutput AWS API Documentation + # + class GetRepositorySyncStatusOutput < Struct.new( + :latest_sync) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource for the sync status + # with the Git repository. + # @return [String] + # + # @!attribute [rw] sync_type + # The sync type for the sync status with the Git repository. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetResourceSyncStatusInput AWS API Documentation + # + class GetResourceSyncStatusInput < Struct.new( + :resource_name, + :sync_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] desired_state + # The desired state of the Amazon Web Services resource for the sync + # status with the Git repository. + # @return [Types::Revision] + # + # @!attribute [rw] latest_successful_sync + # The latest successful sync for the sync status with the Git + # repository. + # @return [Types::ResourceSyncAttempt] + # + # @!attribute [rw] latest_sync + # The latest sync for the sync status with the Git repository, whether + # successful or not. + # @return [Types::ResourceSyncAttempt] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetResourceSyncStatusOutput AWS API Documentation + # + class GetResourceSyncStatusOutput < Struct.new( + :desired_state, + :latest_successful_sync, + :latest_sync) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_type + # The sync type for the sync blocker summary. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource currently blocked from + # automatically being synced from a Git repository. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncBlockerSummaryInput AWS API Documentation + # + class GetSyncBlockerSummaryInput < Struct.new( + :sync_type, + :resource_name) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_blocker_summary + # The list of sync blockers for a specified resource. + # @return [Types::SyncBlockerSummary] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncBlockerSummaryOutput AWS API Documentation + # + class GetSyncBlockerSummaryOutput < Struct.new( + :sync_blocker_summary) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_type + # The sync type for the sync configuration for which you want to + # retrieve information. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource for the sync + # configuration for which you want to retrieve information. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncConfigurationInput AWS API Documentation + # + class GetSyncConfigurationInput < Struct.new( + :sync_type, + :resource_name) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_configuration + # The details about the sync configuration for which you want to + # retrieve information. + # @return [Types::SyncConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/GetSyncConfigurationOutput AWS API Documentation + # + class GetSyncConfigurationOutput < Struct.new( + :sync_configuration) + SENSITIVE = [] + include Aws::Structure + end + # A resource that represents the infrastructure where a third-party # provider is installed. The host is used when you create connections to # an installed third-party provider type, such as GitHub Enterprise @@ -348,6 +702,32 @@ class Host < Struct.new( include Aws::Structure end + # Received an internal server exception. Try again later. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The input is not valid. Verify that the action is typed correctly. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/InvalidInputException AWS API Documentation + # + class InvalidInputException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # Exceeded the maximum limit for connections. # # @!attribute [rw] message @@ -454,94 +834,706 @@ class ListHostsOutput < Struct.new( include Aws::Structure end - # @!attribute [rw] resource_arn - # The Amazon Resource Name (ARN) of the resource for which you want to - # get information about tags, if any. + # @!attribute [rw] max_results + # A non-zero, non-negative integer used to limit the number of + # returned results. + # @return [Integer] + # + # @!attribute [rw] next_token + # An enumeration token that, when provided in a request, returns the + # next batch of the results. # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListTagsForResourceInput AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositoryLinksInput AWS API Documentation # - class ListTagsForResourceInput < Struct.new( - :resource_arn) + class ListRepositoryLinksInput < Struct.new( + :max_results, + :next_token) SENSITIVE = [] include Aws::Structure end - # @!attribute [rw] tags - # A list of tag key and value pairs associated with the specified - # resource. - # @return [Array] + # @!attribute [rw] repository_links + # Lists the repository links called by the list repository links + # operation. + # @return [Array] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListTagsForResourceOutput AWS API Documentation + # @!attribute [rw] next_token + # An enumeration token that allows the operation to batch the results + # of the operation. + # @return [String] # - class ListTagsForResourceOutput < Struct.new( - :tags) + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositoryLinksOutput AWS API Documentation + # + class ListRepositoryLinksOutput < Struct.new( + :repository_links, + :next_token) SENSITIVE = [] include Aws::Structure end - # Resource not found. Verify the connection resource ARN and try again. + # @!attribute [rw] repository_link_id + # The ID of the repository link for the sync definition for which you + # want to retrieve information. + # @return [String] # - # @!attribute [rw] message + # @!attribute [rw] sync_type + # The sync type of the repository link for the the sync definition for + # which you want to retrieve information. # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceNotFoundException AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositorySyncDefinitionsInput AWS API Documentation # - class ResourceNotFoundException < Struct.new( - :message) + class ListRepositorySyncDefinitionsInput < Struct.new( + :repository_link_id, + :sync_type) SENSITIVE = [] include Aws::Structure end - # Resource not found. Verify the ARN for the host resource and try - # again. + # @!attribute [rw] repository_sync_definitions + # The list of repository sync definitions returned by the request. A + # `RepositorySyncDefinition` is a mapping from a repository branch to + # all the Amazon Web Services resources that are being synced from + # that branch. + # @return [Array] # - # @!attribute [rw] message + # @!attribute [rw] next_token + # An enumeration token that, when provided in a request, returns the + # next batch of the results. # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceUnavailableException AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListRepositorySyncDefinitionsOutput AWS API Documentation # - class ResourceUnavailableException < Struct.new( - :message) + class ListRepositorySyncDefinitionsOutput < Struct.new( + :repository_sync_definitions, + :next_token) SENSITIVE = [] include Aws::Structure end - # A tag is a key-value pair that is used to manage the resource. + # @!attribute [rw] max_results + # A non-zero, non-negative integer used to limit the number of + # returned results. + # @return [Integer] # - # This tag is available for use by Amazon Web Services services that - # support tags. + # @!attribute [rw] next_token + # An enumeration token that allows the operation to batch the results + # of the operation. + # @return [String] # - # @!attribute [rw] key - # The tag's key. + # @!attribute [rw] repository_link_id + # The ID of the repository link for the requested list of sync + # configurations. # @return [String] # - # @!attribute [rw] value - # The tag's value. + # @!attribute [rw] sync_type + # The sync type for the requested list of sync configurations. # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/Tag AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListSyncConfigurationsInput AWS API Documentation # - class Tag < Struct.new( - :key, - :value) + class ListSyncConfigurationsInput < Struct.new( + :max_results, + :next_token, + :repository_link_id, + :sync_type) SENSITIVE = [] include Aws::Structure end - # @!attribute [rw] resource_arn - # The Amazon Resource Name (ARN) of the resource to which you want to - # add or update tags. - # @return [String] + # @!attribute [rw] sync_configurations + # The list of repository sync definitions returned by the request. + # @return [Array] # - # @!attribute [rw] tags - # The tags you want to modify or add to the resource. - # @return [Array] + # @!attribute [rw] next_token + # An enumeration token that allows the operation to batch the next + # results of the operation. + # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/TagResourceInput AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListSyncConfigurationsOutput AWS API Documentation # - class TagResourceInput < Struct.new( - :resource_arn, + class ListSyncConfigurationsOutput < Struct.new( + :sync_configurations, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource for which you want to + # get information about tags, if any. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListTagsForResourceInput AWS API Documentation + # + class ListTagsForResourceInput < Struct.new( + :resource_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] tags + # A list of tag key and value pairs associated with the specified + # resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ListTagsForResourceOutput AWS API Documentation + # + class ListTagsForResourceOutput < Struct.new( + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the repository link resource, such as the repository + # link ARN, the associated connection ARN, encryption key ARN, and owner + # ID. + # + # @!attribute [rw] connection_arn + # The Amazon Resource Name (ARN) of the connection associated with the + # repository link. + # @return [String] + # + # @!attribute [rw] encryption_key_arn + # The Amazon Resource Name (ARN) of the encryption key for the + # repository associated with the repository link. + # @return [String] + # + # @!attribute [rw] owner_id + # The owner ID for the repository associated with the repository link, + # such as the owner ID in GitHub. + # @return [String] + # + # @!attribute [rw] provider_type + # The provider type for the connection, such as GitHub, associated + # with the repository link. + # @return [String] + # + # @!attribute [rw] repository_link_arn + # The Amazon Resource Name (ARN) of the repository link. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The ID of the repository link. + # @return [String] + # + # @!attribute [rw] repository_name + # The name of the repository associated with the repository link. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/RepositoryLinkInfo AWS API Documentation + # + class RepositoryLinkInfo < Struct.new( + :connection_arn, + :encryption_key_arn, + :owner_id, + :provider_type, + :repository_link_arn, + :repository_link_id, + :repository_name) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a repository sync attempt for a repository with a + # sync configuration. + # + # @!attribute [rw] started_at + # The start time of a specific sync attempt. + # @return [Time] + # + # @!attribute [rw] status + # The status of a specific sync attempt. The following are valid + # statuses: + # + # * INITIATED - A repository sync attempt has been created and will + # begin soon. + # + # * IN\_PROGRESS - A repository sync attempt has started and work is + # being done to reconcile the branch. + # + # * SUCCEEDED - The repository sync attempt has completed + # successfully. + # + # * FAILED - The repository sync attempt has failed. + # + # * QUEUED - The repository sync attempt didn't execute and was + # queued. + # @return [String] + # + # @!attribute [rw] events + # The events associated with a specific sync attempt. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/RepositorySyncAttempt AWS API Documentation + # + class RepositorySyncAttempt < Struct.new( + :started_at, + :status, + :events) + SENSITIVE = [] + include Aws::Structure + end + + # The definition for a repository with a sync configuration. + # + # @!attribute [rw] branch + # The branch specified for a repository sync definition. + # @return [String] + # + # @!attribute [rw] directory + # The configuration file for a repository sync definition. This value + # comes from creating or updating the `config-file` field of a + # `sync-configuration`. + # @return [String] + # + # @!attribute [rw] parent + # The parent resource specified for a repository sync definition. + # @return [String] + # + # @!attribute [rw] target + # The target resource specified for a repository sync definition. In + # some cases, such as CFN\_STACK\_SYNC, the parent and target resource + # are the same. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/RepositorySyncDefinition AWS API Documentation + # + class RepositorySyncDefinition < Struct.new( + :branch, + :directory, + :parent, + :target) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a repository sync event. + # + # @!attribute [rw] event + # A description of a repository sync event. + # @return [String] + # + # @!attribute [rw] external_id + # The ID for a repository sync event. + # @return [String] + # + # @!attribute [rw] time + # The time that a repository sync event occurred. + # @return [Time] + # + # @!attribute [rw] type + # The event type for a repository sync event. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/RepositorySyncEvent AWS API Documentation + # + class RepositorySyncEvent < Struct.new( + :event, + :external_id, + :time, + :type) + SENSITIVE = [] + include Aws::Structure + end + + # Unable to create resource. Resource already exists. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceAlreadyExistsException AWS API Documentation + # + class ResourceAlreadyExistsException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Resource not found. Verify the connection resource ARN and try again. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a resource sync attempt. + # + # @!attribute [rw] events + # The events related to a resource sync attempt. + # @return [Array] + # + # @!attribute [rw] initial_revision + # The current state of the resource as defined in the resource's + # `config-file` in the linked repository. + # @return [Types::Revision] + # + # @!attribute [rw] started_at + # The start time for a resource sync attempt. + # @return [Time] + # + # @!attribute [rw] status + # The status for a resource sync attempt. The follow are valid + # statuses: + # + # * SYNC-INITIATED - A resource sync attempt has been created and will + # begin soon. + # + # * SYNCING - Syncing has started and work is being done to reconcile + # state. + # + # * SYNCED - Syncing has completed successfully. + # + # * SYNC\_FAILED - A resource sync attempt has failed. + # @return [String] + # + # @!attribute [rw] target_revision + # The desired state of the resource as defined in the resource's + # `config-file` in the linked repository. Git sync attempts to update + # the resource to this state. + # @return [Types::Revision] + # + # @!attribute [rw] target + # The name of the Amazon Web Services resource that is attempted to be + # synchronized. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceSyncAttempt AWS API Documentation + # + class ResourceSyncAttempt < Struct.new( + :events, + :initial_revision, + :started_at, + :status, + :target_revision, + :target) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a resource sync event for the resource associated + # with a sync configuration. + # + # @!attribute [rw] event + # The event for a resource sync event. + # @return [String] + # + # @!attribute [rw] external_id + # The ID for a resource sync event. + # @return [String] + # + # @!attribute [rw] time + # The time that a resource sync event occurred. + # @return [Time] + # + # @!attribute [rw] type + # The type of resource sync event. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceSyncEvent AWS API Documentation + # + class ResourceSyncEvent < Struct.new( + :event, + :external_id, + :time, + :type) + SENSITIVE = [] + include Aws::Structure + end + + # Resource not found. Verify the ARN for the host resource and try + # again. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ResourceUnavailableException AWS API Documentation + # + class ResourceUnavailableException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Retrying the latest commit failed. Try again later. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/RetryLatestCommitFailedException AWS API Documentation + # + class RetryLatestCommitFailedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the revision for a specific sync event, such as the + # branch, owner ID, and name of the repository. + # + # @!attribute [rw] branch + # The branch name for a specific revision. + # @return [String] + # + # @!attribute [rw] directory + # The directory, if any, for a specific revision. + # @return [String] + # + # @!attribute [rw] owner_id + # The owner ID for a specific revision, such as the GitHub owner ID + # for a GitHub repository. + # @return [String] + # + # @!attribute [rw] repository_name + # The repository name for a specific revision. + # @return [String] + # + # @!attribute [rw] provider_type + # The provider type for a revision, such as GitHub. + # @return [String] + # + # @!attribute [rw] sha + # The SHA, such as the commit ID, for a specific revision. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/Revision AWS API Documentation + # + class Revision < Struct.new( + :branch, + :directory, + :owner_id, + :repository_name, + :provider_type, + :sha) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a blocker for a sync event. + # + # @!attribute [rw] id + # The ID for a specific sync blocker. + # @return [String] + # + # @!attribute [rw] type + # The sync blocker type. + # @return [String] + # + # @!attribute [rw] status + # The status for a specific sync blocker. + # @return [String] + # + # @!attribute [rw] created_reason + # The provided reason for a specific sync blocker. + # @return [String] + # + # @!attribute [rw] created_at + # The creation time for a specific sync blocker. + # @return [Time] + # + # @!attribute [rw] contexts + # The contexts for a specific sync blocker. + # @return [Array] + # + # @!attribute [rw] resolved_reason + # The resolved reason for a specific sync blocker. + # @return [String] + # + # @!attribute [rw] resolved_at + # The time that a specific sync blocker was resolved. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncBlocker AWS API Documentation + # + class SyncBlocker < Struct.new( + :id, + :type, + :status, + :created_reason, + :created_at, + :contexts, + :resolved_reason, + :resolved_at) + SENSITIVE = [] + include Aws::Structure + end + + # The context for a specific sync blocker. + # + # @!attribute [rw] key + # The key provided for a context key-value pair for a specific sync + # blocker. + # @return [String] + # + # @!attribute [rw] value + # The value provided for a context key-value pair for a specific sync + # blocker. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncBlockerContext AWS API Documentation + # + class SyncBlockerContext < Struct.new( + :key, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # Unable to continue. The sync blocker does not exist. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncBlockerDoesNotExistException AWS API Documentation + # + class SyncBlockerDoesNotExistException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # A summary for sync blockers. + # + # @!attribute [rw] resource_name + # The resource name for sync blocker summary. + # @return [String] + # + # @!attribute [rw] parent_resource_name + # The parent resource name for a sync blocker summary. + # @return [String] + # + # @!attribute [rw] latest_blockers + # The latest events for a sync blocker summary. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncBlockerSummary AWS API Documentation + # + class SyncBlockerSummary < Struct.new( + :resource_name, + :parent_resource_name, + :latest_blockers) + SENSITIVE = [] + include Aws::Structure + end + + # Information, such as repository, branch, provider, and resource names + # for a specific sync configuration. + # + # @!attribute [rw] branch + # The branch associated with a specific sync configuration. + # @return [String] + # + # @!attribute [rw] config_file + # The file path to the configuration file associated with a specific + # sync configuration. The path should point to an actual file in the + # sync configurations linked repository. + # @return [String] + # + # @!attribute [rw] owner_id + # The owner ID for the repository associated with a specific sync + # configuration, such as the owner ID in GitHub. + # @return [String] + # + # @!attribute [rw] provider_type + # The connection provider type associated with a specific sync + # configuration, such as GitHub. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The ID of the repository link associated with a specific sync + # configuration. + # @return [String] + # + # @!attribute [rw] repository_name + # The name of the repository associated with a specific sync + # configuration. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the connection resource associated with a specific sync + # configuration. + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the IAM role associated with a + # specific sync configuration. + # @return [String] + # + # @!attribute [rw] sync_type + # The type of sync for a specific sync configuration. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncConfiguration AWS API Documentation + # + class SyncConfiguration < Struct.new( + :branch, + :config_file, + :owner_id, + :provider_type, + :repository_link_id, + :repository_name, + :resource_name, + :role_arn, + :sync_type) + SENSITIVE = [] + include Aws::Structure + end + + # Unable to continue. The sync blocker still exists. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/SyncConfigurationStillExistsException AWS API Documentation + # + class SyncConfigurationStillExistsException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # A tag is a key-value pair that is used to manage the resource. + # + # This tag is available for use by Amazon Web Services services that + # support tags. + # + # @!attribute [rw] key + # The tag's key. + # @return [String] + # + # @!attribute [rw] value + # The tag's value. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/Tag AWS API Documentation + # + class Tag < Struct.new( + :key, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource to which you want to + # add or update tags. + # @return [String] + # + # @!attribute [rw] tags + # The tags you want to modify or add to the resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/TagResourceInput AWS API Documentation + # + class TagResourceInput < Struct.new( + :resource_arn, :tags) SENSITIVE = [] include Aws::Structure @@ -551,6 +1543,19 @@ class TagResourceInput < Struct.new( # class TagResourceOutput < Aws::EmptyStructure; end + # The request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # The operation is not supported. Check the connection status and try # again. # @@ -565,6 +1570,19 @@ class UnsupportedOperationException < Struct.new( include Aws::Structure end + # The specified provider type is not supported for connections. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UnsupportedProviderTypeException AWS API Documentation + # + class UnsupportedProviderTypeException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The Amazon Resource Name (ARN) of the resource to remove tags from. # @return [String] @@ -614,6 +1632,157 @@ class UpdateHostInput < Struct.new( # class UpdateHostOutput < Aws::EmptyStructure; end + # The update is out of sync. Try syncing again. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateOutOfSyncException AWS API Documentation + # + class UpdateOutOfSyncException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] connection_arn + # The Amazon Resource Name (ARN) of the connection for the repository + # link to be updated. The updated connection ARN must have the same + # providerType (such as GitHub) as the original connection ARN for the + # repo link. + # @return [String] + # + # @!attribute [rw] encryption_key_arn + # The Amazon Resource Name (ARN) of the encryption key for the + # repository link to be updated. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The ID of the repository link to be updated. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateRepositoryLinkInput AWS API Documentation + # + class UpdateRepositoryLinkInput < Struct.new( + :connection_arn, + :encryption_key_arn, + :repository_link_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] repository_link_info + # Information about the repository link to be updated. + # @return [Types::RepositoryLinkInfo] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateRepositoryLinkOutput AWS API Documentation + # + class UpdateRepositoryLinkOutput < Struct.new( + :repository_link_info) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the sync blocker to be updated. + # @return [String] + # + # @!attribute [rw] sync_type + # The sync type of the sync blocker to be updated. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the resource for the sync blocker to be updated. + # @return [String] + # + # @!attribute [rw] resolved_reason + # The reason for resolving the sync blocker. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncBlockerInput AWS API Documentation + # + class UpdateSyncBlockerInput < Struct.new( + :id, + :sync_type, + :resource_name, + :resolved_reason) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_name + # The resource name for the sync blocker. + # @return [String] + # + # @!attribute [rw] parent_resource_name + # The parent resource name for the sync blocker. + # @return [String] + # + # @!attribute [rw] sync_blocker + # Information about the sync blocker to be updated. + # @return [Types::SyncBlocker] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncBlockerOutput AWS API Documentation + # + class UpdateSyncBlockerOutput < Struct.new( + :resource_name, + :parent_resource_name, + :sync_blocker) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] branch + # The branch for the sync configuration to be updated. + # @return [String] + # + # @!attribute [rw] config_file + # The configuration file for the sync configuration to be updated. + # @return [String] + # + # @!attribute [rw] repository_link_id + # The ID of the repository link for the sync configuration to be + # updated. + # @return [String] + # + # @!attribute [rw] resource_name + # The name of the Amazon Web Services resource for the sync + # configuration to be updated. + # @return [String] + # + # @!attribute [rw] role_arn + # The ARN of the IAM role for the sync configuration to be updated. + # @return [String] + # + # @!attribute [rw] sync_type + # The sync type for the sync configuration to be updated. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncConfigurationInput AWS API Documentation + # + class UpdateSyncConfigurationInput < Struct.new( + :branch, + :config_file, + :repository_link_id, + :resource_name, + :role_arn, + :sync_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] sync_configuration + # The information returned for the sync configuration to be updated. + # @return [Types::SyncConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/codestar-connections-2019-12-01/UpdateSyncConfigurationOutput AWS API Documentation + # + class UpdateSyncConfigurationOutput < Struct.new( + :sync_configuration) + SENSITIVE = [] + include Aws::Structure + end + # The VPC configuration provisioned for the host. # # @!attribute [rw] vpc_id diff --git a/gems/aws-sdk-computeoptimizer/CHANGELOG.md b/gems/aws-sdk-computeoptimizer/CHANGELOG.md index 331f665a5d6..dd2ea1383b8 100644 --- a/gems/aws-sdk-computeoptimizer/CHANGELOG.md +++ b/gems/aws-sdk-computeoptimizer/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.51.0 (2023-11-27) +------------------ + +* Feature - This release enables AWS Compute Optimizer to analyze and generate recommendations with customization and discounts preferences. + 1.50.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-computeoptimizer/VERSION b/gems/aws-sdk-computeoptimizer/VERSION index 5a5c7211dc6..ba0a719118c 100644 --- a/gems/aws-sdk-computeoptimizer/VERSION +++ b/gems/aws-sdk-computeoptimizer/VERSION @@ -1 +1 @@ -1.50.0 +1.51.0 diff --git a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer.rb b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer.rb index e629da4c7f3..413e0e740ca 100644 --- a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer.rb +++ b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer.rb @@ -52,6 +52,6 @@ # @!group service module Aws::ComputeOptimizer - GEM_VERSION = '1.50.0' + GEM_VERSION = '1.51.0' end diff --git a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client.rb b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client.rb index 65ca2412c13..33452b273a0 100644 --- a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client.rb +++ b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client.rb @@ -448,7 +448,7 @@ def initialize(*args) # name: "Organization", # accepts Organization, AccountId, ResourceArn # value: "ScopeValue", # }, - # recommendation_preference_names: ["EnhancedInfrastructureMetrics"], # required, accepts EnhancedInfrastructureMetrics, InferredWorkloadTypes, ExternalMetricsPreference + # recommendation_preference_names: ["EnhancedInfrastructureMetrics"], # required, accepts EnhancedInfrastructureMetrics, InferredWorkloadTypes, ExternalMetricsPreference, LookBackPeriodPreference, PreferredResources, UtilizationPreferences # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/DeleteRecommendationPreferences AWS API Documentation @@ -644,7 +644,7 @@ def describe_recommendation_export_jobs(params = {}, options = {}) # values: ["FilterValue"], # }, # ], - # fields_to_export: ["AccountId"], # accepts AccountId, AutoScalingGroupArn, AutoScalingGroupName, Finding, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, UtilizationMetricsEbsReadOpsPerSecondMaximum, UtilizationMetricsEbsWriteOpsPerSecondMaximum, UtilizationMetricsEbsReadBytesPerSecondMaximum, UtilizationMetricsEbsWriteBytesPerSecondMaximum, UtilizationMetricsDiskReadOpsPerSecondMaximum, UtilizationMetricsDiskWriteOpsPerSecondMaximum, UtilizationMetricsDiskReadBytesPerSecondMaximum, UtilizationMetricsDiskWriteBytesPerSecondMaximum, UtilizationMetricsNetworkInBytesPerSecondMaximum, UtilizationMetricsNetworkOutBytesPerSecondMaximum, UtilizationMetricsNetworkPacketsInPerSecondMaximum, UtilizationMetricsNetworkPacketsOutPerSecondMaximum, LookbackPeriodInDays, CurrentConfigurationInstanceType, CurrentConfigurationDesiredCapacity, CurrentConfigurationMinSize, CurrentConfigurationMaxSize, CurrentOnDemandPrice, CurrentStandardOneYearNoUpfrontReservedPrice, CurrentStandardThreeYearNoUpfrontReservedPrice, CurrentVCpus, CurrentMemory, CurrentStorage, CurrentNetwork, RecommendationOptionsConfigurationInstanceType, RecommendationOptionsConfigurationDesiredCapacity, RecommendationOptionsConfigurationMinSize, RecommendationOptionsConfigurationMaxSize, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, RecommendationOptionsPerformanceRisk, RecommendationOptionsOnDemandPrice, RecommendationOptionsStandardOneYearNoUpfrontReservedPrice, RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice, RecommendationOptionsVcpus, RecommendationOptionsMemory, RecommendationOptionsStorage, RecommendationOptionsNetwork, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, EffectiveRecommendationPreferencesCpuVendorArchitectures, EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics, EffectiveRecommendationPreferencesInferredWorkloadTypes, InferredWorkloadTypes, RecommendationOptionsMigrationEffort, CurrentInstanceGpuInfo, RecommendationOptionsInstanceGpuInfo, UtilizationMetricsGpuPercentageMaximum, UtilizationMetricsGpuMemoryPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum + # fields_to_export: ["AccountId"], # accepts AccountId, AutoScalingGroupArn, AutoScalingGroupName, Finding, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, UtilizationMetricsEbsReadOpsPerSecondMaximum, UtilizationMetricsEbsWriteOpsPerSecondMaximum, UtilizationMetricsEbsReadBytesPerSecondMaximum, UtilizationMetricsEbsWriteBytesPerSecondMaximum, UtilizationMetricsDiskReadOpsPerSecondMaximum, UtilizationMetricsDiskWriteOpsPerSecondMaximum, UtilizationMetricsDiskReadBytesPerSecondMaximum, UtilizationMetricsDiskWriteBytesPerSecondMaximum, UtilizationMetricsNetworkInBytesPerSecondMaximum, UtilizationMetricsNetworkOutBytesPerSecondMaximum, UtilizationMetricsNetworkPacketsInPerSecondMaximum, UtilizationMetricsNetworkPacketsOutPerSecondMaximum, LookbackPeriodInDays, CurrentConfigurationInstanceType, CurrentConfigurationDesiredCapacity, CurrentConfigurationMinSize, CurrentConfigurationMaxSize, CurrentOnDemandPrice, CurrentStandardOneYearNoUpfrontReservedPrice, CurrentStandardThreeYearNoUpfrontReservedPrice, CurrentVCpus, CurrentMemory, CurrentStorage, CurrentNetwork, RecommendationOptionsConfigurationInstanceType, RecommendationOptionsConfigurationDesiredCapacity, RecommendationOptionsConfigurationMinSize, RecommendationOptionsConfigurationMaxSize, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, RecommendationOptionsPerformanceRisk, RecommendationOptionsOnDemandPrice, RecommendationOptionsStandardOneYearNoUpfrontReservedPrice, RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice, RecommendationOptionsVcpus, RecommendationOptionsMemory, RecommendationOptionsStorage, RecommendationOptionsNetwork, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, EffectiveRecommendationPreferencesCpuVendorArchitectures, EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics, EffectiveRecommendationPreferencesInferredWorkloadTypes, InferredWorkloadTypes, RecommendationOptionsMigrationEffort, CurrentInstanceGpuInfo, RecommendationOptionsInstanceGpuInfo, UtilizationMetricsGpuPercentageMaximum, UtilizationMetricsGpuMemoryPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum, EffectiveRecommendationPreferencesSavingsEstimationMode, RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts, RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts, EffectiveRecommendationPreferencesPreferredResources, EffectiveRecommendationPreferencesLookBackPeriod # s3_destination_config: { # required # bucket: "DestinationBucket", # key_prefix: "DestinationKeyPrefix", @@ -778,7 +778,7 @@ def export_auto_scaling_group_recommendations(params = {}, options = {}) # values: ["FilterValue"], # }, # ], - # fields_to_export: ["AccountId"], # accepts AccountId, VolumeArn, Finding, UtilizationMetricsVolumeReadOpsPerSecondMaximum, UtilizationMetricsVolumeWriteOpsPerSecondMaximum, UtilizationMetricsVolumeReadBytesPerSecondMaximum, UtilizationMetricsVolumeWriteBytesPerSecondMaximum, LookbackPeriodInDays, CurrentConfigurationVolumeType, CurrentConfigurationVolumeBaselineIOPS, CurrentConfigurationVolumeBaselineThroughput, CurrentConfigurationVolumeBurstIOPS, CurrentConfigurationVolumeBurstThroughput, CurrentConfigurationVolumeSize, CurrentMonthlyPrice, RecommendationOptionsConfigurationVolumeType, RecommendationOptionsConfigurationVolumeBaselineIOPS, RecommendationOptionsConfigurationVolumeBaselineThroughput, RecommendationOptionsConfigurationVolumeBurstIOPS, RecommendationOptionsConfigurationVolumeBurstThroughput, RecommendationOptionsConfigurationVolumeSize, RecommendationOptionsMonthlyPrice, RecommendationOptionsPerformanceRisk, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, RootVolume, Tags, CurrentConfigurationRootVolume + # fields_to_export: ["AccountId"], # accepts AccountId, VolumeArn, Finding, UtilizationMetricsVolumeReadOpsPerSecondMaximum, UtilizationMetricsVolumeWriteOpsPerSecondMaximum, UtilizationMetricsVolumeReadBytesPerSecondMaximum, UtilizationMetricsVolumeWriteBytesPerSecondMaximum, LookbackPeriodInDays, CurrentConfigurationVolumeType, CurrentConfigurationVolumeBaselineIOPS, CurrentConfigurationVolumeBaselineThroughput, CurrentConfigurationVolumeBurstIOPS, CurrentConfigurationVolumeBurstThroughput, CurrentConfigurationVolumeSize, CurrentMonthlyPrice, RecommendationOptionsConfigurationVolumeType, RecommendationOptionsConfigurationVolumeBaselineIOPS, RecommendationOptionsConfigurationVolumeBaselineThroughput, RecommendationOptionsConfigurationVolumeBurstIOPS, RecommendationOptionsConfigurationVolumeBurstThroughput, RecommendationOptionsConfigurationVolumeSize, RecommendationOptionsMonthlyPrice, RecommendationOptionsPerformanceRisk, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, RootVolume, Tags, CurrentConfigurationRootVolume, EffectiveRecommendationPreferencesSavingsEstimationMode, RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts, RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts # s3_destination_config: { # required # bucket: "DestinationBucket", # key_prefix: "DestinationKeyPrefix", @@ -910,7 +910,7 @@ def export_ebs_volume_recommendations(params = {}, options = {}) # values: ["FilterValue"], # }, # ], - # fields_to_export: ["AccountId"], # accepts AccountId, InstanceArn, InstanceName, Finding, FindingReasonCodes, LookbackPeriodInDays, CurrentInstanceType, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, UtilizationMetricsEbsReadOpsPerSecondMaximum, UtilizationMetricsEbsWriteOpsPerSecondMaximum, UtilizationMetricsEbsReadBytesPerSecondMaximum, UtilizationMetricsEbsWriteBytesPerSecondMaximum, UtilizationMetricsDiskReadOpsPerSecondMaximum, UtilizationMetricsDiskWriteOpsPerSecondMaximum, UtilizationMetricsDiskReadBytesPerSecondMaximum, UtilizationMetricsDiskWriteBytesPerSecondMaximum, UtilizationMetricsNetworkInBytesPerSecondMaximum, UtilizationMetricsNetworkOutBytesPerSecondMaximum, UtilizationMetricsNetworkPacketsInPerSecondMaximum, UtilizationMetricsNetworkPacketsOutPerSecondMaximum, CurrentOnDemandPrice, CurrentStandardOneYearNoUpfrontReservedPrice, CurrentStandardThreeYearNoUpfrontReservedPrice, CurrentVCpus, CurrentMemory, CurrentStorage, CurrentNetwork, RecommendationOptionsInstanceType, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, RecommendationOptionsPlatformDifferences, RecommendationOptionsPerformanceRisk, RecommendationOptionsVcpus, RecommendationOptionsMemory, RecommendationOptionsStorage, RecommendationOptionsNetwork, RecommendationOptionsOnDemandPrice, RecommendationOptionsStandardOneYearNoUpfrontReservedPrice, RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice, RecommendationsSourcesRecommendationSourceArn, RecommendationsSourcesRecommendationSourceType, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, EffectiveRecommendationPreferencesCpuVendorArchitectures, EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics, EffectiveRecommendationPreferencesInferredWorkloadTypes, InferredWorkloadTypes, RecommendationOptionsMigrationEffort, EffectiveRecommendationPreferencesExternalMetricsSource, InstanceState, Tags, ExternalMetricStatusCode, ExternalMetricStatusReason, CurrentInstanceGpuInfo, RecommendationOptionsInstanceGpuInfo, UtilizationMetricsGpuPercentageMaximum, UtilizationMetricsGpuMemoryPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum, Idle + # fields_to_export: ["AccountId"], # accepts AccountId, InstanceArn, InstanceName, Finding, FindingReasonCodes, LookbackPeriodInDays, CurrentInstanceType, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, UtilizationMetricsEbsReadOpsPerSecondMaximum, UtilizationMetricsEbsWriteOpsPerSecondMaximum, UtilizationMetricsEbsReadBytesPerSecondMaximum, UtilizationMetricsEbsWriteBytesPerSecondMaximum, UtilizationMetricsDiskReadOpsPerSecondMaximum, UtilizationMetricsDiskWriteOpsPerSecondMaximum, UtilizationMetricsDiskReadBytesPerSecondMaximum, UtilizationMetricsDiskWriteBytesPerSecondMaximum, UtilizationMetricsNetworkInBytesPerSecondMaximum, UtilizationMetricsNetworkOutBytesPerSecondMaximum, UtilizationMetricsNetworkPacketsInPerSecondMaximum, UtilizationMetricsNetworkPacketsOutPerSecondMaximum, CurrentOnDemandPrice, CurrentStandardOneYearNoUpfrontReservedPrice, CurrentStandardThreeYearNoUpfrontReservedPrice, CurrentVCpus, CurrentMemory, CurrentStorage, CurrentNetwork, RecommendationOptionsInstanceType, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, RecommendationOptionsPlatformDifferences, RecommendationOptionsPerformanceRisk, RecommendationOptionsVcpus, RecommendationOptionsMemory, RecommendationOptionsStorage, RecommendationOptionsNetwork, RecommendationOptionsOnDemandPrice, RecommendationOptionsStandardOneYearNoUpfrontReservedPrice, RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice, RecommendationsSourcesRecommendationSourceArn, RecommendationsSourcesRecommendationSourceType, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, EffectiveRecommendationPreferencesCpuVendorArchitectures, EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics, EffectiveRecommendationPreferencesInferredWorkloadTypes, InferredWorkloadTypes, RecommendationOptionsMigrationEffort, EffectiveRecommendationPreferencesExternalMetricsSource, InstanceState, Tags, ExternalMetricStatusCode, ExternalMetricStatusReason, CurrentInstanceGpuInfo, RecommendationOptionsInstanceGpuInfo, UtilizationMetricsGpuPercentageMaximum, UtilizationMetricsGpuMemoryPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum, RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum, Idle, EffectiveRecommendationPreferencesPreferredResources, EffectiveRecommendationPreferencesLookBackPeriod, EffectiveRecommendationPreferencesUtilizationPreferences, EffectiveRecommendationPreferencesSavingsEstimationMode, RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts, RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts # s3_destination_config: { # required # bucket: "DestinationBucket", # key_prefix: "DestinationKeyPrefix", @@ -1043,7 +1043,7 @@ def export_ec2_instance_recommendations(params = {}, options = {}) # values: ["FilterValue"], # }, # ], - # fields_to_export: ["AccountId"], # accepts AccountId, ServiceArn, LookbackPeriodInDays, LastRefreshTimestamp, LaunchType, CurrentPerformanceRisk, CurrentServiceConfigurationMemory, CurrentServiceConfigurationCpu, CurrentServiceConfigurationTaskDefinitionArn, CurrentServiceConfigurationAutoScalingConfiguration, CurrentServiceContainerConfigurations, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, Finding, FindingReasonCodes, RecommendationOptionsMemory, RecommendationOptionsCpu, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, RecommendationOptionsContainerRecommendations, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, Tags + # fields_to_export: ["AccountId"], # accepts AccountId, ServiceArn, LookbackPeriodInDays, LastRefreshTimestamp, LaunchType, CurrentPerformanceRisk, CurrentServiceConfigurationMemory, CurrentServiceConfigurationCpu, CurrentServiceConfigurationTaskDefinitionArn, CurrentServiceConfigurationAutoScalingConfiguration, CurrentServiceContainerConfigurations, UtilizationMetricsCpuMaximum, UtilizationMetricsMemoryMaximum, Finding, FindingReasonCodes, RecommendationOptionsMemory, RecommendationOptionsCpu, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, RecommendationOptionsContainerRecommendations, RecommendationOptionsProjectedUtilizationMetricsCpuMaximum, RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum, Tags, EffectiveRecommendationPreferencesSavingsEstimationMode, RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts, RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts # s3_destination_config: { # required # bucket: "DestinationBucket", # key_prefix: "DestinationKeyPrefix", @@ -1174,7 +1174,7 @@ def export_ecs_service_recommendations(params = {}, options = {}) # values: ["FilterValue"], # }, # ], - # fields_to_export: ["AccountId"], # accepts AccountId, FunctionArn, FunctionVersion, Finding, FindingReasonCodes, NumberOfInvocations, UtilizationMetricsDurationMaximum, UtilizationMetricsDurationAverage, UtilizationMetricsMemoryMaximum, UtilizationMetricsMemoryAverage, LookbackPeriodInDays, CurrentConfigurationMemorySize, CurrentConfigurationTimeout, CurrentCostTotal, CurrentCostAverage, RecommendationOptionsConfigurationMemorySize, RecommendationOptionsCostLow, RecommendationOptionsCostHigh, RecommendationOptionsProjectedUtilizationMetricsDurationLowerBound, RecommendationOptionsProjectedUtilizationMetricsDurationUpperBound, RecommendationOptionsProjectedUtilizationMetricsDurationExpected, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, Tags + # fields_to_export: ["AccountId"], # accepts AccountId, FunctionArn, FunctionVersion, Finding, FindingReasonCodes, NumberOfInvocations, UtilizationMetricsDurationMaximum, UtilizationMetricsDurationAverage, UtilizationMetricsMemoryMaximum, UtilizationMetricsMemoryAverage, LookbackPeriodInDays, CurrentConfigurationMemorySize, CurrentConfigurationTimeout, CurrentCostTotal, CurrentCostAverage, RecommendationOptionsConfigurationMemorySize, RecommendationOptionsCostLow, RecommendationOptionsCostHigh, RecommendationOptionsProjectedUtilizationMetricsDurationLowerBound, RecommendationOptionsProjectedUtilizationMetricsDurationUpperBound, RecommendationOptionsProjectedUtilizationMetricsDurationExpected, LastRefreshTimestamp, CurrentPerformanceRisk, RecommendationOptionsSavingsOpportunityPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrency, RecommendationOptionsEstimatedMonthlySavingsValue, Tags, EffectiveRecommendationPreferencesSavingsEstimationMode, RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage, RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts, RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts # s3_destination_config: { # required # bucket: "DestinationBucket", # key_prefix: "DestinationKeyPrefix", @@ -1430,6 +1430,9 @@ def export_license_recommendations(params = {}, options = {}) # resp.auto_scaling_group_recommendations[0].recommendation_options[0].instance_gpu_info.gpus #=> Array # resp.auto_scaling_group_recommendations[0].recommendation_options[0].instance_gpu_info.gpus[0].gpu_count #=> Integer # resp.auto_scaling_group_recommendations[0].recommendation_options[0].instance_gpu_info.gpus[0].gpu_memory_size_in_mi_b #=> Integer + # resp.auto_scaling_group_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.savings_opportunity_percentage #=> Float + # resp.auto_scaling_group_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" + # resp.auto_scaling_group_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.value #=> Float # resp.auto_scaling_group_recommendations[0].last_refresh_timestamp #=> Time # resp.auto_scaling_group_recommendations[0].current_performance_risk #=> String, one of "VeryLow", "Low", "Medium", "High" # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.cpu_vendor_architectures #=> Array @@ -1437,6 +1440,20 @@ def export_license_recommendations(params = {}, options = {}) # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.enhanced_infrastructure_metrics #=> String, one of "Active", "Inactive" # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.inferred_workload_types #=> String, one of "Active", "Inactive" # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.external_metrics_preference.source #=> String, one of "Datadog", "Dynatrace", "NewRelic", "Instana" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.look_back_period #=> String, one of "DAYS_14", "DAYS_32", "DAYS_93" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.utilization_preferences #=> Array + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_name #=> String, one of "CpuUtilization" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_parameters.threshold #=> String, one of "P90", "P95", "P99_5" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_parameters.headroom #=> String, one of "PERCENT_30", "PERCENT_20", "PERCENT_0" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources #=> Array + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].name #=> String, one of "Ec2InstanceTypes" + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].include_list #=> Array + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].include_list[0] #=> String + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].effective_include_list #=> Array + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].effective_include_list[0] #=> String + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].exclude_list #=> Array + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.preferred_resources[0].exclude_list[0] #=> String + # resp.auto_scaling_group_recommendations[0].effective_recommendation_preferences.savings_estimation_mode.source #=> String, one of "PublicPricing", "CostExplorerRightsizing", "CostOptimizationHub" # resp.auto_scaling_group_recommendations[0].inferred_workload_types #=> Array # resp.auto_scaling_group_recommendations[0].inferred_workload_types[0] #=> String, one of "AmazonEmr", "ApacheCassandra", "ApacheHadoop", "Memcached", "Nginx", "PostgreSql", "Redis", "Kafka", "SQLServer" # resp.auto_scaling_group_recommendations[0].current_instance_gpu_info.gpus #=> Array @@ -1549,11 +1566,15 @@ def get_auto_scaling_group_recommendations(params = {}, options = {}) # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity.savings_opportunity_percentage #=> Float # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity.estimated_monthly_savings.value #=> Float + # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity_after_discounts.savings_opportunity_percentage #=> Float + # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" + # resp.volume_recommendations[0].volume_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.value #=> Float # resp.volume_recommendations[0].last_refresh_timestamp #=> Time # resp.volume_recommendations[0].current_performance_risk #=> String, one of "VeryLow", "Low", "Medium", "High" # resp.volume_recommendations[0].tags #=> Array # resp.volume_recommendations[0].tags[0].key #=> String # resp.volume_recommendations[0].tags[0].value #=> String + # resp.volume_recommendations[0].effective_recommendation_preferences.savings_estimation_mode.source #=> String, one of "PublicPricing", "CostExplorerRightsizing", "CostOptimizationHub" # resp.errors #=> Array # resp.errors[0].identifier #=> String # resp.errors[0].code #=> String @@ -1668,6 +1689,9 @@ def get_ebs_volume_recommendations(params = {}, options = {}) # resp.instance_recommendations[0].recommendation_options[0].instance_gpu_info.gpus #=> Array # resp.instance_recommendations[0].recommendation_options[0].instance_gpu_info.gpus[0].gpu_count #=> Integer # resp.instance_recommendations[0].recommendation_options[0].instance_gpu_info.gpus[0].gpu_memory_size_in_mi_b #=> Integer + # resp.instance_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.savings_opportunity_percentage #=> Float + # resp.instance_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" + # resp.instance_recommendations[0].recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.value #=> Float # resp.instance_recommendations[0].recommendation_sources #=> Array # resp.instance_recommendations[0].recommendation_sources[0].recommendation_source_arn #=> String # resp.instance_recommendations[0].recommendation_sources[0].recommendation_source_type #=> String, one of "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "EcsService", "License" @@ -1678,6 +1702,20 @@ def get_ebs_volume_recommendations(params = {}, options = {}) # resp.instance_recommendations[0].effective_recommendation_preferences.enhanced_infrastructure_metrics #=> String, one of "Active", "Inactive" # resp.instance_recommendations[0].effective_recommendation_preferences.inferred_workload_types #=> String, one of "Active", "Inactive" # resp.instance_recommendations[0].effective_recommendation_preferences.external_metrics_preference.source #=> String, one of "Datadog", "Dynatrace", "NewRelic", "Instana" + # resp.instance_recommendations[0].effective_recommendation_preferences.look_back_period #=> String, one of "DAYS_14", "DAYS_32", "DAYS_93" + # resp.instance_recommendations[0].effective_recommendation_preferences.utilization_preferences #=> Array + # resp.instance_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_name #=> String, one of "CpuUtilization" + # resp.instance_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_parameters.threshold #=> String, one of "P90", "P95", "P99_5" + # resp.instance_recommendations[0].effective_recommendation_preferences.utilization_preferences[0].metric_parameters.headroom #=> String, one of "PERCENT_30", "PERCENT_20", "PERCENT_0" + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources #=> Array + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].name #=> String, one of "Ec2InstanceTypes" + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].include_list #=> Array + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].include_list[0] #=> String + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].effective_include_list #=> Array + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].effective_include_list[0] #=> String + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].exclude_list #=> Array + # resp.instance_recommendations[0].effective_recommendation_preferences.preferred_resources[0].exclude_list[0] #=> String + # resp.instance_recommendations[0].effective_recommendation_preferences.savings_estimation_mode.source #=> String, one of "PublicPricing", "CostExplorerRightsizing", "CostOptimizationHub" # resp.instance_recommendations[0].inferred_workload_types #=> Array # resp.instance_recommendations[0].inferred_workload_types[0] #=> String, one of "AmazonEmr", "ApacheCassandra", "ApacheHadoop", "Memcached", "Nginx", "PostgreSql", "Redis", "Kafka", "SQLServer" # resp.instance_recommendations[0].instance_state #=> String, one of "pending", "running", "shutting-down", "terminated", "stopping", "stopped" @@ -1940,10 +1978,14 @@ def get_ecs_service_recommendation_projected_metrics(params = {}, options = {}) # resp.ecs_service_recommendations[0].service_recommendation_options[0].container_recommendations[0].memory_size_configuration.memory #=> Integer # resp.ecs_service_recommendations[0].service_recommendation_options[0].container_recommendations[0].memory_size_configuration.memory_reservation #=> Integer # resp.ecs_service_recommendations[0].service_recommendation_options[0].container_recommendations[0].cpu #=> Integer + # resp.ecs_service_recommendations[0].service_recommendation_options[0].savings_opportunity_after_discounts.savings_opportunity_percentage #=> Float + # resp.ecs_service_recommendations[0].service_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" + # resp.ecs_service_recommendations[0].service_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.value #=> Float # resp.ecs_service_recommendations[0].current_performance_risk #=> String, one of "VeryLow", "Low", "Medium", "High" # resp.ecs_service_recommendations[0].tags #=> Array # resp.ecs_service_recommendations[0].tags[0].key #=> String # resp.ecs_service_recommendations[0].tags[0].value #=> String + # resp.ecs_service_recommendations[0].effective_recommendation_preferences.savings_estimation_mode.source #=> String, one of "PublicPricing", "CostExplorerRightsizing", "CostOptimizationHub" # resp.errors #=> Array # resp.errors[0].identifier #=> String # resp.errors[0].code #=> String @@ -1976,6 +2018,9 @@ def get_ecs_service_recommendations(params = {}, options = {}) # # * {Types::GetEffectiveRecommendationPreferencesResponse#enhanced_infrastructure_metrics #enhanced_infrastructure_metrics} => String # * {Types::GetEffectiveRecommendationPreferencesResponse#external_metrics_preference #external_metrics_preference} => Types::ExternalMetricsPreference + # * {Types::GetEffectiveRecommendationPreferencesResponse#look_back_period #look_back_period} => String + # * {Types::GetEffectiveRecommendationPreferencesResponse#utilization_preferences #utilization_preferences} => Array<Types::UtilizationPreference> + # * {Types::GetEffectiveRecommendationPreferencesResponse#preferred_resources #preferred_resources} => Array<Types::EffectivePreferredResource> # # @example Request syntax with placeholder values # @@ -1987,6 +2032,19 @@ def get_ecs_service_recommendations(params = {}, options = {}) # # resp.enhanced_infrastructure_metrics #=> String, one of "Active", "Inactive" # resp.external_metrics_preference.source #=> String, one of "Datadog", "Dynatrace", "NewRelic", "Instana" + # resp.look_back_period #=> String, one of "DAYS_14", "DAYS_32", "DAYS_93" + # resp.utilization_preferences #=> Array + # resp.utilization_preferences[0].metric_name #=> String, one of "CpuUtilization" + # resp.utilization_preferences[0].metric_parameters.threshold #=> String, one of "P90", "P95", "P99_5" + # resp.utilization_preferences[0].metric_parameters.headroom #=> String, one of "PERCENT_30", "PERCENT_20", "PERCENT_0" + # resp.preferred_resources #=> Array + # resp.preferred_resources[0].name #=> String, one of "Ec2InstanceTypes" + # resp.preferred_resources[0].include_list #=> Array + # resp.preferred_resources[0].include_list[0] #=> String + # resp.preferred_resources[0].effective_include_list #=> Array + # resp.preferred_resources[0].effective_include_list[0] #=> String + # resp.preferred_resources[0].exclude_list #=> Array + # resp.preferred_resources[0].exclude_list[0] #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEffectiveRecommendationPreferences AWS API Documentation # @@ -2191,10 +2249,14 @@ def get_enrollment_statuses_for_organization(params = {}, options = {}) # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity.savings_opportunity_percentage #=> Float # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity.estimated_monthly_savings.value #=> Float + # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity_after_discounts.savings_opportunity_percentage #=> Float + # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.currency #=> String, one of "USD", "CNY" + # resp.lambda_function_recommendations[0].memory_size_recommendation_options[0].savings_opportunity_after_discounts.estimated_monthly_savings.value #=> Float # resp.lambda_function_recommendations[0].current_performance_risk #=> String, one of "VeryLow", "Low", "Medium", "High" # resp.lambda_function_recommendations[0].tags #=> Array # resp.lambda_function_recommendations[0].tags[0].key #=> String # resp.lambda_function_recommendations[0].tags[0].value #=> String + # resp.lambda_function_recommendations[0].effective_recommendation_preferences.savings_estimation_mode.source #=> String, one of "PublicPricing", "CostExplorerRightsizing", "CostOptimizationHub" # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetLambdaFunctionRecommendations AWS API Documentation # @@ -2396,6 +2458,20 @@ def get_license_recommendations(params = {}, options = {}) # resp.recommendation_preferences_details[0].enhanced_infrastructure_metrics #=> String, one of "Active", "Inactive" # resp.recommendation_preferences_details[0].inferred_workload_types #=> String, one of "Active", "Inactive" # resp.recommendation_preferences_details[0].external_metrics_preference.source #=> String, one of "Datadog", "Dynatrace", "NewRelic", "Instana" + # resp.recommendation_preferences_details[0].look_back_period #=> String, one of "DAYS_14", "DAYS_32", "DAYS_93" + # resp.recommendation_preferences_details[0].utilization_preferences #=> Array + # resp.recommendation_preferences_details[0].utilization_preferences[0].metric_name #=> String, one of "CpuUtilization" + # resp.recommendation_preferences_details[0].utilization_preferences[0].metric_parameters.threshold #=> String, one of "P90", "P95", "P99_5" + # resp.recommendation_preferences_details[0].utilization_preferences[0].metric_parameters.headroom #=> String, one of "PERCENT_30", "PERCENT_20", "PERCENT_0" + # resp.recommendation_preferences_details[0].preferred_resources #=> Array + # resp.recommendation_preferences_details[0].preferred_resources[0].name #=> String, one of "Ec2InstanceTypes" + # resp.recommendation_preferences_details[0].preferred_resources[0].include_list #=> Array + # resp.recommendation_preferences_details[0].preferred_resources[0].include_list[0] #=> String + # resp.recommendation_preferences_details[0].preferred_resources[0].effective_include_list #=> Array + # resp.recommendation_preferences_details[0].preferred_resources[0].effective_include_list[0] #=> String + # resp.recommendation_preferences_details[0].preferred_resources[0].exclude_list #=> Array + # resp.recommendation_preferences_details[0].preferred_resources[0].exclude_list[0] #=> String + # resp.recommendation_preferences_details[0].savings_estimation_mode #=> String, one of "AfterDiscounts", "BeforeDiscounts" # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetRecommendationPreferences AWS API Documentation # @@ -2593,6 +2669,59 @@ def get_recommendation_summaries(params = {}, options = {}) # # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html # + # @option params [String] :look_back_period + # The preference to control the number of days the utilization metrics + # of the Amazon Web Services resource are analyzed. When this preference + # isn't specified, we use the default value `DAYS_14`. + # + # You can only set this preference for the Amazon EC2 instance and Auto + # Scaling group resource types. + # + # + # + # @option params [Array] :utilization_preferences + # The preference to control the resource’s CPU utilization thresholds - + # threshold and headroom. When this preference isn't specified, we use + # the following default values: + # + # * `P99_5` for threshold + # + # * `PERCENT_17` for headroom + # + # You can only set this preference for the Amazon EC2 instance resource + # type. + # + # + # + # @option params [Array] :preferred_resources + # The preference to control which resource type values are considered + # when generating rightsizing recommendations. You can specify this + # preference as a combination of include and exclude lists. You must + # specify either an `includeList` or `excludeList`. If the preference is + # an empty set of resource type values, an error occurs. + # + # You can only set this preference for the Amazon EC2 instance and Auto + # Scaling group resource types. + # + # + # + # @option params [String] :savings_estimation_mode + # The status of the savings estimation mode preference to create or + # update. + # + # Specify the `AfterDiscounts` status to activate the preference, or + # specify `BeforeDiscounts` to deactivate the preference. + # + # Only the account manager or delegated administrator of your + # organization can activate this preference. + # + # For more information, see [ Savings estimation mode][1] in the + # *Compute Optimizer User Guide*. + # + # + # + # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/savings-estimation-mode.html + # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values @@ -2608,6 +2737,24 @@ def get_recommendation_summaries(params = {}, options = {}) # external_metrics_preference: { # source: "Datadog", # accepts Datadog, Dynatrace, NewRelic, Instana # }, + # look_back_period: "DAYS_14", # accepts DAYS_14, DAYS_32, DAYS_93 + # utilization_preferences: [ + # { + # metric_name: "CpuUtilization", # accepts CpuUtilization + # metric_parameters: { + # threshold: "P90", # accepts P90, P95, P99_5 + # headroom: "PERCENT_30", # accepts PERCENT_30, PERCENT_20, PERCENT_0 + # }, + # }, + # ], + # preferred_resources: [ + # { + # name: "Ec2InstanceTypes", # accepts Ec2InstanceTypes + # include_list: ["PreferredResourceValue"], + # exclude_list: ["PreferredResourceValue"], + # }, + # ], + # savings_estimation_mode: "AfterDiscounts", # accepts AfterDiscounts, BeforeDiscounts # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/PutRecommendationPreferences AWS API Documentation @@ -2708,7 +2855,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-computeoptimizer' - context[:gem_version] = '1.50.0' + context[:gem_version] = '1.51.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client_api.rb b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client_api.rb index c540b15b1a7..841f4f06f12 100644 --- a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client_api.rb +++ b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/client_api.rb @@ -22,11 +22,13 @@ module ClientApi AutoScalingGroupArn = Shapes::StringShape.new(name: 'AutoScalingGroupArn') AutoScalingGroupArns = Shapes::ListShape.new(name: 'AutoScalingGroupArns') AutoScalingGroupConfiguration = Shapes::StructureShape.new(name: 'AutoScalingGroupConfiguration') + AutoScalingGroupEstimatedMonthlySavings = Shapes::StructureShape.new(name: 'AutoScalingGroupEstimatedMonthlySavings') AutoScalingGroupName = Shapes::StringShape.new(name: 'AutoScalingGroupName') AutoScalingGroupRecommendation = Shapes::StructureShape.new(name: 'AutoScalingGroupRecommendation') AutoScalingGroupRecommendationOption = Shapes::StructureShape.new(name: 'AutoScalingGroupRecommendationOption') AutoScalingGroupRecommendationOptions = Shapes::ListShape.new(name: 'AutoScalingGroupRecommendationOptions') AutoScalingGroupRecommendations = Shapes::ListShape.new(name: 'AutoScalingGroupRecommendations') + AutoScalingGroupSavingsOpportunityAfterDiscounts = Shapes::StructureShape.new(name: 'AutoScalingGroupSavingsOpportunityAfterDiscounts') Code = Shapes::StringShape.new(name: 'Code') ContainerConfiguration = Shapes::StructureShape.new(name: 'ContainerConfiguration') ContainerConfigurations = Shapes::ListShape.new(name: 'ContainerConfigurations') @@ -41,6 +43,10 @@ module ClientApi CurrentInstanceType = Shapes::StringShape.new(name: 'CurrentInstanceType') CurrentPerformanceRisk = Shapes::StringShape.new(name: 'CurrentPerformanceRisk') CurrentPerformanceRiskRatings = Shapes::StructureShape.new(name: 'CurrentPerformanceRiskRatings') + CustomizableMetricHeadroom = Shapes::StringShape.new(name: 'CustomizableMetricHeadroom') + CustomizableMetricName = Shapes::StringShape.new(name: 'CustomizableMetricName') + CustomizableMetricParameters = Shapes::StructureShape.new(name: 'CustomizableMetricParameters') + CustomizableMetricThreshold = Shapes::StringShape.new(name: 'CustomizableMetricThreshold') DeleteRecommendationPreferencesRequest = Shapes::StructureShape.new(name: 'DeleteRecommendationPreferencesRequest') DeleteRecommendationPreferencesResponse = Shapes::StructureShape.new(name: 'DeleteRecommendationPreferencesResponse') DescribeRecommendationExportJobsRequest = Shapes::StructureShape.new(name: 'DescribeRecommendationExportJobsRequest') @@ -49,13 +55,23 @@ module ClientApi DestinationBucket = Shapes::StringShape.new(name: 'DestinationBucket') DestinationKey = Shapes::StringShape.new(name: 'DestinationKey') DestinationKeyPrefix = Shapes::StringShape.new(name: 'DestinationKeyPrefix') + EBSEffectiveRecommendationPreferences = Shapes::StructureShape.new(name: 'EBSEffectiveRecommendationPreferences') + EBSEstimatedMonthlySavings = Shapes::StructureShape.new(name: 'EBSEstimatedMonthlySavings') EBSFilter = Shapes::StructureShape.new(name: 'EBSFilter') EBSFilterName = Shapes::StringShape.new(name: 'EBSFilterName') EBSFilters = Shapes::ListShape.new(name: 'EBSFilters') EBSFinding = Shapes::StringShape.new(name: 'EBSFinding') EBSMetricName = Shapes::StringShape.new(name: 'EBSMetricName') + EBSSavingsEstimationMode = Shapes::StructureShape.new(name: 'EBSSavingsEstimationMode') + EBSSavingsEstimationModeSource = Shapes::StringShape.new(name: 'EBSSavingsEstimationModeSource') + EBSSavingsOpportunityAfterDiscounts = Shapes::StructureShape.new(name: 'EBSSavingsOpportunityAfterDiscounts') EBSUtilizationMetric = Shapes::StructureShape.new(name: 'EBSUtilizationMetric') EBSUtilizationMetrics = Shapes::ListShape.new(name: 'EBSUtilizationMetrics') + ECSEffectiveRecommendationPreferences = Shapes::StructureShape.new(name: 'ECSEffectiveRecommendationPreferences') + ECSEstimatedMonthlySavings = Shapes::StructureShape.new(name: 'ECSEstimatedMonthlySavings') + ECSSavingsEstimationMode = Shapes::StructureShape.new(name: 'ECSSavingsEstimationMode') + ECSSavingsEstimationModeSource = Shapes::StringShape.new(name: 'ECSSavingsEstimationModeSource') + ECSSavingsOpportunityAfterDiscounts = Shapes::StructureShape.new(name: 'ECSSavingsOpportunityAfterDiscounts') ECSServiceLaunchType = Shapes::StringShape.new(name: 'ECSServiceLaunchType') ECSServiceMetricName = Shapes::StringShape.new(name: 'ECSServiceMetricName') ECSServiceMetricStatistic = Shapes::StringShape.new(name: 'ECSServiceMetricStatistic') @@ -77,6 +93,8 @@ module ClientApi ECSServiceRecommendedOptionProjectedMetrics = Shapes::ListShape.new(name: 'ECSServiceRecommendedOptionProjectedMetrics') ECSServiceUtilizationMetric = Shapes::StructureShape.new(name: 'ECSServiceUtilizationMetric') ECSServiceUtilizationMetrics = Shapes::ListShape.new(name: 'ECSServiceUtilizationMetrics') + EffectivePreferredResource = Shapes::StructureShape.new(name: 'EffectivePreferredResource') + EffectivePreferredResources = Shapes::ListShape.new(name: 'EffectivePreferredResources') EffectiveRecommendationPreferences = Shapes::StructureShape.new(name: 'EffectiveRecommendationPreferences') EnhancedInfrastructureMetrics = Shapes::StringShape.new(name: 'EnhancedInfrastructureMetrics') EnrollmentFilter = Shapes::StructureShape.new(name: 'EnrollmentFilter') @@ -169,6 +187,7 @@ module ClientApi InferredWorkloadTypesPreference = Shapes::StringShape.new(name: 'InferredWorkloadTypesPreference') InstanceArn = Shapes::StringShape.new(name: 'InstanceArn') InstanceArns = Shapes::ListShape.new(name: 'InstanceArns') + InstanceEstimatedMonthlySavings = Shapes::StructureShape.new(name: 'InstanceEstimatedMonthlySavings') InstanceIdle = Shapes::StringShape.new(name: 'InstanceIdle') InstanceName = Shapes::StringShape.new(name: 'InstanceName') InstanceRecommendation = Shapes::StructureShape.new(name: 'InstanceRecommendation') @@ -176,6 +195,9 @@ module ClientApi InstanceRecommendationFindingReasonCodes = Shapes::ListShape.new(name: 'InstanceRecommendationFindingReasonCodes') InstanceRecommendationOption = Shapes::StructureShape.new(name: 'InstanceRecommendationOption') InstanceRecommendations = Shapes::ListShape.new(name: 'InstanceRecommendations') + InstanceSavingsEstimationMode = Shapes::StructureShape.new(name: 'InstanceSavingsEstimationMode') + InstanceSavingsEstimationModeSource = Shapes::StringShape.new(name: 'InstanceSavingsEstimationModeSource') + InstanceSavingsOpportunityAfterDiscounts = Shapes::StructureShape.new(name: 'InstanceSavingsOpportunityAfterDiscounts') InstanceState = Shapes::StringShape.new(name: 'InstanceState') InstanceType = Shapes::StringShape.new(name: 'InstanceType') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') @@ -186,6 +208,8 @@ module ClientApi JobId = Shapes::StringShape.new(name: 'JobId') JobIds = Shapes::ListShape.new(name: 'JobIds') JobStatus = Shapes::StringShape.new(name: 'JobStatus') + LambdaEffectiveRecommendationPreferences = Shapes::StructureShape.new(name: 'LambdaEffectiveRecommendationPreferences') + LambdaEstimatedMonthlySavings = Shapes::StructureShape.new(name: 'LambdaEstimatedMonthlySavings') LambdaFunctionMemoryMetricName = Shapes::StringShape.new(name: 'LambdaFunctionMemoryMetricName') LambdaFunctionMemoryMetricStatistic = Shapes::StringShape.new(name: 'LambdaFunctionMemoryMetricStatistic') LambdaFunctionMemoryProjectedMetric = Shapes::StructureShape.new(name: 'LambdaFunctionMemoryProjectedMetric') @@ -204,6 +228,9 @@ module ClientApi LambdaFunctionRecommendations = Shapes::ListShape.new(name: 'LambdaFunctionRecommendations') LambdaFunctionUtilizationMetric = Shapes::StructureShape.new(name: 'LambdaFunctionUtilizationMetric') LambdaFunctionUtilizationMetrics = Shapes::ListShape.new(name: 'LambdaFunctionUtilizationMetrics') + LambdaSavingsEstimationMode = Shapes::StructureShape.new(name: 'LambdaSavingsEstimationMode') + LambdaSavingsEstimationModeSource = Shapes::StringShape.new(name: 'LambdaSavingsEstimationModeSource') + LambdaSavingsOpportunityAfterDiscounts = Shapes::StructureShape.new(name: 'LambdaSavingsOpportunityAfterDiscounts') LastRefreshTimestamp = Shapes::TimestampShape.new(name: 'LastRefreshTimestamp') LastUpdatedTimestamp = Shapes::TimestampShape.new(name: 'LastUpdatedTimestamp') LicenseConfiguration = Shapes::StructureShape.new(name: 'LicenseConfiguration') @@ -223,6 +250,7 @@ module ClientApi LicenseVersion = Shapes::StringShape.new(name: 'LicenseVersion') LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException') LookBackPeriodInDays = Shapes::FloatShape.new(name: 'LookBackPeriodInDays') + LookBackPeriodPreference = Shapes::StringShape.new(name: 'LookBackPeriodPreference') Low = Shapes::IntegerShape.new(name: 'Low') LowerBoundValue = Shapes::FloatShape.new(name: 'LowerBoundValue') MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') @@ -257,6 +285,11 @@ module ClientApi Period = Shapes::IntegerShape.new(name: 'Period') PlatformDifference = Shapes::StringShape.new(name: 'PlatformDifference') PlatformDifferences = Shapes::ListShape.new(name: 'PlatformDifferences') + PreferredResource = Shapes::StructureShape.new(name: 'PreferredResource') + PreferredResourceName = Shapes::StringShape.new(name: 'PreferredResourceName') + PreferredResourceValue = Shapes::StringShape.new(name: 'PreferredResourceValue') + PreferredResourceValues = Shapes::ListShape.new(name: 'PreferredResourceValues') + PreferredResources = Shapes::ListShape.new(name: 'PreferredResources') ProjectedMetric = Shapes::StructureShape.new(name: 'ProjectedMetric') ProjectedMetrics = Shapes::ListShape.new(name: 'ProjectedMetrics') ProjectedUtilizationMetrics = Shapes::ListShape.new(name: 'ProjectedUtilizationMetrics') @@ -289,6 +322,7 @@ module ClientApi RootVolume = Shapes::BooleanShape.new(name: 'RootVolume') S3Destination = Shapes::StructureShape.new(name: 'S3Destination') S3DestinationConfig = Shapes::StructureShape.new(name: 'S3DestinationConfig') + SavingsEstimationMode = Shapes::StringShape.new(name: 'SavingsEstimationMode') SavingsOpportunity = Shapes::StructureShape.new(name: 'SavingsOpportunity') SavingsOpportunityPercentage = Shapes::FloatShape.new(name: 'SavingsOpportunityPercentage') Scope = Shapes::StructureShape.new(name: 'Scope') @@ -316,6 +350,8 @@ module ClientApi UpperBoundValue = Shapes::FloatShape.new(name: 'UpperBoundValue') UtilizationMetric = Shapes::StructureShape.new(name: 'UtilizationMetric') UtilizationMetrics = Shapes::ListShape.new(name: 'UtilizationMetrics') + UtilizationPreference = Shapes::StructureShape.new(name: 'UtilizationPreference') + UtilizationPreferences = Shapes::ListShape.new(name: 'UtilizationPreferences') Value = Shapes::FloatShape.new(name: 'Value') VeryLow = Shapes::IntegerShape.new(name: 'VeryLow') VolumeArn = Shapes::StringShape.new(name: 'VolumeArn') @@ -353,6 +389,10 @@ module ClientApi AutoScalingGroupConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: InstanceType, location_name: "instanceType")) AutoScalingGroupConfiguration.struct_class = Types::AutoScalingGroupConfiguration + AutoScalingGroupEstimatedMonthlySavings.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency")) + AutoScalingGroupEstimatedMonthlySavings.add_member(:value, Shapes::ShapeRef.new(shape: Value, location_name: "value")) + AutoScalingGroupEstimatedMonthlySavings.struct_class = Types::AutoScalingGroupEstimatedMonthlySavings + AutoScalingGroupRecommendation.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId")) AutoScalingGroupRecommendation.add_member(:auto_scaling_group_arn, Shapes::ShapeRef.new(shape: AutoScalingGroupArn, location_name: "autoScalingGroupArn")) AutoScalingGroupRecommendation.add_member(:auto_scaling_group_name, Shapes::ShapeRef.new(shape: AutoScalingGroupName, location_name: "autoScalingGroupName")) @@ -375,12 +415,17 @@ module ClientApi AutoScalingGroupRecommendationOption.add_member(:savings_opportunity, Shapes::ShapeRef.new(shape: SavingsOpportunity, location_name: "savingsOpportunity")) AutoScalingGroupRecommendationOption.add_member(:migration_effort, Shapes::ShapeRef.new(shape: MigrationEffort, location_name: "migrationEffort")) AutoScalingGroupRecommendationOption.add_member(:instance_gpu_info, Shapes::ShapeRef.new(shape: GpuInfo, location_name: "instanceGpuInfo")) + AutoScalingGroupRecommendationOption.add_member(:savings_opportunity_after_discounts, Shapes::ShapeRef.new(shape: AutoScalingGroupSavingsOpportunityAfterDiscounts, location_name: "savingsOpportunityAfterDiscounts")) AutoScalingGroupRecommendationOption.struct_class = Types::AutoScalingGroupRecommendationOption AutoScalingGroupRecommendationOptions.member = Shapes::ShapeRef.new(shape: AutoScalingGroupRecommendationOption) AutoScalingGroupRecommendations.member = Shapes::ShapeRef.new(shape: AutoScalingGroupRecommendation) + AutoScalingGroupSavingsOpportunityAfterDiscounts.add_member(:savings_opportunity_percentage, Shapes::ShapeRef.new(shape: SavingsOpportunityPercentage, location_name: "savingsOpportunityPercentage")) + AutoScalingGroupSavingsOpportunityAfterDiscounts.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: AutoScalingGroupEstimatedMonthlySavings, location_name: "estimatedMonthlySavings")) + AutoScalingGroupSavingsOpportunityAfterDiscounts.struct_class = Types::AutoScalingGroupSavingsOpportunityAfterDiscounts + ContainerConfiguration.add_member(:container_name, Shapes::ShapeRef.new(shape: ContainerName, location_name: "containerName")) ContainerConfiguration.add_member(:memory_size_configuration, Shapes::ShapeRef.new(shape: MemorySizeConfiguration, location_name: "memorySizeConfiguration")) ContainerConfiguration.add_member(:cpu, Shapes::ShapeRef.new(shape: NullableCpu, location_name: "cpu")) @@ -403,6 +448,10 @@ module ClientApi CurrentPerformanceRiskRatings.add_member(:very_low, Shapes::ShapeRef.new(shape: VeryLow, location_name: "veryLow")) CurrentPerformanceRiskRatings.struct_class = Types::CurrentPerformanceRiskRatings + CustomizableMetricParameters.add_member(:threshold, Shapes::ShapeRef.new(shape: CustomizableMetricThreshold, location_name: "threshold")) + CustomizableMetricParameters.add_member(:headroom, Shapes::ShapeRef.new(shape: CustomizableMetricHeadroom, location_name: "headroom")) + CustomizableMetricParameters.struct_class = Types::CustomizableMetricParameters + DeleteRecommendationPreferencesRequest.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, required: true, location_name: "resourceType")) DeleteRecommendationPreferencesRequest.add_member(:scope, Shapes::ShapeRef.new(shape: Scope, location_name: "scope")) DeleteRecommendationPreferencesRequest.add_member(:recommendation_preference_names, Shapes::ShapeRef.new(shape: RecommendationPreferenceNames, required: true, location_name: "recommendationPreferenceNames")) @@ -420,12 +469,26 @@ module ClientApi DescribeRecommendationExportJobsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) DescribeRecommendationExportJobsResponse.struct_class = Types::DescribeRecommendationExportJobsResponse + EBSEffectiveRecommendationPreferences.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: EBSSavingsEstimationMode, location_name: "savingsEstimationMode")) + EBSEffectiveRecommendationPreferences.struct_class = Types::EBSEffectiveRecommendationPreferences + + EBSEstimatedMonthlySavings.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency")) + EBSEstimatedMonthlySavings.add_member(:value, Shapes::ShapeRef.new(shape: Value, location_name: "value")) + EBSEstimatedMonthlySavings.struct_class = Types::EBSEstimatedMonthlySavings + EBSFilter.add_member(:name, Shapes::ShapeRef.new(shape: EBSFilterName, location_name: "name")) EBSFilter.add_member(:values, Shapes::ShapeRef.new(shape: FilterValues, location_name: "values")) EBSFilter.struct_class = Types::EBSFilter EBSFilters.member = Shapes::ShapeRef.new(shape: EBSFilter) + EBSSavingsEstimationMode.add_member(:source, Shapes::ShapeRef.new(shape: EBSSavingsEstimationModeSource, location_name: "source")) + EBSSavingsEstimationMode.struct_class = Types::EBSSavingsEstimationMode + + EBSSavingsOpportunityAfterDiscounts.add_member(:savings_opportunity_percentage, Shapes::ShapeRef.new(shape: SavingsOpportunityPercentage, location_name: "savingsOpportunityPercentage")) + EBSSavingsOpportunityAfterDiscounts.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: EBSEstimatedMonthlySavings, location_name: "estimatedMonthlySavings")) + EBSSavingsOpportunityAfterDiscounts.struct_class = Types::EBSSavingsOpportunityAfterDiscounts + EBSUtilizationMetric.add_member(:name, Shapes::ShapeRef.new(shape: EBSMetricName, location_name: "name")) EBSUtilizationMetric.add_member(:statistic, Shapes::ShapeRef.new(shape: MetricStatistic, location_name: "statistic")) EBSUtilizationMetric.add_member(:value, Shapes::ShapeRef.new(shape: MetricValue, location_name: "value")) @@ -433,6 +496,20 @@ module ClientApi EBSUtilizationMetrics.member = Shapes::ShapeRef.new(shape: EBSUtilizationMetric) + ECSEffectiveRecommendationPreferences.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: ECSSavingsEstimationMode, location_name: "savingsEstimationMode")) + ECSEffectiveRecommendationPreferences.struct_class = Types::ECSEffectiveRecommendationPreferences + + ECSEstimatedMonthlySavings.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency")) + ECSEstimatedMonthlySavings.add_member(:value, Shapes::ShapeRef.new(shape: Value, location_name: "value")) + ECSEstimatedMonthlySavings.struct_class = Types::ECSEstimatedMonthlySavings + + ECSSavingsEstimationMode.add_member(:source, Shapes::ShapeRef.new(shape: ECSSavingsEstimationModeSource, location_name: "source")) + ECSSavingsEstimationMode.struct_class = Types::ECSSavingsEstimationMode + + ECSSavingsOpportunityAfterDiscounts.add_member(:savings_opportunity_percentage, Shapes::ShapeRef.new(shape: SavingsOpportunityPercentage, location_name: "savingsOpportunityPercentage")) + ECSSavingsOpportunityAfterDiscounts.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: ECSEstimatedMonthlySavings, location_name: "estimatedMonthlySavings")) + ECSSavingsOpportunityAfterDiscounts.struct_class = Types::ECSSavingsOpportunityAfterDiscounts + ECSServiceProjectedMetric.add_member(:name, Shapes::ShapeRef.new(shape: ECSServiceMetricName, location_name: "name")) ECSServiceProjectedMetric.add_member(:timestamps, Shapes::ShapeRef.new(shape: Timestamps, location_name: "timestamps")) ECSServiceProjectedMetric.add_member(:upper_bound_values, Shapes::ShapeRef.new(shape: MetricValues, location_name: "upperBoundValues")) @@ -461,6 +538,7 @@ module ClientApi ECSServiceRecommendation.add_member(:service_recommendation_options, Shapes::ShapeRef.new(shape: ECSServiceRecommendationOptions, location_name: "serviceRecommendationOptions")) ECSServiceRecommendation.add_member(:current_performance_risk, Shapes::ShapeRef.new(shape: CurrentPerformanceRisk, location_name: "currentPerformanceRisk")) ECSServiceRecommendation.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + ECSServiceRecommendation.add_member(:effective_recommendation_preferences, Shapes::ShapeRef.new(shape: ECSEffectiveRecommendationPreferences, location_name: "effectiveRecommendationPreferences")) ECSServiceRecommendation.struct_class = Types::ECSServiceRecommendation ECSServiceRecommendationFilter.add_member(:name, Shapes::ShapeRef.new(shape: ECSServiceRecommendationFilterName, location_name: "name")) @@ -476,6 +554,7 @@ module ClientApi ECSServiceRecommendationOption.add_member(:savings_opportunity, Shapes::ShapeRef.new(shape: SavingsOpportunity, location_name: "savingsOpportunity")) ECSServiceRecommendationOption.add_member(:projected_utilization_metrics, Shapes::ShapeRef.new(shape: ECSServiceProjectedUtilizationMetrics, location_name: "projectedUtilizationMetrics")) ECSServiceRecommendationOption.add_member(:container_recommendations, Shapes::ShapeRef.new(shape: ContainerRecommendations, location_name: "containerRecommendations")) + ECSServiceRecommendationOption.add_member(:savings_opportunity_after_discounts, Shapes::ShapeRef.new(shape: ECSSavingsOpportunityAfterDiscounts, location_name: "savingsOpportunityAfterDiscounts")) ECSServiceRecommendationOption.struct_class = Types::ECSServiceRecommendationOption ECSServiceRecommendationOptions.member = Shapes::ShapeRef.new(shape: ECSServiceRecommendationOption) @@ -496,10 +575,22 @@ module ClientApi ECSServiceUtilizationMetrics.member = Shapes::ShapeRef.new(shape: ECSServiceUtilizationMetric) + EffectivePreferredResource.add_member(:name, Shapes::ShapeRef.new(shape: PreferredResourceName, location_name: "name")) + EffectivePreferredResource.add_member(:include_list, Shapes::ShapeRef.new(shape: PreferredResourceValues, location_name: "includeList")) + EffectivePreferredResource.add_member(:effective_include_list, Shapes::ShapeRef.new(shape: PreferredResourceValues, location_name: "effectiveIncludeList")) + EffectivePreferredResource.add_member(:exclude_list, Shapes::ShapeRef.new(shape: PreferredResourceValues, location_name: "excludeList")) + EffectivePreferredResource.struct_class = Types::EffectivePreferredResource + + EffectivePreferredResources.member = Shapes::ShapeRef.new(shape: EffectivePreferredResource) + EffectiveRecommendationPreferences.add_member(:cpu_vendor_architectures, Shapes::ShapeRef.new(shape: CpuVendorArchitectures, location_name: "cpuVendorArchitectures")) EffectiveRecommendationPreferences.add_member(:enhanced_infrastructure_metrics, Shapes::ShapeRef.new(shape: EnhancedInfrastructureMetrics, location_name: "enhancedInfrastructureMetrics")) EffectiveRecommendationPreferences.add_member(:inferred_workload_types, Shapes::ShapeRef.new(shape: InferredWorkloadTypesPreference, location_name: "inferredWorkloadTypes")) EffectiveRecommendationPreferences.add_member(:external_metrics_preference, Shapes::ShapeRef.new(shape: ExternalMetricsPreference, location_name: "externalMetricsPreference")) + EffectiveRecommendationPreferences.add_member(:look_back_period, Shapes::ShapeRef.new(shape: LookBackPeriodPreference, location_name: "lookBackPeriod")) + EffectiveRecommendationPreferences.add_member(:utilization_preferences, Shapes::ShapeRef.new(shape: UtilizationPreferences, location_name: "utilizationPreferences")) + EffectiveRecommendationPreferences.add_member(:preferred_resources, Shapes::ShapeRef.new(shape: EffectivePreferredResources, location_name: "preferredResources")) + EffectiveRecommendationPreferences.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: InstanceSavingsEstimationMode, location_name: "savingsEstimationMode")) EffectiveRecommendationPreferences.struct_class = Types::EffectiveRecommendationPreferences EnrollmentFilter.add_member(:name, Shapes::ShapeRef.new(shape: EnrollmentFilterName, location_name: "name")) @@ -694,6 +785,9 @@ module ClientApi GetEffectiveRecommendationPreferencesResponse.add_member(:enhanced_infrastructure_metrics, Shapes::ShapeRef.new(shape: EnhancedInfrastructureMetrics, location_name: "enhancedInfrastructureMetrics")) GetEffectiveRecommendationPreferencesResponse.add_member(:external_metrics_preference, Shapes::ShapeRef.new(shape: ExternalMetricsPreference, location_name: "externalMetricsPreference")) + GetEffectiveRecommendationPreferencesResponse.add_member(:look_back_period, Shapes::ShapeRef.new(shape: LookBackPeriodPreference, location_name: "lookBackPeriod")) + GetEffectiveRecommendationPreferencesResponse.add_member(:utilization_preferences, Shapes::ShapeRef.new(shape: UtilizationPreferences, location_name: "utilizationPreferences")) + GetEffectiveRecommendationPreferencesResponse.add_member(:preferred_resources, Shapes::ShapeRef.new(shape: EffectivePreferredResources, location_name: "preferredResources")) GetEffectiveRecommendationPreferencesResponse.struct_class = Types::GetEffectiveRecommendationPreferencesResponse GetEnrollmentStatusRequest.struct_class = Types::GetEnrollmentStatusRequest @@ -782,6 +876,10 @@ module ClientApi InstanceArns.member = Shapes::ShapeRef.new(shape: InstanceArn) + InstanceEstimatedMonthlySavings.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency")) + InstanceEstimatedMonthlySavings.add_member(:value, Shapes::ShapeRef.new(shape: Value, location_name: "value")) + InstanceEstimatedMonthlySavings.struct_class = Types::InstanceEstimatedMonthlySavings + InstanceRecommendation.add_member(:instance_arn, Shapes::ShapeRef.new(shape: InstanceArn, location_name: "instanceArn")) InstanceRecommendation.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId")) InstanceRecommendation.add_member(:instance_name, Shapes::ShapeRef.new(shape: InstanceName, location_name: "instanceName")) @@ -813,10 +911,18 @@ module ClientApi InstanceRecommendationOption.add_member(:savings_opportunity, Shapes::ShapeRef.new(shape: SavingsOpportunity, location_name: "savingsOpportunity")) InstanceRecommendationOption.add_member(:migration_effort, Shapes::ShapeRef.new(shape: MigrationEffort, location_name: "migrationEffort")) InstanceRecommendationOption.add_member(:instance_gpu_info, Shapes::ShapeRef.new(shape: GpuInfo, location_name: "instanceGpuInfo")) + InstanceRecommendationOption.add_member(:savings_opportunity_after_discounts, Shapes::ShapeRef.new(shape: InstanceSavingsOpportunityAfterDiscounts, location_name: "savingsOpportunityAfterDiscounts")) InstanceRecommendationOption.struct_class = Types::InstanceRecommendationOption InstanceRecommendations.member = Shapes::ShapeRef.new(shape: InstanceRecommendation) + InstanceSavingsEstimationMode.add_member(:source, Shapes::ShapeRef.new(shape: InstanceSavingsEstimationModeSource, location_name: "source")) + InstanceSavingsEstimationMode.struct_class = Types::InstanceSavingsEstimationMode + + InstanceSavingsOpportunityAfterDiscounts.add_member(:savings_opportunity_percentage, Shapes::ShapeRef.new(shape: SavingsOpportunityPercentage, location_name: "savingsOpportunityPercentage")) + InstanceSavingsOpportunityAfterDiscounts.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: InstanceEstimatedMonthlySavings, location_name: "estimatedMonthlySavings")) + InstanceSavingsOpportunityAfterDiscounts.struct_class = Types::InstanceSavingsOpportunityAfterDiscounts + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "message")) InternalServerException.struct_class = Types::InternalServerException @@ -831,6 +937,13 @@ module ClientApi JobIds.member = Shapes::ShapeRef.new(shape: JobId) + LambdaEffectiveRecommendationPreferences.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: LambdaSavingsEstimationMode, location_name: "savingsEstimationMode")) + LambdaEffectiveRecommendationPreferences.struct_class = Types::LambdaEffectiveRecommendationPreferences + + LambdaEstimatedMonthlySavings.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency")) + LambdaEstimatedMonthlySavings.add_member(:value, Shapes::ShapeRef.new(shape: Value, location_name: "value")) + LambdaEstimatedMonthlySavings.struct_class = Types::LambdaEstimatedMonthlySavings + LambdaFunctionMemoryProjectedMetric.add_member(:name, Shapes::ShapeRef.new(shape: LambdaFunctionMemoryMetricName, location_name: "name")) LambdaFunctionMemoryProjectedMetric.add_member(:statistic, Shapes::ShapeRef.new(shape: LambdaFunctionMemoryMetricStatistic, location_name: "statistic")) LambdaFunctionMemoryProjectedMetric.add_member(:value, Shapes::ShapeRef.new(shape: MetricValue, location_name: "value")) @@ -842,6 +955,7 @@ module ClientApi LambdaFunctionMemoryRecommendationOption.add_member(:memory_size, Shapes::ShapeRef.new(shape: MemorySize, location_name: "memorySize")) LambdaFunctionMemoryRecommendationOption.add_member(:projected_utilization_metrics, Shapes::ShapeRef.new(shape: LambdaFunctionMemoryProjectedMetrics, location_name: "projectedUtilizationMetrics")) LambdaFunctionMemoryRecommendationOption.add_member(:savings_opportunity, Shapes::ShapeRef.new(shape: SavingsOpportunity, location_name: "savingsOpportunity")) + LambdaFunctionMemoryRecommendationOption.add_member(:savings_opportunity_after_discounts, Shapes::ShapeRef.new(shape: LambdaSavingsOpportunityAfterDiscounts, location_name: "savingsOpportunityAfterDiscounts")) LambdaFunctionMemoryRecommendationOption.struct_class = Types::LambdaFunctionMemoryRecommendationOption LambdaFunctionMemoryRecommendationOptions.member = Shapes::ShapeRef.new(shape: LambdaFunctionMemoryRecommendationOption) @@ -859,6 +973,7 @@ module ClientApi LambdaFunctionRecommendation.add_member(:memory_size_recommendation_options, Shapes::ShapeRef.new(shape: LambdaFunctionMemoryRecommendationOptions, location_name: "memorySizeRecommendationOptions")) LambdaFunctionRecommendation.add_member(:current_performance_risk, Shapes::ShapeRef.new(shape: CurrentPerformanceRisk, location_name: "currentPerformanceRisk")) LambdaFunctionRecommendation.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + LambdaFunctionRecommendation.add_member(:effective_recommendation_preferences, Shapes::ShapeRef.new(shape: LambdaEffectiveRecommendationPreferences, location_name: "effectiveRecommendationPreferences")) LambdaFunctionRecommendation.struct_class = Types::LambdaFunctionRecommendation LambdaFunctionRecommendationFilter.add_member(:name, Shapes::ShapeRef.new(shape: LambdaFunctionRecommendationFilterName, location_name: "name")) @@ -878,6 +993,13 @@ module ClientApi LambdaFunctionUtilizationMetrics.member = Shapes::ShapeRef.new(shape: LambdaFunctionUtilizationMetric) + LambdaSavingsEstimationMode.add_member(:source, Shapes::ShapeRef.new(shape: LambdaSavingsEstimationModeSource, location_name: "source")) + LambdaSavingsEstimationMode.struct_class = Types::LambdaSavingsEstimationMode + + LambdaSavingsOpportunityAfterDiscounts.add_member(:savings_opportunity_percentage, Shapes::ShapeRef.new(shape: SavingsOpportunityPercentage, location_name: "savingsOpportunityPercentage")) + LambdaSavingsOpportunityAfterDiscounts.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: LambdaEstimatedMonthlySavings, location_name: "estimatedMonthlySavings")) + LambdaSavingsOpportunityAfterDiscounts.struct_class = Types::LambdaSavingsOpportunityAfterDiscounts + LicenseConfiguration.add_member(:number_of_cores, Shapes::ShapeRef.new(shape: NumberOfCores, location_name: "numberOfCores")) LicenseConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: InstanceType, location_name: "instanceType")) LicenseConfiguration.add_member(:operating_system, Shapes::ShapeRef.new(shape: OperatingSystem, location_name: "operatingSystem")) @@ -941,6 +1063,15 @@ module ClientApi PlatformDifferences.member = Shapes::ShapeRef.new(shape: PlatformDifference) + PreferredResource.add_member(:name, Shapes::ShapeRef.new(shape: PreferredResourceName, location_name: "name")) + PreferredResource.add_member(:include_list, Shapes::ShapeRef.new(shape: PreferredResourceValues, location_name: "includeList")) + PreferredResource.add_member(:exclude_list, Shapes::ShapeRef.new(shape: PreferredResourceValues, location_name: "excludeList")) + PreferredResource.struct_class = Types::PreferredResource + + PreferredResourceValues.member = Shapes::ShapeRef.new(shape: PreferredResourceValue) + + PreferredResources.member = Shapes::ShapeRef.new(shape: PreferredResource) + ProjectedMetric.add_member(:name, Shapes::ShapeRef.new(shape: MetricName, location_name: "name")) ProjectedMetric.add_member(:timestamps, Shapes::ShapeRef.new(shape: Timestamps, location_name: "timestamps")) ProjectedMetric.add_member(:values, Shapes::ShapeRef.new(shape: MetricValues, location_name: "values")) @@ -955,6 +1086,10 @@ module ClientApi PutRecommendationPreferencesRequest.add_member(:enhanced_infrastructure_metrics, Shapes::ShapeRef.new(shape: EnhancedInfrastructureMetrics, location_name: "enhancedInfrastructureMetrics")) PutRecommendationPreferencesRequest.add_member(:inferred_workload_types, Shapes::ShapeRef.new(shape: InferredWorkloadTypesPreference, location_name: "inferredWorkloadTypes")) PutRecommendationPreferencesRequest.add_member(:external_metrics_preference, Shapes::ShapeRef.new(shape: ExternalMetricsPreference, location_name: "externalMetricsPreference")) + PutRecommendationPreferencesRequest.add_member(:look_back_period, Shapes::ShapeRef.new(shape: LookBackPeriodPreference, location_name: "lookBackPeriod")) + PutRecommendationPreferencesRequest.add_member(:utilization_preferences, Shapes::ShapeRef.new(shape: UtilizationPreferences, location_name: "utilizationPreferences")) + PutRecommendationPreferencesRequest.add_member(:preferred_resources, Shapes::ShapeRef.new(shape: PreferredResources, location_name: "preferredResources")) + PutRecommendationPreferencesRequest.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: SavingsEstimationMode, location_name: "savingsEstimationMode")) PutRecommendationPreferencesRequest.struct_class = Types::PutRecommendationPreferencesRequest PutRecommendationPreferencesResponse.struct_class = Types::PutRecommendationPreferencesResponse @@ -988,6 +1123,10 @@ module ClientApi RecommendationPreferencesDetail.add_member(:enhanced_infrastructure_metrics, Shapes::ShapeRef.new(shape: EnhancedInfrastructureMetrics, location_name: "enhancedInfrastructureMetrics")) RecommendationPreferencesDetail.add_member(:inferred_workload_types, Shapes::ShapeRef.new(shape: InferredWorkloadTypesPreference, location_name: "inferredWorkloadTypes")) RecommendationPreferencesDetail.add_member(:external_metrics_preference, Shapes::ShapeRef.new(shape: ExternalMetricsPreference, location_name: "externalMetricsPreference")) + RecommendationPreferencesDetail.add_member(:look_back_period, Shapes::ShapeRef.new(shape: LookBackPeriodPreference, location_name: "lookBackPeriod")) + RecommendationPreferencesDetail.add_member(:utilization_preferences, Shapes::ShapeRef.new(shape: UtilizationPreferences, location_name: "utilizationPreferences")) + RecommendationPreferencesDetail.add_member(:preferred_resources, Shapes::ShapeRef.new(shape: EffectivePreferredResources, location_name: "preferredResources")) + RecommendationPreferencesDetail.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: SavingsEstimationMode, location_name: "savingsEstimationMode")) RecommendationPreferencesDetail.struct_class = Types::RecommendationPreferencesDetail RecommendationPreferencesDetails.member = Shapes::ShapeRef.new(shape: RecommendationPreferencesDetail) @@ -1082,6 +1221,12 @@ module ClientApi UtilizationMetrics.member = Shapes::ShapeRef.new(shape: UtilizationMetric) + UtilizationPreference.add_member(:metric_name, Shapes::ShapeRef.new(shape: CustomizableMetricName, location_name: "metricName")) + UtilizationPreference.add_member(:metric_parameters, Shapes::ShapeRef.new(shape: CustomizableMetricParameters, location_name: "metricParameters")) + UtilizationPreference.struct_class = Types::UtilizationPreference + + UtilizationPreferences.member = Shapes::ShapeRef.new(shape: UtilizationPreference) + VolumeArns.member = Shapes::ShapeRef.new(shape: VolumeArn) VolumeConfiguration.add_member(:volume_type, Shapes::ShapeRef.new(shape: VolumeType, location_name: "volumeType")) @@ -1103,12 +1248,14 @@ module ClientApi VolumeRecommendation.add_member(:last_refresh_timestamp, Shapes::ShapeRef.new(shape: LastRefreshTimestamp, location_name: "lastRefreshTimestamp")) VolumeRecommendation.add_member(:current_performance_risk, Shapes::ShapeRef.new(shape: CurrentPerformanceRisk, location_name: "currentPerformanceRisk")) VolumeRecommendation.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + VolumeRecommendation.add_member(:effective_recommendation_preferences, Shapes::ShapeRef.new(shape: EBSEffectiveRecommendationPreferences, location_name: "effectiveRecommendationPreferences")) VolumeRecommendation.struct_class = Types::VolumeRecommendation VolumeRecommendationOption.add_member(:configuration, Shapes::ShapeRef.new(shape: VolumeConfiguration, location_name: "configuration")) VolumeRecommendationOption.add_member(:performance_risk, Shapes::ShapeRef.new(shape: PerformanceRisk, location_name: "performanceRisk")) VolumeRecommendationOption.add_member(:rank, Shapes::ShapeRef.new(shape: Rank, location_name: "rank")) VolumeRecommendationOption.add_member(:savings_opportunity, Shapes::ShapeRef.new(shape: SavingsOpportunity, location_name: "savingsOpportunity")) + VolumeRecommendationOption.add_member(:savings_opportunity_after_discounts, Shapes::ShapeRef.new(shape: EBSSavingsOpportunityAfterDiscounts, location_name: "savingsOpportunityAfterDiscounts")) VolumeRecommendationOption.struct_class = Types::VolumeRecommendationOption VolumeRecommendationOptions.member = Shapes::ShapeRef.new(shape: VolumeRecommendationOption) diff --git a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/endpoint_provider.rb b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/endpoint_provider.rb index 3be3767a673..8758d1613f3 100644 --- a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/endpoint_provider.rb +++ b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://compute-optimizer-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/types.rb b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/types.rb index ba94ad5ad26..e69b71d8fe7 100644 --- a/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/types.rb +++ b/gems/aws-sdk-computeoptimizer/lib/aws-sdk-computeoptimizer/types.rb @@ -90,6 +90,27 @@ class AutoScalingGroupConfiguration < Struct.new( include Aws::Structure end + # An object that describes the estimated monthly savings possible by + # adopting Compute Optimizer’s Auto Scaling group recommendations. This + # is based on the Savings Plans and Reserved Instances discounts. + # + # @!attribute [rw] currency + # The currency of the estimated monthly savings. + # @return [String] + # + # @!attribute [rw] value + # The value of the estimated monthly savings. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/AutoScalingGroupEstimatedMonthlySavings AWS API Documentation + # + class AutoScalingGroupEstimatedMonthlySavings < Struct.new( + :currency, + :value) + SENSITIVE = [] + include Aws::Structure + end + # Describes an Auto Scaling group recommendation. # # @!attribute [rw] account_id @@ -289,6 +310,13 @@ class AutoScalingGroupRecommendation < Struct.new( # type of the Auto Scaling group. # @return [Types::GpuInfo] # + # @!attribute [rw] savings_opportunity_after_discounts + # An object that describes the savings opportunity for the Auto + # Scaling group recommendation option that includes Savings Plans and + # Reserved Instances discounts. Savings opportunity includes the + # estimated monthly savings and percentage. + # @return [Types::AutoScalingGroupSavingsOpportunityAfterDiscounts] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/AutoScalingGroupRecommendationOption AWS API Documentation # class AutoScalingGroupRecommendationOption < Struct.new( @@ -298,7 +326,38 @@ class AutoScalingGroupRecommendationOption < Struct.new( :rank, :savings_opportunity, :migration_effort, - :instance_gpu_info) + :instance_gpu_info, + :savings_opportunity_after_discounts) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings opportunity for Auto Scaling group + # recommendations after applying the Savings Plans and Reserved + # Instances discounts. + # + # Savings opportunity represents the estimated monthly savings you can + # achieve by implementing Compute Optimizer recommendations. + # + # @!attribute [rw] savings_opportunity_percentage + # The estimated monthly savings possible as a percentage of monthly + # cost after applying the Savings Plans and Reserved Instances + # discounts. This saving can be achieved by adopting Compute + # Optimizer’s Auto Scaling group recommendations. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # An object that describes the estimated monthly savings possible by + # adopting Compute Optimizer’s Auto Scaling group recommendations. + # This is based on the Savings Plans and Reserved Instances pricing + # discounts. + # @return [Types::AutoScalingGroupEstimatedMonthlySavings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/AutoScalingGroupSavingsOpportunityAfterDiscounts AWS API Documentation + # + class AutoScalingGroupSavingsOpportunityAfterDiscounts < Struct.new( + :savings_opportunity_percentage, + :estimated_monthly_savings) SENSITIVE = [] include Aws::Structure end @@ -390,6 +449,27 @@ class CurrentPerformanceRiskRatings < Struct.new( include Aws::Structure end + # Defines the various metric parameters that can be customized, such as + # threshold and headroom. + # + # @!attribute [rw] threshold + # The threshold value used for the specified metric parameter. + # @return [String] + # + # @!attribute [rw] headroom + # The headroom threshold value in percentage used for the specified + # metric parameter. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/CustomizableMetricParameters AWS API Documentation + # + class CustomizableMetricParameters < Struct.new( + :threshold, + :headroom) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_type # The target resource type of the recommendation preference to delete. # @@ -495,6 +575,43 @@ class DescribeRecommendationExportJobsResponse < Struct.new( include Aws::Structure end + # Describes the effective recommendation preferences for Amazon EBS + # volumes. + # + # @!attribute [rw] savings_estimation_mode + # Describes the savings estimation mode preference applied for + # calculating savings opportunity for Amazon EBS volumes. + # @return [Types::EBSSavingsEstimationMode] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EBSEffectiveRecommendationPreferences AWS API Documentation + # + class EBSEffectiveRecommendationPreferences < Struct.new( + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # An object that describes the estimated monthly savings possible by + # adopting Compute Optimizer’s Amazon EBS volume recommendations. This + # includes any applicable discounts. + # + # @!attribute [rw] currency + # The currency of the estimated monthly savings. + # @return [String] + # + # @!attribute [rw] value + # The value of the estimated monthly savings. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EBSEstimatedMonthlySavings AWS API Documentation + # + class EBSEstimatedMonthlySavings < Struct.new( + :currency, + :value) + SENSITIVE = [] + include Aws::Structure + end + # Describes a filter that returns a more specific list of Amazon Elastic # Block Store (Amazon EBS) volume recommendations. Use this filter with # the GetEBSVolumeRecommendations action. @@ -544,6 +661,47 @@ class EBSFilter < Struct.new( include Aws::Structure end + # Describes the savings estimation mode used for calculating savings + # opportunity for Amazon EBS volumes. + # + # @!attribute [rw] source + # Describes the source for calculating the savings opportunity for + # Amazon EBS volumes. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EBSSavingsEstimationMode AWS API Documentation + # + class EBSSavingsEstimationMode < Struct.new( + :source) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings opportunity for Amazon EBS volume + # recommendations after applying specific discounts. + # + # @!attribute [rw] savings_opportunity_percentage + # The estimated monthly savings possible as a percentage of monthly + # cost after applying the specific discounts. This saving can be + # achieved by adopting Compute Optimizer’s Amazon EBS volume + # recommendations. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # The estimated monthly savings possible as a percentage of monthly + # cost by adopting Compute Optimizer’s Amazon EBS volume + # recommendations. This saving includes any applicable discounts. + # @return [Types::EBSEstimatedMonthlySavings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EBSSavingsOpportunityAfterDiscounts AWS API Documentation + # + class EBSSavingsOpportunityAfterDiscounts < Struct.new( + :savings_opportunity_percentage, + :estimated_monthly_savings) + SENSITIVE = [] + include Aws::Structure + end + # Describes a utilization metric of an Amazon Elastic Block Store # (Amazon EBS) volume. # @@ -612,6 +770,88 @@ class EBSUtilizationMetric < Struct.new( include Aws::Structure end + # Describes the effective recommendation preferences for Amazon ECS + # services. + # + # @!attribute [rw] savings_estimation_mode + # Describes the savings estimation mode preference applied for + # calculating savings opportunity for Amazon ECS services. + # @return [Types::ECSSavingsEstimationMode] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSEffectiveRecommendationPreferences AWS API Documentation + # + class ECSEffectiveRecommendationPreferences < Struct.new( + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the estimated monthly savings possible for Amazon ECS + # services by adopting Compute Optimizer recommendations. This is based + # on Amazon ECS service pricing after applying Savings Plans discounts. + # + # @!attribute [rw] currency + # The currency of the estimated monthly savings. + # @return [String] + # + # @!attribute [rw] value + # The value of the estimated monthly savings for Amazon ECS services. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSEstimatedMonthlySavings AWS API Documentation + # + class ECSEstimatedMonthlySavings < Struct.new( + :currency, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings estimation mode used for calculating savings + # opportunity for Amazon ECS services. + # + # @!attribute [rw] source + # Describes the source for calculating the savings opportunity for + # Amazon ECS services. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSSavingsEstimationMode AWS API Documentation + # + class ECSSavingsEstimationMode < Struct.new( + :source) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings opportunity for Amazon ECS service + # recommendations after applying Savings Plans discounts. + # + # Savings opportunity represents the estimated monthly savings after + # applying Savings Plans discounts. You can achieve this by implementing + # a given Compute Optimizer recommendation. + # + # @!attribute [rw] savings_opportunity_percentage + # The estimated monthly savings possible as a percentage of monthly + # cost by adopting Compute Optimizer’s Amazon ECS service + # recommendations. This includes any applicable Savings Plans + # discounts. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # The estimated monthly savings possible by adopting Compute + # Optimizer’s Amazon ECS service recommendations. This includes any + # applicable Savings Plans discounts. + # @return [Types::ECSEstimatedMonthlySavings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSSavingsOpportunityAfterDiscounts AWS API Documentation + # + class ECSSavingsOpportunityAfterDiscounts < Struct.new( + :savings_opportunity_percentage, + :estimated_monthly_savings) + SENSITIVE = [] + include Aws::Structure + end + # Describes the projected metrics of an Amazon ECS service # recommendation option. # @@ -818,6 +1058,11 @@ class ECSServiceProjectedUtilizationMetric < Struct.new( # A list of tags assigned to your Amazon ECS service recommendations. # @return [Array] # + # @!attribute [rw] effective_recommendation_preferences + # Describes the effective recommendation preferences for Amazon ECS + # services. + # @return [Types::ECSEffectiveRecommendationPreferences] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSServiceRecommendation AWS API Documentation # class ECSServiceRecommendation < Struct.new( @@ -832,7 +1077,8 @@ class ECSServiceRecommendation < Struct.new( :finding_reason_codes, :service_recommendation_options, :current_performance_risk, - :tags) + :tags, + :effective_recommendation_preferences) SENSITIVE = [] include Aws::Structure end @@ -936,6 +1182,15 @@ class ECSServiceRecommendationFilter < Struct.new( # the task of your Amazon ECS service. # @return [Array] # + # @!attribute [rw] savings_opportunity_after_discounts + # Describes the savings opportunity for Amazon ECS service + # recommendations or for the recommendation option. + # + # Savings opportunity represents the estimated monthly savings after + # applying Savings Plans discounts. You can achieve this by + # implementing a given Compute Optimizer recommendation. + # @return [Types::ECSSavingsOpportunityAfterDiscounts] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ECSServiceRecommendationOption AWS API Documentation # class ECSServiceRecommendationOption < Struct.new( @@ -943,7 +1198,8 @@ class ECSServiceRecommendationOption < Struct.new( :cpu, :savings_opportunity, :projected_utilization_metrics, - :container_recommendations) + :container_recommendations, + :savings_opportunity_after_discounts) SENSITIVE = [] include Aws::Structure end @@ -1028,6 +1284,42 @@ class ECSServiceUtilizationMetric < Struct.new( include Aws::Structure end + # Describes the effective preferred resources that Compute Optimizer + # considers as rightsizing recommendation candidates. + # + # Compute Optimizer only supports Amazon EC2 instance types. + # + # + # + # @!attribute [rw] name + # The name of the preferred resource list. + # @return [String] + # + # @!attribute [rw] include_list + # The list of preferred resource values that you want considered as + # rightsizing recommendation candidates. + # @return [Array] + # + # @!attribute [rw] effective_include_list + # The expanded version of your preferred resource's include list. + # @return [Array] + # + # @!attribute [rw] exclude_list + # The list of preferred resources values that you want excluded from + # rightsizing recommendation candidates. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EffectivePreferredResource AWS API Documentation + # + class EffectivePreferredResource < Struct.new( + :name, + :include_list, + :effective_include_list, + :exclude_list) + SENSITIVE = [] + include Aws::Structure + end + # Describes the effective recommendation preferences for a resource. # # @!attribute [rw] cpu_vendor_architectures @@ -1086,13 +1378,43 @@ class ECSServiceUtilizationMetric < Struct.new( # this object doesn't appear in the response. # @return [Types::ExternalMetricsPreference] # + # @!attribute [rw] look_back_period + # The number of days the utilization metrics of the Amazon Web + # Services resource are analyzed. + # @return [String] + # + # @!attribute [rw] utilization_preferences + # The resource’s CPU utilization threshold preferences, such as + # threshold and headroom, that are used to generate rightsizing + # recommendations. + # + # This preference is only available for the Amazon EC2 instance + # resource type. + # + # + # @return [Array] + # + # @!attribute [rw] preferred_resources + # The resource type values that are considered as candidates when + # generating rightsizing recommendations. + # @return [Array] + # + # @!attribute [rw] savings_estimation_mode + # Describes the savings estimation mode applied for calculating + # savings opportunity for a resource. + # @return [Types::InstanceSavingsEstimationMode] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/EffectiveRecommendationPreferences AWS API Documentation # class EffectiveRecommendationPreferences < Struct.new( :cpu_vendor_architectures, :enhanced_infrastructure_metrics, :inferred_workload_types, - :external_metrics_preference) + :external_metrics_preference, + :look_back_period, + :utilization_preferences, + :preferred_resources, + :savings_estimation_mode) SENSITIVE = [] include Aws::Structure end @@ -2534,11 +2856,52 @@ class GetEffectiveRecommendationPreferencesRequest < Struct.new( # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html # @return [Types::ExternalMetricsPreference] # + # @!attribute [rw] look_back_period + # The number of days the utilization metrics of the Amazon Web + # Services resource are analyzed. + # + # To validate that the preference is applied to your last generated + # set of recommendations, review the + # `effectiveRecommendationPreferences` value in the response of the + # GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations + # actions. + # @return [String] + # + # @!attribute [rw] utilization_preferences + # The resource’s CPU utilization threshold preferences, such as + # threshold and headroom, that were used to generate rightsizing + # recommendations. It considers all applicable preferences that you + # set at the resource, account, and organization level. + # + # To validate that the preference is applied to your last generated + # set of recommendations, review the + # `effectiveRecommendationPreferences` value in the response of the + # GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations + # actions. + # @return [Array] + # + # @!attribute [rw] preferred_resources + # The resource type values that are considered as candidates when + # generating rightsizing recommendations. This object resolves any + # wildcard expressions and returns the effective list of candidate + # resource type values. It also considers all applicable preferences + # that you set at the resource, account, and organization level. + # + # To validate that the preference is applied to your last generated + # set of recommendations, review the + # `effectiveRecommendationPreferences` value in the response of the + # GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations + # actions. + # @return [Array] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEffectiveRecommendationPreferencesResponse AWS API Documentation # class GetEffectiveRecommendationPreferencesResponse < Struct.new( :enhanced_infrastructure_metrics, - :external_metrics_preference) + :external_metrics_preference, + :look_back_period, + :utilization_preferences, + :preferred_resources) SENSITIVE = [] include Aws::Structure end @@ -3033,6 +3396,28 @@ class InferredWorkloadSaving < Struct.new( include Aws::Structure end + # An object that describes the estimated monthly savings possible by + # adopting Compute Optimizer’s Amazon EC2 instance recommendations. This + # is based on the Savings Plans and Reserved Instances pricing + # discounts. + # + # @!attribute [rw] currency + # The currency of the estimated monthly savings. + # @return [String] + # + # @!attribute [rw] value + # The value of the estimated monthly savings. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/InstanceEstimatedMonthlySavings AWS API Documentation + # + class InstanceEstimatedMonthlySavings < Struct.new( + :currency, + :value) + SENSITIVE = [] + include Aws::Structure + end + # Describes an Amazon EC2 instance recommendation. # # @!attribute [rw] instance_arn @@ -3509,6 +3894,13 @@ class InstanceRecommendation < Struct.new( # type. # @return [Types::GpuInfo] # + # @!attribute [rw] savings_opportunity_after_discounts + # An object that describes the savings opportunity for the instance + # recommendation option that includes Savings Plans and Reserved + # Instances discounts. Savings opportunity includes the estimated + # monthly savings and percentage. + # @return [Types::InstanceSavingsOpportunityAfterDiscounts] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/InstanceRecommendationOption AWS API Documentation # class InstanceRecommendationOption < Struct.new( @@ -3519,7 +3911,54 @@ class InstanceRecommendationOption < Struct.new( :rank, :savings_opportunity, :migration_effort, - :instance_gpu_info) + :instance_gpu_info, + :savings_opportunity_after_discounts) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings estimation mode used for calculating savings + # opportunity for Amazon EC2 instances. + # + # @!attribute [rw] source + # Describes the source for calculating the savings opportunity for + # Amazon EC2 instances. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/InstanceSavingsEstimationMode AWS API Documentation + # + class InstanceSavingsEstimationMode < Struct.new( + :source) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings opportunity for instance recommendations after + # applying the Savings Plans and Reserved Instances discounts. + # + # Savings opportunity after discounts represents the estimated monthly + # savings you can achieve by implementing Compute Optimizer + # recommendations. + # + # @!attribute [rw] savings_opportunity_percentage + # The estimated monthly savings possible as a percentage of monthly + # cost after applying the Savings Plans and Reserved Instances + # discounts. This saving can be achieved by adopting Compute + # Optimizer’s EC2 instance recommendations. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # An object that describes the estimated monthly savings possible by + # adopting Compute Optimizer’s Amazon EC2 instance recommendations. + # This is based on pricing after applying the Savings Plans and + # Reserved Instances discounts. + # @return [Types::InstanceEstimatedMonthlySavings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/InstanceSavingsOpportunityAfterDiscounts AWS API Documentation + # + class InstanceSavingsOpportunityAfterDiscounts < Struct.new( + :savings_opportunity_percentage, + :estimated_monthly_savings) SENSITIVE = [] include Aws::Structure end @@ -3595,6 +4034,43 @@ class JobFilter < Struct.new( include Aws::Structure end + # Describes the effective recommendation preferences for Lambda + # functions. + # + # @!attribute [rw] savings_estimation_mode + # Describes the savings estimation mode applied for calculating + # savings opportunity for Lambda functions. + # @return [Types::LambdaSavingsEstimationMode] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaEffectiveRecommendationPreferences AWS API Documentation + # + class LambdaEffectiveRecommendationPreferences < Struct.new( + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the estimated monthly savings possible for Lambda functions + # by adopting Compute Optimizer recommendations. This is based on Lambda + # functions pricing after applying Savings Plans discounts. + # + # @!attribute [rw] currency + # The currency of the estimated monthly savings. + # @return [String] + # + # @!attribute [rw] value + # The value of the estimated monthly savings. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaEstimatedMonthlySavings AWS API Documentation + # + class LambdaEstimatedMonthlySavings < Struct.new( + :currency, + :value) + SENSITIVE = [] + include Aws::Structure + end + # Describes a projected utilization metric of an Lambda function # recommendation option. # @@ -3643,13 +4119,20 @@ class LambdaFunctionMemoryProjectedMetric < Struct.new( # estimated monthly savings amount and percentage. # @return [Types::SavingsOpportunity] # + # @!attribute [rw] savings_opportunity_after_discounts + # An object that describes the savings opportunity for the Lambda + # recommendation option which includes Saving Plans discounts. Savings + # opportunity includes the estimated monthly savings and percentage. + # @return [Types::LambdaSavingsOpportunityAfterDiscounts] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaFunctionMemoryRecommendationOption AWS API Documentation # class LambdaFunctionMemoryRecommendationOption < Struct.new( :rank, :memory_size, :projected_utilization_metrics, - :savings_opportunity) + :savings_opportunity, + :savings_opportunity_after_discounts) SENSITIVE = [] include Aws::Structure end @@ -3782,6 +4265,11 @@ class LambdaFunctionMemoryRecommendationOption < Struct.new( # A list of tags assigned to your Lambda function recommendations. # @return [Array] # + # @!attribute [rw] effective_recommendation_preferences + # Describes the effective recommendation preferences for Lambda + # functions. + # @return [Types::LambdaEffectiveRecommendationPreferences] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaFunctionRecommendation AWS API Documentation # class LambdaFunctionRecommendation < Struct.new( @@ -3797,7 +4285,8 @@ class LambdaFunctionRecommendation < Struct.new( :finding_reason_codes, :memory_size_recommendation_options, :current_performance_risk, - :tags) + :tags, + :effective_recommendation_preferences) SENSITIVE = [] include Aws::Structure end @@ -3910,6 +4399,51 @@ class LambdaFunctionUtilizationMetric < Struct.new( include Aws::Structure end + # Describes the savings estimation used for calculating savings + # opportunity for Lambda functions. + # + # @!attribute [rw] source + # Describes the source for calculation of savings opportunity for + # Lambda functions. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaSavingsEstimationMode AWS API Documentation + # + class LambdaSavingsEstimationMode < Struct.new( + :source) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the savings opportunity for Lambda functions recommendations + # after applying Savings Plans discounts. + # + # Savings opportunity represents the estimated monthly savings after + # applying Savings Plans discounts. You can achieve this by implementing + # a given Compute Optimizer recommendation. + # + # @!attribute [rw] savings_opportunity_percentage + # The estimated monthly savings possible as a percentage of monthly + # cost by adopting Compute Optimizer’s Lambda function + # recommendations. This includes any applicable Savings Plans + # discounts. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # The estimated monthly savings possible by adopting Compute + # Optimizer’s Lambda function recommendations. This includes any + # applicable Savings Plans discounts. + # @return [Types::LambdaEstimatedMonthlySavings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/LambdaSavingsOpportunityAfterDiscounts AWS API Documentation + # + class LambdaSavingsOpportunityAfterDiscounts < Struct.new( + :savings_opportunity_percentage, + :estimated_monthly_savings) + SENSITIVE = [] + include Aws::Structure + end + # Describes the configuration of a license for an Amazon EC2 instance. # # @!attribute [rw] number_of_cores @@ -4243,6 +4777,60 @@ class OptInRequiredException < Struct.new( include Aws::Structure end + # The preference to control which resource type values are considered + # when generating rightsizing recommendations. You can specify this + # preference as a combination of include and exclude lists. You must + # specify either an `includeList` or `excludeList`. If the preference is + # an empty set of resource type values, an error occurs. For more + # information, see [ Rightsizing recommendation preferences][1] in the + # *Compute Optimizer User Guide*. + # + # * This preference is only available for the Amazon EC2 instance and + # Auto Scaling group resource types. + # + # * Compute Optimizer only supports the customization of + # `Ec2InstanceTypes`. + # + # + # + # + # + # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/rightsizing-preferences.html + # + # @!attribute [rw] name + # The type of preferred resource to customize. + # + # Compute Optimizer only supports the customization of + # `Ec2InstanceTypes`. + # + # + # @return [String] + # + # @!attribute [rw] include_list + # The preferred resource type values to include in the recommendation + # candidates. You can specify the exact resource type value, such as + # m5.large, or use wild card expressions, such as m5. If this isn’t + # specified, all supported resources are included by default. You can + # specify up to 1000 values in this list. + # @return [Array] + # + # @!attribute [rw] exclude_list + # The preferred resource type values to exclude from the + # recommendation candidates. If this isn’t specified, all supported + # resources are included by default. You can specify up to 1000 values + # in this list. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/PreferredResource AWS API Documentation + # + class PreferredResource < Struct.new( + :name, + :include_list, + :exclude_list) + SENSITIVE = [] + include Aws::Structure + end + # Describes a projected utilization metric of a recommendation option, # such as an Amazon EC2 instance. This represents the projected # utilization of a recommendation option had you used that resource @@ -4427,6 +5015,63 @@ class ProjectedMetric < Struct.new( # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html # @return [Types::ExternalMetricsPreference] # + # @!attribute [rw] look_back_period + # The preference to control the number of days the utilization metrics + # of the Amazon Web Services resource are analyzed. When this + # preference isn't specified, we use the default value `DAYS_14`. + # + # You can only set this preference for the Amazon EC2 instance and + # Auto Scaling group resource types. + # + # + # @return [String] + # + # @!attribute [rw] utilization_preferences + # The preference to control the resource’s CPU utilization thresholds + # - threshold and headroom. When this preference isn't specified, we + # use the following default values: + # + # * `P99_5` for threshold + # + # * `PERCENT_17` for headroom + # + # You can only set this preference for the Amazon EC2 instance + # resource type. + # + # + # @return [Array] + # + # @!attribute [rw] preferred_resources + # The preference to control which resource type values are considered + # when generating rightsizing recommendations. You can specify this + # preference as a combination of include and exclude lists. You must + # specify either an `includeList` or `excludeList`. If the preference + # is an empty set of resource type values, an error occurs. + # + # You can only set this preference for the Amazon EC2 instance and + # Auto Scaling group resource types. + # + # + # @return [Array] + # + # @!attribute [rw] savings_estimation_mode + # The status of the savings estimation mode preference to create or + # update. + # + # Specify the `AfterDiscounts` status to activate the preference, or + # specify `BeforeDiscounts` to deactivate the preference. + # + # Only the account manager or delegated administrator of your + # organization can activate this preference. + # + # For more information, see [ Savings estimation mode][1] in the + # *Compute Optimizer User Guide*. + # + # + # + # [1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/savings-estimation-mode.html + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/PutRecommendationPreferencesRequest AWS API Documentation # class PutRecommendationPreferencesRequest < Struct.new( @@ -4434,7 +5079,11 @@ class PutRecommendationPreferencesRequest < Struct.new( :scope, :enhanced_infrastructure_metrics, :inferred_workload_types, - :external_metrics_preference) + :external_metrics_preference, + :look_back_period, + :utilization_preferences, + :preferred_resources, + :savings_estimation_mode) SENSITIVE = [] include Aws::Structure end @@ -4606,6 +5255,39 @@ class RecommendationPreferences < Struct.new( # this object doesn't appear in the response. # @return [Types::ExternalMetricsPreference] # + # @!attribute [rw] look_back_period + # The preference to control the number of days the utilization metrics + # of the Amazon Web Services resource are analyzed. If the preference + # isn’t set, this object is null. + # @return [String] + # + # @!attribute [rw] utilization_preferences + # The preference to control the resource’s CPU utilization thresholds + # - threshold and headroom. If the preference isn’t set, this object + # is null. + # + # This preference is only available for the Amazon EC2 instance + # resource type. + # + # + # @return [Array] + # + # @!attribute [rw] preferred_resources + # The preference to control which resource type values are considered + # when generating rightsizing recommendations. This object resolves + # any wildcard expressions and returns the effective list of candidate + # resource type values. If the preference isn’t set, this object is + # null. + # @return [Array] + # + # @!attribute [rw] savings_estimation_mode + # Describes the savings estimation mode used for calculating savings + # opportunity. + # + # Only the account manager or delegated administrator of your + # organization can activate this preference. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/RecommendationPreferencesDetail AWS API Documentation # class RecommendationPreferencesDetail < Struct.new( @@ -4613,7 +5295,11 @@ class RecommendationPreferencesDetail < Struct.new( :resource_type, :enhanced_infrastructure_metrics, :inferred_workload_types, - :external_metrics_preference) + :external_metrics_preference, + :look_back_period, + :utilization_preferences, + :preferred_resources, + :savings_estimation_mode) SENSITIVE = [] include Aws::Structure end @@ -5268,6 +5954,36 @@ class UtilizationMetric < Struct.new( include Aws::Structure end + # The preference to control the resource’s CPU utilization thresholds - + # threshold and headroom. + # + # This preference is only available for the Amazon EC2 instance resource + # type. + # + # + # + # @!attribute [rw] metric_name + # The name of the resource utilization metric name to customize. + # + # Compute Optimizer only supports `CpuUtilization`. + # + # + # @return [String] + # + # @!attribute [rw] metric_parameters + # The parameters to set when customizing the resource utilization + # thresholds. + # @return [Types::CustomizableMetricParameters] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/UtilizationPreference AWS API Documentation + # + class UtilizationPreference < Struct.new( + :metric_name, + :metric_parameters) + SENSITIVE = [] + include Aws::Structure + end + # Describes the configuration of an Amazon Elastic Block Store (Amazon # EBS) volume. # @@ -5378,6 +6094,11 @@ class VolumeConfiguration < Struct.new( # A list of tags assigned to your Amazon EBS volume recommendations. # @return [Array] # + # @!attribute [rw] effective_recommendation_preferences + # Describes the effective recommendation preferences for Amazon EBS + # volume. + # @return [Types::EBSEffectiveRecommendationPreferences] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/VolumeRecommendation AWS API Documentation # class VolumeRecommendation < Struct.new( @@ -5390,7 +6111,8 @@ class VolumeRecommendation < Struct.new( :volume_recommendation_options, :last_refresh_timestamp, :current_performance_risk, - :tags) + :tags, + :effective_recommendation_preferences) SENSITIVE = [] include Aws::Structure end @@ -5427,13 +6149,20 @@ class VolumeRecommendation < Struct.new( # monthly savings amount and percentage. # @return [Types::SavingsOpportunity] # + # @!attribute [rw] savings_opportunity_after_discounts + # An object that describes the savings opportunity for the Amazon EBS + # volume recommendation option with specific discounts. Savings + # opportunity includes the estimated monthly savings and percentage. + # @return [Types::EBSSavingsOpportunityAfterDiscounts] + # # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/VolumeRecommendationOption AWS API Documentation # class VolumeRecommendationOption < Struct.new( :configuration, :performance_risk, :rank, - :savings_opportunity) + :savings_opportunity, + :savings_opportunity_after_discounts) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-configservice/CHANGELOG.md b/gems/aws-sdk-configservice/CHANGELOG.md index 7b0324279eb..9d6e09563b9 100644 --- a/gems/aws-sdk-configservice/CHANGELOG.md +++ b/gems/aws-sdk-configservice/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.102.0 (2023-11-27) +------------------ + +* Feature - Support Periodic Recording for Configuration Recorder + 1.101.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-configservice/VERSION b/gems/aws-sdk-configservice/VERSION index f19e6677313..1c55b869e98 100644 --- a/gems/aws-sdk-configservice/VERSION +++ b/gems/aws-sdk-configservice/VERSION @@ -1 +1 @@ -1.101.0 +1.102.0 diff --git a/gems/aws-sdk-configservice/lib/aws-sdk-configservice.rb b/gems/aws-sdk-configservice/lib/aws-sdk-configservice.rb index 51b0a5fb042..c6ace12b963 100644 --- a/gems/aws-sdk-configservice/lib/aws-sdk-configservice.rb +++ b/gems/aws-sdk-configservice/lib/aws-sdk-configservice.rb @@ -52,6 +52,6 @@ # @!group service module Aws::ConfigService - GEM_VERSION = '1.101.0' + GEM_VERSION = '1.102.0' end diff --git a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client.rb b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client.rb index 305981f9749..d8fcc70f7d8 100644 --- a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client.rb +++ b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client.rb @@ -454,6 +454,8 @@ def initialize(*args) # resp.base_configuration_items[0].configuration #=> String # resp.base_configuration_items[0].supplementary_configuration #=> Hash # resp.base_configuration_items[0].supplementary_configuration["SupplementaryConfigurationName"] #=> String + # resp.base_configuration_items[0].recording_frequency #=> String, one of "CONTINUOUS", "DAILY" + # resp.base_configuration_items[0].configuration_item_delivery_time #=> Time # resp.unprocessed_resource_identifiers #=> Array # resp.unprocessed_resource_identifiers[0].source_account_id #=> String # resp.unprocessed_resource_identifiers[0].source_region #=> String @@ -522,6 +524,8 @@ def batch_get_aggregate_resource_config(params = {}, options = {}) # resp.base_configuration_items[0].configuration #=> String # resp.base_configuration_items[0].supplementary_configuration #=> Hash # resp.base_configuration_items[0].supplementary_configuration["SupplementaryConfigurationName"] #=> String + # resp.base_configuration_items[0].recording_frequency #=> String, one of "CONTINUOUS", "DAILY" + # resp.base_configuration_items[0].configuration_item_delivery_time #=> Time # resp.unprocessed_resource_keys #=> Array # resp.unprocessed_resource_keys[0].resource_type #=> String, one of "AWS::EC2::CustomerGateway", "AWS::EC2::EIP", "AWS::EC2::Host", "AWS::EC2::Instance", "AWS::EC2::InternetGateway", "AWS::EC2::NetworkAcl", "AWS::EC2::NetworkInterface", "AWS::EC2::RouteTable", "AWS::EC2::SecurityGroup", "AWS::EC2::Subnet", "AWS::CloudTrail::Trail", "AWS::EC2::Volume", "AWS::EC2::VPC", "AWS::EC2::VPNConnection", "AWS::EC2::VPNGateway", "AWS::EC2::RegisteredHAInstance", "AWS::EC2::NatGateway", "AWS::EC2::EgressOnlyInternetGateway", "AWS::EC2::VPCEndpoint", "AWS::EC2::VPCEndpointService", "AWS::EC2::FlowLog", "AWS::EC2::VPCPeeringConnection", "AWS::Elasticsearch::Domain", "AWS::IAM::Group", "AWS::IAM::Policy", "AWS::IAM::Role", "AWS::IAM::User", "AWS::ElasticLoadBalancingV2::LoadBalancer", "AWS::ACM::Certificate", "AWS::RDS::DBInstance", "AWS::RDS::DBSubnetGroup", "AWS::RDS::DBSecurityGroup", "AWS::RDS::DBSnapshot", "AWS::RDS::DBCluster", "AWS::RDS::DBClusterSnapshot", "AWS::RDS::EventSubscription", "AWS::S3::Bucket", "AWS::S3::AccountPublicAccessBlock", "AWS::Redshift::Cluster", "AWS::Redshift::ClusterSnapshot", "AWS::Redshift::ClusterParameterGroup", "AWS::Redshift::ClusterSecurityGroup", "AWS::Redshift::ClusterSubnetGroup", "AWS::Redshift::EventSubscription", "AWS::SSM::ManagedInstanceInventory", "AWS::CloudWatch::Alarm", "AWS::CloudFormation::Stack", "AWS::ElasticLoadBalancing::LoadBalancer", "AWS::AutoScaling::AutoScalingGroup", "AWS::AutoScaling::LaunchConfiguration", "AWS::AutoScaling::ScalingPolicy", "AWS::AutoScaling::ScheduledAction", "AWS::DynamoDB::Table", "AWS::CodeBuild::Project", "AWS::WAF::RateBasedRule", "AWS::WAF::Rule", "AWS::WAF::RuleGroup", "AWS::WAF::WebACL", "AWS::WAFRegional::RateBasedRule", "AWS::WAFRegional::Rule", "AWS::WAFRegional::RuleGroup", "AWS::WAFRegional::WebACL", "AWS::CloudFront::Distribution", "AWS::CloudFront::StreamingDistribution", "AWS::Lambda::Function", "AWS::NetworkFirewall::Firewall", "AWS::NetworkFirewall::FirewallPolicy", "AWS::NetworkFirewall::RuleGroup", "AWS::ElasticBeanstalk::Application", "AWS::ElasticBeanstalk::ApplicationVersion", "AWS::ElasticBeanstalk::Environment", "AWS::WAFv2::WebACL", "AWS::WAFv2::RuleGroup", "AWS::WAFv2::IPSet", "AWS::WAFv2::RegexPatternSet", "AWS::WAFv2::ManagedRuleSet", "AWS::XRay::EncryptionConfig", "AWS::SSM::AssociationCompliance", "AWS::SSM::PatchCompliance", "AWS::Shield::Protection", "AWS::ShieldRegional::Protection", "AWS::Config::ConformancePackCompliance", "AWS::Config::ResourceCompliance", "AWS::ApiGateway::Stage", "AWS::ApiGateway::RestApi", "AWS::ApiGatewayV2::Stage", "AWS::ApiGatewayV2::Api", "AWS::CodePipeline::Pipeline", "AWS::ServiceCatalog::CloudFormationProvisionedProduct", "AWS::ServiceCatalog::CloudFormationProduct", "AWS::ServiceCatalog::Portfolio", "AWS::SQS::Queue", "AWS::KMS::Key", "AWS::QLDB::Ledger", "AWS::SecretsManager::Secret", "AWS::SNS::Topic", "AWS::SSM::FileData", "AWS::Backup::BackupPlan", "AWS::Backup::BackupSelection", "AWS::Backup::BackupVault", "AWS::Backup::RecoveryPoint", "AWS::ECR::Repository", "AWS::ECS::Cluster", "AWS::ECS::Service", "AWS::ECS::TaskDefinition", "AWS::EFS::AccessPoint", "AWS::EFS::FileSystem", "AWS::EKS::Cluster", "AWS::OpenSearch::Domain", "AWS::EC2::TransitGateway", "AWS::Kinesis::Stream", "AWS::Kinesis::StreamConsumer", "AWS::CodeDeploy::Application", "AWS::CodeDeploy::DeploymentConfig", "AWS::CodeDeploy::DeploymentGroup", "AWS::EC2::LaunchTemplate", "AWS::ECR::PublicRepository", "AWS::GuardDuty::Detector", "AWS::EMR::SecurityConfiguration", "AWS::SageMaker::CodeRepository", "AWS::Route53Resolver::ResolverEndpoint", "AWS::Route53Resolver::ResolverRule", "AWS::Route53Resolver::ResolverRuleAssociation", "AWS::DMS::ReplicationSubnetGroup", "AWS::DMS::EventSubscription", "AWS::MSK::Cluster", "AWS::StepFunctions::Activity", "AWS::WorkSpaces::Workspace", "AWS::WorkSpaces::ConnectionAlias", "AWS::SageMaker::Model", "AWS::ElasticLoadBalancingV2::Listener", "AWS::StepFunctions::StateMachine", "AWS::Batch::JobQueue", "AWS::Batch::ComputeEnvironment", "AWS::AccessAnalyzer::Analyzer", "AWS::Athena::WorkGroup", "AWS::Athena::DataCatalog", "AWS::Detective::Graph", "AWS::GlobalAccelerator::Accelerator", "AWS::GlobalAccelerator::EndpointGroup", "AWS::GlobalAccelerator::Listener", "AWS::EC2::TransitGatewayAttachment", "AWS::EC2::TransitGatewayRouteTable", "AWS::DMS::Certificate", "AWS::AppConfig::Application", "AWS::AppSync::GraphQLApi", "AWS::DataSync::LocationSMB", "AWS::DataSync::LocationFSxLustre", "AWS::DataSync::LocationS3", "AWS::DataSync::LocationEFS", "AWS::DataSync::Task", "AWS::DataSync::LocationNFS", "AWS::EC2::NetworkInsightsAccessScopeAnalysis", "AWS::EKS::FargateProfile", "AWS::Glue::Job", "AWS::GuardDuty::ThreatIntelSet", "AWS::GuardDuty::IPSet", "AWS::SageMaker::Workteam", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ServiceDiscovery::Service", "AWS::ServiceDiscovery::PublicDnsNamespace", "AWS::SES::ContactList", "AWS::SES::ConfigurationSet", "AWS::Route53::HostedZone", "AWS::IoTEvents::Input", "AWS::IoTEvents::DetectorModel", "AWS::IoTEvents::AlarmModel", "AWS::ServiceDiscovery::HttpNamespace", "AWS::Events::EventBus", "AWS::ImageBuilder::ContainerRecipe", "AWS::ImageBuilder::DistributionConfiguration", "AWS::ImageBuilder::InfrastructureConfiguration", "AWS::DataSync::LocationObjectStorage", "AWS::DataSync::LocationHDFS", "AWS::Glue::Classifier", "AWS::Route53RecoveryReadiness::Cell", "AWS::Route53RecoveryReadiness::ReadinessCheck", "AWS::ECR::RegistryPolicy", "AWS::Backup::ReportPlan", "AWS::Lightsail::Certificate", "AWS::RUM::AppMonitor", "AWS::Events::Endpoint", "AWS::SES::ReceiptRuleSet", "AWS::Events::Archive", "AWS::Events::ApiDestination", "AWS::Lightsail::Disk", "AWS::FIS::ExperimentTemplate", "AWS::DataSync::LocationFSxWindows", "AWS::SES::ReceiptFilter", "AWS::GuardDuty::Filter", "AWS::SES::Template", "AWS::AmazonMQ::Broker", "AWS::AppConfig::Environment", "AWS::AppConfig::ConfigurationProfile", "AWS::Cloud9::EnvironmentEC2", "AWS::EventSchemas::Registry", "AWS::EventSchemas::RegistryPolicy", "AWS::EventSchemas::Discoverer", "AWS::FraudDetector::Label", "AWS::FraudDetector::EntityType", "AWS::FraudDetector::Variable", "AWS::FraudDetector::Outcome", "AWS::IoT::Authorizer", "AWS::IoT::SecurityProfile", "AWS::IoT::RoleAlias", "AWS::IoT::Dimension", "AWS::IoTAnalytics::Datastore", "AWS::Lightsail::Bucket", "AWS::Lightsail::StaticIp", "AWS::MediaPackage::PackagingGroup", "AWS::Route53RecoveryReadiness::RecoveryGroup", "AWS::ResilienceHub::ResiliencyPolicy", "AWS::Transfer::Workflow", "AWS::EKS::IdentityProviderConfig", "AWS::EKS::Addon", "AWS::Glue::MLTransform", "AWS::IoT::Policy", "AWS::IoT::MitigationAction", "AWS::IoTTwinMaker::Workspace", "AWS::IoTTwinMaker::Entity", "AWS::IoTAnalytics::Dataset", "AWS::IoTAnalytics::Pipeline", "AWS::IoTAnalytics::Channel", "AWS::IoTSiteWise::Dashboard", "AWS::IoTSiteWise::Project", "AWS::IoTSiteWise::Portal", "AWS::IoTSiteWise::AssetModel", "AWS::IVS::Channel", "AWS::IVS::RecordingConfiguration", "AWS::IVS::PlaybackKeyPair", "AWS::KinesisAnalyticsV2::Application", "AWS::RDS::GlobalCluster", "AWS::S3::MultiRegionAccessPoint", "AWS::DeviceFarm::TestGridProject", "AWS::Budgets::BudgetsAction", "AWS::Lex::Bot", "AWS::CodeGuruReviewer::RepositoryAssociation", "AWS::IoT::CustomMetric", "AWS::Route53Resolver::FirewallDomainList", "AWS::RoboMaker::RobotApplicationVersion", "AWS::EC2::TrafficMirrorSession", "AWS::IoTSiteWise::Gateway", "AWS::Lex::BotAlias", "AWS::LookoutMetrics::Alert", "AWS::IoT::AccountAuditConfiguration", "AWS::EC2::TrafficMirrorTarget", "AWS::S3::StorageLens", "AWS::IoT::ScheduledAudit", "AWS::Events::Connection", "AWS::EventSchemas::Schema", "AWS::MediaPackage::PackagingConfiguration", "AWS::KinesisVideo::SignalingChannel", "AWS::AppStream::DirectoryConfig", "AWS::LookoutVision::Project", "AWS::Route53RecoveryControl::Cluster", "AWS::Route53RecoveryControl::SafetyRule", "AWS::Route53RecoveryControl::ControlPanel", "AWS::Route53RecoveryControl::RoutingControl", "AWS::Route53RecoveryReadiness::ResourceSet", "AWS::RoboMaker::SimulationApplication", "AWS::RoboMaker::RobotApplication", "AWS::HealthLake::FHIRDatastore", "AWS::Pinpoint::Segment", "AWS::Pinpoint::ApplicationSettings", "AWS::Events::Rule", "AWS::EC2::DHCPOptions", "AWS::EC2::NetworkInsightsPath", "AWS::EC2::TrafficMirrorFilter", "AWS::EC2::IPAM", "AWS::IoTTwinMaker::Scene", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::CustomerProfiles::Domain", "AWS::AutoScaling::WarmPool", "AWS::Connect::PhoneNumber", "AWS::AppConfig::DeploymentStrategy", "AWS::AppFlow::Flow", "AWS::AuditManager::Assessment", "AWS::CloudWatch::MetricStream", "AWS::DeviceFarm::InstanceProfile", "AWS::DeviceFarm::Project", "AWS::EC2::EC2Fleet", "AWS::EC2::SubnetRouteTableAssociation", "AWS::ECR::PullThroughCacheRule", "AWS::GroundStation::Config", "AWS::ImageBuilder::ImagePipeline", "AWS::IoT::FleetMetric", "AWS::IoTWireless::ServiceProfile", "AWS::NetworkManager::Device", "AWS::NetworkManager::GlobalNetwork", "AWS::NetworkManager::Link", "AWS::NetworkManager::Site", "AWS::Panorama::Package", "AWS::Pinpoint::App", "AWS::Redshift::ScheduledAction", "AWS::Route53Resolver::FirewallRuleGroupAssociation", "AWS::SageMaker::AppImageConfig", "AWS::SageMaker::Image", "AWS::ECS::TaskSet", "AWS::Cassandra::Keyspace", "AWS::Signer::SigningProfile", "AWS::Amplify::App", "AWS::AppMesh::VirtualNode", "AWS::AppMesh::VirtualService", "AWS::AppRunner::VpcConnector", "AWS::AppStream::Application", "AWS::CodeArtifact::Repository", "AWS::EC2::PrefixList", "AWS::EC2::SpotFleet", "AWS::Evidently::Project", "AWS::Forecast::Dataset", "AWS::IAM::SAMLProvider", "AWS::IAM::ServerCertificate", "AWS::Pinpoint::Campaign", "AWS::Pinpoint::InAppTemplate", "AWS::SageMaker::Domain", "AWS::Transfer::Agreement", "AWS::Transfer::Connector", "AWS::KinesisFirehose::DeliveryStream", "AWS::Amplify::Branch", "AWS::AppIntegrations::EventIntegration", "AWS::AppMesh::Route", "AWS::Athena::PreparedStatement", "AWS::EC2::IPAMScope", "AWS::Evidently::Launch", "AWS::Forecast::DatasetGroup", "AWS::GreengrassV2::ComponentVersion", "AWS::GroundStation::MissionProfile", "AWS::MediaConnect::FlowEntitlement", "AWS::MediaConnect::FlowVpcInterface", "AWS::MediaTailor::PlaybackConfiguration", "AWS::MSK::Configuration", "AWS::Personalize::Dataset", "AWS::Personalize::Schema", "AWS::Personalize::Solution", "AWS::Pinpoint::EmailTemplate", "AWS::Pinpoint::EventStream", "AWS::ResilienceHub::App", "AWS::ACMPCA::CertificateAuthority", "AWS::AppConfig::HostedConfigurationVersion", "AWS::AppMesh::VirtualGateway", "AWS::AppMesh::VirtualRouter", "AWS::AppRunner::Service", "AWS::CustomerProfiles::ObjectType", "AWS::DMS::Endpoint", "AWS::EC2::CapacityReservation", "AWS::EC2::ClientVpnEndpoint", "AWS::Kendra::Index", "AWS::KinesisVideo::Stream", "AWS::Logs::Destination", "AWS::Pinpoint::EmailChannel", "AWS::S3::AccessPoint", "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::NetworkManager::LinkAssociation", "AWS::IoTWireless::MulticastGroup", "AWS::Personalize::DatasetGroup", "AWS::IoTTwinMaker::ComponentType", "AWS::CodeBuild::ReportGroup", "AWS::SageMaker::FeatureGroup", "AWS::MSK::BatchScramSecret", "AWS::AppStream::Stack", "AWS::IoT::JobTemplate", "AWS::IoTWireless::FuotaTask", "AWS::IoT::ProvisioningTemplate", "AWS::InspectorV2::Filter", "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", "AWS::ServiceDiscovery::Instance", "AWS::Transfer::Certificate", "AWS::MediaConnect::FlowSource", "AWS::APS::RuleGroupsNamespace", "AWS::CodeGuruProfiler::ProfilingGroup", "AWS::Route53Resolver::ResolverQueryLoggingConfig", "AWS::Batch::SchedulingPolicy", "AWS::ACMPCA::CertificateAuthorityActivation", "AWS::AppMesh::GatewayRoute", "AWS::AppMesh::Mesh", "AWS::Connect::Instance", "AWS::Connect::QuickConnect", "AWS::EC2::CarrierGateway", "AWS::EC2::IPAMPool", "AWS::EC2::TransitGatewayConnect", "AWS::EC2::TransitGatewayMulticastDomain", "AWS::ECS::CapacityProvider", "AWS::IAM::InstanceProfile", "AWS::IoT::CACertificate", "AWS::IoTTwinMaker::SyncJob", "AWS::KafkaConnect::Connector", "AWS::Lambda::CodeSigningConfig", "AWS::NetworkManager::ConnectPeer", "AWS::ResourceExplorer2::Index" # resp.unprocessed_resource_keys[0].resource_id #=> String @@ -1694,6 +1698,12 @@ def describe_configuration_recorder_status(params = {}, options = {}) # resp.configuration_recorders[0].recording_group.exclusion_by_resource_types.resource_types #=> Array # resp.configuration_recorders[0].recording_group.exclusion_by_resource_types.resource_types[0] #=> String, one of "AWS::EC2::CustomerGateway", "AWS::EC2::EIP", "AWS::EC2::Host", "AWS::EC2::Instance", "AWS::EC2::InternetGateway", "AWS::EC2::NetworkAcl", "AWS::EC2::NetworkInterface", "AWS::EC2::RouteTable", "AWS::EC2::SecurityGroup", "AWS::EC2::Subnet", "AWS::CloudTrail::Trail", "AWS::EC2::Volume", "AWS::EC2::VPC", "AWS::EC2::VPNConnection", "AWS::EC2::VPNGateway", "AWS::EC2::RegisteredHAInstance", "AWS::EC2::NatGateway", "AWS::EC2::EgressOnlyInternetGateway", "AWS::EC2::VPCEndpoint", "AWS::EC2::VPCEndpointService", "AWS::EC2::FlowLog", "AWS::EC2::VPCPeeringConnection", "AWS::Elasticsearch::Domain", "AWS::IAM::Group", "AWS::IAM::Policy", "AWS::IAM::Role", "AWS::IAM::User", "AWS::ElasticLoadBalancingV2::LoadBalancer", "AWS::ACM::Certificate", "AWS::RDS::DBInstance", "AWS::RDS::DBSubnetGroup", "AWS::RDS::DBSecurityGroup", "AWS::RDS::DBSnapshot", "AWS::RDS::DBCluster", "AWS::RDS::DBClusterSnapshot", "AWS::RDS::EventSubscription", "AWS::S3::Bucket", "AWS::S3::AccountPublicAccessBlock", "AWS::Redshift::Cluster", "AWS::Redshift::ClusterSnapshot", "AWS::Redshift::ClusterParameterGroup", "AWS::Redshift::ClusterSecurityGroup", "AWS::Redshift::ClusterSubnetGroup", "AWS::Redshift::EventSubscription", "AWS::SSM::ManagedInstanceInventory", "AWS::CloudWatch::Alarm", "AWS::CloudFormation::Stack", "AWS::ElasticLoadBalancing::LoadBalancer", "AWS::AutoScaling::AutoScalingGroup", "AWS::AutoScaling::LaunchConfiguration", "AWS::AutoScaling::ScalingPolicy", "AWS::AutoScaling::ScheduledAction", "AWS::DynamoDB::Table", "AWS::CodeBuild::Project", "AWS::WAF::RateBasedRule", "AWS::WAF::Rule", "AWS::WAF::RuleGroup", "AWS::WAF::WebACL", "AWS::WAFRegional::RateBasedRule", "AWS::WAFRegional::Rule", "AWS::WAFRegional::RuleGroup", "AWS::WAFRegional::WebACL", "AWS::CloudFront::Distribution", "AWS::CloudFront::StreamingDistribution", "AWS::Lambda::Function", "AWS::NetworkFirewall::Firewall", "AWS::NetworkFirewall::FirewallPolicy", "AWS::NetworkFirewall::RuleGroup", "AWS::ElasticBeanstalk::Application", "AWS::ElasticBeanstalk::ApplicationVersion", "AWS::ElasticBeanstalk::Environment", "AWS::WAFv2::WebACL", "AWS::WAFv2::RuleGroup", "AWS::WAFv2::IPSet", "AWS::WAFv2::RegexPatternSet", "AWS::WAFv2::ManagedRuleSet", "AWS::XRay::EncryptionConfig", "AWS::SSM::AssociationCompliance", "AWS::SSM::PatchCompliance", "AWS::Shield::Protection", "AWS::ShieldRegional::Protection", "AWS::Config::ConformancePackCompliance", "AWS::Config::ResourceCompliance", "AWS::ApiGateway::Stage", "AWS::ApiGateway::RestApi", "AWS::ApiGatewayV2::Stage", "AWS::ApiGatewayV2::Api", "AWS::CodePipeline::Pipeline", "AWS::ServiceCatalog::CloudFormationProvisionedProduct", "AWS::ServiceCatalog::CloudFormationProduct", "AWS::ServiceCatalog::Portfolio", "AWS::SQS::Queue", "AWS::KMS::Key", "AWS::QLDB::Ledger", "AWS::SecretsManager::Secret", "AWS::SNS::Topic", "AWS::SSM::FileData", "AWS::Backup::BackupPlan", "AWS::Backup::BackupSelection", "AWS::Backup::BackupVault", "AWS::Backup::RecoveryPoint", "AWS::ECR::Repository", "AWS::ECS::Cluster", "AWS::ECS::Service", "AWS::ECS::TaskDefinition", "AWS::EFS::AccessPoint", "AWS::EFS::FileSystem", "AWS::EKS::Cluster", "AWS::OpenSearch::Domain", "AWS::EC2::TransitGateway", "AWS::Kinesis::Stream", "AWS::Kinesis::StreamConsumer", "AWS::CodeDeploy::Application", "AWS::CodeDeploy::DeploymentConfig", "AWS::CodeDeploy::DeploymentGroup", "AWS::EC2::LaunchTemplate", "AWS::ECR::PublicRepository", "AWS::GuardDuty::Detector", "AWS::EMR::SecurityConfiguration", "AWS::SageMaker::CodeRepository", "AWS::Route53Resolver::ResolverEndpoint", "AWS::Route53Resolver::ResolverRule", "AWS::Route53Resolver::ResolverRuleAssociation", "AWS::DMS::ReplicationSubnetGroup", "AWS::DMS::EventSubscription", "AWS::MSK::Cluster", "AWS::StepFunctions::Activity", "AWS::WorkSpaces::Workspace", "AWS::WorkSpaces::ConnectionAlias", "AWS::SageMaker::Model", "AWS::ElasticLoadBalancingV2::Listener", "AWS::StepFunctions::StateMachine", "AWS::Batch::JobQueue", "AWS::Batch::ComputeEnvironment", "AWS::AccessAnalyzer::Analyzer", "AWS::Athena::WorkGroup", "AWS::Athena::DataCatalog", "AWS::Detective::Graph", "AWS::GlobalAccelerator::Accelerator", "AWS::GlobalAccelerator::EndpointGroup", "AWS::GlobalAccelerator::Listener", "AWS::EC2::TransitGatewayAttachment", "AWS::EC2::TransitGatewayRouteTable", "AWS::DMS::Certificate", "AWS::AppConfig::Application", "AWS::AppSync::GraphQLApi", "AWS::DataSync::LocationSMB", "AWS::DataSync::LocationFSxLustre", "AWS::DataSync::LocationS3", "AWS::DataSync::LocationEFS", "AWS::DataSync::Task", "AWS::DataSync::LocationNFS", "AWS::EC2::NetworkInsightsAccessScopeAnalysis", "AWS::EKS::FargateProfile", "AWS::Glue::Job", "AWS::GuardDuty::ThreatIntelSet", "AWS::GuardDuty::IPSet", "AWS::SageMaker::Workteam", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ServiceDiscovery::Service", "AWS::ServiceDiscovery::PublicDnsNamespace", "AWS::SES::ContactList", "AWS::SES::ConfigurationSet", "AWS::Route53::HostedZone", "AWS::IoTEvents::Input", "AWS::IoTEvents::DetectorModel", "AWS::IoTEvents::AlarmModel", "AWS::ServiceDiscovery::HttpNamespace", "AWS::Events::EventBus", "AWS::ImageBuilder::ContainerRecipe", "AWS::ImageBuilder::DistributionConfiguration", "AWS::ImageBuilder::InfrastructureConfiguration", "AWS::DataSync::LocationObjectStorage", "AWS::DataSync::LocationHDFS", "AWS::Glue::Classifier", "AWS::Route53RecoveryReadiness::Cell", "AWS::Route53RecoveryReadiness::ReadinessCheck", "AWS::ECR::RegistryPolicy", "AWS::Backup::ReportPlan", "AWS::Lightsail::Certificate", "AWS::RUM::AppMonitor", "AWS::Events::Endpoint", "AWS::SES::ReceiptRuleSet", "AWS::Events::Archive", "AWS::Events::ApiDestination", "AWS::Lightsail::Disk", "AWS::FIS::ExperimentTemplate", "AWS::DataSync::LocationFSxWindows", "AWS::SES::ReceiptFilter", "AWS::GuardDuty::Filter", "AWS::SES::Template", "AWS::AmazonMQ::Broker", "AWS::AppConfig::Environment", "AWS::AppConfig::ConfigurationProfile", "AWS::Cloud9::EnvironmentEC2", "AWS::EventSchemas::Registry", "AWS::EventSchemas::RegistryPolicy", "AWS::EventSchemas::Discoverer", "AWS::FraudDetector::Label", "AWS::FraudDetector::EntityType", "AWS::FraudDetector::Variable", "AWS::FraudDetector::Outcome", "AWS::IoT::Authorizer", "AWS::IoT::SecurityProfile", "AWS::IoT::RoleAlias", "AWS::IoT::Dimension", "AWS::IoTAnalytics::Datastore", "AWS::Lightsail::Bucket", "AWS::Lightsail::StaticIp", "AWS::MediaPackage::PackagingGroup", "AWS::Route53RecoveryReadiness::RecoveryGroup", "AWS::ResilienceHub::ResiliencyPolicy", "AWS::Transfer::Workflow", "AWS::EKS::IdentityProviderConfig", "AWS::EKS::Addon", "AWS::Glue::MLTransform", "AWS::IoT::Policy", "AWS::IoT::MitigationAction", "AWS::IoTTwinMaker::Workspace", "AWS::IoTTwinMaker::Entity", "AWS::IoTAnalytics::Dataset", "AWS::IoTAnalytics::Pipeline", "AWS::IoTAnalytics::Channel", "AWS::IoTSiteWise::Dashboard", "AWS::IoTSiteWise::Project", "AWS::IoTSiteWise::Portal", "AWS::IoTSiteWise::AssetModel", "AWS::IVS::Channel", "AWS::IVS::RecordingConfiguration", "AWS::IVS::PlaybackKeyPair", "AWS::KinesisAnalyticsV2::Application", "AWS::RDS::GlobalCluster", "AWS::S3::MultiRegionAccessPoint", "AWS::DeviceFarm::TestGridProject", "AWS::Budgets::BudgetsAction", "AWS::Lex::Bot", "AWS::CodeGuruReviewer::RepositoryAssociation", "AWS::IoT::CustomMetric", "AWS::Route53Resolver::FirewallDomainList", "AWS::RoboMaker::RobotApplicationVersion", "AWS::EC2::TrafficMirrorSession", "AWS::IoTSiteWise::Gateway", "AWS::Lex::BotAlias", "AWS::LookoutMetrics::Alert", "AWS::IoT::AccountAuditConfiguration", "AWS::EC2::TrafficMirrorTarget", "AWS::S3::StorageLens", "AWS::IoT::ScheduledAudit", "AWS::Events::Connection", "AWS::EventSchemas::Schema", "AWS::MediaPackage::PackagingConfiguration", "AWS::KinesisVideo::SignalingChannel", "AWS::AppStream::DirectoryConfig", "AWS::LookoutVision::Project", "AWS::Route53RecoveryControl::Cluster", "AWS::Route53RecoveryControl::SafetyRule", "AWS::Route53RecoveryControl::ControlPanel", "AWS::Route53RecoveryControl::RoutingControl", "AWS::Route53RecoveryReadiness::ResourceSet", "AWS::RoboMaker::SimulationApplication", "AWS::RoboMaker::RobotApplication", "AWS::HealthLake::FHIRDatastore", "AWS::Pinpoint::Segment", "AWS::Pinpoint::ApplicationSettings", "AWS::Events::Rule", "AWS::EC2::DHCPOptions", "AWS::EC2::NetworkInsightsPath", "AWS::EC2::TrafficMirrorFilter", "AWS::EC2::IPAM", "AWS::IoTTwinMaker::Scene", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::CustomerProfiles::Domain", "AWS::AutoScaling::WarmPool", "AWS::Connect::PhoneNumber", "AWS::AppConfig::DeploymentStrategy", "AWS::AppFlow::Flow", "AWS::AuditManager::Assessment", "AWS::CloudWatch::MetricStream", "AWS::DeviceFarm::InstanceProfile", "AWS::DeviceFarm::Project", "AWS::EC2::EC2Fleet", "AWS::EC2::SubnetRouteTableAssociation", "AWS::ECR::PullThroughCacheRule", "AWS::GroundStation::Config", "AWS::ImageBuilder::ImagePipeline", "AWS::IoT::FleetMetric", "AWS::IoTWireless::ServiceProfile", "AWS::NetworkManager::Device", "AWS::NetworkManager::GlobalNetwork", "AWS::NetworkManager::Link", "AWS::NetworkManager::Site", "AWS::Panorama::Package", "AWS::Pinpoint::App", "AWS::Redshift::ScheduledAction", "AWS::Route53Resolver::FirewallRuleGroupAssociation", "AWS::SageMaker::AppImageConfig", "AWS::SageMaker::Image", "AWS::ECS::TaskSet", "AWS::Cassandra::Keyspace", "AWS::Signer::SigningProfile", "AWS::Amplify::App", "AWS::AppMesh::VirtualNode", "AWS::AppMesh::VirtualService", "AWS::AppRunner::VpcConnector", "AWS::AppStream::Application", "AWS::CodeArtifact::Repository", "AWS::EC2::PrefixList", "AWS::EC2::SpotFleet", "AWS::Evidently::Project", "AWS::Forecast::Dataset", "AWS::IAM::SAMLProvider", "AWS::IAM::ServerCertificate", "AWS::Pinpoint::Campaign", "AWS::Pinpoint::InAppTemplate", "AWS::SageMaker::Domain", "AWS::Transfer::Agreement", "AWS::Transfer::Connector", "AWS::KinesisFirehose::DeliveryStream", "AWS::Amplify::Branch", "AWS::AppIntegrations::EventIntegration", "AWS::AppMesh::Route", "AWS::Athena::PreparedStatement", "AWS::EC2::IPAMScope", "AWS::Evidently::Launch", "AWS::Forecast::DatasetGroup", "AWS::GreengrassV2::ComponentVersion", "AWS::GroundStation::MissionProfile", "AWS::MediaConnect::FlowEntitlement", "AWS::MediaConnect::FlowVpcInterface", "AWS::MediaTailor::PlaybackConfiguration", "AWS::MSK::Configuration", "AWS::Personalize::Dataset", "AWS::Personalize::Schema", "AWS::Personalize::Solution", "AWS::Pinpoint::EmailTemplate", "AWS::Pinpoint::EventStream", "AWS::ResilienceHub::App", "AWS::ACMPCA::CertificateAuthority", "AWS::AppConfig::HostedConfigurationVersion", "AWS::AppMesh::VirtualGateway", "AWS::AppMesh::VirtualRouter", "AWS::AppRunner::Service", "AWS::CustomerProfiles::ObjectType", "AWS::DMS::Endpoint", "AWS::EC2::CapacityReservation", "AWS::EC2::ClientVpnEndpoint", "AWS::Kendra::Index", "AWS::KinesisVideo::Stream", "AWS::Logs::Destination", "AWS::Pinpoint::EmailChannel", "AWS::S3::AccessPoint", "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::NetworkManager::LinkAssociation", "AWS::IoTWireless::MulticastGroup", "AWS::Personalize::DatasetGroup", "AWS::IoTTwinMaker::ComponentType", "AWS::CodeBuild::ReportGroup", "AWS::SageMaker::FeatureGroup", "AWS::MSK::BatchScramSecret", "AWS::AppStream::Stack", "AWS::IoT::JobTemplate", "AWS::IoTWireless::FuotaTask", "AWS::IoT::ProvisioningTemplate", "AWS::InspectorV2::Filter", "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", "AWS::ServiceDiscovery::Instance", "AWS::Transfer::Certificate", "AWS::MediaConnect::FlowSource", "AWS::APS::RuleGroupsNamespace", "AWS::CodeGuruProfiler::ProfilingGroup", "AWS::Route53Resolver::ResolverQueryLoggingConfig", "AWS::Batch::SchedulingPolicy", "AWS::ACMPCA::CertificateAuthorityActivation", "AWS::AppMesh::GatewayRoute", "AWS::AppMesh::Mesh", "AWS::Connect::Instance", "AWS::Connect::QuickConnect", "AWS::EC2::CarrierGateway", "AWS::EC2::IPAMPool", "AWS::EC2::TransitGatewayConnect", "AWS::EC2::TransitGatewayMulticastDomain", "AWS::ECS::CapacityProvider", "AWS::IAM::InstanceProfile", "AWS::IoT::CACertificate", "AWS::IoTTwinMaker::SyncJob", "AWS::KafkaConnect::Connector", "AWS::Lambda::CodeSigningConfig", "AWS::NetworkManager::ConnectPeer", "AWS::ResourceExplorer2::Index" # resp.configuration_recorders[0].recording_group.recording_strategy.use_only #=> String, one of "ALL_SUPPORTED_RESOURCE_TYPES", "INCLUSION_BY_RESOURCE_TYPES", "EXCLUSION_BY_RESOURCE_TYPES" + # resp.configuration_recorders[0].recording_mode.recording_frequency #=> String, one of "CONTINUOUS", "DAILY" + # resp.configuration_recorders[0].recording_mode.recording_mode_overrides #=> Array + # resp.configuration_recorders[0].recording_mode.recording_mode_overrides[0].description #=> String + # resp.configuration_recorders[0].recording_mode.recording_mode_overrides[0].resource_types #=> Array + # resp.configuration_recorders[0].recording_mode.recording_mode_overrides[0].resource_types[0] #=> String, one of "AWS::EC2::CustomerGateway", "AWS::EC2::EIP", "AWS::EC2::Host", "AWS::EC2::Instance", "AWS::EC2::InternetGateway", "AWS::EC2::NetworkAcl", "AWS::EC2::NetworkInterface", "AWS::EC2::RouteTable", "AWS::EC2::SecurityGroup", "AWS::EC2::Subnet", "AWS::CloudTrail::Trail", "AWS::EC2::Volume", "AWS::EC2::VPC", "AWS::EC2::VPNConnection", "AWS::EC2::VPNGateway", "AWS::EC2::RegisteredHAInstance", "AWS::EC2::NatGateway", "AWS::EC2::EgressOnlyInternetGateway", "AWS::EC2::VPCEndpoint", "AWS::EC2::VPCEndpointService", "AWS::EC2::FlowLog", "AWS::EC2::VPCPeeringConnection", "AWS::Elasticsearch::Domain", "AWS::IAM::Group", "AWS::IAM::Policy", "AWS::IAM::Role", "AWS::IAM::User", "AWS::ElasticLoadBalancingV2::LoadBalancer", "AWS::ACM::Certificate", "AWS::RDS::DBInstance", "AWS::RDS::DBSubnetGroup", "AWS::RDS::DBSecurityGroup", "AWS::RDS::DBSnapshot", "AWS::RDS::DBCluster", "AWS::RDS::DBClusterSnapshot", "AWS::RDS::EventSubscription", "AWS::S3::Bucket", "AWS::S3::AccountPublicAccessBlock", "AWS::Redshift::Cluster", "AWS::Redshift::ClusterSnapshot", "AWS::Redshift::ClusterParameterGroup", "AWS::Redshift::ClusterSecurityGroup", "AWS::Redshift::ClusterSubnetGroup", "AWS::Redshift::EventSubscription", "AWS::SSM::ManagedInstanceInventory", "AWS::CloudWatch::Alarm", "AWS::CloudFormation::Stack", "AWS::ElasticLoadBalancing::LoadBalancer", "AWS::AutoScaling::AutoScalingGroup", "AWS::AutoScaling::LaunchConfiguration", "AWS::AutoScaling::ScalingPolicy", "AWS::AutoScaling::ScheduledAction", "AWS::DynamoDB::Table", "AWS::CodeBuild::Project", "AWS::WAF::RateBasedRule", "AWS::WAF::Rule", "AWS::WAF::RuleGroup", "AWS::WAF::WebACL", "AWS::WAFRegional::RateBasedRule", "AWS::WAFRegional::Rule", "AWS::WAFRegional::RuleGroup", "AWS::WAFRegional::WebACL", "AWS::CloudFront::Distribution", "AWS::CloudFront::StreamingDistribution", "AWS::Lambda::Function", "AWS::NetworkFirewall::Firewall", "AWS::NetworkFirewall::FirewallPolicy", "AWS::NetworkFirewall::RuleGroup", "AWS::ElasticBeanstalk::Application", "AWS::ElasticBeanstalk::ApplicationVersion", "AWS::ElasticBeanstalk::Environment", "AWS::WAFv2::WebACL", "AWS::WAFv2::RuleGroup", "AWS::WAFv2::IPSet", "AWS::WAFv2::RegexPatternSet", "AWS::WAFv2::ManagedRuleSet", "AWS::XRay::EncryptionConfig", "AWS::SSM::AssociationCompliance", "AWS::SSM::PatchCompliance", "AWS::Shield::Protection", "AWS::ShieldRegional::Protection", "AWS::Config::ConformancePackCompliance", "AWS::Config::ResourceCompliance", "AWS::ApiGateway::Stage", "AWS::ApiGateway::RestApi", "AWS::ApiGatewayV2::Stage", "AWS::ApiGatewayV2::Api", "AWS::CodePipeline::Pipeline", "AWS::ServiceCatalog::CloudFormationProvisionedProduct", "AWS::ServiceCatalog::CloudFormationProduct", "AWS::ServiceCatalog::Portfolio", "AWS::SQS::Queue", "AWS::KMS::Key", "AWS::QLDB::Ledger", "AWS::SecretsManager::Secret", "AWS::SNS::Topic", "AWS::SSM::FileData", "AWS::Backup::BackupPlan", "AWS::Backup::BackupSelection", "AWS::Backup::BackupVault", "AWS::Backup::RecoveryPoint", "AWS::ECR::Repository", "AWS::ECS::Cluster", "AWS::ECS::Service", "AWS::ECS::TaskDefinition", "AWS::EFS::AccessPoint", "AWS::EFS::FileSystem", "AWS::EKS::Cluster", "AWS::OpenSearch::Domain", "AWS::EC2::TransitGateway", "AWS::Kinesis::Stream", "AWS::Kinesis::StreamConsumer", "AWS::CodeDeploy::Application", "AWS::CodeDeploy::DeploymentConfig", "AWS::CodeDeploy::DeploymentGroup", "AWS::EC2::LaunchTemplate", "AWS::ECR::PublicRepository", "AWS::GuardDuty::Detector", "AWS::EMR::SecurityConfiguration", "AWS::SageMaker::CodeRepository", "AWS::Route53Resolver::ResolverEndpoint", "AWS::Route53Resolver::ResolverRule", "AWS::Route53Resolver::ResolverRuleAssociation", "AWS::DMS::ReplicationSubnetGroup", "AWS::DMS::EventSubscription", "AWS::MSK::Cluster", "AWS::StepFunctions::Activity", "AWS::WorkSpaces::Workspace", "AWS::WorkSpaces::ConnectionAlias", "AWS::SageMaker::Model", "AWS::ElasticLoadBalancingV2::Listener", "AWS::StepFunctions::StateMachine", "AWS::Batch::JobQueue", "AWS::Batch::ComputeEnvironment", "AWS::AccessAnalyzer::Analyzer", "AWS::Athena::WorkGroup", "AWS::Athena::DataCatalog", "AWS::Detective::Graph", "AWS::GlobalAccelerator::Accelerator", "AWS::GlobalAccelerator::EndpointGroup", "AWS::GlobalAccelerator::Listener", "AWS::EC2::TransitGatewayAttachment", "AWS::EC2::TransitGatewayRouteTable", "AWS::DMS::Certificate", "AWS::AppConfig::Application", "AWS::AppSync::GraphQLApi", "AWS::DataSync::LocationSMB", "AWS::DataSync::LocationFSxLustre", "AWS::DataSync::LocationS3", "AWS::DataSync::LocationEFS", "AWS::DataSync::Task", "AWS::DataSync::LocationNFS", "AWS::EC2::NetworkInsightsAccessScopeAnalysis", "AWS::EKS::FargateProfile", "AWS::Glue::Job", "AWS::GuardDuty::ThreatIntelSet", "AWS::GuardDuty::IPSet", "AWS::SageMaker::Workteam", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ServiceDiscovery::Service", "AWS::ServiceDiscovery::PublicDnsNamespace", "AWS::SES::ContactList", "AWS::SES::ConfigurationSet", "AWS::Route53::HostedZone", "AWS::IoTEvents::Input", "AWS::IoTEvents::DetectorModel", "AWS::IoTEvents::AlarmModel", "AWS::ServiceDiscovery::HttpNamespace", "AWS::Events::EventBus", "AWS::ImageBuilder::ContainerRecipe", "AWS::ImageBuilder::DistributionConfiguration", "AWS::ImageBuilder::InfrastructureConfiguration", "AWS::DataSync::LocationObjectStorage", "AWS::DataSync::LocationHDFS", "AWS::Glue::Classifier", "AWS::Route53RecoveryReadiness::Cell", "AWS::Route53RecoveryReadiness::ReadinessCheck", "AWS::ECR::RegistryPolicy", "AWS::Backup::ReportPlan", "AWS::Lightsail::Certificate", "AWS::RUM::AppMonitor", "AWS::Events::Endpoint", "AWS::SES::ReceiptRuleSet", "AWS::Events::Archive", "AWS::Events::ApiDestination", "AWS::Lightsail::Disk", "AWS::FIS::ExperimentTemplate", "AWS::DataSync::LocationFSxWindows", "AWS::SES::ReceiptFilter", "AWS::GuardDuty::Filter", "AWS::SES::Template", "AWS::AmazonMQ::Broker", "AWS::AppConfig::Environment", "AWS::AppConfig::ConfigurationProfile", "AWS::Cloud9::EnvironmentEC2", "AWS::EventSchemas::Registry", "AWS::EventSchemas::RegistryPolicy", "AWS::EventSchemas::Discoverer", "AWS::FraudDetector::Label", "AWS::FraudDetector::EntityType", "AWS::FraudDetector::Variable", "AWS::FraudDetector::Outcome", "AWS::IoT::Authorizer", "AWS::IoT::SecurityProfile", "AWS::IoT::RoleAlias", "AWS::IoT::Dimension", "AWS::IoTAnalytics::Datastore", "AWS::Lightsail::Bucket", "AWS::Lightsail::StaticIp", "AWS::MediaPackage::PackagingGroup", "AWS::Route53RecoveryReadiness::RecoveryGroup", "AWS::ResilienceHub::ResiliencyPolicy", "AWS::Transfer::Workflow", "AWS::EKS::IdentityProviderConfig", "AWS::EKS::Addon", "AWS::Glue::MLTransform", "AWS::IoT::Policy", "AWS::IoT::MitigationAction", "AWS::IoTTwinMaker::Workspace", "AWS::IoTTwinMaker::Entity", "AWS::IoTAnalytics::Dataset", "AWS::IoTAnalytics::Pipeline", "AWS::IoTAnalytics::Channel", "AWS::IoTSiteWise::Dashboard", "AWS::IoTSiteWise::Project", "AWS::IoTSiteWise::Portal", "AWS::IoTSiteWise::AssetModel", "AWS::IVS::Channel", "AWS::IVS::RecordingConfiguration", "AWS::IVS::PlaybackKeyPair", "AWS::KinesisAnalyticsV2::Application", "AWS::RDS::GlobalCluster", "AWS::S3::MultiRegionAccessPoint", "AWS::DeviceFarm::TestGridProject", "AWS::Budgets::BudgetsAction", "AWS::Lex::Bot", "AWS::CodeGuruReviewer::RepositoryAssociation", "AWS::IoT::CustomMetric", "AWS::Route53Resolver::FirewallDomainList", "AWS::RoboMaker::RobotApplicationVersion", "AWS::EC2::TrafficMirrorSession", "AWS::IoTSiteWise::Gateway", "AWS::Lex::BotAlias", "AWS::LookoutMetrics::Alert", "AWS::IoT::AccountAuditConfiguration", "AWS::EC2::TrafficMirrorTarget", "AWS::S3::StorageLens", "AWS::IoT::ScheduledAudit", "AWS::Events::Connection", "AWS::EventSchemas::Schema", "AWS::MediaPackage::PackagingConfiguration", "AWS::KinesisVideo::SignalingChannel", "AWS::AppStream::DirectoryConfig", "AWS::LookoutVision::Project", "AWS::Route53RecoveryControl::Cluster", "AWS::Route53RecoveryControl::SafetyRule", "AWS::Route53RecoveryControl::ControlPanel", "AWS::Route53RecoveryControl::RoutingControl", "AWS::Route53RecoveryReadiness::ResourceSet", "AWS::RoboMaker::SimulationApplication", "AWS::RoboMaker::RobotApplication", "AWS::HealthLake::FHIRDatastore", "AWS::Pinpoint::Segment", "AWS::Pinpoint::ApplicationSettings", "AWS::Events::Rule", "AWS::EC2::DHCPOptions", "AWS::EC2::NetworkInsightsPath", "AWS::EC2::TrafficMirrorFilter", "AWS::EC2::IPAM", "AWS::IoTTwinMaker::Scene", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::CustomerProfiles::Domain", "AWS::AutoScaling::WarmPool", "AWS::Connect::PhoneNumber", "AWS::AppConfig::DeploymentStrategy", "AWS::AppFlow::Flow", "AWS::AuditManager::Assessment", "AWS::CloudWatch::MetricStream", "AWS::DeviceFarm::InstanceProfile", "AWS::DeviceFarm::Project", "AWS::EC2::EC2Fleet", "AWS::EC2::SubnetRouteTableAssociation", "AWS::ECR::PullThroughCacheRule", "AWS::GroundStation::Config", "AWS::ImageBuilder::ImagePipeline", "AWS::IoT::FleetMetric", "AWS::IoTWireless::ServiceProfile", "AWS::NetworkManager::Device", "AWS::NetworkManager::GlobalNetwork", "AWS::NetworkManager::Link", "AWS::NetworkManager::Site", "AWS::Panorama::Package", "AWS::Pinpoint::App", "AWS::Redshift::ScheduledAction", "AWS::Route53Resolver::FirewallRuleGroupAssociation", "AWS::SageMaker::AppImageConfig", "AWS::SageMaker::Image", "AWS::ECS::TaskSet", "AWS::Cassandra::Keyspace", "AWS::Signer::SigningProfile", "AWS::Amplify::App", "AWS::AppMesh::VirtualNode", "AWS::AppMesh::VirtualService", "AWS::AppRunner::VpcConnector", "AWS::AppStream::Application", "AWS::CodeArtifact::Repository", "AWS::EC2::PrefixList", "AWS::EC2::SpotFleet", "AWS::Evidently::Project", "AWS::Forecast::Dataset", "AWS::IAM::SAMLProvider", "AWS::IAM::ServerCertificate", "AWS::Pinpoint::Campaign", "AWS::Pinpoint::InAppTemplate", "AWS::SageMaker::Domain", "AWS::Transfer::Agreement", "AWS::Transfer::Connector", "AWS::KinesisFirehose::DeliveryStream", "AWS::Amplify::Branch", "AWS::AppIntegrations::EventIntegration", "AWS::AppMesh::Route", "AWS::Athena::PreparedStatement", "AWS::EC2::IPAMScope", "AWS::Evidently::Launch", "AWS::Forecast::DatasetGroup", "AWS::GreengrassV2::ComponentVersion", "AWS::GroundStation::MissionProfile", "AWS::MediaConnect::FlowEntitlement", "AWS::MediaConnect::FlowVpcInterface", "AWS::MediaTailor::PlaybackConfiguration", "AWS::MSK::Configuration", "AWS::Personalize::Dataset", "AWS::Personalize::Schema", "AWS::Personalize::Solution", "AWS::Pinpoint::EmailTemplate", "AWS::Pinpoint::EventStream", "AWS::ResilienceHub::App", "AWS::ACMPCA::CertificateAuthority", "AWS::AppConfig::HostedConfigurationVersion", "AWS::AppMesh::VirtualGateway", "AWS::AppMesh::VirtualRouter", "AWS::AppRunner::Service", "AWS::CustomerProfiles::ObjectType", "AWS::DMS::Endpoint", "AWS::EC2::CapacityReservation", "AWS::EC2::ClientVpnEndpoint", "AWS::Kendra::Index", "AWS::KinesisVideo::Stream", "AWS::Logs::Destination", "AWS::Pinpoint::EmailChannel", "AWS::S3::AccessPoint", "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::NetworkManager::LinkAssociation", "AWS::IoTWireless::MulticastGroup", "AWS::Personalize::DatasetGroup", "AWS::IoTTwinMaker::ComponentType", "AWS::CodeBuild::ReportGroup", "AWS::SageMaker::FeatureGroup", "AWS::MSK::BatchScramSecret", "AWS::AppStream::Stack", "AWS::IoT::JobTemplate", "AWS::IoTWireless::FuotaTask", "AWS::IoT::ProvisioningTemplate", "AWS::InspectorV2::Filter", "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", "AWS::ServiceDiscovery::Instance", "AWS::Transfer::Certificate", "AWS::MediaConnect::FlowSource", "AWS::APS::RuleGroupsNamespace", "AWS::CodeGuruProfiler::ProfilingGroup", "AWS::Route53Resolver::ResolverQueryLoggingConfig", "AWS::Batch::SchedulingPolicy", "AWS::ACMPCA::CertificateAuthorityActivation", "AWS::AppMesh::GatewayRoute", "AWS::AppMesh::Mesh", "AWS::Connect::Instance", "AWS::Connect::QuickConnect", "AWS::EC2::CarrierGateway", "AWS::EC2::IPAMPool", "AWS::EC2::TransitGatewayConnect", "AWS::EC2::TransitGatewayMulticastDomain", "AWS::ECS::CapacityProvider", "AWS::IAM::InstanceProfile", "AWS::IoT::CACertificate", "AWS::IoTTwinMaker::SyncJob", "AWS::KafkaConnect::Connector", "AWS::Lambda::CodeSigningConfig", "AWS::NetworkManager::ConnectPeer", "AWS::ResourceExplorer2::Index" + # resp.configuration_recorders[0].recording_mode.recording_mode_overrides[0].recording_frequency #=> String, one of "CONTINUOUS", "DAILY" # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/DescribeConfigurationRecorders AWS API Documentation # @@ -2896,6 +2906,8 @@ def get_aggregate_discovered_resource_counts(params = {}, options = {}) # resp.configuration_item.configuration #=> String # resp.configuration_item.supplementary_configuration #=> Hash # resp.configuration_item.supplementary_configuration["SupplementaryConfigurationName"] #=> String + # resp.configuration_item.recording_frequency #=> String, one of "CONTINUOUS", "DAILY" + # resp.configuration_item.configuration_item_delivery_time #=> Time # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/GetAggregateResourceConfig AWS API Documentation # @@ -3599,6 +3611,8 @@ def get_organization_custom_rule_policy(params = {}, options = {}) # resp.configuration_items[0].configuration #=> String # resp.configuration_items[0].supplementary_configuration #=> Hash # resp.configuration_items[0].supplementary_configuration["SupplementaryConfigurationName"] #=> String + # resp.configuration_items[0].recording_frequency #=> String, one of "CONTINUOUS", "DAILY" + # resp.configuration_items[0].configuration_item_delivery_time #=> Time # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/GetResourceConfigHistory AWS API Documentation @@ -4412,6 +4426,16 @@ def put_configuration_aggregator(params = {}, options = {}) # use_only: "ALL_SUPPORTED_RESOURCE_TYPES", # accepts ALL_SUPPORTED_RESOURCE_TYPES, INCLUSION_BY_RESOURCE_TYPES, EXCLUSION_BY_RESOURCE_TYPES # }, # }, + # recording_mode: { + # recording_frequency: "CONTINUOUS", # required, accepts CONTINUOUS, DAILY + # recording_mode_overrides: [ + # { + # description: "Description", + # resource_types: ["AWS::EC2::CustomerGateway"], # required, accepts AWS::EC2::CustomerGateway, AWS::EC2::EIP, AWS::EC2::Host, AWS::EC2::Instance, AWS::EC2::InternetGateway, AWS::EC2::NetworkAcl, AWS::EC2::NetworkInterface, AWS::EC2::RouteTable, AWS::EC2::SecurityGroup, AWS::EC2::Subnet, AWS::CloudTrail::Trail, AWS::EC2::Volume, AWS::EC2::VPC, AWS::EC2::VPNConnection, AWS::EC2::VPNGateway, AWS::EC2::RegisteredHAInstance, AWS::EC2::NatGateway, AWS::EC2::EgressOnlyInternetGateway, AWS::EC2::VPCEndpoint, AWS::EC2::VPCEndpointService, AWS::EC2::FlowLog, AWS::EC2::VPCPeeringConnection, AWS::Elasticsearch::Domain, AWS::IAM::Group, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::ACM::Certificate, AWS::RDS::DBInstance, AWS::RDS::DBSubnetGroup, AWS::RDS::DBSecurityGroup, AWS::RDS::DBSnapshot, AWS::RDS::DBCluster, AWS::RDS::DBClusterSnapshot, AWS::RDS::EventSubscription, AWS::S3::Bucket, AWS::S3::AccountPublicAccessBlock, AWS::Redshift::Cluster, AWS::Redshift::ClusterSnapshot, AWS::Redshift::ClusterParameterGroup, AWS::Redshift::ClusterSecurityGroup, AWS::Redshift::ClusterSubnetGroup, AWS::Redshift::EventSubscription, AWS::SSM::ManagedInstanceInventory, AWS::CloudWatch::Alarm, AWS::CloudFormation::Stack, AWS::ElasticLoadBalancing::LoadBalancer, AWS::AutoScaling::AutoScalingGroup, AWS::AutoScaling::LaunchConfiguration, AWS::AutoScaling::ScalingPolicy, AWS::AutoScaling::ScheduledAction, AWS::DynamoDB::Table, AWS::CodeBuild::Project, AWS::WAF::RateBasedRule, AWS::WAF::Rule, AWS::WAF::RuleGroup, AWS::WAF::WebACL, AWS::WAFRegional::RateBasedRule, AWS::WAFRegional::Rule, AWS::WAFRegional::RuleGroup, AWS::WAFRegional::WebACL, AWS::CloudFront::Distribution, AWS::CloudFront::StreamingDistribution, AWS::Lambda::Function, AWS::NetworkFirewall::Firewall, AWS::NetworkFirewall::FirewallPolicy, AWS::NetworkFirewall::RuleGroup, AWS::ElasticBeanstalk::Application, AWS::ElasticBeanstalk::ApplicationVersion, AWS::ElasticBeanstalk::Environment, AWS::WAFv2::WebACL, AWS::WAFv2::RuleGroup, AWS::WAFv2::IPSet, AWS::WAFv2::RegexPatternSet, AWS::WAFv2::ManagedRuleSet, AWS::XRay::EncryptionConfig, AWS::SSM::AssociationCompliance, AWS::SSM::PatchCompliance, AWS::Shield::Protection, AWS::ShieldRegional::Protection, AWS::Config::ConformancePackCompliance, AWS::Config::ResourceCompliance, AWS::ApiGateway::Stage, AWS::ApiGateway::RestApi, AWS::ApiGatewayV2::Stage, AWS::ApiGatewayV2::Api, AWS::CodePipeline::Pipeline, AWS::ServiceCatalog::CloudFormationProvisionedProduct, AWS::ServiceCatalog::CloudFormationProduct, AWS::ServiceCatalog::Portfolio, AWS::SQS::Queue, AWS::KMS::Key, AWS::QLDB::Ledger, AWS::SecretsManager::Secret, AWS::SNS::Topic, AWS::SSM::FileData, AWS::Backup::BackupPlan, AWS::Backup::BackupSelection, AWS::Backup::BackupVault, AWS::Backup::RecoveryPoint, AWS::ECR::Repository, AWS::ECS::Cluster, AWS::ECS::Service, AWS::ECS::TaskDefinition, AWS::EFS::AccessPoint, AWS::EFS::FileSystem, AWS::EKS::Cluster, AWS::OpenSearch::Domain, AWS::EC2::TransitGateway, AWS::Kinesis::Stream, AWS::Kinesis::StreamConsumer, AWS::CodeDeploy::Application, AWS::CodeDeploy::DeploymentConfig, AWS::CodeDeploy::DeploymentGroup, AWS::EC2::LaunchTemplate, AWS::ECR::PublicRepository, AWS::GuardDuty::Detector, AWS::EMR::SecurityConfiguration, AWS::SageMaker::CodeRepository, AWS::Route53Resolver::ResolverEndpoint, AWS::Route53Resolver::ResolverRule, AWS::Route53Resolver::ResolverRuleAssociation, AWS::DMS::ReplicationSubnetGroup, AWS::DMS::EventSubscription, AWS::MSK::Cluster, AWS::StepFunctions::Activity, AWS::WorkSpaces::Workspace, AWS::WorkSpaces::ConnectionAlias, AWS::SageMaker::Model, AWS::ElasticLoadBalancingV2::Listener, AWS::StepFunctions::StateMachine, AWS::Batch::JobQueue, AWS::Batch::ComputeEnvironment, AWS::AccessAnalyzer::Analyzer, AWS::Athena::WorkGroup, AWS::Athena::DataCatalog, AWS::Detective::Graph, AWS::GlobalAccelerator::Accelerator, AWS::GlobalAccelerator::EndpointGroup, AWS::GlobalAccelerator::Listener, AWS::EC2::TransitGatewayAttachment, AWS::EC2::TransitGatewayRouteTable, AWS::DMS::Certificate, AWS::AppConfig::Application, AWS::AppSync::GraphQLApi, AWS::DataSync::LocationSMB, AWS::DataSync::LocationFSxLustre, AWS::DataSync::LocationS3, AWS::DataSync::LocationEFS, AWS::DataSync::Task, AWS::DataSync::LocationNFS, AWS::EC2::NetworkInsightsAccessScopeAnalysis, AWS::EKS::FargateProfile, AWS::Glue::Job, AWS::GuardDuty::ThreatIntelSet, AWS::GuardDuty::IPSet, AWS::SageMaker::Workteam, AWS::SageMaker::NotebookInstanceLifecycleConfig, AWS::ServiceDiscovery::Service, AWS::ServiceDiscovery::PublicDnsNamespace, AWS::SES::ContactList, AWS::SES::ConfigurationSet, AWS::Route53::HostedZone, AWS::IoTEvents::Input, AWS::IoTEvents::DetectorModel, AWS::IoTEvents::AlarmModel, AWS::ServiceDiscovery::HttpNamespace, AWS::Events::EventBus, AWS::ImageBuilder::ContainerRecipe, AWS::ImageBuilder::DistributionConfiguration, AWS::ImageBuilder::InfrastructureConfiguration, AWS::DataSync::LocationObjectStorage, AWS::DataSync::LocationHDFS, AWS::Glue::Classifier, AWS::Route53RecoveryReadiness::Cell, AWS::Route53RecoveryReadiness::ReadinessCheck, AWS::ECR::RegistryPolicy, AWS::Backup::ReportPlan, AWS::Lightsail::Certificate, AWS::RUM::AppMonitor, AWS::Events::Endpoint, AWS::SES::ReceiptRuleSet, AWS::Events::Archive, AWS::Events::ApiDestination, AWS::Lightsail::Disk, AWS::FIS::ExperimentTemplate, AWS::DataSync::LocationFSxWindows, AWS::SES::ReceiptFilter, AWS::GuardDuty::Filter, AWS::SES::Template, AWS::AmazonMQ::Broker, AWS::AppConfig::Environment, AWS::AppConfig::ConfigurationProfile, AWS::Cloud9::EnvironmentEC2, AWS::EventSchemas::Registry, AWS::EventSchemas::RegistryPolicy, AWS::EventSchemas::Discoverer, AWS::FraudDetector::Label, AWS::FraudDetector::EntityType, AWS::FraudDetector::Variable, AWS::FraudDetector::Outcome, AWS::IoT::Authorizer, AWS::IoT::SecurityProfile, AWS::IoT::RoleAlias, AWS::IoT::Dimension, AWS::IoTAnalytics::Datastore, AWS::Lightsail::Bucket, AWS::Lightsail::StaticIp, AWS::MediaPackage::PackagingGroup, AWS::Route53RecoveryReadiness::RecoveryGroup, AWS::ResilienceHub::ResiliencyPolicy, AWS::Transfer::Workflow, AWS::EKS::IdentityProviderConfig, AWS::EKS::Addon, AWS::Glue::MLTransform, AWS::IoT::Policy, AWS::IoT::MitigationAction, AWS::IoTTwinMaker::Workspace, AWS::IoTTwinMaker::Entity, AWS::IoTAnalytics::Dataset, AWS::IoTAnalytics::Pipeline, AWS::IoTAnalytics::Channel, AWS::IoTSiteWise::Dashboard, AWS::IoTSiteWise::Project, AWS::IoTSiteWise::Portal, AWS::IoTSiteWise::AssetModel, AWS::IVS::Channel, AWS::IVS::RecordingConfiguration, AWS::IVS::PlaybackKeyPair, AWS::KinesisAnalyticsV2::Application, AWS::RDS::GlobalCluster, AWS::S3::MultiRegionAccessPoint, AWS::DeviceFarm::TestGridProject, AWS::Budgets::BudgetsAction, AWS::Lex::Bot, AWS::CodeGuruReviewer::RepositoryAssociation, AWS::IoT::CustomMetric, AWS::Route53Resolver::FirewallDomainList, AWS::RoboMaker::RobotApplicationVersion, AWS::EC2::TrafficMirrorSession, AWS::IoTSiteWise::Gateway, AWS::Lex::BotAlias, AWS::LookoutMetrics::Alert, AWS::IoT::AccountAuditConfiguration, AWS::EC2::TrafficMirrorTarget, AWS::S3::StorageLens, AWS::IoT::ScheduledAudit, AWS::Events::Connection, AWS::EventSchemas::Schema, AWS::MediaPackage::PackagingConfiguration, AWS::KinesisVideo::SignalingChannel, AWS::AppStream::DirectoryConfig, AWS::LookoutVision::Project, AWS::Route53RecoveryControl::Cluster, AWS::Route53RecoveryControl::SafetyRule, AWS::Route53RecoveryControl::ControlPanel, AWS::Route53RecoveryControl::RoutingControl, AWS::Route53RecoveryReadiness::ResourceSet, AWS::RoboMaker::SimulationApplication, AWS::RoboMaker::RobotApplication, AWS::HealthLake::FHIRDatastore, AWS::Pinpoint::Segment, AWS::Pinpoint::ApplicationSettings, AWS::Events::Rule, AWS::EC2::DHCPOptions, AWS::EC2::NetworkInsightsPath, AWS::EC2::TrafficMirrorFilter, AWS::EC2::IPAM, AWS::IoTTwinMaker::Scene, AWS::NetworkManager::TransitGatewayRegistration, AWS::CustomerProfiles::Domain, AWS::AutoScaling::WarmPool, AWS::Connect::PhoneNumber, AWS::AppConfig::DeploymentStrategy, AWS::AppFlow::Flow, AWS::AuditManager::Assessment, AWS::CloudWatch::MetricStream, AWS::DeviceFarm::InstanceProfile, AWS::DeviceFarm::Project, AWS::EC2::EC2Fleet, AWS::EC2::SubnetRouteTableAssociation, AWS::ECR::PullThroughCacheRule, AWS::GroundStation::Config, AWS::ImageBuilder::ImagePipeline, AWS::IoT::FleetMetric, AWS::IoTWireless::ServiceProfile, AWS::NetworkManager::Device, AWS::NetworkManager::GlobalNetwork, AWS::NetworkManager::Link, AWS::NetworkManager::Site, AWS::Panorama::Package, AWS::Pinpoint::App, AWS::Redshift::ScheduledAction, AWS::Route53Resolver::FirewallRuleGroupAssociation, AWS::SageMaker::AppImageConfig, AWS::SageMaker::Image, AWS::ECS::TaskSet, AWS::Cassandra::Keyspace, AWS::Signer::SigningProfile, AWS::Amplify::App, AWS::AppMesh::VirtualNode, AWS::AppMesh::VirtualService, AWS::AppRunner::VpcConnector, AWS::AppStream::Application, AWS::CodeArtifact::Repository, AWS::EC2::PrefixList, AWS::EC2::SpotFleet, AWS::Evidently::Project, AWS::Forecast::Dataset, AWS::IAM::SAMLProvider, AWS::IAM::ServerCertificate, AWS::Pinpoint::Campaign, AWS::Pinpoint::InAppTemplate, AWS::SageMaker::Domain, AWS::Transfer::Agreement, AWS::Transfer::Connector, AWS::KinesisFirehose::DeliveryStream, AWS::Amplify::Branch, AWS::AppIntegrations::EventIntegration, AWS::AppMesh::Route, AWS::Athena::PreparedStatement, AWS::EC2::IPAMScope, AWS::Evidently::Launch, AWS::Forecast::DatasetGroup, AWS::GreengrassV2::ComponentVersion, AWS::GroundStation::MissionProfile, AWS::MediaConnect::FlowEntitlement, AWS::MediaConnect::FlowVpcInterface, AWS::MediaTailor::PlaybackConfiguration, AWS::MSK::Configuration, AWS::Personalize::Dataset, AWS::Personalize::Schema, AWS::Personalize::Solution, AWS::Pinpoint::EmailTemplate, AWS::Pinpoint::EventStream, AWS::ResilienceHub::App, AWS::ACMPCA::CertificateAuthority, AWS::AppConfig::HostedConfigurationVersion, AWS::AppMesh::VirtualGateway, AWS::AppMesh::VirtualRouter, AWS::AppRunner::Service, AWS::CustomerProfiles::ObjectType, AWS::DMS::Endpoint, AWS::EC2::CapacityReservation, AWS::EC2::ClientVpnEndpoint, AWS::Kendra::Index, AWS::KinesisVideo::Stream, AWS::Logs::Destination, AWS::Pinpoint::EmailChannel, AWS::S3::AccessPoint, AWS::NetworkManager::CustomerGatewayAssociation, AWS::NetworkManager::LinkAssociation, AWS::IoTWireless::MulticastGroup, AWS::Personalize::DatasetGroup, AWS::IoTTwinMaker::ComponentType, AWS::CodeBuild::ReportGroup, AWS::SageMaker::FeatureGroup, AWS::MSK::BatchScramSecret, AWS::AppStream::Stack, AWS::IoT::JobTemplate, AWS::IoTWireless::FuotaTask, AWS::IoT::ProvisioningTemplate, AWS::InspectorV2::Filter, AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation, AWS::ServiceDiscovery::Instance, AWS::Transfer::Certificate, AWS::MediaConnect::FlowSource, AWS::APS::RuleGroupsNamespace, AWS::CodeGuruProfiler::ProfilingGroup, AWS::Route53Resolver::ResolverQueryLoggingConfig, AWS::Batch::SchedulingPolicy, AWS::ACMPCA::CertificateAuthorityActivation, AWS::AppMesh::GatewayRoute, AWS::AppMesh::Mesh, AWS::Connect::Instance, AWS::Connect::QuickConnect, AWS::EC2::CarrierGateway, AWS::EC2::IPAMPool, AWS::EC2::TransitGatewayConnect, AWS::EC2::TransitGatewayMulticastDomain, AWS::ECS::CapacityProvider, AWS::IAM::InstanceProfile, AWS::IoT::CACertificate, AWS::IoTTwinMaker::SyncJob, AWS::KafkaConnect::Connector, AWS::Lambda::CodeSigningConfig, AWS::NetworkManager::ConnectPeer, AWS::ResourceExplorer2::Index + # recording_frequency: "CONTINUOUS", # required, accepts CONTINUOUS, DAILY + # }, + # ], + # }, # }, # }) # @@ -5798,7 +5822,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-configservice' - context[:gem_version] = '1.101.0' + context[:gem_version] = '1.102.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client_api.rb b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client_api.rb index e99598753eb..5acd2afb833 100644 --- a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client_api.rb +++ b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/client_api.rb @@ -94,6 +94,7 @@ module ClientApi ConfigurationAggregatorNameList = Shapes::ListShape.new(name: 'ConfigurationAggregatorNameList') ConfigurationItem = Shapes::StructureShape.new(name: 'ConfigurationItem') ConfigurationItemCaptureTime = Shapes::TimestampShape.new(name: 'ConfigurationItemCaptureTime') + ConfigurationItemDeliveryTime = Shapes::TimestampShape.new(name: 'ConfigurationItemDeliveryTime') ConfigurationItemList = Shapes::ListShape.new(name: 'ConfigurationItemList') ConfigurationItemMD5Hash = Shapes::StringShape.new(name: 'ConfigurationItemMD5Hash') ConfigurationItemStatus = Shapes::StringShape.new(name: 'ConfigurationItemStatus') @@ -219,6 +220,7 @@ module ClientApi DescribeRemediationExecutionStatusResponse = Shapes::StructureShape.new(name: 'DescribeRemediationExecutionStatusResponse') DescribeRetentionConfigurationsRequest = Shapes::StructureShape.new(name: 'DescribeRetentionConfigurationsRequest') DescribeRetentionConfigurationsResponse = Shapes::StructureShape.new(name: 'DescribeRetentionConfigurationsResponse') + Description = Shapes::StringShape.new(name: 'Description') DiscoveredResourceIdentifierList = Shapes::ListShape.new(name: 'DiscoveredResourceIdentifierList') EarlierTime = Shapes::TimestampShape.new(name: 'EarlierTime') EmptiableStringWithCharLimit256 = Shapes::StringShape.new(name: 'EmptiableStringWithCharLimit256') @@ -435,7 +437,12 @@ module ClientApi QueryName = Shapes::StringShape.new(name: 'QueryName') RecorderName = Shapes::StringShape.new(name: 'RecorderName') RecorderStatus = Shapes::StringShape.new(name: 'RecorderStatus') + RecordingFrequency = Shapes::StringShape.new(name: 'RecordingFrequency') RecordingGroup = Shapes::StructureShape.new(name: 'RecordingGroup') + RecordingMode = Shapes::StructureShape.new(name: 'RecordingMode') + RecordingModeOverride = Shapes::StructureShape.new(name: 'RecordingModeOverride') + RecordingModeOverrides = Shapes::ListShape.new(name: 'RecordingModeOverrides') + RecordingModeResourceTypesList = Shapes::ListShape.new(name: 'RecordingModeResourceTypesList') RecordingStrategy = Shapes::StructureShape.new(name: 'RecordingStrategy') RecordingStrategyType = Shapes::StringShape.new(name: 'RecordingStrategyType') ReevaluateConfigRuleNames = Shapes::ListShape.new(name: 'ReevaluateConfigRuleNames') @@ -672,6 +679,8 @@ module ClientApi BaseConfigurationItem.add_member(:resource_creation_time, Shapes::ShapeRef.new(shape: ResourceCreationTime, location_name: "resourceCreationTime")) BaseConfigurationItem.add_member(:configuration, Shapes::ShapeRef.new(shape: Configuration, location_name: "configuration")) BaseConfigurationItem.add_member(:supplementary_configuration, Shapes::ShapeRef.new(shape: SupplementaryConfiguration, location_name: "supplementaryConfiguration")) + BaseConfigurationItem.add_member(:recording_frequency, Shapes::ShapeRef.new(shape: RecordingFrequency, location_name: "recordingFrequency")) + BaseConfigurationItem.add_member(:configuration_item_delivery_time, Shapes::ShapeRef.new(shape: ConfigurationItemDeliveryTime, location_name: "configurationItemDeliveryTime")) BaseConfigurationItem.struct_class = Types::BaseConfigurationItem BaseConfigurationItems.member = Shapes::ShapeRef.new(shape: BaseConfigurationItem) @@ -821,6 +830,8 @@ module ClientApi ConfigurationItem.add_member(:relationships, Shapes::ShapeRef.new(shape: RelationshipList, location_name: "relationships")) ConfigurationItem.add_member(:configuration, Shapes::ShapeRef.new(shape: Configuration, location_name: "configuration")) ConfigurationItem.add_member(:supplementary_configuration, Shapes::ShapeRef.new(shape: SupplementaryConfiguration, location_name: "supplementaryConfiguration")) + ConfigurationItem.add_member(:recording_frequency, Shapes::ShapeRef.new(shape: RecordingFrequency, location_name: "recordingFrequency")) + ConfigurationItem.add_member(:configuration_item_delivery_time, Shapes::ShapeRef.new(shape: ConfigurationItemDeliveryTime, location_name: "configurationItemDeliveryTime")) ConfigurationItem.struct_class = Types::ConfigurationItem ConfigurationItemList.member = Shapes::ShapeRef.new(shape: ConfigurationItem) @@ -828,6 +839,7 @@ module ClientApi ConfigurationRecorder.add_member(:name, Shapes::ShapeRef.new(shape: RecorderName, location_name: "name")) ConfigurationRecorder.add_member(:role_arn, Shapes::ShapeRef.new(shape: String, location_name: "roleARN")) ConfigurationRecorder.add_member(:recording_group, Shapes::ShapeRef.new(shape: RecordingGroup, location_name: "recordingGroup")) + ConfigurationRecorder.add_member(:recording_mode, Shapes::ShapeRef.new(shape: RecordingMode, location_name: "recordingMode")) ConfigurationRecorder.struct_class = Types::ConfigurationRecorder ConfigurationRecorderList.member = Shapes::ShapeRef.new(shape: ConfigurationRecorder) @@ -1915,6 +1927,19 @@ module ClientApi RecordingGroup.add_member(:recording_strategy, Shapes::ShapeRef.new(shape: RecordingStrategy, location_name: "recordingStrategy")) RecordingGroup.struct_class = Types::RecordingGroup + RecordingMode.add_member(:recording_frequency, Shapes::ShapeRef.new(shape: RecordingFrequency, required: true, location_name: "recordingFrequency")) + RecordingMode.add_member(:recording_mode_overrides, Shapes::ShapeRef.new(shape: RecordingModeOverrides, location_name: "recordingModeOverrides")) + RecordingMode.struct_class = Types::RecordingMode + + RecordingModeOverride.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "description")) + RecordingModeOverride.add_member(:resource_types, Shapes::ShapeRef.new(shape: RecordingModeResourceTypesList, required: true, location_name: "resourceTypes")) + RecordingModeOverride.add_member(:recording_frequency, Shapes::ShapeRef.new(shape: RecordingFrequency, required: true, location_name: "recordingFrequency")) + RecordingModeOverride.struct_class = Types::RecordingModeOverride + + RecordingModeOverrides.member = Shapes::ShapeRef.new(shape: RecordingModeOverride) + + RecordingModeResourceTypesList.member = Shapes::ShapeRef.new(shape: ResourceType) + RecordingStrategy.add_member(:use_only, Shapes::ShapeRef.new(shape: RecordingStrategyType, location_name: "useOnly")) RecordingStrategy.struct_class = Types::RecordingStrategy @@ -3220,6 +3245,7 @@ module ClientApi o.input = Shapes::ShapeRef.new(shape: PutConfigurationRecorderRequest) o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) o.errors << Shapes::ShapeRef.new(shape: MaxNumberOfConfigurationRecordersExceededException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) o.errors << Shapes::ShapeRef.new(shape: InvalidConfigurationRecorderNameException) o.errors << Shapes::ShapeRef.new(shape: InvalidRoleException) o.errors << Shapes::ShapeRef.new(shape: InvalidRecordingGroupException) diff --git a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/types.rb b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/types.rb index dc4c46bda49..5cec1672347 100644 --- a/gems/aws-sdk-configservice/lib/aws-sdk-configservice/types.rb +++ b/gems/aws-sdk-configservice/lib/aws-sdk-configservice/types.rb @@ -436,7 +436,7 @@ class AggregationAuthorization < Struct.new( include Aws::Structure end - # The detailed configuration of a specified resource. + # The detailed configurations of a specified resource. # # @!attribute [rw] version # The version number of the resource configuration. @@ -448,25 +448,26 @@ class AggregationAuthorization < Struct.new( # @return [String] # # @!attribute [rw] configuration_item_capture_time - # The time when the configuration recording was initiated. + # The time when the recording of configuration changes was initiated + # for the resource. # @return [Time] # # @!attribute [rw] configuration_item_status - # The configuration item status. The valid values are: + # The configuration item status. Valid values include: # - # * OK – The resource configuration has been updated + # * OK – The resource configuration has been updated. # - # * ResourceDiscovered – The resource was newly discovered + # * ResourceDiscovered – The resource was newly discovered. # - # * ResourceNotRecorded – The resource was discovered but its - # configuration was not recorded since the recorder excludes the - # recording of resources of this type + # * ResourceNotRecorded – The resource was discovered, but its + # configuration was not recorded since the recorder doesn't record + # resources of this type. # # * ResourceDeleted – The resource was deleted # - # * ResourceDeletedNotRecorded – The resource was deleted but its - # configuration was not recorded since the recorder excludes the - # recording of resources of this type + # * ResourceDeletedNotRecorded – The resource was deleted, but its + # configuration was not recorded since the recorder doesn't record + # resources of this type. # @return [String] # # @!attribute [rw] configuration_state_id @@ -512,6 +513,15 @@ class AggregationAuthorization < Struct.new( # parameter. # @return [Hash] # + # @!attribute [rw] recording_frequency + # The recording frequency that Config uses to record configuration + # changes for the resource. + # @return [String] + # + # @!attribute [rw] configuration_item_delivery_time + # The time when configuration changes for the resource were delivered. + # @return [Time] + # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/BaseConfigurationItem AWS API Documentation # class BaseConfigurationItem < Struct.new( @@ -528,7 +538,9 @@ class BaseConfigurationItem < Struct.new( :availability_zone, :resource_creation_time, :configuration, - :supplementary_configuration) + :supplementary_configuration, + :recording_frequency, + :configuration_item_delivery_time) SENSITIVE = [] include Aws::Structure end @@ -1263,25 +1275,26 @@ class ConfigurationAggregator < Struct.new( # @return [String] # # @!attribute [rw] configuration_item_capture_time - # The time when the configuration recording was initiated. + # The time when the recording of configuration changes was initiated + # for the resource. # @return [Time] # # @!attribute [rw] configuration_item_status - # The configuration item status. The valid values are: + # The configuration item status. Valid values include: # # * OK – The resource configuration has been updated # # * ResourceDiscovered – The resource was newly discovered # # * ResourceNotRecorded – The resource was discovered but its - # configuration was not recorded since the recorder excludes the - # recording of resources of this type + # configuration was not recorded since the recorder doesn't record + # resources of this type # # * ResourceDeleted – The resource was deleted # # * ResourceDeletedNotRecorded – The resource was deleted but its - # configuration was not recorded since the recorder excludes the - # recording of resources of this type + # configuration was not recorded since the recorder doesn't record + # resources of this type # @return [String] # # @!attribute [rw] configuration_state_id @@ -1360,6 +1373,15 @@ class ConfigurationAggregator < Struct.new( # parameter. # @return [Hash] # + # @!attribute [rw] recording_frequency + # The recording frequency that Config uses to record configuration + # changes for the resource. + # @return [String] + # + # @!attribute [rw] configuration_item_delivery_time + # The time when configuration changes for the resource were delivered. + # @return [Time] + # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/ConfigurationItem AWS API Documentation # class ConfigurationItem < Struct.new( @@ -1380,14 +1402,16 @@ class ConfigurationItem < Struct.new( :related_events, :relationships, :configuration, - :supplementary_configuration) + :supplementary_configuration, + :recording_frequency, + :configuration_item_delivery_time) SENSITIVE = [] include Aws::Structure end - # Records configuration changes to specified resource types. For more - # information about the configuration recorder, see [ **Managing the - # Configuration Recorder** ][1] in the *Config Developer Guide*. + # Records configuration changes to your specified resource types. For + # more information about the configuration recorder, see [ **Managing + # the Configuration Recorder** ][1] in the *Config Developer Guide*. # # # @@ -1397,10 +1421,12 @@ class ConfigurationItem < Struct.new( # The name of the configuration recorder. Config automatically assigns # the name of "default" when creating the configuration recorder. # - # You cannot change the name of the configuration recorder after it + # You cannot change the name of the configuration recorder after it # has been created. To change the configuration recorder name, you # must delete it and create a new configuration recorder with a new # name. + # + # # @return [String] # # @!attribute [rw] role_arn @@ -1463,12 +1489,34 @@ class ConfigurationItem < Struct.new( # # @return [Types::RecordingGroup] # + # @!attribute [rw] recording_mode + # Specifies the default recording frequency that Config uses to record + # configuration changes. Config supports *Continuous recording* and + # *Daily recording*. + # + # * Continuous recording allows you to record configuration changes + # continuously whenever a change occurs. + # + # * Daily recording allows you record configuration data once every 24 + # hours, only if a change has occurred. + # + # Firewall Manager depends on continuous recording to monitor your + # resources. If you are using Firewall Manager, it is recommended that + # you set the recording frequency to Continuous. + # + # + # + # You can also override the recording frequency for specific resource + # types. + # @return [Types::RecordingMode] + # # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/ConfigurationRecorder AWS API Documentation # class ConfigurationRecorder < Struct.new( :name, :role_arn, - :recording_group) + :recording_group, + :recording_mode) SENSITIVE = [] include Aws::Structure end @@ -3622,7 +3670,7 @@ class EvaluationStatus < Struct.new( # resource types, Config starts recording resources of that type # automatically. # - # **How to use** + # How to use the exclusion recording strategy # # To use this option, you must set the `useOnly` field of # [RecordingStrategy][1] to `EXCLUSION_BY_RESOURCE_TYPES`. @@ -3631,14 +3679,18 @@ class EvaluationStatus < Struct.new( # resource types, except the resource types that you specify to exclude # from being recorded. # - # **Globally recorded resources** + # Global resource types and the exclusion recording strategy # # Unless specifically listed as exclusions, `AWS::RDS::GlobalCluster` # will be recorded automatically in all supported Config Regions were - # the configuration recorder is enabled. IAM users, groups, roles, and - # customer managed policies will be recorded automatically in all - # enabled Config Regions where Config was available before February - # 2022. This list does not include the following Regions: + # the configuration recorder is enabled. + # + # IAM users, groups, roles, and customer managed policies will be + # recorded in the Region where you set up the configuration recorder if + # that is a Region where Config was available before February 2022. You + # cannot be record the global IAM resouce types in Regions supported by + # Config after February 2022. This list where you cannot record the + # global IAM resource types includes the following Regions: # # * Asia Pacific (Hyderabad) # @@ -6963,9 +7015,9 @@ class QueryInfo < Struct.new( # Specifies which resource types Config records for configuration # changes. By default, Config records configuration changes for all # current and future supported resource types in the Amazon Web Services - # Region where you have enabled Config (excluding the globally recorded - # IAM resource types: IAM users, groups, roles, and customer managed - # policies). + # Region where you have enabled Config, excluding the global IAM + # resource types: IAM users, groups, roles, and customer managed + # policies. # # In the recording group, you specify whether you want to record all # supported current and future supported resource types or to include or @@ -6974,7 +7026,8 @@ class QueryInfo < Struct.new( # guide*. # # If you don't want Config to record all current and future supported - # resource types, use one of the following recording strategies: + # resource types (excluding the global IAM resource types), use one of + # the following recording strategies: # # 1. **Record all current and future resource types with exclusions** # (`EXCLUSION_BY_RESOURCE_TYPES`), or @@ -6982,7 +7035,12 @@ class QueryInfo < Struct.new( # 2. **Record specific resource types** # (`INCLUSION_BY_RESOURCE_TYPES`). # - # **Aurora global clusters are automatically globally recorded** + # If you use the recording strategy to **Record all current and future + # resource types** (`ALL_SUPPORTED_RESOURCE_TYPES`), you can use the + # flag `includeGlobalResourceTypes` to include the global IAM resource + # types in your recording. + # + # **Aurora global clusters are recorded in all enabled Regions** # # The `AWS::RDS::GlobalCluster` resource type will be recorded in all # supported Config Regions where the configuration recorder is enabled. @@ -6997,18 +7055,18 @@ class QueryInfo < Struct.new( # # @!attribute [rw] all_supported # Specifies whether Config records configuration changes for all - # supported regionally recorded resource types. + # supported resource types, excluding the global IAM resource types. # # If you set this field to `true`, when Config adds support for a new - # regionally recorded resource type, Config starts recording resources - # of that type automatically. + # resource type, Config starts recording resources of that type + # automatically. # # If you set this field to `true`, you cannot enumerate specific # resource types to record in the `resourceTypes` field of # [RecordingGroup][1], or to exclude in the `resourceTypes` field of # [ExclusionByResourceTypes][2]. # - # **Region Availability** + # **Region availability** # # Check [Resource Coverage by Region Availability][3] to see if a # resource type is supported in the Amazon Web Services Region where @@ -7024,12 +7082,13 @@ class QueryInfo < Struct.new( # @return [Boolean] # # @!attribute [rw] include_global_resource_types - # A legacy field which **only applies to the globally recorded IAM - # resource types**: IAM users, groups, roles, and customer managed - # policies. If you select this option, these resource types will be - # recorded in all enabled Config regions where Config was available - # before February 2022. This list does not include the following - # Regions: + # This option is a bundle which only applies to the global IAM + # resource types: IAM users, groups, roles, and customer managed + # policies. These global IAM resource types can only be recorded by + # Config in Regions where Config was available before February 2022. + # You cannot be record the global IAM resouce types in Regions + # supported by Config after February 2022. This list where you cannot + # record the global IAM resource types includes the following Regions: # # * Asia Pacific (Hyderabad) # @@ -7043,13 +7102,13 @@ class QueryInfo < Struct.new( # # * Middle East (UAE) # - # **Aurora global clusters are automatically globally recorded** + # **Aurora global clusters are recorded in all enabled Regions** # # The `AWS::RDS::GlobalCluster` resource type will be recorded in all # supported Config Regions where the configuration recorder is # enabled, even if `includeGlobalResourceTypes` is not set to `true`. - # `includeGlobalResourceTypes` is a legacy field which only applies to - # IAM users, groups, roles, and customer managed policies. + # The `includeGlobalResourceTypes` option is a bundle which only + # applies to IAM users, groups, roles, and customer managed policies. # # If you do not want to record `AWS::RDS::GlobalCluster` in all # enabled Regions, use one of the following recording strategies: @@ -7064,9 +7123,7 @@ class QueryInfo < Struct.new( # For more information, see [Selecting Which Resources are # Recorded][1] in the *Config developer guide*. # - # **Required and optional fields** - # - # Before you set this field to `true`, set the `allSupported` field of + # Before you set this field to `true`, set the `allSupported` field of # [RecordingGroup][2] to `true`. Optionally, you can set the `useOnly` # field of [RecordingStrategy][3] to `ALL_SUPPORTED_RESOURCE_TYPES`. # @@ -7074,17 +7131,17 @@ class QueryInfo < Struct.new( # # **Overriding fields** # - # If you set this field to `false` but list globally recorded IAM - # resource types in the `resourceTypes` field of [RecordingGroup][2], - # Config will still record configuration changes for those specified - # resource types *regardless* of if you set the - # `includeGlobalResourceTypes` field to false. + # If you set this field to `false` but list global IAM resource types + # in the `resourceTypes` field of [RecordingGroup][2], Config will + # still record configuration changes for those specified resource + # types *regardless* of if you set the `includeGlobalResourceTypes` + # field to false. # - # If you do not want to record configuration changes to the globally - # recorded IAM resource types (IAM users, groups, roles, and customer - # managed policies), make sure to not list them in the `resourceTypes` - # field in addition to setting the `includeGlobalResourceTypes` field - # to false. + # If you do not want to record configuration changes to the global IAM + # resource types (IAM users, groups, roles, and customer managed + # policies), make sure to not list them in the `resourceTypes` field + # in addition to setting the `includeGlobalResourceTypes` field to + # false. # # # @@ -7099,22 +7156,26 @@ class QueryInfo < Struct.new( # A comma-separated list that specifies which resource types Config # records. # - # Optionally, you can set the `useOnly` field of - # [RecordingStrategy][1] to `INCLUSION_BY_RESOURCE_TYPES`. + # For a list of valid `resourceTypes` values, see the **Resource Type + # Value** column in [Supported Amazon Web Services resource Types][1] + # in the *Config developer guide*. # - # To record all configuration changes, set the `allSupported` field of - # [RecordingGroup][2] to `true`, and either omit this field or don't + # **Required and optional fields** + # + # Optionally, you can set the `useOnly` field of + # [RecordingStrategy][2] to `INCLUSION_BY_RESOURCE_TYPES`. + # + # To record all configuration changes, set the `allSupported` field of + # [RecordingGroup][3] to `true`, and either omit this field or don't # specify any resource types in this field. If you set the # `allSupported` field to `false` and specify values for # `resourceTypes`, when Config adds support for a new type of # resource, it will not record resources of that type unless you # manually add that type to your recording group. # - # For a list of valid `resourceTypes` values, see the **Resource Type - # Value** column in [Supported Amazon Web Services resource Types][3] - # in the *Config developer guide*. + # # - # **Region Availability** + # **Region availability** # # Before specifying a resource type for Config to track, check # [Resource Coverage by Region Availability][4] to see if the resource @@ -7129,9 +7190,9 @@ class QueryInfo < Struct.new( # # # - # [1]: https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html - # [2]: https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html - # [3]: https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources + # [1]: https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources + # [2]: https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html + # [3]: https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingGroup.html # [4]: https://docs.aws.amazon.com/config/latest/developerguide/what-is-resource-config-coverage.html # @return [Array] # @@ -7139,9 +7200,13 @@ class QueryInfo < Struct.new( # An object that specifies how Config excludes resource types from # being recorded by the configuration recorder. # - # To use this option, you must set the `useOnly` field of + # **Required fields** + # + # To use this option, you must set the `useOnly` field of # [RecordingStrategy][1] to `EXCLUSION_BY_RESOURCE_TYPES`. # + # + # # # # [1]: https://docs.aws.amazon.com/config/latest/APIReference/API_RecordingStrategy.html @@ -7153,9 +7218,9 @@ class QueryInfo < Struct.new( # # * If you set the `useOnly` field of [RecordingStrategy][1] to # `ALL_SUPPORTED_RESOURCE_TYPES`, Config records configuration - # changes for all supported regionally recorded resource types. You - # also must set the `allSupported` field of [RecordingGroup][2] to - # `true`. When Config adds support for a new regionally recorded + # changes for all supported resource types, excluding the global IAM + # resource types. You also must set the `allSupported` field of + # [RecordingGroup][2] to `true`. When Config adds support for a new # resource type, Config automatically starts recording resources of # that type. # @@ -7191,9 +7256,9 @@ class QueryInfo < Struct.new( # properties in the request. # # For example, even if you set `includeGlobalResourceTypes` to false, - # globally recorded IAM resource types will still be automatically - # recorded in this option unless those resource types are specifically - # listed as exclusions in the `resourceTypes` field of + # global IAM resource types will still be automatically recorded in + # this option unless those resource types are specifically listed as + # exclusions in the `resourceTypes` field of # `exclusionByResourceTypes`. # # @@ -7207,13 +7272,16 @@ class QueryInfo < Struct.new( # global resource types, Config starts recording resources of that # type automatically. # - # In addition, unless specifically listed as exclusions, - # `AWS::RDS::GlobalCluster` will be recorded automatically in all - # supported Config Regions were the configuration recorder is enabled. - # IAM users, groups, roles, and customer managed policies will be - # recorded automatically in all enabled Config Regions where Config - # was available before February 2022. This list does not include the - # following Regions: + # Unless specifically listed as exclusions, `AWS::RDS::GlobalCluster` + # will be recorded automatically in all supported Config Regions were + # the configuration recorder is enabled. + # + # IAM users, groups, roles, and customer managed policies will be + # recorded in the Region where you set up the configuration recorder + # if that is a Region where Config was available before February 2022. + # You cannot be record the global IAM resouce types in Regions + # supported by Config after February 2022. This list where you cannot + # record the global IAM resource types includes the following Regions: # # * Asia Pacific (Hyderabad) # @@ -7248,19 +7316,117 @@ class RecordingGroup < Struct.new( include Aws::Structure end + # Specifies the default recording frequency that Config uses to record + # configuration changes. Config supports *Continuous recording* and + # *Daily recording*. + # + # * Continuous recording allows you to record configuration changes + # continuously whenever a change occurs. + # + # * Daily recording allows you record configuration data once every 24 + # hours, only if a change has occurred. + # + # Firewall Manager depends on continuous recording to monitor your + # resources. If you are using Firewall Manager, it is recommended that + # you set the recording frequency to Continuous. + # + # + # + # You can also override the recording frequency for specific resource + # types. + # + # @!attribute [rw] recording_frequency + # The default recording frequency that Config uses to record + # configuration changes. + # + # Daily recording is not supported for the following resource types: + # + # * `AWS::Config::ResourceCompliance` + # + # * `AWS::Config::ConformancePackCompliance` + # + # * `AWS::Config::ConfigurationRecorder` + # + # For the **allSupported** (`ALL_SUPPORTED_RESOURCE_TYPES`) recording + # strategy, these resource types will be set to Continuous recording. + # @return [String] + # + # @!attribute [rw] recording_mode_overrides + # An array of `recordingModeOverride` objects for you to specify your + # overrides for the recording mode. The `recordingModeOverride` object + # in the `recordingModeOverrides` array consists of three fields: a + # `description`, the new `recordingFrequency`, and an array of + # `resourceTypes` to override. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/RecordingMode AWS API Documentation + # + class RecordingMode < Struct.new( + :recording_frequency, + :recording_mode_overrides) + SENSITIVE = [] + include Aws::Structure + end + + # An object for you to specify your overrides for the recording mode. + # + # @!attribute [rw] description + # A description that you provide for the override. + # @return [String] + # + # @!attribute [rw] resource_types + # A comma-separated list that specifies which resource types Config + # includes in the override. + # + # Daily recording is not supported for the following resource types: + # + # * `AWS::Config::ResourceCompliance` + # + # * `AWS::Config::ConformancePackCompliance` + # + # * `AWS::Config::ConfigurationRecorder` + # @return [Array] + # + # @!attribute [rw] recording_frequency + # The recording frequency that will be applied to all the resource + # types specified in the override. + # + # * Continuous recording allows you to record configuration changes + # continuously whenever a change occurs. + # + # * Daily recording allows you record configuration data once every 24 + # hours, only if a change has occurred. + # + # Firewall Manager depends on continuous recording to monitor your + # resources. If you are using Firewall Manager, it is recommended that + # you set the recording frequency to Continuous. + # + # + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/RecordingModeOverride AWS API Documentation + # + class RecordingModeOverride < Struct.new( + :description, + :resource_types, + :recording_frequency) + SENSITIVE = [] + include Aws::Structure + end + # Specifies the recording strategy of the configuration recorder. # # @!attribute [rw] use_only # The recording strategy for the configuration recorder. # # * If you set this option to `ALL_SUPPORTED_RESOURCE_TYPES`, Config - # records configuration changes for all supported regionally - # recorded resource types. You also must set the `allSupported` - # field of [RecordingGroup][1] to `true`. When Config adds support - # for a new regionally recorded resource type, Config automatically - # starts recording resources of that type. For a list of supported - # resource types, see [Supported Resource Types][2] in the *Config - # developer guide*. + # records configuration changes for all supported resource types, + # excluding the global IAM resource types. You also must set the + # `allSupported` field of [RecordingGroup][1] to `true`. When Config + # adds support for a new resource type, Config automatically starts + # recording resources of that type. For a list of supported resource + # types, see [Supported Resource Types][2] in the *Config developer + # guide*. # # * If you set this option to `INCLUSION_BY_RESOURCE_TYPES`, Config # records configuration changes for only the resource types that you @@ -7293,9 +7459,9 @@ class RecordingGroup < Struct.new( # properties in the request. # # For example, even if you set `includeGlobalResourceTypes` to false, - # globally recorded IAM resource types will still be automatically - # recorded in this option unless those resource types are specifically - # listed as exclusions in the `resourceTypes` field of + # global IAM resource types will still be automatically recorded in + # this option unless those resource types are specifically listed as + # exclusions in the `resourceTypes` field of # `exclusionByResourceTypes`. # # @@ -7308,13 +7474,16 @@ class RecordingGroup < Struct.new( # global resource types, Config starts recording resources of that # type automatically. # - # In addition, unless specifically listed as exclusions, - # `AWS::RDS::GlobalCluster` will be recorded automatically in all - # supported Config Regions were the configuration recorder is enabled. - # IAM users, groups, roles, and customer managed policies will be - # recorded automatically in all enabled Config Regions where Config - # was available before February 2022. This list does not include the - # following Regions: + # Unless specifically listed as exclusions, `AWS::RDS::GlobalCluster` + # will be recorded automatically in all supported Config Regions were + # the configuration recorder is enabled. + # + # IAM users, groups, roles, and customer managed policies will be + # recorded in the Region where you set up the configuration recorder + # if that is a Region where Config was available before February 2022. + # You cannot be record the global IAM resouce types in Regions + # supported by Config after February 2022. This list where you cannot + # record the global IAM resource types includes the following Regions: # # * Asia Pacific (Hyderabad) # diff --git a/gems/aws-sdk-controltower/CHANGELOG.md b/gems/aws-sdk-controltower/CHANGELOG.md index 9ba0cb55b66..4366871c43b 100644 --- a/gems/aws-sdk-controltower/CHANGELOG.md +++ b/gems/aws-sdk-controltower/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.13.0 (2023-11-27) +------------------ + +* Feature - Add APIs to create and manage a landing zone. + 1.12.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-controltower/VERSION b/gems/aws-sdk-controltower/VERSION index 0eed1a29efd..feaae22bac7 100644 --- a/gems/aws-sdk-controltower/VERSION +++ b/gems/aws-sdk-controltower/VERSION @@ -1 +1 @@ -1.12.0 +1.13.0 diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower.rb index d083162948c..2651946213f 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower.rb @@ -32,7 +32,7 @@ # structure. # # control_tower = Aws::ControlTower::Client.new -# resp = control_tower.disable_control(params) +# resp = control_tower.create_landing_zone(params) # # See {Client} for more information. # @@ -52,6 +52,6 @@ # @!group service module Aws::ControlTower - GEM_VERSION = '1.12.0' + GEM_VERSION = '1.13.0' end diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client.rb index 076f5bc53dc..0b2a37f10ac 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client.rb @@ -388,11 +388,94 @@ def initialize(*args) # @!group API Operations + # Creates a new landing zone. This starts an asynchronous operation that + # creates and configures a landing zone based on the parameters + # specified in the manifest JSON file. + # + # @option params [required, Hash,Array,String,Numeric,Boolean] :manifest + # The manifest.yaml file is a text file that describes your Amazon Web + # Services resources. For examples, review [The manifest file][1]. + # + # Document type used to carry open content + # (Hash,Array,String,Numeric,Boolean). A document type value is + # serialized using the same format as its surroundings and requires no + # additional encoding or escaping. + # + # + # + # [1]: https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file + # + # @option params [Hash] :tags + # Tags to be applied to the landing zone. + # + # @option params [required, String] :version + # The landing zone version. + # + # @return [Types::CreateLandingZoneOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateLandingZoneOutput#arn #arn} => String + # * {Types::CreateLandingZoneOutput#operation_identifier #operation_identifier} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_landing_zone({ + # manifest: { # required + # }, + # tags: { + # "TagKey" => "TagValue", + # }, + # version: "LandingZoneVersion", # required + # }) + # + # @example Response structure + # + # resp.arn #=> String + # resp.operation_identifier #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/CreateLandingZone AWS API Documentation + # + # @overload create_landing_zone(params = {}) + # @param [Hash] params ({}) + def create_landing_zone(params = {}, options = {}) + req = build_request(:create_landing_zone, params) + req.send_request(options) + end + + # This decommissions a landing zone. This starts an asynchronous + # operation that deletes Amazon Web Services Control Tower resources + # deployed in Amazon Web Services Control Tower managed accounts. + # + # @option params [required, String] :landing_zone_identifier + # The unique identifier of the landing zone. + # + # @return [Types::DeleteLandingZoneOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DeleteLandingZoneOutput#operation_identifier #operation_identifier} => String + # + # @example Request syntax with placeholder values + # + # resp = client.delete_landing_zone({ + # landing_zone_identifier: "String", # required + # }) + # + # @example Response structure + # + # resp.operation_identifier #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/DeleteLandingZone AWS API Documentation + # + # @overload delete_landing_zone(params = {}) + # @param [Hash] params ({}) + def delete_landing_zone(params = {}, options = {}) + req = build_request(:delete_landing_zone, params) + req.send_request(options) + end + # This API call turns off a control. It starts an asynchronous operation - # that deletes AWS resources on the specified organizational unit and - # the accounts it contains. The resources will vary according to the - # control that you specify. For usage examples, see [ *the AWS Control - # Tower User Guide* ][1]. + # that deletes Amazon Web Services resources on the specified + # organizational unit and the accounts it contains. The resources will + # vary according to the control that you specify. For usage examples, + # see [ *the Amazon Web Services Control Tower User Guide* ][1]. # # # @@ -441,10 +524,11 @@ def disable_control(params = {}, options = {}) end # This API call activates a control. It starts an asynchronous operation - # that creates AWS resources on the specified organizational unit and - # the accounts it contains. The resources created will vary according to - # the control that you specify. For usage examples, see [ *the AWS - # Control Tower User Guide* ][1]. + # that creates Amazon Web Services resources on the specified + # organizational unit and the accounts it contains. The resources + # created will vary according to the control that you specify. For usage + # examples, see [ *the Amazon Web Services Control Tower User Guide* + # ][1]. # # # @@ -503,7 +587,7 @@ def enable_control(params = {}, options = {}) # Returns the status of a particular `EnableControl` or `DisableControl` # operation. Displays a message in case of error. Details for an # operation are available for 90 days. For usage examples, see [ *the - # AWS Control Tower User Guide* ][1]. + # Amazon Web Services Control Tower User Guide* ][1]. # # # @@ -541,7 +625,7 @@ def get_control_operation(params = {}, options = {}) end # Retrieves details about an enabled control. For usage examples, see [ - # *the AWS Control Tower User Guide* ][1]. + # *the Amazon Web Services Control Tower User Guide* ][1]. # # # @@ -580,9 +664,76 @@ def get_enabled_control(params = {}, options = {}) req.send_request(options) end - # Lists the controls enabled by AWS Control Tower on the specified - # organizational unit and the accounts it contains. For usage examples, - # see [ *the AWS Control Tower User Guide* ][1]. + # Returns details about the landing zone. Displays a message in case of + # error. + # + # @option params [required, String] :landing_zone_identifier + # The unique identifier of the landing zone. + # + # @return [Types::GetLandingZoneOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetLandingZoneOutput#landing_zone #landing_zone} => Types::LandingZoneDetail + # + # @example Request syntax with placeholder values + # + # resp = client.get_landing_zone({ + # landing_zone_identifier: "String", # required + # }) + # + # @example Response structure + # + # resp.landing_zone.arn #=> String + # resp.landing_zone.drift_status.status #=> String, one of "DRIFTED", "IN_SYNC" + # resp.landing_zone.latest_available_version #=> String + # resp.landing_zone.status #=> String, one of "ACTIVE", "PROCESSING", "FAILED" + # resp.landing_zone.version #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZone AWS API Documentation + # + # @overload get_landing_zone(params = {}) + # @param [Hash] params ({}) + def get_landing_zone(params = {}, options = {}) + req = build_request(:get_landing_zone, params) + req.send_request(options) + end + + # Returns the status of the specified landing zone operation. Details + # for an operation are available for X days. + # + # @option params [required, String] :operation_identifier + # A unique identifier assigned to a landing zone operation. + # + # @return [Types::GetLandingZoneOperationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetLandingZoneOperationOutput#operation_details #operation_details} => Types::LandingZoneOperationDetail + # + # @example Request syntax with placeholder values + # + # resp = client.get_landing_zone_operation({ + # operation_identifier: "OperationIdentifier", # required + # }) + # + # @example Response structure + # + # resp.operation_details.end_time #=> Time + # resp.operation_details.operation_type #=> String, one of "DELETE", "CREATE", "UPDATE", "RESET" + # resp.operation_details.start_time #=> Time + # resp.operation_details.status #=> String, one of "SUCCEEDED", "FAILED", "IN_PROGRESS" + # resp.operation_details.status_message #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZoneOperation AWS API Documentation + # + # @overload get_landing_zone_operation(params = {}) + # @param [Hash] params ({}) + def get_landing_zone_operation(params = {}, options = {}) + req = build_request(:get_landing_zone_operation, params) + req.send_request(options) + end + + # Lists the controls enabled by Amazon Web Services Control Tower on the + # specified organizational unit and the accounts it contains. For usage + # examples, see [ *the Amazon Web Services Control Tower User Guide* + # ][1]. # # # @@ -638,8 +789,51 @@ def list_enabled_controls(params = {}, options = {}) req.send_request(options) end + # Returns the landing zone ARN for the landing zone deployed in your + # managed account. This API also creates an ARN for existing accounts + # that do not yet have a landing zone ARN. + # + # The return limit is one landing zone ARN. + # + # @option params [Integer] :max_results + # The maximum number of returned landing zone ARNs. + # + # @option params [String] :next_token + # The token to continue the list from a previous API call with the same + # parameters. + # + # @return [Types::ListLandingZonesOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListLandingZonesOutput#landing_zones #landing_zones} => Array<Types::LandingZoneSummary> + # * {Types::ListLandingZonesOutput#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_landing_zones({ + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.landing_zones #=> Array + # resp.landing_zones[0].arn #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ListLandingZones AWS API Documentation + # + # @overload list_landing_zones(params = {}) + # @param [Hash] params ({}) + def list_landing_zones(params = {}, options = {}) + req = build_request(:list_landing_zones, params) + req.send_request(options) + end + # Returns a list of tags associated with the resource. For usage - # examples, see [ *the AWS Control Tower User Guide* ][1]. + # examples, see [ *the Amazon Web Services Control Tower User Guide* + # ][1]. # # # @@ -672,8 +866,38 @@ def list_tags_for_resource(params = {}, options = {}) req.send_request(options) end - # Applies tags to a resource. For usage examples, see [ *the AWS Control - # Tower User Guide* ][1]. + # This API call resets a landing zone. It starts an asynchronous + # operation that resets the landing zone to the parameters specified in + # its original configuration. + # + # @option params [required, String] :landing_zone_identifier + # The unique identifier of the landing zone. + # + # @return [Types::ResetLandingZoneOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ResetLandingZoneOutput#operation_identifier #operation_identifier} => String + # + # @example Request syntax with placeholder values + # + # resp = client.reset_landing_zone({ + # landing_zone_identifier: "String", # required + # }) + # + # @example Response structure + # + # resp.operation_identifier #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ResetLandingZone AWS API Documentation + # + # @overload reset_landing_zone(params = {}) + # @param [Hash] params ({}) + def reset_landing_zone(params = {}, options = {}) + req = build_request(:reset_landing_zone, params) + req.send_request(options) + end + + # Applies tags to a resource. For usage examples, see [ *the Amazon Web + # Services Control Tower User Guide* ][1]. # # # @@ -705,8 +929,8 @@ def tag_resource(params = {}, options = {}) req.send_request(options) end - # Removes tags from a resource. For usage examples, see [ *the AWS - # Control Tower User Guide* ][1]. + # Removes tags from a resource. For usage examples, see [ *the Amazon + # Web Services Control Tower User Guide* ][1]. # # # @@ -736,6 +960,56 @@ def untag_resource(params = {}, options = {}) req.send_request(options) end + # This API call updates the landing zone. It starts an asynchronous + # operation that updates the landing zone based on the new landing zone + # version or the updated parameters specified in the updated manifest + # file. + # + # @option params [required, String] :landing_zone_identifier + # The unique identifier of the landing zone. + # + # @option params [required, Hash,Array,String,Numeric,Boolean] :manifest + # The manifest.yaml file is a text file that describes your Amazon Web + # Services resources. For examples, review [The manifest file][1] + # + # Document type used to carry open content + # (Hash,Array,String,Numeric,Boolean). A document type value is + # serialized using the same format as its surroundings and requires no + # additional encoding or escaping. + # + # + # + # [1]: https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file + # + # @option params [required, String] :version + # The landing zone version. + # + # @return [Types::UpdateLandingZoneOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateLandingZoneOutput#operation_identifier #operation_identifier} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_landing_zone({ + # landing_zone_identifier: "String", # required + # manifest: { # required + # }, + # version: "LandingZoneVersion", # required + # }) + # + # @example Response structure + # + # resp.operation_identifier #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/UpdateLandingZone AWS API Documentation + # + # @overload update_landing_zone(params = {}) + # @param [Hash] params ({}) + def update_landing_zone(params = {}, options = {}) + req = build_request(:update_landing_zone, params) + req.send_request(options) + end + # @!endgroup # @param params ({}) @@ -749,7 +1023,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-controltower' - context[:gem_version] = '1.12.0' + context[:gem_version] = '1.13.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client_api.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client_api.rb index d2ba9c67202..53df5d57b28 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client_api.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/client_api.rb @@ -20,6 +20,10 @@ module ClientApi ControlOperation = Shapes::StructureShape.new(name: 'ControlOperation') ControlOperationStatus = Shapes::StringShape.new(name: 'ControlOperationStatus') ControlOperationType = Shapes::StringShape.new(name: 'ControlOperationType') + CreateLandingZoneInput = Shapes::StructureShape.new(name: 'CreateLandingZoneInput') + CreateLandingZoneOutput = Shapes::StructureShape.new(name: 'CreateLandingZoneOutput') + DeleteLandingZoneInput = Shapes::StructureShape.new(name: 'DeleteLandingZoneInput') + DeleteLandingZoneOutput = Shapes::StructureShape.new(name: 'DeleteLandingZoneOutput') DisableControlInput = Shapes::StructureShape.new(name: 'DisableControlInput') DisableControlOutput = Shapes::StructureShape.new(name: 'DisableControlOutput') DriftStatus = Shapes::StringShape.new(name: 'DriftStatus') @@ -35,16 +39,36 @@ module ClientApi GetControlOperationOutput = Shapes::StructureShape.new(name: 'GetControlOperationOutput') GetEnabledControlInput = Shapes::StructureShape.new(name: 'GetEnabledControlInput') GetEnabledControlOutput = Shapes::StructureShape.new(name: 'GetEnabledControlOutput') + GetLandingZoneInput = Shapes::StructureShape.new(name: 'GetLandingZoneInput') + GetLandingZoneOperationInput = Shapes::StructureShape.new(name: 'GetLandingZoneOperationInput') + GetLandingZoneOperationOutput = Shapes::StructureShape.new(name: 'GetLandingZoneOperationOutput') + GetLandingZoneOutput = Shapes::StructureShape.new(name: 'GetLandingZoneOutput') Integer = Shapes::IntegerShape.new(name: 'Integer') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + LandingZoneDetail = Shapes::StructureShape.new(name: 'LandingZoneDetail') + LandingZoneDriftStatus = Shapes::StringShape.new(name: 'LandingZoneDriftStatus') + LandingZoneDriftStatusSummary = Shapes::StructureShape.new(name: 'LandingZoneDriftStatusSummary') + LandingZoneOperationDetail = Shapes::StructureShape.new(name: 'LandingZoneOperationDetail') + LandingZoneOperationStatus = Shapes::StringShape.new(name: 'LandingZoneOperationStatus') + LandingZoneOperationType = Shapes::StringShape.new(name: 'LandingZoneOperationType') + LandingZoneStatus = Shapes::StringShape.new(name: 'LandingZoneStatus') + LandingZoneSummary = Shapes::StructureShape.new(name: 'LandingZoneSummary') + LandingZoneVersion = Shapes::StringShape.new(name: 'LandingZoneVersion') ListEnabledControlsInput = Shapes::StructureShape.new(name: 'ListEnabledControlsInput') ListEnabledControlsOutput = Shapes::StructureShape.new(name: 'ListEnabledControlsOutput') + ListLandingZonesInput = Shapes::StructureShape.new(name: 'ListLandingZonesInput') + ListLandingZonesMaxResults = Shapes::IntegerShape.new(name: 'ListLandingZonesMaxResults') + ListLandingZonesOutput = Shapes::StructureShape.new(name: 'ListLandingZonesOutput') + ListLandingZonesOutputLandingZonesList = Shapes::ListShape.new(name: 'ListLandingZonesOutputLandingZonesList') ListTagsForResourceInput = Shapes::StructureShape.new(name: 'ListTagsForResourceInput') ListTagsForResourceOutput = Shapes::StructureShape.new(name: 'ListTagsForResourceOutput') + Manifest = Shapes::DocumentShape.new(name: 'Manifest', document: true) MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') OperationIdentifier = Shapes::StringShape.new(name: 'OperationIdentifier') Region = Shapes::StructureShape.new(name: 'Region') RegionName = Shapes::StringShape.new(name: 'RegionName') + ResetLandingZoneInput = Shapes::StructureShape.new(name: 'ResetLandingZoneInput') + ResetLandingZoneOutput = Shapes::StructureShape.new(name: 'ResetLandingZoneOutput') ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') String = Shapes::StringShape.new(name: 'String') @@ -58,8 +82,11 @@ module ClientApi TargetIdentifier = Shapes::StringShape.new(name: 'TargetIdentifier') TargetRegions = Shapes::ListShape.new(name: 'TargetRegions') ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Timestamp = Shapes::TimestampShape.new(name: 'Timestamp', timestampFormat: "iso8601") UntagResourceInput = Shapes::StructureShape.new(name: 'UntagResourceInput') UntagResourceOutput = Shapes::StructureShape.new(name: 'UntagResourceOutput') + UpdateLandingZoneInput = Shapes::StructureShape.new(name: 'UpdateLandingZoneInput') + UpdateLandingZoneOutput = Shapes::StructureShape.new(name: 'UpdateLandingZoneOutput') ValidationException = Shapes::StructureShape.new(name: 'ValidationException') AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) @@ -75,6 +102,21 @@ module ClientApi ControlOperation.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage")) ControlOperation.struct_class = Types::ControlOperation + CreateLandingZoneInput.add_member(:manifest, Shapes::ShapeRef.new(shape: Manifest, required: true, location_name: "manifest")) + CreateLandingZoneInput.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + CreateLandingZoneInput.add_member(:version, Shapes::ShapeRef.new(shape: LandingZoneVersion, required: true, location_name: "version")) + CreateLandingZoneInput.struct_class = Types::CreateLandingZoneInput + + CreateLandingZoneOutput.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "arn")) + CreateLandingZoneOutput.add_member(:operation_identifier, Shapes::ShapeRef.new(shape: OperationIdentifier, required: true, location_name: "operationIdentifier")) + CreateLandingZoneOutput.struct_class = Types::CreateLandingZoneOutput + + DeleteLandingZoneInput.add_member(:landing_zone_identifier, Shapes::ShapeRef.new(shape: String, required: true, location_name: "landingZoneIdentifier")) + DeleteLandingZoneInput.struct_class = Types::DeleteLandingZoneInput + + DeleteLandingZoneOutput.add_member(:operation_identifier, Shapes::ShapeRef.new(shape: OperationIdentifier, required: true, location_name: "operationIdentifier")) + DeleteLandingZoneOutput.struct_class = Types::DeleteLandingZoneOutput + DisableControlInput.add_member(:control_identifier, Shapes::ShapeRef.new(shape: ControlIdentifier, required: true, location_name: "controlIdentifier")) DisableControlInput.add_member(:target_identifier, Shapes::ShapeRef.new(shape: TargetIdentifier, required: true, location_name: "targetIdentifier")) DisableControlInput.struct_class = Types::DisableControlInput @@ -127,9 +169,42 @@ module ClientApi GetEnabledControlOutput.add_member(:enabled_control_details, Shapes::ShapeRef.new(shape: EnabledControlDetails, required: true, location_name: "enabledControlDetails")) GetEnabledControlOutput.struct_class = Types::GetEnabledControlOutput + GetLandingZoneInput.add_member(:landing_zone_identifier, Shapes::ShapeRef.new(shape: String, required: true, location_name: "landingZoneIdentifier")) + GetLandingZoneInput.struct_class = Types::GetLandingZoneInput + + GetLandingZoneOperationInput.add_member(:operation_identifier, Shapes::ShapeRef.new(shape: OperationIdentifier, required: true, location_name: "operationIdentifier")) + GetLandingZoneOperationInput.struct_class = Types::GetLandingZoneOperationInput + + GetLandingZoneOperationOutput.add_member(:operation_details, Shapes::ShapeRef.new(shape: LandingZoneOperationDetail, required: true, location_name: "operationDetails")) + GetLandingZoneOperationOutput.struct_class = Types::GetLandingZoneOperationOutput + + GetLandingZoneOutput.add_member(:landing_zone, Shapes::ShapeRef.new(shape: LandingZoneDetail, required: true, location_name: "landingZone")) + GetLandingZoneOutput.struct_class = Types::GetLandingZoneOutput + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) InternalServerException.struct_class = Types::InternalServerException + LandingZoneDetail.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + LandingZoneDetail.add_member(:drift_status, Shapes::ShapeRef.new(shape: LandingZoneDriftStatusSummary, location_name: "driftStatus")) + LandingZoneDetail.add_member(:latest_available_version, Shapes::ShapeRef.new(shape: LandingZoneVersion, location_name: "latestAvailableVersion")) + LandingZoneDetail.add_member(:manifest, Shapes::ShapeRef.new(shape: Manifest, required: true, location_name: "manifest")) + LandingZoneDetail.add_member(:status, Shapes::ShapeRef.new(shape: LandingZoneStatus, location_name: "status")) + LandingZoneDetail.add_member(:version, Shapes::ShapeRef.new(shape: LandingZoneVersion, required: true, location_name: "version")) + LandingZoneDetail.struct_class = Types::LandingZoneDetail + + LandingZoneDriftStatusSummary.add_member(:status, Shapes::ShapeRef.new(shape: LandingZoneDriftStatus, location_name: "status")) + LandingZoneDriftStatusSummary.struct_class = Types::LandingZoneDriftStatusSummary + + LandingZoneOperationDetail.add_member(:end_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "endTime")) + LandingZoneOperationDetail.add_member(:operation_type, Shapes::ShapeRef.new(shape: LandingZoneOperationType, location_name: "operationType")) + LandingZoneOperationDetail.add_member(:start_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "startTime")) + LandingZoneOperationDetail.add_member(:status, Shapes::ShapeRef.new(shape: LandingZoneOperationStatus, location_name: "status")) + LandingZoneOperationDetail.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage")) + LandingZoneOperationDetail.struct_class = Types::LandingZoneOperationDetail + + LandingZoneSummary.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + LandingZoneSummary.struct_class = Types::LandingZoneSummary + ListEnabledControlsInput.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "maxResults")) ListEnabledControlsInput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) ListEnabledControlsInput.add_member(:target_identifier, Shapes::ShapeRef.new(shape: TargetIdentifier, required: true, location_name: "targetIdentifier")) @@ -139,6 +214,16 @@ module ClientApi ListEnabledControlsOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) ListEnabledControlsOutput.struct_class = Types::ListEnabledControlsOutput + ListLandingZonesInput.add_member(:max_results, Shapes::ShapeRef.new(shape: ListLandingZonesMaxResults, location_name: "maxResults")) + ListLandingZonesInput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListLandingZonesInput.struct_class = Types::ListLandingZonesInput + + ListLandingZonesOutput.add_member(:landing_zones, Shapes::ShapeRef.new(shape: ListLandingZonesOutputLandingZonesList, required: true, location_name: "landingZones")) + ListLandingZonesOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListLandingZonesOutput.struct_class = Types::ListLandingZonesOutput + + ListLandingZonesOutputLandingZonesList.member = Shapes::ShapeRef.new(shape: LandingZoneSummary) + ListTagsForResourceInput.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location: "uri", location_name: "resourceArn")) ListTagsForResourceInput.struct_class = Types::ListTagsForResourceInput @@ -148,6 +233,12 @@ module ClientApi Region.add_member(:name, Shapes::ShapeRef.new(shape: RegionName, location_name: "name")) Region.struct_class = Types::Region + ResetLandingZoneInput.add_member(:landing_zone_identifier, Shapes::ShapeRef.new(shape: String, required: true, location_name: "landingZoneIdentifier")) + ResetLandingZoneInput.struct_class = Types::ResetLandingZoneInput + + ResetLandingZoneOutput.add_member(:operation_identifier, Shapes::ShapeRef.new(shape: OperationIdentifier, required: true, location_name: "operationIdentifier")) + ResetLandingZoneOutput.struct_class = Types::ResetLandingZoneOutput + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) ResourceNotFoundException.struct_class = Types::ResourceNotFoundException @@ -179,6 +270,14 @@ module ClientApi UntagResourceOutput.struct_class = Types::UntagResourceOutput + UpdateLandingZoneInput.add_member(:landing_zone_identifier, Shapes::ShapeRef.new(shape: String, required: true, location_name: "landingZoneIdentifier")) + UpdateLandingZoneInput.add_member(:manifest, Shapes::ShapeRef.new(shape: Manifest, required: true, location_name: "manifest")) + UpdateLandingZoneInput.add_member(:version, Shapes::ShapeRef.new(shape: LandingZoneVersion, required: true, location_name: "version")) + UpdateLandingZoneInput.struct_class = Types::UpdateLandingZoneInput + + UpdateLandingZoneOutput.add_member(:operation_identifier, Shapes::ShapeRef.new(shape: OperationIdentifier, required: true, location_name: "operationIdentifier")) + UpdateLandingZoneOutput.struct_class = Types::UpdateLandingZoneOutput + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) ValidationException.struct_class = Types::ValidationException @@ -200,6 +299,33 @@ module ClientApi "uid" => "controltower-2018-05-10", } + api.add_operation(:create_landing_zone, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateLandingZone" + o.http_method = "POST" + o.http_request_uri = "/create-landingzone" + o.input = Shapes::ShapeRef.new(shape: CreateLandingZoneInput) + o.output = Shapes::ShapeRef.new(shape: CreateLandingZoneOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:delete_landing_zone, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteLandingZone" + o.http_method = "POST" + o.http_request_uri = "/delete-landingzone" + o.input = Shapes::ShapeRef.new(shape: DeleteLandingZoneInput) + o.output = Shapes::ShapeRef.new(shape: DeleteLandingZoneOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:disable_control, Seahorse::Model::Operation.new.tap do |o| o.name = "DisableControl" o.http_method = "POST" @@ -256,6 +382,32 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) end) + api.add_operation(:get_landing_zone, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetLandingZone" + o.http_method = "POST" + o.http_request_uri = "/get-landingzone" + o.input = Shapes::ShapeRef.new(shape: GetLandingZoneInput) + o.output = Shapes::ShapeRef.new(shape: GetLandingZoneOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + + api.add_operation(:get_landing_zone_operation, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetLandingZoneOperation" + o.http_method = "POST" + o.http_request_uri = "/get-landingzone-operation" + o.input = Shapes::ShapeRef.new(shape: GetLandingZoneOperationInput) + o.output = Shapes::ShapeRef.new(shape: GetLandingZoneOperationOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:list_enabled_controls, Seahorse::Model::Operation.new.tap do |o| o.name = "ListEnabledControls" o.http_method = "POST" @@ -275,6 +427,24 @@ module ClientApi ) end) + api.add_operation(:list_landing_zones, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListLandingZones" + o.http_method = "POST" + o.http_request_uri = "/list-landingzones" + o.input = Shapes::ShapeRef.new(shape: ListLandingZonesInput) + o.output = Shapes::ShapeRef.new(shape: ListLandingZonesOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "ListTagsForResource" o.http_method = "GET" @@ -286,6 +456,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) end) + api.add_operation(:reset_landing_zone, Seahorse::Model::Operation.new.tap do |o| + o.name = "ResetLandingZone" + o.http_method = "POST" + o.http_request_uri = "/reset-landingzone" + o.input = Shapes::ShapeRef.new(shape: ResetLandingZoneInput) + o.output = Shapes::ShapeRef.new(shape: ResetLandingZoneOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "TagResource" o.http_method = "POST" @@ -307,6 +491,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) end) + + api.add_operation(:update_landing_zone, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateLandingZone" + o.http_method = "POST" + o.http_request_uri = "/update-landingzone" + o.input = Shapes::ShapeRef.new(shape: UpdateLandingZoneInput) + o.output = Shapes::ShapeRef.new(shape: UpdateLandingZoneOutput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) end end diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/endpoints.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/endpoints.rb index e7684ce1e99..cda74d12e1a 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/endpoints.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/endpoints.rb @@ -12,6 +12,34 @@ module Aws::ControlTower # @api private module Endpoints + class CreateLandingZone + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteLandingZone + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DisableControl def self.build(context) unless context.config.regional_endpoint @@ -68,6 +96,34 @@ def self.build(context) end end + class GetLandingZone + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetLandingZoneOperation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListEnabledControls def self.build(context) unless context.config.regional_endpoint @@ -82,6 +138,20 @@ def self.build(context) end end + class ListLandingZones + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListTagsForResource def self.build(context) unless context.config.regional_endpoint @@ -96,6 +166,20 @@ def self.build(context) end end + class ResetLandingZone + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class TagResource def self.build(context) unless context.config.regional_endpoint @@ -124,5 +208,19 @@ def self.build(context) end end + class UpdateLandingZone + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ControlTower::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + end end diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/plugins/endpoints.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/plugins/endpoints.rb index cad128dc1b1..fc6421c117d 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/plugins/endpoints.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/plugins/endpoints.rb @@ -56,6 +56,10 @@ def apply_endpoint_headers(context, headers) def parameters_for_operation(context) case context.operation_name + when :create_landing_zone + Aws::ControlTower::Endpoints::CreateLandingZone.build(context) + when :delete_landing_zone + Aws::ControlTower::Endpoints::DeleteLandingZone.build(context) when :disable_control Aws::ControlTower::Endpoints::DisableControl.build(context) when :enable_control @@ -64,14 +68,24 @@ def parameters_for_operation(context) Aws::ControlTower::Endpoints::GetControlOperation.build(context) when :get_enabled_control Aws::ControlTower::Endpoints::GetEnabledControl.build(context) + when :get_landing_zone + Aws::ControlTower::Endpoints::GetLandingZone.build(context) + when :get_landing_zone_operation + Aws::ControlTower::Endpoints::GetLandingZoneOperation.build(context) when :list_enabled_controls Aws::ControlTower::Endpoints::ListEnabledControls.build(context) + when :list_landing_zones + Aws::ControlTower::Endpoints::ListLandingZones.build(context) when :list_tags_for_resource Aws::ControlTower::Endpoints::ListTagsForResource.build(context) + when :reset_landing_zone + Aws::ControlTower::Endpoints::ResetLandingZone.build(context) when :tag_resource Aws::ControlTower::Endpoints::TagResource.build(context) when :untag_resource Aws::ControlTower::Endpoints::UntagResource.build(context) + when :update_landing_zone + Aws::ControlTower::Endpoints::UpdateLandingZone.build(context) end end end diff --git a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/types.rb b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/types.rb index 03526d958b5..708ac6812b2 100644 --- a/gems/aws-sdk-controltower/lib/aws-sdk-controltower/types.rb +++ b/gems/aws-sdk-controltower/lib/aws-sdk-controltower/types.rb @@ -10,7 +10,7 @@ module Aws::ControlTower module Types - # User does not have sufficient access to perform this action. + # You do not have sufficient access to perform this action. # # @!attribute [rw] message # @return [String] @@ -71,6 +71,78 @@ class ControlOperation < Struct.new( include Aws::Structure end + # @!attribute [rw] manifest + # The manifest.yaml file is a text file that describes your Amazon Web + # Services resources. For examples, review [The manifest file][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file + # @return [Hash,Array,String,Numeric,Boolean] + # + # @!attribute [rw] tags + # Tags to be applied to the landing zone. + # @return [Hash] + # + # @!attribute [rw] version + # The landing zone version. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/CreateLandingZoneInput AWS API Documentation + # + class CreateLandingZoneInput < Struct.new( + :manifest, + :tags, + :version) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] arn + # The ARN of the landing zone. + # @return [String] + # + # @!attribute [rw] operation_identifier + # A unique identifier assigned to a `CreateLandingZone` operation. You + # can use this identifier as an input of `GetLandingZoneOperation` to + # check the operation's status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/CreateLandingZoneOutput AWS API Documentation + # + class CreateLandingZoneOutput < Struct.new( + :arn, + :operation_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] landing_zone_identifier + # The unique identifier of the landing zone. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/DeleteLandingZoneInput AWS API Documentation + # + class DeleteLandingZoneInput < Struct.new( + :landing_zone_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] operation_identifier + # A unique identifier assigned to a `DeleteLandingZone` operation. You + # can use this identifier as an input of `GetLandingZoneOperation` to + # check the operation's status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/DeleteLandingZoneOutput AWS API Documentation + # + class DeleteLandingZoneOutput < Struct.new( + :operation_identifier) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] control_identifier # The ARN of the control. Only **Strongly recommended** and # **Elective** controls are permitted, with the exception of the @@ -115,10 +187,11 @@ class DisableControlOutput < Struct.new( # The drift summary of the enabled control. # - # AWS Control Tower expects the enabled control configuration to include - # all supported and governed Regions. If the enabled control differs - # from the expected configuration, it is defined to be in a state of - # drift. You can repair this drift by resetting the enabled control. + # Amazon Web Services Control Tower expects the enabled control + # configuration to include all supported and governed Regions. If the + # enabled control differs from the expected configuration, it is defined + # to be in a state of drift. You can repair this drift by resetting the + # enabled control. # # @!attribute [rw] drift_status # The drift status of the enabled control. @@ -126,16 +199,19 @@ class DisableControlOutput < Struct.new( # Valid values: # # * `DRIFTED`: The `enabledControl` deployed in this configuration - # doesn’t match the configuration that AWS Control Tower expected. + # doesn’t match the configuration that Amazon Web Services Control + # Tower expected. # # * `IN_SYNC`: The `enabledControl` deployed in this configuration - # matches the configuration that AWS Control Tower expected. + # matches the configuration that Amazon Web Services Control Tower + # expected. # - # * `NOT_CHECKING`: AWS Control Tower does not check drift for this - # enabled control. Drift is not supported for the control type. + # * `NOT_CHECKING`: Amazon Web Services Control Tower does not check + # drift for this enabled control. Drift is not supported for the + # control type. # - # * `UNKNOWN`: AWS Control Tower is not able to check the drift status - # for the enabled control. + # * `UNKNOWN`: Amazon Web Services Control Tower is not able to check + # the drift status for the enabled control. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/DriftStatusSummary AWS API Documentation @@ -231,7 +307,7 @@ class EnableControlOutput < Struct.new( # @return [String] # # @!attribute [rw] target_regions - # Target AWS Regions for the enabled control. + # Target Amazon Web Services Regions for the enabled control. # @return [Array] # # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/EnabledControlDetails AWS API Documentation @@ -358,6 +434,54 @@ class GetEnabledControlOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] landing_zone_identifier + # The unique identifier of the landing zone. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZoneInput AWS API Documentation + # + class GetLandingZoneInput < Struct.new( + :landing_zone_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] operation_identifier + # A unique identifier assigned to a landing zone operation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZoneOperationInput AWS API Documentation + # + class GetLandingZoneOperationInput < Struct.new( + :operation_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] operation_details + # The landing zone operation details. + # @return [Types::LandingZoneOperationDetail] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZoneOperationOutput AWS API Documentation + # + class GetLandingZoneOperationOutput < Struct.new( + :operation_details) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] landing_zone + # Information about the landing zone. + # @return [Types::LandingZoneDetail] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/GetLandingZoneOutput AWS API Documentation + # + class GetLandingZoneOutput < Struct.new( + :landing_zone) + SENSITIVE = [] + include Aws::Structure + end + # Unexpected error during processing of request. # # @!attribute [rw] message @@ -371,6 +495,148 @@ class InternalServerException < Struct.new( include Aws::Structure end + # Information about the landing zone. + # + # @!attribute [rw] arn + # The ARN of the landing zone. + # @return [String] + # + # @!attribute [rw] drift_status + # The drift status of the landing zone. + # @return [Types::LandingZoneDriftStatusSummary] + # + # @!attribute [rw] latest_available_version + # The latest available version of the landing zone. + # @return [String] + # + # @!attribute [rw] manifest + # The landing zone manifest.yaml text file that specifies the landing + # zone configurations. + # @return [Hash,Array,String,Numeric,Boolean] + # + # @!attribute [rw] status + # The landing zone deployment status. + # + # Valid values: + # + # * `ACTIVE`: The landing zone is actively deployed. + # + # * `PROCESSING`: The landing zone is processing deployment. + # + # * `FAILED`: The landing zone failed deployment. + # @return [String] + # + # @!attribute [rw] version + # The landing zone's current deployed version. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/LandingZoneDetail AWS API Documentation + # + class LandingZoneDetail < Struct.new( + :arn, + :drift_status, + :latest_available_version, + :manifest, + :status, + :version) + SENSITIVE = [] + include Aws::Structure + end + + # The drift status summary of the landing zone. + # + # If the landing zone differs from the expected configuration, it is + # defined to be in a state of drift. You can repair this drift by + # resetting the landing zone. + # + # @!attribute [rw] status + # The drift status of the landing zone. + # + # Valid values: + # + # * `DRIFTED`: The landing zone deployed in this configuration does + # not match the configuration that Amazon Web Services Control Tower + # expected. + # + # * `IN_SYNC`: The landing zone deployed in this configuration matches + # the configuration that Amazon Web Services Control Tower expected. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/LandingZoneDriftStatusSummary AWS API Documentation + # + class LandingZoneDriftStatusSummary < Struct.new( + :status) + SENSITIVE = [] + include Aws::Structure + end + + # Information about a landing zone operation. + # + # @!attribute [rw] end_time + # The landing zone operation end time. + # @return [Time] + # + # @!attribute [rw] operation_type + # The landing zone operation type. + # + # Valid values: + # + # * `DELETE`: The `DeleteLandingZone` operation. + # + # * `CREATE`: The `CreateLandingZone` operation. + # + # * `UPDATE`: The `UpdateLandingZone` operation. + # + # * `RESET`: The `ResetLandingZone` operation. + # @return [String] + # + # @!attribute [rw] start_time + # The landing zone operation start time. + # @return [Time] + # + # @!attribute [rw] status + # The landing zone operation status. + # + # Valid values: + # + # * `SUCCEEDED`: The landing zone operation succeeded. + # + # * `IN_PROGRESS`: The landing zone operation is in progress. + # + # * `FAILED`: The landing zone operation failed. + # @return [String] + # + # @!attribute [rw] status_message + # If the operation result is FAILED, this string contains a message + # explaining why the operation failed. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/LandingZoneOperationDetail AWS API Documentation + # + class LandingZoneOperationDetail < Struct.new( + :end_time, + :operation_type, + :start_time, + :status, + :status_message) + SENSITIVE = [] + include Aws::Structure + end + + # Returns a summary of information about a landing zone. + # + # @!attribute [rw] arn + # The ARN of the landing zone. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/LandingZoneSummary AWS API Documentation + # + class LandingZoneSummary < Struct.new( + :arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] max_results # How many results to return per API call. # @return [Integer] @@ -400,8 +666,8 @@ class ListEnabledControlsInput < Struct.new( end # @!attribute [rw] enabled_controls - # Lists the controls enabled by AWS Control Tower on the specified - # organizational unit and the accounts it contains. + # Lists the controls enabled by Amazon Web Services Control Tower on + # the specified organizational unit and the accounts it contains. # @return [Array] # # @!attribute [rw] next_token @@ -418,6 +684,42 @@ class ListEnabledControlsOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] max_results + # The maximum number of returned landing zone ARNs. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to continue the list from a previous API call with the + # same parameters. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ListLandingZonesInput AWS API Documentation + # + class ListLandingZonesInput < Struct.new( + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] landing_zones + # The ARN of the landing zone. + # @return [Array] + # + # @!attribute [rw] next_token + # Retrieves the next page of results. If the string is empty, the + # current response is the end of the results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ListLandingZonesOutput AWS API Documentation + # + class ListLandingZonesOutput < Struct.new( + :landing_zones, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The ARN of the resource. # @return [String] @@ -442,8 +744,8 @@ class ListTagsForResourceOutput < Struct.new( include Aws::Structure end - # An AWS Region in which AWS Control Tower expects to find the control - # deployed. + # An Amazon Web Services Region in which Amazon Web Services Control + # Tower expects to find the control deployed. # # The expected Regions are based on the Regions that are governed by the # landing zone. In certain cases, a control is not actually enabled in @@ -455,7 +757,7 @@ class ListTagsForResourceOutput < Struct.new( # [1]: https://docs.aws.amazon.com/controltower/latest/userguide/region-how.html#mixed-governance # # @!attribute [rw] name - # The AWS Region name. + # The Amazon Web Services Region name. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/Region AWS API Documentation @@ -466,6 +768,32 @@ class Region < Struct.new( include Aws::Structure end + # @!attribute [rw] landing_zone_identifier + # The unique identifier of the landing zone. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ResetLandingZoneInput AWS API Documentation + # + class ResetLandingZoneInput < Struct.new( + :landing_zone_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] operation_identifier + # A unique identifier assigned to a `ResetLandingZone` operation. You + # can use this identifier as an input of `GetLandingZoneOperation` to + # check the operation's status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/ResetLandingZoneOutput AWS API Documentation + # + class ResetLandingZoneOutput < Struct.new( + :operation_identifier) + SENSITIVE = [] + include Aws::Structure + end + # Request references a resource which does not exist. # # @!attribute [rw] message @@ -563,8 +891,49 @@ class UntagResourceInput < Struct.new( # class UntagResourceOutput < Aws::EmptyStructure; end - # The input fails to satisfy the constraints specified by an AWS - # service. + # @!attribute [rw] landing_zone_identifier + # The unique identifier of the landing zone. + # @return [String] + # + # @!attribute [rw] manifest + # The manifest.yaml file is a text file that describes your Amazon Web + # Services resources. For examples, review [The manifest file][1] + # + # + # + # [1]: https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file + # @return [Hash,Array,String,Numeric,Boolean] + # + # @!attribute [rw] version + # The landing zone version. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/UpdateLandingZoneInput AWS API Documentation + # + class UpdateLandingZoneInput < Struct.new( + :landing_zone_identifier, + :manifest, + :version) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] operation_identifier + # A unique identifier assigned to a `UpdateLandingZone` operation. You + # can use this identifier as an input of `GetLandingZoneOperation` to + # check the operation's status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/controltower-2018-05-10/UpdateLandingZoneOutput AWS API Documentation + # + class UpdateLandingZoneOutput < Struct.new( + :operation_identifier) + SENSITIVE = [] + include Aws::Structure + end + + # The input fails to satisfy the constraints specified by an Amazon Web + # Services service. # # @!attribute [rw] message # @return [String] diff --git a/gems/aws-sdk-controltower/spec/endpoint_provider_spec.rb b/gems/aws-sdk-controltower/spec/endpoint_provider_spec.rb index 3ae6633b5d0..fce79c79d63 100644 --- a/gems/aws-sdk-controltower/spec/endpoint_provider_spec.rb +++ b/gems/aws-sdk-controltower/spec/endpoint_provider_spec.rb @@ -595,18 +595,5 @@ module Aws::ControlTower end end - context 'Partition doesn't support DualStack' do - let(:expected) do - {"error"=>"DualStack is enabled but this partition does not support DualStack"} - end - - it 'produces the expected output from the EndpointProvider' do - params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>true}) - expect do - subject.resolve_endpoint(params) - end.to raise_error(ArgumentError, expected['error']) - end - end - end end diff --git a/gems/aws-sdk-costoptimizationhub/CHANGELOG.md b/gems/aws-sdk-costoptimizationhub/CHANGELOG.md new file mode 100644 index 00000000000..5f7643fac6d --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-costoptimizationhub`. + diff --git a/gems/aws-sdk-costoptimizationhub/LICENSE.txt b/gems/aws-sdk-costoptimizationhub/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-costoptimizationhub/VERSION b/gems/aws-sdk-costoptimizationhub/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-costoptimizationhub/aws-sdk-costoptimizationhub.gemspec b/gems/aws-sdk-costoptimizationhub/aws-sdk-costoptimizationhub.gemspec new file mode 100644 index 00000000000..8531ac7cabd --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/aws-sdk-costoptimizationhub.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-costoptimizationhub' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - Cost Optimization Hub' + spec.description = 'Official AWS Ruby gem for Cost Optimization Hub. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-costoptimizationhub', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-costoptimizationhub/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-costoptimizationhub/features/env.rb b/gems/aws-sdk-costoptimizationhub/features/env.rb new file mode 100644 index 00000000000..2bf7d30df98 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-costoptimizationhub' + +Aws::CostOptimizationHub::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-costoptimizationhub/features/step_definitions.rb b/gems/aws-sdk-costoptimizationhub/features/step_definitions.rb new file mode 100644 index 00000000000..bd3a72e8254 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@costoptimizationhub") do + @service = Aws::CostOptimizationHub::Resource.new + @client = @service.client +end + +After("@costoptimizationhub") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub.rb new file mode 100644 index 00000000000..37cd286ffcf --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-costoptimizationhub/types' +require_relative 'aws-sdk-costoptimizationhub/client_api' +require_relative 'aws-sdk-costoptimizationhub/plugins/endpoints.rb' +require_relative 'aws-sdk-costoptimizationhub/client' +require_relative 'aws-sdk-costoptimizationhub/errors' +require_relative 'aws-sdk-costoptimizationhub/resource' +require_relative 'aws-sdk-costoptimizationhub/endpoint_parameters' +require_relative 'aws-sdk-costoptimizationhub/endpoint_provider' +require_relative 'aws-sdk-costoptimizationhub/endpoints' +require_relative 'aws-sdk-costoptimizationhub/customizations' + +# This module provides support for Cost Optimization Hub. This module is available in the +# `aws-sdk-costoptimizationhub` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# cost_optimization_hub = Aws::CostOptimizationHub::Client.new +# resp = cost_optimization_hub.get_preferences(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from Cost Optimization Hub are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::CostOptimizationHub::Errors::ServiceError +# # rescues all Cost Optimization Hub API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::CostOptimizationHub + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client.rb new file mode 100644 index 00000000000..a90d9a0ae30 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client.rb @@ -0,0 +1,1222 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/json_rpc.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:costoptimizationhub) + +module Aws::CostOptimizationHub + # An API client for CostOptimizationHub. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::CostOptimizationHub::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :costoptimizationhub + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::JsonRpc) + add_plugin(Aws::CostOptimizationHub::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :simple_json (false) + # Disables request parameter conversion, validation, and formatting. + # Also disable response data type conversions. This option is useful + # when you want to ensure the highest level of performance by + # avoiding overhead of walking request parameters and response data + # structures. + # + # When `:simple_json` is enabled, the request parameters hash must + # be formatted exactly as the DynamoDB API expects. + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::CostOptimizationHub::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::CostOptimizationHub::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # Returns a set of preferences for an account in order to add + # account-specific preferences into the service. These preferences + # impact how the savings associated with recommendations are + # presented—estimated savings after discounts or estimated savings + # before discounts, for example. + # + # @return [Types::GetPreferencesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetPreferencesResponse#member_account_discount_visibility #member_account_discount_visibility} => String + # * {Types::GetPreferencesResponse#savings_estimation_mode #savings_estimation_mode} => String + # + # @example Response structure + # + # resp.member_account_discount_visibility #=> String, one of "All", "None" + # resp.savings_estimation_mode #=> String, one of "BeforeDiscounts", "AfterDiscounts" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetPreferences AWS API Documentation + # + # @overload get_preferences(params = {}) + # @param [Hash] params ({}) + def get_preferences(params = {}, options = {}) + req = build_request(:get_preferences, params) + req.send_request(options) + end + + # Returns both the current and recommended resource configuration and + # the estimated cost impact for a recommendation. + # + # The `recommendationId` is only valid for up to a maximum of 24 hours + # as recommendations are refreshed daily. To retrieve the + # `recommendationId`, use the `ListRecommendations` API. + # + # @option params [required, String] :recommendation_id + # The ID for the recommendation. + # + # @return [Types::GetRecommendationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetRecommendationResponse#account_id #account_id} => String + # * {Types::GetRecommendationResponse#action_type #action_type} => String + # * {Types::GetRecommendationResponse#cost_calculation_lookback_period_in_days #cost_calculation_lookback_period_in_days} => Integer + # * {Types::GetRecommendationResponse#currency_code #currency_code} => String + # * {Types::GetRecommendationResponse#current_resource_details #current_resource_details} => Types::ResourceDetails + # * {Types::GetRecommendationResponse#current_resource_type #current_resource_type} => String + # * {Types::GetRecommendationResponse#estimated_monthly_cost #estimated_monthly_cost} => Float + # * {Types::GetRecommendationResponse#estimated_monthly_savings #estimated_monthly_savings} => Float + # * {Types::GetRecommendationResponse#estimated_savings_over_cost_calculation_lookback_period #estimated_savings_over_cost_calculation_lookback_period} => Float + # * {Types::GetRecommendationResponse#estimated_savings_percentage #estimated_savings_percentage} => Float + # * {Types::GetRecommendationResponse#implementation_effort #implementation_effort} => String + # * {Types::GetRecommendationResponse#last_refresh_timestamp #last_refresh_timestamp} => Time + # * {Types::GetRecommendationResponse#recommendation_id #recommendation_id} => String + # * {Types::GetRecommendationResponse#recommendation_lookback_period_in_days #recommendation_lookback_period_in_days} => Integer + # * {Types::GetRecommendationResponse#recommended_resource_details #recommended_resource_details} => Types::ResourceDetails + # * {Types::GetRecommendationResponse#recommended_resource_type #recommended_resource_type} => String + # * {Types::GetRecommendationResponse#region #region} => String + # * {Types::GetRecommendationResponse#resource_arn #resource_arn} => String + # * {Types::GetRecommendationResponse#resource_id #resource_id} => String + # * {Types::GetRecommendationResponse#restart_needed #restart_needed} => Boolean + # * {Types::GetRecommendationResponse#rollback_possible #rollback_possible} => Boolean + # * {Types::GetRecommendationResponse#source #source} => String + # * {Types::GetRecommendationResponse#tags #tags} => Array<Types::Tag> + # + # @example Request syntax with placeholder values + # + # resp = client.get_recommendation({ + # recommendation_id: "String", # required + # }) + # + # @example Response structure + # + # resp.account_id #=> String + # resp.action_type #=> String, one of "Rightsize", "Stop", "Upgrade", "PurchaseSavingsPlans", "PurchaseReservedInstances", "MigrateToGraviton" + # resp.cost_calculation_lookback_period_in_days #=> Integer + # resp.currency_code #=> String + # resp.current_resource_details.compute_savings_plans.configuration.account_scope #=> String + # resp.current_resource_details.compute_savings_plans.configuration.hourly_commitment #=> String + # resp.current_resource_details.compute_savings_plans.configuration.payment_option #=> String + # resp.current_resource_details.compute_savings_plans.configuration.term #=> String + # resp.current_resource_details.compute_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.current_resource_details.compute_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.compute_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.current_resource_details.compute_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.ebs_volume.configuration.attachment_state #=> String + # resp.current_resource_details.ebs_volume.configuration.performance.iops #=> Float + # resp.current_resource_details.ebs_volume.configuration.performance.throughput #=> Float + # resp.current_resource_details.ebs_volume.configuration.storage.size_in_gb #=> Float + # resp.current_resource_details.ebs_volume.configuration.storage.type #=> String + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.usages #=> Array + # resp.current_resource_details.ebs_volume.cost_calculation.usages[0].operation #=> String + # resp.current_resource_details.ebs_volume.cost_calculation.usages[0].product_code #=> String + # resp.current_resource_details.ebs_volume.cost_calculation.usages[0].unit #=> String + # resp.current_resource_details.ebs_volume.cost_calculation.usages[0].usage_amount #=> Float + # resp.current_resource_details.ebs_volume.cost_calculation.usages[0].usage_type #=> String + # resp.current_resource_details.ec2_auto_scaling_group.configuration.instance.type #=> String + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages #=> Array + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].operation #=> String + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].product_code #=> String + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].unit #=> String + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].usage_amount #=> Float + # resp.current_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].usage_type #=> String + # resp.current_resource_details.ec2_instance.configuration.instance.type #=> String + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.usages #=> Array + # resp.current_resource_details.ec2_instance.cost_calculation.usages[0].operation #=> String + # resp.current_resource_details.ec2_instance.cost_calculation.usages[0].product_code #=> String + # resp.current_resource_details.ec2_instance.cost_calculation.usages[0].unit #=> String + # resp.current_resource_details.ec2_instance.cost_calculation.usages[0].usage_amount #=> Float + # resp.current_resource_details.ec2_instance.cost_calculation.usages[0].usage_type #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.account_scope #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.hourly_commitment #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.instance_family #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.payment_option #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.savings_plans_region #=> String + # resp.current_resource_details.ec2_instance_savings_plans.configuration.term #=> String + # resp.current_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.current_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.current_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.ec2_reserved_instances.configuration.account_scope #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.current_generation #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.instance_family #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.instance_type #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.offering_class #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.payment_option #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.platform #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.reserved_instances_region #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.service #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.current_resource_details.ec2_reserved_instances.configuration.tenancy #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.term #=> String + # resp.current_resource_details.ec2_reserved_instances.configuration.upfront_cost #=> String + # resp.current_resource_details.ec2_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.current_resource_details.ec2_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.ec2_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.current_resource_details.ec2_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.ecs_service.configuration.compute.architecture #=> String + # resp.current_resource_details.ecs_service.configuration.compute.memory_size_in_mb #=> Integer + # resp.current_resource_details.ecs_service.configuration.compute.platform #=> String + # resp.current_resource_details.ecs_service.configuration.compute.v_cpu #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.usages #=> Array + # resp.current_resource_details.ecs_service.cost_calculation.usages[0].operation #=> String + # resp.current_resource_details.ecs_service.cost_calculation.usages[0].product_code #=> String + # resp.current_resource_details.ecs_service.cost_calculation.usages[0].unit #=> String + # resp.current_resource_details.ecs_service.cost_calculation.usages[0].usage_amount #=> Float + # resp.current_resource_details.ecs_service.cost_calculation.usages[0].usage_type #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.account_scope #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.current_generation #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.instance_family #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.instance_type #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.payment_option #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.reserved_instances_region #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.service #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.term #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.configuration.upfront_cost #=> String + # resp.current_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.current_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.current_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.lambda_function.configuration.compute.architecture #=> String + # resp.current_resource_details.lambda_function.configuration.compute.memory_size_in_mb #=> Integer + # resp.current_resource_details.lambda_function.configuration.compute.platform #=> String + # resp.current_resource_details.lambda_function.configuration.compute.v_cpu #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.usages #=> Array + # resp.current_resource_details.lambda_function.cost_calculation.usages[0].operation #=> String + # resp.current_resource_details.lambda_function.cost_calculation.usages[0].product_code #=> String + # resp.current_resource_details.lambda_function.cost_calculation.usages[0].unit #=> String + # resp.current_resource_details.lambda_function.cost_calculation.usages[0].usage_amount #=> Float + # resp.current_resource_details.lambda_function.cost_calculation.usages[0].usage_type #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.account_scope #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.current_generation #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.instance_type #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.payment_option #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.reserved_instances_region #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.service #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.current_resource_details.open_search_reserved_instances.configuration.term #=> String + # resp.current_resource_details.open_search_reserved_instances.configuration.upfront_cost #=> String + # resp.current_resource_details.open_search_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.current_resource_details.open_search_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.open_search_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.current_resource_details.open_search_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.rds_reserved_instances.configuration.account_scope #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.current_generation #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.database_edition #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.database_engine #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.deployment_option #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.instance_family #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.instance_type #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.license_model #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.payment_option #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.reserved_instances_region #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.service #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.current_resource_details.rds_reserved_instances.configuration.term #=> String + # resp.current_resource_details.rds_reserved_instances.configuration.upfront_cost #=> String + # resp.current_resource_details.rds_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.current_resource_details.rds_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.rds_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.current_resource_details.rds_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.redshift_reserved_instances.configuration.account_scope #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.current_generation #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.instance_family #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.instance_type #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.payment_option #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.reserved_instances_region #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.service #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.current_resource_details.redshift_reserved_instances.configuration.term #=> String + # resp.current_resource_details.redshift_reserved_instances.configuration.upfront_cost #=> String + # resp.current_resource_details.redshift_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.current_resource_details.redshift_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.redshift_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.current_resource_details.redshift_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_details.sage_maker_savings_plans.configuration.account_scope #=> String + # resp.current_resource_details.sage_maker_savings_plans.configuration.hourly_commitment #=> String + # resp.current_resource_details.sage_maker_savings_plans.configuration.payment_option #=> String + # resp.current_resource_details.sage_maker_savings_plans.configuration.term #=> String + # resp.current_resource_details.sage_maker_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.current_resource_details.sage_maker_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.current_resource_details.sage_maker_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.current_resource_details.sage_maker_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.current_resource_type #=> String, one of "Ec2Instance", "LambdaFunction", "EbsVolume", "EcsService", "Ec2AutoScalingGroup", "Ec2InstanceSavingsPlans", "ComputeSavingsPlans", "SageMakerSavingsPlans", "Ec2ReservedInstances", "RdsReservedInstances", "OpenSearchReservedInstances", "RedshiftReservedInstances", "ElastiCacheReservedInstances" + # resp.estimated_monthly_cost #=> Float + # resp.estimated_monthly_savings #=> Float + # resp.estimated_savings_over_cost_calculation_lookback_period #=> Float + # resp.estimated_savings_percentage #=> Float + # resp.implementation_effort #=> String, one of "VeryLow", "Low", "Medium", "High", "VeryHigh" + # resp.last_refresh_timestamp #=> Time + # resp.recommendation_id #=> String + # resp.recommendation_lookback_period_in_days #=> Integer + # resp.recommended_resource_details.compute_savings_plans.configuration.account_scope #=> String + # resp.recommended_resource_details.compute_savings_plans.configuration.hourly_commitment #=> String + # resp.recommended_resource_details.compute_savings_plans.configuration.payment_option #=> String + # resp.recommended_resource_details.compute_savings_plans.configuration.term #=> String + # resp.recommended_resource_details.compute_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.recommended_resource_details.compute_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.compute_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.recommended_resource_details.compute_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.ebs_volume.configuration.attachment_state #=> String + # resp.recommended_resource_details.ebs_volume.configuration.performance.iops #=> Float + # resp.recommended_resource_details.ebs_volume.configuration.performance.throughput #=> Float + # resp.recommended_resource_details.ebs_volume.configuration.storage.size_in_gb #=> Float + # resp.recommended_resource_details.ebs_volume.configuration.storage.type #=> String + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages #=> Array + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages[0].operation #=> String + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages[0].product_code #=> String + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages[0].unit #=> String + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages[0].usage_amount #=> Float + # resp.recommended_resource_details.ebs_volume.cost_calculation.usages[0].usage_type #=> String + # resp.recommended_resource_details.ec2_auto_scaling_group.configuration.instance.type #=> String + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages #=> Array + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].operation #=> String + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].product_code #=> String + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].unit #=> String + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].usage_amount #=> Float + # resp.recommended_resource_details.ec2_auto_scaling_group.cost_calculation.usages[0].usage_type #=> String + # resp.recommended_resource_details.ec2_instance.configuration.instance.type #=> String + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages #=> Array + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages[0].operation #=> String + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages[0].product_code #=> String + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages[0].unit #=> String + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages[0].usage_amount #=> Float + # resp.recommended_resource_details.ec2_instance.cost_calculation.usages[0].usage_type #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.account_scope #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.hourly_commitment #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.instance_family #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.payment_option #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.savings_plans_region #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.configuration.term #=> String + # resp.recommended_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.recommended_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.recommended_resource_details.ec2_instance_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.ec2_reserved_instances.configuration.account_scope #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.current_generation #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.instance_family #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.instance_type #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.offering_class #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.payment_option #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.platform #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.reserved_instances_region #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.service #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.recommended_resource_details.ec2_reserved_instances.configuration.tenancy #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.term #=> String + # resp.recommended_resource_details.ec2_reserved_instances.configuration.upfront_cost #=> String + # resp.recommended_resource_details.ec2_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.recommended_resource_details.ec2_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.ec2_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.recommended_resource_details.ec2_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.ecs_service.configuration.compute.architecture #=> String + # resp.recommended_resource_details.ecs_service.configuration.compute.memory_size_in_mb #=> Integer + # resp.recommended_resource_details.ecs_service.configuration.compute.platform #=> String + # resp.recommended_resource_details.ecs_service.configuration.compute.v_cpu #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.usages #=> Array + # resp.recommended_resource_details.ecs_service.cost_calculation.usages[0].operation #=> String + # resp.recommended_resource_details.ecs_service.cost_calculation.usages[0].product_code #=> String + # resp.recommended_resource_details.ecs_service.cost_calculation.usages[0].unit #=> String + # resp.recommended_resource_details.ecs_service.cost_calculation.usages[0].usage_amount #=> Float + # resp.recommended_resource_details.ecs_service.cost_calculation.usages[0].usage_type #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.account_scope #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.current_generation #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.instance_family #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.instance_type #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.payment_option #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.reserved_instances_region #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.service #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.term #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.configuration.upfront_cost #=> String + # resp.recommended_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.recommended_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.recommended_resource_details.elasti_cache_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.lambda_function.configuration.compute.architecture #=> String + # resp.recommended_resource_details.lambda_function.configuration.compute.memory_size_in_mb #=> Integer + # resp.recommended_resource_details.lambda_function.configuration.compute.platform #=> String + # resp.recommended_resource_details.lambda_function.configuration.compute.v_cpu #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_cost_after_discounts #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_cost_before_discounts #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.other_discount #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.reserved_instances_discount #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_discounts.savings_plans_discount #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.pricing.estimated_net_unused_amortized_commitments #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.usages #=> Array + # resp.recommended_resource_details.lambda_function.cost_calculation.usages[0].operation #=> String + # resp.recommended_resource_details.lambda_function.cost_calculation.usages[0].product_code #=> String + # resp.recommended_resource_details.lambda_function.cost_calculation.usages[0].unit #=> String + # resp.recommended_resource_details.lambda_function.cost_calculation.usages[0].usage_amount #=> Float + # resp.recommended_resource_details.lambda_function.cost_calculation.usages[0].usage_type #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.account_scope #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.current_generation #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.instance_type #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.payment_option #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.reserved_instances_region #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.service #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.recommended_resource_details.open_search_reserved_instances.configuration.term #=> String + # resp.recommended_resource_details.open_search_reserved_instances.configuration.upfront_cost #=> String + # resp.recommended_resource_details.open_search_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.recommended_resource_details.open_search_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.open_search_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.recommended_resource_details.open_search_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.rds_reserved_instances.configuration.account_scope #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.current_generation #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.database_edition #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.database_engine #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.deployment_option #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.instance_family #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.instance_type #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.license_model #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.payment_option #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.reserved_instances_region #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.service #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.recommended_resource_details.rds_reserved_instances.configuration.term #=> String + # resp.recommended_resource_details.rds_reserved_instances.configuration.upfront_cost #=> String + # resp.recommended_resource_details.rds_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.recommended_resource_details.rds_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.rds_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.recommended_resource_details.rds_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.redshift_reserved_instances.configuration.account_scope #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.current_generation #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.instance_family #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.instance_type #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.monthly_recurring_cost #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.normalized_units_to_purchase #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.number_of_instances_to_purchase #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.payment_option #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.reserved_instances_region #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.service #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.size_flex_eligible #=> Boolean + # resp.recommended_resource_details.redshift_reserved_instances.configuration.term #=> String + # resp.recommended_resource_details.redshift_reserved_instances.configuration.upfront_cost #=> String + # resp.recommended_resource_details.redshift_reserved_instances.cost_calculation.pricing.estimated_monthly_amortized_reservation_cost #=> Float + # resp.recommended_resource_details.redshift_reserved_instances.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.redshift_reserved_instances.cost_calculation.pricing.monthly_reservation_eligible_cost #=> Float + # resp.recommended_resource_details.redshift_reserved_instances.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_details.sage_maker_savings_plans.configuration.account_scope #=> String + # resp.recommended_resource_details.sage_maker_savings_plans.configuration.hourly_commitment #=> String + # resp.recommended_resource_details.sage_maker_savings_plans.configuration.payment_option #=> String + # resp.recommended_resource_details.sage_maker_savings_plans.configuration.term #=> String + # resp.recommended_resource_details.sage_maker_savings_plans.cost_calculation.pricing.estimated_monthly_commitment #=> Float + # resp.recommended_resource_details.sage_maker_savings_plans.cost_calculation.pricing.estimated_on_demand_cost #=> Float + # resp.recommended_resource_details.sage_maker_savings_plans.cost_calculation.pricing.monthly_savings_plans_eligible_cost #=> Float + # resp.recommended_resource_details.sage_maker_savings_plans.cost_calculation.pricing.savings_percentage #=> Float + # resp.recommended_resource_type #=> String, one of "Ec2Instance", "LambdaFunction", "EbsVolume", "EcsService", "Ec2AutoScalingGroup", "Ec2InstanceSavingsPlans", "ComputeSavingsPlans", "SageMakerSavingsPlans", "Ec2ReservedInstances", "RdsReservedInstances", "OpenSearchReservedInstances", "RedshiftReservedInstances", "ElastiCacheReservedInstances" + # resp.region #=> String + # resp.resource_arn #=> String + # resp.resource_id #=> String + # resp.restart_needed #=> Boolean + # resp.rollback_possible #=> Boolean + # resp.source #=> String, one of "ComputeOptimizer", "CostExplorer" + # resp.tags #=> Array + # resp.tags[0].key #=> String + # resp.tags[0].value #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetRecommendation AWS API Documentation + # + # @overload get_recommendation(params = {}) + # @param [Hash] params ({}) + def get_recommendation(params = {}, options = {}) + req = build_request(:get_recommendation, params) + req.send_request(options) + end + + # Retrieves the enrollment status for an account. It can also return the + # list of accounts that are enrolled under the organization. + # + # @option params [String] :account_id + # The enrollment status of a specific account ID in the organization. + # + # @option params [Boolean] :include_organization_info + # Indicates whether to return the enrollment status for the + # organization. + # + # @option params [Integer] :max_results + # The maximum number of objects that are returned for the request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @return [Types::ListEnrollmentStatusesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListEnrollmentStatusesResponse#items #items} => Array<Types::AccountEnrollmentStatus> + # * {Types::ListEnrollmentStatusesResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_enrollment_statuses({ + # account_id: "AccountId", + # include_organization_info: false, + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.items #=> Array + # resp.items[0].account_id #=> String + # resp.items[0].created_timestamp #=> Time + # resp.items[0].last_updated_timestamp #=> Time + # resp.items[0].status #=> String, one of "Active", "Inactive" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListEnrollmentStatuses AWS API Documentation + # + # @overload list_enrollment_statuses(params = {}) + # @param [Hash] params ({}) + def list_enrollment_statuses(params = {}, options = {}) + req = build_request(:list_enrollment_statuses, params) + req.send_request(options) + end + + # Returns a concise representation of savings estimates for resources. + # Also returns de-duped savings across different types of + # recommendations. + # + # The following filters are not supported for this API: + # `recommendationIds`, `resourceArns`, and `resourceIds`. + # + # + # + # @option params [Types::Filter] :filter + # Describes a filter that returns a more specific list of + # recommendations. Filters recommendations by different dimensions. + # + # @option params [required, String] :group_by + # The grouping of recommendations by a dimension. + # + # @option params [Integer] :max_results + # The maximum number of recommendations that are returned for the + # request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @return [Types::ListRecommendationSummariesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListRecommendationSummariesResponse#currency_code #currency_code} => String + # * {Types::ListRecommendationSummariesResponse#estimated_total_deduped_savings #estimated_total_deduped_savings} => Float + # * {Types::ListRecommendationSummariesResponse#group_by #data.group_by} => String (This method conflicts with a method on Response, call it through the data member) + # * {Types::ListRecommendationSummariesResponse#items #items} => Array<Types::RecommendationSummary> + # * {Types::ListRecommendationSummariesResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_recommendation_summaries({ + # filter: { + # account_ids: ["AccountId"], + # action_types: ["Rightsize"], # accepts Rightsize, Stop, Upgrade, PurchaseSavingsPlans, PurchaseReservedInstances, MigrateToGraviton + # implementation_efforts: ["VeryLow"], # accepts VeryLow, Low, Medium, High, VeryHigh + # recommendation_ids: ["String"], + # regions: ["String"], + # resource_arns: ["String"], + # resource_ids: ["String"], + # resource_types: ["Ec2Instance"], # accepts Ec2Instance, LambdaFunction, EbsVolume, EcsService, Ec2AutoScalingGroup, Ec2InstanceSavingsPlans, ComputeSavingsPlans, SageMakerSavingsPlans, Ec2ReservedInstances, RdsReservedInstances, OpenSearchReservedInstances, RedshiftReservedInstances, ElastiCacheReservedInstances + # restart_needed: false, + # rollback_possible: false, + # tags: [ + # { + # key: "String", + # value: "String", + # }, + # ], + # }, + # group_by: "String", # required + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.currency_code #=> String + # resp.estimated_total_deduped_savings #=> Float + # resp.data.group_by #=> String + # resp.items #=> Array + # resp.items[0].estimated_monthly_savings #=> Float + # resp.items[0].group #=> String + # resp.items[0].recommendation_count #=> Integer + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendationSummaries AWS API Documentation + # + # @overload list_recommendation_summaries(params = {}) + # @param [Hash] params ({}) + def list_recommendation_summaries(params = {}, options = {}) + req = build_request(:list_recommendation_summaries, params) + req.send_request(options) + end + + # Returns a list of recommendations. + # + # @option params [Types::Filter] :filter + # The constraints that you want all returned recommendations to match. + # + # @option params [Boolean] :include_all_recommendations + # List of all recommendations for a resource, or a single recommendation + # if de-duped by `resourceId`. + # + # @option params [Integer] :max_results + # The maximum number of recommendations that are returned for the + # request. + # + # @option params [String] :next_token + # The token to retrieve the next set of results. + # + # @option params [Types::OrderBy] :order_by + # The ordering of recommendations by a dimension. + # + # @return [Types::ListRecommendationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListRecommendationsResponse#items #items} => Array<Types::Recommendation> + # * {Types::ListRecommendationsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_recommendations({ + # filter: { + # account_ids: ["AccountId"], + # action_types: ["Rightsize"], # accepts Rightsize, Stop, Upgrade, PurchaseSavingsPlans, PurchaseReservedInstances, MigrateToGraviton + # implementation_efforts: ["VeryLow"], # accepts VeryLow, Low, Medium, High, VeryHigh + # recommendation_ids: ["String"], + # regions: ["String"], + # resource_arns: ["String"], + # resource_ids: ["String"], + # resource_types: ["Ec2Instance"], # accepts Ec2Instance, LambdaFunction, EbsVolume, EcsService, Ec2AutoScalingGroup, Ec2InstanceSavingsPlans, ComputeSavingsPlans, SageMakerSavingsPlans, Ec2ReservedInstances, RdsReservedInstances, OpenSearchReservedInstances, RedshiftReservedInstances, ElastiCacheReservedInstances + # restart_needed: false, + # rollback_possible: false, + # tags: [ + # { + # key: "String", + # value: "String", + # }, + # ], + # }, + # include_all_recommendations: false, + # max_results: 1, + # next_token: "String", + # order_by: { + # dimension: "String", + # order: "Asc", # accepts Asc, Desc + # }, + # }) + # + # @example Response structure + # + # resp.items #=> Array + # resp.items[0].account_id #=> String + # resp.items[0].action_type #=> String + # resp.items[0].currency_code #=> String + # resp.items[0].current_resource_summary #=> String + # resp.items[0].current_resource_type #=> String + # resp.items[0].estimated_monthly_cost #=> Float + # resp.items[0].estimated_monthly_savings #=> Float + # resp.items[0].estimated_savings_percentage #=> Float + # resp.items[0].implementation_effort #=> String + # resp.items[0].last_refresh_timestamp #=> Time + # resp.items[0].recommendation_id #=> String + # resp.items[0].recommendation_lookback_period_in_days #=> Integer + # resp.items[0].recommended_resource_summary #=> String + # resp.items[0].recommended_resource_type #=> String + # resp.items[0].region #=> String + # resp.items[0].resource_arn #=> String + # resp.items[0].resource_id #=> String + # resp.items[0].restart_needed #=> Boolean + # resp.items[0].rollback_possible #=> Boolean + # resp.items[0].source #=> String, one of "ComputeOptimizer", "CostExplorer" + # resp.items[0].tags #=> Array + # resp.items[0].tags[0].key #=> String + # resp.items[0].tags[0].value #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendations AWS API Documentation + # + # @overload list_recommendations(params = {}) + # @param [Hash] params ({}) + def list_recommendations(params = {}, options = {}) + req = build_request(:list_recommendations, params) + req.send_request(options) + end + + # Updates the enrollment (opt in and opt out) status of an account to + # the Cost Optimization Hub service. + # + # If the account is a management account of an organization, this action + # can also be used to enroll member accounts of the organization. + # + # You must have the appropriate permissions to opt in to Cost + # Optimization Hub and to view its recommendations. When you opt in, + # Cost Optimization Hub automatically creates a service-linked role in + # your account to access its data. + # + # @option params [Boolean] :include_member_accounts + # Indicates whether to enroll member accounts of the organization if the + # account is the management account. + # + # @option params [required, String] :status + # Sets the account status. + # + # @return [Types::UpdateEnrollmentStatusResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateEnrollmentStatusResponse#status #status} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_enrollment_status({ + # include_member_accounts: false, + # status: "Active", # required, accepts Active, Inactive + # }) + # + # @example Response structure + # + # resp.status #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdateEnrollmentStatus AWS API Documentation + # + # @overload update_enrollment_status(params = {}) + # @param [Hash] params ({}) + def update_enrollment_status(params = {}, options = {}) + req = build_request(:update_enrollment_status, params) + req.send_request(options) + end + + # Updates a set of preferences for an account in order to add + # account-specific preferences into the service. These preferences + # impact how the savings associated with recommendations are presented. + # + # @option params [String] :member_account_discount_visibility + # Sets the "member account discount visibility" preference. + # + # @option params [String] :savings_estimation_mode + # Sets the "savings estimation mode" preference. + # + # @return [Types::UpdatePreferencesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdatePreferencesResponse#member_account_discount_visibility #member_account_discount_visibility} => String + # * {Types::UpdatePreferencesResponse#savings_estimation_mode #savings_estimation_mode} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_preferences({ + # member_account_discount_visibility: "All", # accepts All, None + # savings_estimation_mode: "BeforeDiscounts", # accepts BeforeDiscounts, AfterDiscounts + # }) + # + # @example Response structure + # + # resp.member_account_discount_visibility #=> String, one of "All", "None" + # resp.savings_estimation_mode #=> String, one of "BeforeDiscounts", "AfterDiscounts" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdatePreferences AWS API Documentation + # + # @overload update_preferences(params = {}) + # @param [Hash] params ({}) + def update_preferences(params = {}, options = {}) + req = build_request(:update_preferences, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-costoptimizationhub' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client_api.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client_api.rb new file mode 100644 index 00000000000..cb29ed34b71 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/client_api.rb @@ -0,0 +1,685 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + # @api private + module ClientApi + + include Seahorse::Model + + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') + AccountEnrollmentStatus = Shapes::StructureShape.new(name: 'AccountEnrollmentStatus') + AccountEnrollmentStatuses = Shapes::ListShape.new(name: 'AccountEnrollmentStatuses') + AccountId = Shapes::StringShape.new(name: 'AccountId') + AccountIdList = Shapes::ListShape.new(name: 'AccountIdList') + ActionType = Shapes::StringShape.new(name: 'ActionType') + ActionTypeList = Shapes::ListShape.new(name: 'ActionTypeList') + BlockStoragePerformanceConfiguration = Shapes::StructureShape.new(name: 'BlockStoragePerformanceConfiguration') + Boolean = Shapes::BooleanShape.new(name: 'Boolean') + ComputeConfiguration = Shapes::StructureShape.new(name: 'ComputeConfiguration') + ComputeSavingsPlans = Shapes::StructureShape.new(name: 'ComputeSavingsPlans') + ComputeSavingsPlansConfiguration = Shapes::StructureShape.new(name: 'ComputeSavingsPlansConfiguration') + Datetime = Shapes::TimestampShape.new(name: 'Datetime') + Double = Shapes::FloatShape.new(name: 'Double') + EbsVolume = Shapes::StructureShape.new(name: 'EbsVolume') + EbsVolumeConfiguration = Shapes::StructureShape.new(name: 'EbsVolumeConfiguration') + Ec2AutoScalingGroup = Shapes::StructureShape.new(name: 'Ec2AutoScalingGroup') + Ec2AutoScalingGroupConfiguration = Shapes::StructureShape.new(name: 'Ec2AutoScalingGroupConfiguration') + Ec2Instance = Shapes::StructureShape.new(name: 'Ec2Instance') + Ec2InstanceConfiguration = Shapes::StructureShape.new(name: 'Ec2InstanceConfiguration') + Ec2InstanceSavingsPlans = Shapes::StructureShape.new(name: 'Ec2InstanceSavingsPlans') + Ec2InstanceSavingsPlansConfiguration = Shapes::StructureShape.new(name: 'Ec2InstanceSavingsPlansConfiguration') + Ec2ReservedInstances = Shapes::StructureShape.new(name: 'Ec2ReservedInstances') + Ec2ReservedInstancesConfiguration = Shapes::StructureShape.new(name: 'Ec2ReservedInstancesConfiguration') + EcsService = Shapes::StructureShape.new(name: 'EcsService') + EcsServiceConfiguration = Shapes::StructureShape.new(name: 'EcsServiceConfiguration') + ElastiCacheReservedInstances = Shapes::StructureShape.new(name: 'ElastiCacheReservedInstances') + ElastiCacheReservedInstancesConfiguration = Shapes::StructureShape.new(name: 'ElastiCacheReservedInstancesConfiguration') + EnrollmentStatus = Shapes::StringShape.new(name: 'EnrollmentStatus') + EstimatedDiscounts = Shapes::StructureShape.new(name: 'EstimatedDiscounts') + Filter = Shapes::StructureShape.new(name: 'Filter') + GetPreferencesRequest = Shapes::StructureShape.new(name: 'GetPreferencesRequest') + GetPreferencesResponse = Shapes::StructureShape.new(name: 'GetPreferencesResponse') + GetRecommendationRequest = Shapes::StructureShape.new(name: 'GetRecommendationRequest') + GetRecommendationResponse = Shapes::StructureShape.new(name: 'GetRecommendationResponse') + ImplementationEffort = Shapes::StringShape.new(name: 'ImplementationEffort') + ImplementationEffortList = Shapes::ListShape.new(name: 'ImplementationEffortList') + InstanceConfiguration = Shapes::StructureShape.new(name: 'InstanceConfiguration') + Integer = Shapes::IntegerShape.new(name: 'Integer') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + LambdaFunction = Shapes::StructureShape.new(name: 'LambdaFunction') + LambdaFunctionConfiguration = Shapes::StructureShape.new(name: 'LambdaFunctionConfiguration') + ListEnrollmentStatusesRequest = Shapes::StructureShape.new(name: 'ListEnrollmentStatusesRequest') + ListEnrollmentStatusesResponse = Shapes::StructureShape.new(name: 'ListEnrollmentStatusesResponse') + ListRecommendationSummariesRequest = Shapes::StructureShape.new(name: 'ListRecommendationSummariesRequest') + ListRecommendationSummariesRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListRecommendationSummariesRequestMaxResultsInteger') + ListRecommendationSummariesResponse = Shapes::StructureShape.new(name: 'ListRecommendationSummariesResponse') + ListRecommendationsRequest = Shapes::StructureShape.new(name: 'ListRecommendationsRequest') + ListRecommendationsRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListRecommendationsRequestMaxResultsInteger') + ListRecommendationsResponse = Shapes::StructureShape.new(name: 'ListRecommendationsResponse') + MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') + MemberAccountDiscountVisibility = Shapes::StringShape.new(name: 'MemberAccountDiscountVisibility') + OpenSearchReservedInstances = Shapes::StructureShape.new(name: 'OpenSearchReservedInstances') + OpenSearchReservedInstancesConfiguration = Shapes::StructureShape.new(name: 'OpenSearchReservedInstancesConfiguration') + Order = Shapes::StringShape.new(name: 'Order') + OrderBy = Shapes::StructureShape.new(name: 'OrderBy') + PrimitiveBoolean = Shapes::BooleanShape.new(name: 'PrimitiveBoolean') + RdsReservedInstances = Shapes::StructureShape.new(name: 'RdsReservedInstances') + RdsReservedInstancesConfiguration = Shapes::StructureShape.new(name: 'RdsReservedInstancesConfiguration') + Recommendation = Shapes::StructureShape.new(name: 'Recommendation') + RecommendationIdList = Shapes::ListShape.new(name: 'RecommendationIdList') + RecommendationList = Shapes::ListShape.new(name: 'RecommendationList') + RecommendationSummariesList = Shapes::ListShape.new(name: 'RecommendationSummariesList') + RecommendationSummary = Shapes::StructureShape.new(name: 'RecommendationSummary') + RedshiftReservedInstances = Shapes::StructureShape.new(name: 'RedshiftReservedInstances') + RedshiftReservedInstancesConfiguration = Shapes::StructureShape.new(name: 'RedshiftReservedInstancesConfiguration') + RegionList = Shapes::ListShape.new(name: 'RegionList') + ReservedInstancesCostCalculation = Shapes::StructureShape.new(name: 'ReservedInstancesCostCalculation') + ReservedInstancesPricing = Shapes::StructureShape.new(name: 'ReservedInstancesPricing') + ResourceArnList = Shapes::ListShape.new(name: 'ResourceArnList') + ResourceCostCalculation = Shapes::StructureShape.new(name: 'ResourceCostCalculation') + ResourceDetails = Shapes::UnionShape.new(name: 'ResourceDetails') + ResourceIdList = Shapes::ListShape.new(name: 'ResourceIdList') + ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + ResourcePricing = Shapes::StructureShape.new(name: 'ResourcePricing') + ResourceType = Shapes::StringShape.new(name: 'ResourceType') + ResourceTypeList = Shapes::ListShape.new(name: 'ResourceTypeList') + SageMakerSavingsPlans = Shapes::StructureShape.new(name: 'SageMakerSavingsPlans') + SageMakerSavingsPlansConfiguration = Shapes::StructureShape.new(name: 'SageMakerSavingsPlansConfiguration') + SavingsEstimationMode = Shapes::StringShape.new(name: 'SavingsEstimationMode') + SavingsPlansCostCalculation = Shapes::StructureShape.new(name: 'SavingsPlansCostCalculation') + SavingsPlansPricing = Shapes::StructureShape.new(name: 'SavingsPlansPricing') + Source = Shapes::StringShape.new(name: 'Source') + StorageConfiguration = Shapes::StructureShape.new(name: 'StorageConfiguration') + String = Shapes::StringShape.new(name: 'String') + Tag = Shapes::StructureShape.new(name: 'Tag') + TagList = Shapes::ListShape.new(name: 'TagList') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') + UpdateEnrollmentStatusRequest = Shapes::StructureShape.new(name: 'UpdateEnrollmentStatusRequest') + UpdateEnrollmentStatusResponse = Shapes::StructureShape.new(name: 'UpdateEnrollmentStatusResponse') + UpdatePreferencesRequest = Shapes::StructureShape.new(name: 'UpdatePreferencesRequest') + UpdatePreferencesResponse = Shapes::StructureShape.new(name: 'UpdatePreferencesResponse') + Usage = Shapes::StructureShape.new(name: 'Usage') + UsageList = Shapes::ListShape.new(name: 'UsageList') + ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + ValidationExceptionDetail = Shapes::StructureShape.new(name: 'ValidationExceptionDetail') + ValidationExceptionDetails = Shapes::ListShape.new(name: 'ValidationExceptionDetails') + ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason') + + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + AccessDeniedException.struct_class = Types::AccessDeniedException + + AccountEnrollmentStatus.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId")) + AccountEnrollmentStatus.add_member(:created_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdTimestamp")) + AccountEnrollmentStatus.add_member(:last_updated_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedTimestamp")) + AccountEnrollmentStatus.add_member(:status, Shapes::ShapeRef.new(shape: EnrollmentStatus, location_name: "status")) + AccountEnrollmentStatus.struct_class = Types::AccountEnrollmentStatus + + AccountEnrollmentStatuses.member = Shapes::ShapeRef.new(shape: AccountEnrollmentStatus) + + AccountIdList.member = Shapes::ShapeRef.new(shape: AccountId) + + ActionTypeList.member = Shapes::ShapeRef.new(shape: ActionType) + + BlockStoragePerformanceConfiguration.add_member(:iops, Shapes::ShapeRef.new(shape: Double, location_name: "iops")) + BlockStoragePerformanceConfiguration.add_member(:throughput, Shapes::ShapeRef.new(shape: Double, location_name: "throughput")) + BlockStoragePerformanceConfiguration.struct_class = Types::BlockStoragePerformanceConfiguration + + ComputeConfiguration.add_member(:architecture, Shapes::ShapeRef.new(shape: String, location_name: "architecture")) + ComputeConfiguration.add_member(:memory_size_in_mb, Shapes::ShapeRef.new(shape: Integer, location_name: "memorySizeInMB")) + ComputeConfiguration.add_member(:platform, Shapes::ShapeRef.new(shape: String, location_name: "platform")) + ComputeConfiguration.add_member(:v_cpu, Shapes::ShapeRef.new(shape: Double, location_name: "vCpu")) + ComputeConfiguration.struct_class = Types::ComputeConfiguration + + ComputeSavingsPlans.add_member(:configuration, Shapes::ShapeRef.new(shape: ComputeSavingsPlansConfiguration, location_name: "configuration")) + ComputeSavingsPlans.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: SavingsPlansCostCalculation, location_name: "costCalculation")) + ComputeSavingsPlans.struct_class = Types::ComputeSavingsPlans + + ComputeSavingsPlansConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + ComputeSavingsPlansConfiguration.add_member(:hourly_commitment, Shapes::ShapeRef.new(shape: String, location_name: "hourlyCommitment")) + ComputeSavingsPlansConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + ComputeSavingsPlansConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + ComputeSavingsPlansConfiguration.struct_class = Types::ComputeSavingsPlansConfiguration + + EbsVolume.add_member(:configuration, Shapes::ShapeRef.new(shape: EbsVolumeConfiguration, location_name: "configuration")) + EbsVolume.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ResourceCostCalculation, location_name: "costCalculation")) + EbsVolume.struct_class = Types::EbsVolume + + EbsVolumeConfiguration.add_member(:attachment_state, Shapes::ShapeRef.new(shape: String, location_name: "attachmentState")) + EbsVolumeConfiguration.add_member(:performance, Shapes::ShapeRef.new(shape: BlockStoragePerformanceConfiguration, location_name: "performance")) + EbsVolumeConfiguration.add_member(:storage, Shapes::ShapeRef.new(shape: StorageConfiguration, location_name: "storage")) + EbsVolumeConfiguration.struct_class = Types::EbsVolumeConfiguration + + Ec2AutoScalingGroup.add_member(:configuration, Shapes::ShapeRef.new(shape: Ec2AutoScalingGroupConfiguration, location_name: "configuration")) + Ec2AutoScalingGroup.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ResourceCostCalculation, location_name: "costCalculation")) + Ec2AutoScalingGroup.struct_class = Types::Ec2AutoScalingGroup + + Ec2AutoScalingGroupConfiguration.add_member(:instance, Shapes::ShapeRef.new(shape: InstanceConfiguration, location_name: "instance")) + Ec2AutoScalingGroupConfiguration.struct_class = Types::Ec2AutoScalingGroupConfiguration + + Ec2Instance.add_member(:configuration, Shapes::ShapeRef.new(shape: Ec2InstanceConfiguration, location_name: "configuration")) + Ec2Instance.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ResourceCostCalculation, location_name: "costCalculation")) + Ec2Instance.struct_class = Types::Ec2Instance + + Ec2InstanceConfiguration.add_member(:instance, Shapes::ShapeRef.new(shape: InstanceConfiguration, location_name: "instance")) + Ec2InstanceConfiguration.struct_class = Types::Ec2InstanceConfiguration + + Ec2InstanceSavingsPlans.add_member(:configuration, Shapes::ShapeRef.new(shape: Ec2InstanceSavingsPlansConfiguration, location_name: "configuration")) + Ec2InstanceSavingsPlans.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: SavingsPlansCostCalculation, location_name: "costCalculation")) + Ec2InstanceSavingsPlans.struct_class = Types::Ec2InstanceSavingsPlans + + Ec2InstanceSavingsPlansConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + Ec2InstanceSavingsPlansConfiguration.add_member(:hourly_commitment, Shapes::ShapeRef.new(shape: String, location_name: "hourlyCommitment")) + Ec2InstanceSavingsPlansConfiguration.add_member(:instance_family, Shapes::ShapeRef.new(shape: String, location_name: "instanceFamily")) + Ec2InstanceSavingsPlansConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + Ec2InstanceSavingsPlansConfiguration.add_member(:savings_plans_region, Shapes::ShapeRef.new(shape: String, location_name: "savingsPlansRegion")) + Ec2InstanceSavingsPlansConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + Ec2InstanceSavingsPlansConfiguration.struct_class = Types::Ec2InstanceSavingsPlansConfiguration + + Ec2ReservedInstances.add_member(:configuration, Shapes::ShapeRef.new(shape: Ec2ReservedInstancesConfiguration, location_name: "configuration")) + Ec2ReservedInstances.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ReservedInstancesCostCalculation, location_name: "costCalculation")) + Ec2ReservedInstances.struct_class = Types::Ec2ReservedInstances + + Ec2ReservedInstancesConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + Ec2ReservedInstancesConfiguration.add_member(:current_generation, Shapes::ShapeRef.new(shape: String, location_name: "currentGeneration")) + Ec2ReservedInstancesConfiguration.add_member(:instance_family, Shapes::ShapeRef.new(shape: String, location_name: "instanceFamily")) + Ec2ReservedInstancesConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + Ec2ReservedInstancesConfiguration.add_member(:monthly_recurring_cost, Shapes::ShapeRef.new(shape: String, location_name: "monthlyRecurringCost")) + Ec2ReservedInstancesConfiguration.add_member(:normalized_units_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "normalizedUnitsToPurchase")) + Ec2ReservedInstancesConfiguration.add_member(:number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "numberOfInstancesToPurchase")) + Ec2ReservedInstancesConfiguration.add_member(:offering_class, Shapes::ShapeRef.new(shape: String, location_name: "offeringClass")) + Ec2ReservedInstancesConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + Ec2ReservedInstancesConfiguration.add_member(:platform, Shapes::ShapeRef.new(shape: String, location_name: "platform")) + Ec2ReservedInstancesConfiguration.add_member(:reserved_instances_region, Shapes::ShapeRef.new(shape: String, location_name: "reservedInstancesRegion")) + Ec2ReservedInstancesConfiguration.add_member(:service, Shapes::ShapeRef.new(shape: String, location_name: "service")) + Ec2ReservedInstancesConfiguration.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: Boolean, location_name: "sizeFlexEligible")) + Ec2ReservedInstancesConfiguration.add_member(:tenancy, Shapes::ShapeRef.new(shape: String, location_name: "tenancy")) + Ec2ReservedInstancesConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + Ec2ReservedInstancesConfiguration.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: String, location_name: "upfrontCost")) + Ec2ReservedInstancesConfiguration.struct_class = Types::Ec2ReservedInstancesConfiguration + + EcsService.add_member(:configuration, Shapes::ShapeRef.new(shape: EcsServiceConfiguration, location_name: "configuration")) + EcsService.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ResourceCostCalculation, location_name: "costCalculation")) + EcsService.struct_class = Types::EcsService + + EcsServiceConfiguration.add_member(:compute, Shapes::ShapeRef.new(shape: ComputeConfiguration, location_name: "compute")) + EcsServiceConfiguration.struct_class = Types::EcsServiceConfiguration + + ElastiCacheReservedInstances.add_member(:configuration, Shapes::ShapeRef.new(shape: ElastiCacheReservedInstancesConfiguration, location_name: "configuration")) + ElastiCacheReservedInstances.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ReservedInstancesCostCalculation, location_name: "costCalculation")) + ElastiCacheReservedInstances.struct_class = Types::ElastiCacheReservedInstances + + ElastiCacheReservedInstancesConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + ElastiCacheReservedInstancesConfiguration.add_member(:current_generation, Shapes::ShapeRef.new(shape: String, location_name: "currentGeneration")) + ElastiCacheReservedInstancesConfiguration.add_member(:instance_family, Shapes::ShapeRef.new(shape: String, location_name: "instanceFamily")) + ElastiCacheReservedInstancesConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + ElastiCacheReservedInstancesConfiguration.add_member(:monthly_recurring_cost, Shapes::ShapeRef.new(shape: String, location_name: "monthlyRecurringCost")) + ElastiCacheReservedInstancesConfiguration.add_member(:normalized_units_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "normalizedUnitsToPurchase")) + ElastiCacheReservedInstancesConfiguration.add_member(:number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "numberOfInstancesToPurchase")) + ElastiCacheReservedInstancesConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + ElastiCacheReservedInstancesConfiguration.add_member(:reserved_instances_region, Shapes::ShapeRef.new(shape: String, location_name: "reservedInstancesRegion")) + ElastiCacheReservedInstancesConfiguration.add_member(:service, Shapes::ShapeRef.new(shape: String, location_name: "service")) + ElastiCacheReservedInstancesConfiguration.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: Boolean, location_name: "sizeFlexEligible")) + ElastiCacheReservedInstancesConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + ElastiCacheReservedInstancesConfiguration.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: String, location_name: "upfrontCost")) + ElastiCacheReservedInstancesConfiguration.struct_class = Types::ElastiCacheReservedInstancesConfiguration + + EstimatedDiscounts.add_member(:other_discount, Shapes::ShapeRef.new(shape: Double, location_name: "otherDiscount")) + EstimatedDiscounts.add_member(:reserved_instances_discount, Shapes::ShapeRef.new(shape: Double, location_name: "reservedInstancesDiscount")) + EstimatedDiscounts.add_member(:savings_plans_discount, Shapes::ShapeRef.new(shape: Double, location_name: "savingsPlansDiscount")) + EstimatedDiscounts.struct_class = Types::EstimatedDiscounts + + Filter.add_member(:account_ids, Shapes::ShapeRef.new(shape: AccountIdList, location_name: "accountIds")) + Filter.add_member(:action_types, Shapes::ShapeRef.new(shape: ActionTypeList, location_name: "actionTypes")) + Filter.add_member(:implementation_efforts, Shapes::ShapeRef.new(shape: ImplementationEffortList, location_name: "implementationEfforts")) + Filter.add_member(:recommendation_ids, Shapes::ShapeRef.new(shape: RecommendationIdList, location_name: "recommendationIds")) + Filter.add_member(:regions, Shapes::ShapeRef.new(shape: RegionList, location_name: "regions")) + Filter.add_member(:resource_arns, Shapes::ShapeRef.new(shape: ResourceArnList, location_name: "resourceArns")) + Filter.add_member(:resource_ids, Shapes::ShapeRef.new(shape: ResourceIdList, location_name: "resourceIds")) + Filter.add_member(:resource_types, Shapes::ShapeRef.new(shape: ResourceTypeList, location_name: "resourceTypes")) + Filter.add_member(:restart_needed, Shapes::ShapeRef.new(shape: Boolean, location_name: "restartNeeded")) + Filter.add_member(:rollback_possible, Shapes::ShapeRef.new(shape: Boolean, location_name: "rollbackPossible")) + Filter.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags")) + Filter.struct_class = Types::Filter + + GetPreferencesRequest.struct_class = Types::GetPreferencesRequest + + GetPreferencesResponse.add_member(:member_account_discount_visibility, Shapes::ShapeRef.new(shape: MemberAccountDiscountVisibility, location_name: "memberAccountDiscountVisibility")) + GetPreferencesResponse.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: SavingsEstimationMode, location_name: "savingsEstimationMode")) + GetPreferencesResponse.struct_class = Types::GetPreferencesResponse + + GetRecommendationRequest.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "recommendationId")) + GetRecommendationRequest.struct_class = Types::GetRecommendationRequest + + GetRecommendationResponse.add_member(:account_id, Shapes::ShapeRef.new(shape: String, location_name: "accountId")) + GetRecommendationResponse.add_member(:action_type, Shapes::ShapeRef.new(shape: ActionType, location_name: "actionType")) + GetRecommendationResponse.add_member(:cost_calculation_lookback_period_in_days, Shapes::ShapeRef.new(shape: Integer, location_name: "costCalculationLookbackPeriodInDays")) + GetRecommendationResponse.add_member(:currency_code, Shapes::ShapeRef.new(shape: String, location_name: "currencyCode")) + GetRecommendationResponse.add_member(:current_resource_details, Shapes::ShapeRef.new(shape: ResourceDetails, location_name: "currentResourceDetails")) + GetRecommendationResponse.add_member(:current_resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "currentResourceType")) + GetRecommendationResponse.add_member(:estimated_monthly_cost, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlyCost")) + GetRecommendationResponse.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlySavings")) + GetRecommendationResponse.add_member(:estimated_savings_over_cost_calculation_lookback_period, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedSavingsOverCostCalculationLookbackPeriod")) + GetRecommendationResponse.add_member(:estimated_savings_percentage, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedSavingsPercentage")) + GetRecommendationResponse.add_member(:implementation_effort, Shapes::ShapeRef.new(shape: ImplementationEffort, location_name: "implementationEffort")) + GetRecommendationResponse.add_member(:last_refresh_timestamp, Shapes::ShapeRef.new(shape: Datetime, location_name: "lastRefreshTimestamp")) + GetRecommendationResponse.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: String, location_name: "recommendationId")) + GetRecommendationResponse.add_member(:recommendation_lookback_period_in_days, Shapes::ShapeRef.new(shape: Integer, location_name: "recommendationLookbackPeriodInDays")) + GetRecommendationResponse.add_member(:recommended_resource_details, Shapes::ShapeRef.new(shape: ResourceDetails, location_name: "recommendedResourceDetails")) + GetRecommendationResponse.add_member(:recommended_resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "recommendedResourceType")) + GetRecommendationResponse.add_member(:region, Shapes::ShapeRef.new(shape: String, location_name: "region")) + GetRecommendationResponse.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, location_name: "resourceArn")) + GetRecommendationResponse.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, location_name: "resourceId")) + GetRecommendationResponse.add_member(:restart_needed, Shapes::ShapeRef.new(shape: Boolean, location_name: "restartNeeded")) + GetRecommendationResponse.add_member(:rollback_possible, Shapes::ShapeRef.new(shape: Boolean, location_name: "rollbackPossible")) + GetRecommendationResponse.add_member(:source, Shapes::ShapeRef.new(shape: Source, location_name: "source")) + GetRecommendationResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags")) + GetRecommendationResponse.struct_class = Types::GetRecommendationResponse + + ImplementationEffortList.member = Shapes::ShapeRef.new(shape: ImplementationEffort) + + InstanceConfiguration.add_member(:type, Shapes::ShapeRef.new(shape: String, location_name: "type")) + InstanceConfiguration.struct_class = Types::InstanceConfiguration + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + InternalServerException.struct_class = Types::InternalServerException + + LambdaFunction.add_member(:configuration, Shapes::ShapeRef.new(shape: LambdaFunctionConfiguration, location_name: "configuration")) + LambdaFunction.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ResourceCostCalculation, location_name: "costCalculation")) + LambdaFunction.struct_class = Types::LambdaFunction + + LambdaFunctionConfiguration.add_member(:compute, Shapes::ShapeRef.new(shape: ComputeConfiguration, location_name: "compute")) + LambdaFunctionConfiguration.struct_class = Types::LambdaFunctionConfiguration + + ListEnrollmentStatusesRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId")) + ListEnrollmentStatusesRequest.add_member(:include_organization_info, Shapes::ShapeRef.new(shape: PrimitiveBoolean, location_name: "includeOrganizationInfo")) + ListEnrollmentStatusesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "maxResults")) + ListEnrollmentStatusesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListEnrollmentStatusesRequest.struct_class = Types::ListEnrollmentStatusesRequest + + ListEnrollmentStatusesResponse.add_member(:items, Shapes::ShapeRef.new(shape: AccountEnrollmentStatuses, location_name: "items")) + ListEnrollmentStatusesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListEnrollmentStatusesResponse.struct_class = Types::ListEnrollmentStatusesResponse + + ListRecommendationSummariesRequest.add_member(:filter, Shapes::ShapeRef.new(shape: Filter, location_name: "filter")) + ListRecommendationSummariesRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: String, required: true, location_name: "groupBy")) + ListRecommendationSummariesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListRecommendationSummariesRequestMaxResultsInteger, location_name: "maxResults")) + ListRecommendationSummariesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListRecommendationSummariesRequest.struct_class = Types::ListRecommendationSummariesRequest + + ListRecommendationSummariesResponse.add_member(:currency_code, Shapes::ShapeRef.new(shape: String, location_name: "currencyCode")) + ListRecommendationSummariesResponse.add_member(:estimated_total_deduped_savings, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedTotalDedupedSavings")) + ListRecommendationSummariesResponse.add_member(:group_by, Shapes::ShapeRef.new(shape: String, location_name: "groupBy")) + ListRecommendationSummariesResponse.add_member(:items, Shapes::ShapeRef.new(shape: RecommendationSummariesList, location_name: "items")) + ListRecommendationSummariesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListRecommendationSummariesResponse.struct_class = Types::ListRecommendationSummariesResponse + + ListRecommendationsRequest.add_member(:filter, Shapes::ShapeRef.new(shape: Filter, location_name: "filter")) + ListRecommendationsRequest.add_member(:include_all_recommendations, Shapes::ShapeRef.new(shape: PrimitiveBoolean, location_name: "includeAllRecommendations")) + ListRecommendationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListRecommendationsRequestMaxResultsInteger, location_name: "maxResults")) + ListRecommendationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListRecommendationsRequest.add_member(:order_by, Shapes::ShapeRef.new(shape: OrderBy, location_name: "orderBy")) + ListRecommendationsRequest.struct_class = Types::ListRecommendationsRequest + + ListRecommendationsResponse.add_member(:items, Shapes::ShapeRef.new(shape: RecommendationList, location_name: "items")) + ListRecommendationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListRecommendationsResponse.struct_class = Types::ListRecommendationsResponse + + OpenSearchReservedInstances.add_member(:configuration, Shapes::ShapeRef.new(shape: OpenSearchReservedInstancesConfiguration, location_name: "configuration")) + OpenSearchReservedInstances.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ReservedInstancesCostCalculation, location_name: "costCalculation")) + OpenSearchReservedInstances.struct_class = Types::OpenSearchReservedInstances + + OpenSearchReservedInstancesConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + OpenSearchReservedInstancesConfiguration.add_member(:current_generation, Shapes::ShapeRef.new(shape: String, location_name: "currentGeneration")) + OpenSearchReservedInstancesConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + OpenSearchReservedInstancesConfiguration.add_member(:monthly_recurring_cost, Shapes::ShapeRef.new(shape: String, location_name: "monthlyRecurringCost")) + OpenSearchReservedInstancesConfiguration.add_member(:normalized_units_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "normalizedUnitsToPurchase")) + OpenSearchReservedInstancesConfiguration.add_member(:number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "numberOfInstancesToPurchase")) + OpenSearchReservedInstancesConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + OpenSearchReservedInstancesConfiguration.add_member(:reserved_instances_region, Shapes::ShapeRef.new(shape: String, location_name: "reservedInstancesRegion")) + OpenSearchReservedInstancesConfiguration.add_member(:service, Shapes::ShapeRef.new(shape: String, location_name: "service")) + OpenSearchReservedInstancesConfiguration.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: Boolean, location_name: "sizeFlexEligible")) + OpenSearchReservedInstancesConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + OpenSearchReservedInstancesConfiguration.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: String, location_name: "upfrontCost")) + OpenSearchReservedInstancesConfiguration.struct_class = Types::OpenSearchReservedInstancesConfiguration + + OrderBy.add_member(:dimension, Shapes::ShapeRef.new(shape: String, location_name: "dimension")) + OrderBy.add_member(:order, Shapes::ShapeRef.new(shape: Order, location_name: "order")) + OrderBy.struct_class = Types::OrderBy + + RdsReservedInstances.add_member(:configuration, Shapes::ShapeRef.new(shape: RdsReservedInstancesConfiguration, location_name: "configuration")) + RdsReservedInstances.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ReservedInstancesCostCalculation, location_name: "costCalculation")) + RdsReservedInstances.struct_class = Types::RdsReservedInstances + + RdsReservedInstancesConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + RdsReservedInstancesConfiguration.add_member(:current_generation, Shapes::ShapeRef.new(shape: String, location_name: "currentGeneration")) + RdsReservedInstancesConfiguration.add_member(:database_edition, Shapes::ShapeRef.new(shape: String, location_name: "databaseEdition")) + RdsReservedInstancesConfiguration.add_member(:database_engine, Shapes::ShapeRef.new(shape: String, location_name: "databaseEngine")) + RdsReservedInstancesConfiguration.add_member(:deployment_option, Shapes::ShapeRef.new(shape: String, location_name: "deploymentOption")) + RdsReservedInstancesConfiguration.add_member(:instance_family, Shapes::ShapeRef.new(shape: String, location_name: "instanceFamily")) + RdsReservedInstancesConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + RdsReservedInstancesConfiguration.add_member(:license_model, Shapes::ShapeRef.new(shape: String, location_name: "licenseModel")) + RdsReservedInstancesConfiguration.add_member(:monthly_recurring_cost, Shapes::ShapeRef.new(shape: String, location_name: "monthlyRecurringCost")) + RdsReservedInstancesConfiguration.add_member(:normalized_units_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "normalizedUnitsToPurchase")) + RdsReservedInstancesConfiguration.add_member(:number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "numberOfInstancesToPurchase")) + RdsReservedInstancesConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + RdsReservedInstancesConfiguration.add_member(:reserved_instances_region, Shapes::ShapeRef.new(shape: String, location_name: "reservedInstancesRegion")) + RdsReservedInstancesConfiguration.add_member(:service, Shapes::ShapeRef.new(shape: String, location_name: "service")) + RdsReservedInstancesConfiguration.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: Boolean, location_name: "sizeFlexEligible")) + RdsReservedInstancesConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + RdsReservedInstancesConfiguration.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: String, location_name: "upfrontCost")) + RdsReservedInstancesConfiguration.struct_class = Types::RdsReservedInstancesConfiguration + + Recommendation.add_member(:account_id, Shapes::ShapeRef.new(shape: String, location_name: "accountId")) + Recommendation.add_member(:action_type, Shapes::ShapeRef.new(shape: String, location_name: "actionType")) + Recommendation.add_member(:currency_code, Shapes::ShapeRef.new(shape: String, location_name: "currencyCode")) + Recommendation.add_member(:current_resource_summary, Shapes::ShapeRef.new(shape: String, location_name: "currentResourceSummary")) + Recommendation.add_member(:current_resource_type, Shapes::ShapeRef.new(shape: String, location_name: "currentResourceType")) + Recommendation.add_member(:estimated_monthly_cost, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlyCost")) + Recommendation.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlySavings")) + Recommendation.add_member(:estimated_savings_percentage, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedSavingsPercentage")) + Recommendation.add_member(:implementation_effort, Shapes::ShapeRef.new(shape: String, location_name: "implementationEffort")) + Recommendation.add_member(:last_refresh_timestamp, Shapes::ShapeRef.new(shape: Datetime, location_name: "lastRefreshTimestamp")) + Recommendation.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: String, location_name: "recommendationId")) + Recommendation.add_member(:recommendation_lookback_period_in_days, Shapes::ShapeRef.new(shape: Integer, location_name: "recommendationLookbackPeriodInDays")) + Recommendation.add_member(:recommended_resource_summary, Shapes::ShapeRef.new(shape: String, location_name: "recommendedResourceSummary")) + Recommendation.add_member(:recommended_resource_type, Shapes::ShapeRef.new(shape: String, location_name: "recommendedResourceType")) + Recommendation.add_member(:region, Shapes::ShapeRef.new(shape: String, location_name: "region")) + Recommendation.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, location_name: "resourceArn")) + Recommendation.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, location_name: "resourceId")) + Recommendation.add_member(:restart_needed, Shapes::ShapeRef.new(shape: Boolean, location_name: "restartNeeded")) + Recommendation.add_member(:rollback_possible, Shapes::ShapeRef.new(shape: Boolean, location_name: "rollbackPossible")) + Recommendation.add_member(:source, Shapes::ShapeRef.new(shape: Source, location_name: "source")) + Recommendation.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags")) + Recommendation.struct_class = Types::Recommendation + + RecommendationIdList.member = Shapes::ShapeRef.new(shape: String) + + RecommendationList.member = Shapes::ShapeRef.new(shape: Recommendation) + + RecommendationSummariesList.member = Shapes::ShapeRef.new(shape: RecommendationSummary) + + RecommendationSummary.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlySavings")) + RecommendationSummary.add_member(:group, Shapes::ShapeRef.new(shape: String, location_name: "group")) + RecommendationSummary.add_member(:recommendation_count, Shapes::ShapeRef.new(shape: Integer, location_name: "recommendationCount")) + RecommendationSummary.struct_class = Types::RecommendationSummary + + RedshiftReservedInstances.add_member(:configuration, Shapes::ShapeRef.new(shape: RedshiftReservedInstancesConfiguration, location_name: "configuration")) + RedshiftReservedInstances.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: ReservedInstancesCostCalculation, location_name: "costCalculation")) + RedshiftReservedInstances.struct_class = Types::RedshiftReservedInstances + + RedshiftReservedInstancesConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + RedshiftReservedInstancesConfiguration.add_member(:current_generation, Shapes::ShapeRef.new(shape: String, location_name: "currentGeneration")) + RedshiftReservedInstancesConfiguration.add_member(:instance_family, Shapes::ShapeRef.new(shape: String, location_name: "instanceFamily")) + RedshiftReservedInstancesConfiguration.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + RedshiftReservedInstancesConfiguration.add_member(:monthly_recurring_cost, Shapes::ShapeRef.new(shape: String, location_name: "monthlyRecurringCost")) + RedshiftReservedInstancesConfiguration.add_member(:normalized_units_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "normalizedUnitsToPurchase")) + RedshiftReservedInstancesConfiguration.add_member(:number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: String, location_name: "numberOfInstancesToPurchase")) + RedshiftReservedInstancesConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + RedshiftReservedInstancesConfiguration.add_member(:reserved_instances_region, Shapes::ShapeRef.new(shape: String, location_name: "reservedInstancesRegion")) + RedshiftReservedInstancesConfiguration.add_member(:service, Shapes::ShapeRef.new(shape: String, location_name: "service")) + RedshiftReservedInstancesConfiguration.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: Boolean, location_name: "sizeFlexEligible")) + RedshiftReservedInstancesConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + RedshiftReservedInstancesConfiguration.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: String, location_name: "upfrontCost")) + RedshiftReservedInstancesConfiguration.struct_class = Types::RedshiftReservedInstancesConfiguration + + RegionList.member = Shapes::ShapeRef.new(shape: String) + + ReservedInstancesCostCalculation.add_member(:pricing, Shapes::ShapeRef.new(shape: ReservedInstancesPricing, location_name: "pricing")) + ReservedInstancesCostCalculation.struct_class = Types::ReservedInstancesCostCalculation + + ReservedInstancesPricing.add_member(:estimated_monthly_amortized_reservation_cost, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlyAmortizedReservationCost")) + ReservedInstancesPricing.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedOnDemandCost")) + ReservedInstancesPricing.add_member(:monthly_reservation_eligible_cost, Shapes::ShapeRef.new(shape: Double, location_name: "monthlyReservationEligibleCost")) + ReservedInstancesPricing.add_member(:savings_percentage, Shapes::ShapeRef.new(shape: Double, location_name: "savingsPercentage")) + ReservedInstancesPricing.struct_class = Types::ReservedInstancesPricing + + ResourceArnList.member = Shapes::ShapeRef.new(shape: String) + + ResourceCostCalculation.add_member(:pricing, Shapes::ShapeRef.new(shape: ResourcePricing, location_name: "pricing")) + ResourceCostCalculation.add_member(:usages, Shapes::ShapeRef.new(shape: UsageList, location_name: "usages")) + ResourceCostCalculation.struct_class = Types::ResourceCostCalculation + + ResourceDetails.add_member(:compute_savings_plans, Shapes::ShapeRef.new(shape: ComputeSavingsPlans, location_name: "computeSavingsPlans")) + ResourceDetails.add_member(:ebs_volume, Shapes::ShapeRef.new(shape: EbsVolume, location_name: "ebsVolume")) + ResourceDetails.add_member(:ec2_auto_scaling_group, Shapes::ShapeRef.new(shape: Ec2AutoScalingGroup, location_name: "ec2AutoScalingGroup")) + ResourceDetails.add_member(:ec2_instance, Shapes::ShapeRef.new(shape: Ec2Instance, location_name: "ec2Instance")) + ResourceDetails.add_member(:ec2_instance_savings_plans, Shapes::ShapeRef.new(shape: Ec2InstanceSavingsPlans, location_name: "ec2InstanceSavingsPlans")) + ResourceDetails.add_member(:ec2_reserved_instances, Shapes::ShapeRef.new(shape: Ec2ReservedInstances, location_name: "ec2ReservedInstances")) + ResourceDetails.add_member(:ecs_service, Shapes::ShapeRef.new(shape: EcsService, location_name: "ecsService")) + ResourceDetails.add_member(:elasti_cache_reserved_instances, Shapes::ShapeRef.new(shape: ElastiCacheReservedInstances, location_name: "elastiCacheReservedInstances")) + ResourceDetails.add_member(:lambda_function, Shapes::ShapeRef.new(shape: LambdaFunction, location_name: "lambdaFunction")) + ResourceDetails.add_member(:open_search_reserved_instances, Shapes::ShapeRef.new(shape: OpenSearchReservedInstances, location_name: "openSearchReservedInstances")) + ResourceDetails.add_member(:rds_reserved_instances, Shapes::ShapeRef.new(shape: RdsReservedInstances, location_name: "rdsReservedInstances")) + ResourceDetails.add_member(:redshift_reserved_instances, Shapes::ShapeRef.new(shape: RedshiftReservedInstances, location_name: "redshiftReservedInstances")) + ResourceDetails.add_member(:sage_maker_savings_plans, Shapes::ShapeRef.new(shape: SageMakerSavingsPlans, location_name: "sageMakerSavingsPlans")) + ResourceDetails.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + ResourceDetails.add_member_subclass(:compute_savings_plans, Types::ResourceDetails::ComputeSavingsPlans) + ResourceDetails.add_member_subclass(:ebs_volume, Types::ResourceDetails::EbsVolume) + ResourceDetails.add_member_subclass(:ec2_auto_scaling_group, Types::ResourceDetails::Ec2AutoScalingGroup) + ResourceDetails.add_member_subclass(:ec2_instance, Types::ResourceDetails::Ec2Instance) + ResourceDetails.add_member_subclass(:ec2_instance_savings_plans, Types::ResourceDetails::Ec2InstanceSavingsPlans) + ResourceDetails.add_member_subclass(:ec2_reserved_instances, Types::ResourceDetails::Ec2ReservedInstances) + ResourceDetails.add_member_subclass(:ecs_service, Types::ResourceDetails::EcsService) + ResourceDetails.add_member_subclass(:elasti_cache_reserved_instances, Types::ResourceDetails::ElastiCacheReservedInstances) + ResourceDetails.add_member_subclass(:lambda_function, Types::ResourceDetails::LambdaFunction) + ResourceDetails.add_member_subclass(:open_search_reserved_instances, Types::ResourceDetails::OpenSearchReservedInstances) + ResourceDetails.add_member_subclass(:rds_reserved_instances, Types::ResourceDetails::RdsReservedInstances) + ResourceDetails.add_member_subclass(:redshift_reserved_instances, Types::ResourceDetails::RedshiftReservedInstances) + ResourceDetails.add_member_subclass(:sage_maker_savings_plans, Types::ResourceDetails::SageMakerSavingsPlans) + ResourceDetails.add_member_subclass(:unknown, Types::ResourceDetails::Unknown) + ResourceDetails.struct_class = Types::ResourceDetails + + ResourceIdList.member = Shapes::ShapeRef.new(shape: String) + + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ResourceNotFoundException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) + ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + + ResourcePricing.add_member(:estimated_cost_after_discounts, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedCostAfterDiscounts")) + ResourcePricing.add_member(:estimated_cost_before_discounts, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedCostBeforeDiscounts")) + ResourcePricing.add_member(:estimated_discounts, Shapes::ShapeRef.new(shape: EstimatedDiscounts, location_name: "estimatedDiscounts")) + ResourcePricing.add_member(:estimated_net_unused_amortized_commitments, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedNetUnusedAmortizedCommitments")) + ResourcePricing.struct_class = Types::ResourcePricing + + ResourceTypeList.member = Shapes::ShapeRef.new(shape: ResourceType) + + SageMakerSavingsPlans.add_member(:configuration, Shapes::ShapeRef.new(shape: SageMakerSavingsPlansConfiguration, location_name: "configuration")) + SageMakerSavingsPlans.add_member(:cost_calculation, Shapes::ShapeRef.new(shape: SavingsPlansCostCalculation, location_name: "costCalculation")) + SageMakerSavingsPlans.struct_class = Types::SageMakerSavingsPlans + + SageMakerSavingsPlansConfiguration.add_member(:account_scope, Shapes::ShapeRef.new(shape: String, location_name: "accountScope")) + SageMakerSavingsPlansConfiguration.add_member(:hourly_commitment, Shapes::ShapeRef.new(shape: String, location_name: "hourlyCommitment")) + SageMakerSavingsPlansConfiguration.add_member(:payment_option, Shapes::ShapeRef.new(shape: String, location_name: "paymentOption")) + SageMakerSavingsPlansConfiguration.add_member(:term, Shapes::ShapeRef.new(shape: String, location_name: "term")) + SageMakerSavingsPlansConfiguration.struct_class = Types::SageMakerSavingsPlansConfiguration + + SavingsPlansCostCalculation.add_member(:pricing, Shapes::ShapeRef.new(shape: SavingsPlansPricing, location_name: "pricing")) + SavingsPlansCostCalculation.struct_class = Types::SavingsPlansCostCalculation + + SavingsPlansPricing.add_member(:estimated_monthly_commitment, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedMonthlyCommitment")) + SavingsPlansPricing.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: Double, location_name: "estimatedOnDemandCost")) + SavingsPlansPricing.add_member(:monthly_savings_plans_eligible_cost, Shapes::ShapeRef.new(shape: Double, location_name: "monthlySavingsPlansEligibleCost")) + SavingsPlansPricing.add_member(:savings_percentage, Shapes::ShapeRef.new(shape: Double, location_name: "savingsPercentage")) + SavingsPlansPricing.struct_class = Types::SavingsPlansPricing + + StorageConfiguration.add_member(:size_in_gb, Shapes::ShapeRef.new(shape: Double, location_name: "sizeInGb")) + StorageConfiguration.add_member(:type, Shapes::ShapeRef.new(shape: String, location_name: "type")) + StorageConfiguration.struct_class = Types::StorageConfiguration + + Tag.add_member(:key, Shapes::ShapeRef.new(shape: String, location_name: "key")) + Tag.add_member(:value, Shapes::ShapeRef.new(shape: String, location_name: "value")) + Tag.struct_class = Types::Tag + + TagList.member = Shapes::ShapeRef.new(shape: Tag) + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + ThrottlingException.struct_class = Types::ThrottlingException + + UpdateEnrollmentStatusRequest.add_member(:include_member_accounts, Shapes::ShapeRef.new(shape: Boolean, location_name: "includeMemberAccounts")) + UpdateEnrollmentStatusRequest.add_member(:status, Shapes::ShapeRef.new(shape: EnrollmentStatus, required: true, location_name: "status")) + UpdateEnrollmentStatusRequest.struct_class = Types::UpdateEnrollmentStatusRequest + + UpdateEnrollmentStatusResponse.add_member(:status, Shapes::ShapeRef.new(shape: String, location_name: "status")) + UpdateEnrollmentStatusResponse.struct_class = Types::UpdateEnrollmentStatusResponse + + UpdatePreferencesRequest.add_member(:member_account_discount_visibility, Shapes::ShapeRef.new(shape: MemberAccountDiscountVisibility, location_name: "memberAccountDiscountVisibility")) + UpdatePreferencesRequest.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: SavingsEstimationMode, location_name: "savingsEstimationMode")) + UpdatePreferencesRequest.struct_class = Types::UpdatePreferencesRequest + + UpdatePreferencesResponse.add_member(:member_account_discount_visibility, Shapes::ShapeRef.new(shape: MemberAccountDiscountVisibility, location_name: "memberAccountDiscountVisibility")) + UpdatePreferencesResponse.add_member(:savings_estimation_mode, Shapes::ShapeRef.new(shape: SavingsEstimationMode, location_name: "savingsEstimationMode")) + UpdatePreferencesResponse.struct_class = Types::UpdatePreferencesResponse + + Usage.add_member(:operation, Shapes::ShapeRef.new(shape: String, location_name: "operation")) + Usage.add_member(:product_code, Shapes::ShapeRef.new(shape: String, location_name: "productCode")) + Usage.add_member(:unit, Shapes::ShapeRef.new(shape: String, location_name: "unit")) + Usage.add_member(:usage_amount, Shapes::ShapeRef.new(shape: Double, location_name: "usageAmount")) + Usage.add_member(:usage_type, Shapes::ShapeRef.new(shape: String, location_name: "usageType")) + Usage.struct_class = Types::Usage + + UsageList.member = Shapes::ShapeRef.new(shape: Usage) + + ValidationException.add_member(:fields, Shapes::ShapeRef.new(shape: ValidationExceptionDetails, location_name: "fields")) + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, location_name: "reason")) + ValidationException.struct_class = Types::ValidationException + + ValidationExceptionDetail.add_member(:field_name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "fieldName")) + ValidationExceptionDetail.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ValidationExceptionDetail.struct_class = Types::ValidationExceptionDetail + + ValidationExceptionDetails.member = Shapes::ShapeRef.new(shape: ValidationExceptionDetail) + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2022-07-26" + + api.metadata = { + "apiVersion" => "2022-07-26", + "endpointPrefix" => "cost-optimization-hub", + "jsonVersion" => "1.0", + "protocol" => "json", + "serviceFullName" => "Cost Optimization Hub", + "serviceId" => "Cost Optimization Hub", + "signatureVersion" => "v4", + "signingName" => "cost-optimization-hub", + "targetPrefix" => "CostOptimizationHubService", + "uid" => "cost-optimization-hub-2022-07-26", + } + + api.add_operation(:get_preferences, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetPreferences" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetPreferencesRequest) + o.output = Shapes::ShapeRef.new(shape: GetPreferencesResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:get_recommendation, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetRecommendation" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetRecommendationRequest) + o.output = Shapes::ShapeRef.new(shape: GetRecommendationResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:list_enrollment_statuses, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListEnrollmentStatuses" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListEnrollmentStatusesRequest) + o.output = Shapes::ShapeRef.new(shape: ListEnrollmentStatusesResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_recommendation_summaries, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListRecommendationSummaries" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListRecommendationSummariesRequest) + o.output = Shapes::ShapeRef.new(shape: ListRecommendationSummariesResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_recommendations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListRecommendations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ListRecommendationsRequest) + o.output = Shapes::ShapeRef.new(shape: ListRecommendationsResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:update_enrollment_status, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateEnrollmentStatus" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateEnrollmentStatusRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateEnrollmentStatusResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + + api.add_operation(:update_preferences, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdatePreferences" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdatePreferencesRequest) + o.output = Shapes::ShapeRef.new(shape: UpdatePreferencesResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + end) + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/customizations.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_parameters.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_parameters.rb new file mode 100644 index 00000000000..256c7c60ba3 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_parameters.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_dual_stack + # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error. + # + # @return [Boolean] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_dual_stack, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseDualStack' => :use_dual_stack, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_dual_stack] = options[:use_dual_stack] + self[:use_dual_stack] = false if self[:use_dual_stack].nil? + if self[:use_dual_stack].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack" + end + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_provider.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_provider.rb new file mode 100644 index 00000000000..a92d1b0b76b --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoint_provider.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_dual_stack = parameters.use_dual_stack + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + 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")) + return Aws::Endpoints::Endpoint.new(url: "https://cost-optimization-hub-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://cost-optimization-hub-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + return Aws::Endpoints::Endpoint.new(url: "https://cost-optimization-hub.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "DualStack is enabled but this partition does not support DualStack" + end + return Aws::Endpoints::Endpoint.new(url: "https://cost-optimization-hub.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoints.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoints.rb new file mode 100644 index 00000000000..464b35fbe36 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/endpoints.rb @@ -0,0 +1,114 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::CostOptimizationHub + # @api private + module Endpoints + + class GetPreferences + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetRecommendation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListEnrollmentStatuses + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListRecommendationSummaries + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListRecommendations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateEnrollmentStatus + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdatePreferences + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::CostOptimizationHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/errors.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/errors.rb new file mode 100644 index 00000000000..cf221bec62b --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/errors.rb @@ -0,0 +1,133 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + + # When CostOptimizationHub returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::CostOptimizationHub::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all CostOptimizationHub errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::CostOptimizationHub::Errors::ServiceError + # # rescues all CostOptimizationHub API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {AccessDeniedException} + # * {InternalServerException} + # * {ResourceNotFoundException} + # * {ThrottlingException} + # * {ValidationException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CostOptimizationHub::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CostOptimizationHub::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ResourceNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CostOptimizationHub::Types::ResourceNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CostOptimizationHub::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ValidationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::CostOptimizationHub::Types::ValidationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def fields + @data[:fields] + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def reason + @data[:reason] + end + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/plugins/endpoints.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/plugins/endpoints.rb new file mode 100644 index 00000000000..2c9e92d033d --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/plugins/endpoints.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::CostOptimizationHub + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::CostOptimizationHub::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::CostOptimizationHub::EndpointParameters`' + ) do |cfg| + Aws::CostOptimizationHub::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :get_preferences + Aws::CostOptimizationHub::Endpoints::GetPreferences.build(context) + when :get_recommendation + Aws::CostOptimizationHub::Endpoints::GetRecommendation.build(context) + when :list_enrollment_statuses + Aws::CostOptimizationHub::Endpoints::ListEnrollmentStatuses.build(context) + when :list_recommendation_summaries + Aws::CostOptimizationHub::Endpoints::ListRecommendationSummaries.build(context) + when :list_recommendations + Aws::CostOptimizationHub::Endpoints::ListRecommendations.build(context) + when :update_enrollment_status + Aws::CostOptimizationHub::Endpoints::UpdateEnrollmentStatus.build(context) + when :update_preferences + Aws::CostOptimizationHub::Endpoints::UpdatePreferences.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/resource.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/resource.rb new file mode 100644 index 00000000000..595d4dfb109 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/types.rb b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/types.rb new file mode 100644 index 00000000000..a1a3e2efbc1 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/lib/aws-sdk-costoptimizationhub/types.rb @@ -0,0 +1,2019 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::CostOptimizationHub + module Types + + # You are not authorized to use this operation with the given + # parameters. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the enrollment status of an organization's member accounts + # in Cost Optimization Hub. + # + # @!attribute [rw] account_id + # The Amazon Web Services account ID. + # @return [String] + # + # @!attribute [rw] created_timestamp + # The time when the account enrollment status was created. + # @return [Time] + # + # @!attribute [rw] last_updated_timestamp + # The time when the account enrollment status was last updated. + # @return [Time] + # + # @!attribute [rw] status + # The account enrollment status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/AccountEnrollmentStatus AWS API Documentation + # + class AccountEnrollmentStatus < Struct.new( + :account_id, + :created_timestamp, + :last_updated_timestamp, + :status) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the Amazon Elastic Block Store performance configuration of + # the current and recommended resource configuration for a + # recommendation. + # + # @!attribute [rw] iops + # The number of I/O operations per second. + # @return [Float] + # + # @!attribute [rw] throughput + # The throughput that the volume supports. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/BlockStoragePerformanceConfiguration AWS API Documentation + # + class BlockStoragePerformanceConfiguration < Struct.new( + :iops, + :throughput) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the performance configuration for compute services such as + # Amazon EC2, Lambda, and ECS. + # + # @!attribute [rw] architecture + # The architecture of the resource. + # @return [String] + # + # @!attribute [rw] memory_size_in_mb + # The memory size of the resource. + # @return [Integer] + # + # @!attribute [rw] platform + # The platform of the resource. The platform is the specific + # combination of operating system, license model, and software on an + # instance. + # @return [String] + # + # @!attribute [rw] v_cpu + # The number of vCPU cores in the resource. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ComputeConfiguration AWS API Documentation + # + class ComputeConfiguration < Struct.new( + :architecture, + :memory_size_in_mb, + :platform, + :v_cpu) + SENSITIVE = [] + include Aws::Structure + end + + # The Compute Savings Plans recommendation details. + # + # @!attribute [rw] configuration + # Configuration details of the Compute Savings Plans to purchase. + # @return [Types::ComputeSavingsPlansConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the Savings Plans purchase recommendation. + # @return [Types::SavingsPlansCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ComputeSavingsPlans AWS API Documentation + # + class ComputeSavingsPlans < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The Compute Savings Plans configuration used for recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. Amazon Web + # Services calculates recommendations including the management account + # and member accounts if the value is set to `PAYER`. If the value is + # `LINKED`, recommendations are calculated for individual member + # accounts only. + # @return [String] + # + # @!attribute [rw] hourly_commitment + # The hourly commitment for the Savings Plans type. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] term + # The Savings Plans recommendation term in years. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ComputeSavingsPlansConfiguration AWS API Documentation + # + class ComputeSavingsPlansConfiguration < Struct.new( + :account_scope, + :hourly_commitment, + :payment_option, + :term) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the Amazon Elastic Block Store volume configuration of the + # current and recommended resource configuration for a recommendation. + # + # @!attribute [rw] configuration + # The Amazon Elastic Block Store volume configuration used for + # recommendations. + # @return [Types::EbsVolumeConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the recommendation. + # @return [Types::ResourceCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/EbsVolume AWS API Documentation + # + class EbsVolume < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The Amazon Elastic Block Store volume configuration used for + # recommendations. + # + # @!attribute [rw] attachment_state + # The Amazon Elastic Block Store attachment state. + # @return [String] + # + # @!attribute [rw] performance + # The Amazon Elastic Block Store performance configuration. + # @return [Types::BlockStoragePerformanceConfiguration] + # + # @!attribute [rw] storage + # The disk storage of the Amazon Elastic Block Store volume. + # @return [Types::StorageConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/EbsVolumeConfiguration AWS API Documentation + # + class EbsVolumeConfiguration < Struct.new( + :attachment_state, + :performance, + :storage) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 Auto Scaling group recommendation details. + # + # @!attribute [rw] configuration + # The EC2 Auto Scaling group configuration used for recommendations. + # @return [Types::Ec2AutoScalingGroupConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the recommendation. + # @return [Types::ResourceCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2AutoScalingGroup AWS API Documentation + # + class Ec2AutoScalingGroup < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 auto scaling group configuration used for recommendations. + # + # @!attribute [rw] instance + # Details about the instance. + # @return [Types::InstanceConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2AutoScalingGroupConfiguration AWS API Documentation + # + class Ec2AutoScalingGroupConfiguration < Struct.new( + :instance) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the EC2 instance configuration of the current and + # recommended resource configuration for a recommendation. + # + # @!attribute [rw] configuration + # The EC2 instance configuration used for recommendations. + # @return [Types::Ec2InstanceConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the recommendation. + # @return [Types::ResourceCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2Instance AWS API Documentation + # + class Ec2Instance < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 instance configuration used for recommendations. + # + # @!attribute [rw] instance + # Details about the instance. + # @return [Types::InstanceConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2InstanceConfiguration AWS API Documentation + # + class Ec2InstanceConfiguration < Struct.new( + :instance) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 instance Savings Plans recommendation details. + # + # @!attribute [rw] configuration + # The EC2 instance Savings Plans configuration used for + # recommendations. + # @return [Types::Ec2InstanceSavingsPlansConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the Savings Plans purchase recommendation. + # @return [Types::SavingsPlansCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2InstanceSavingsPlans AWS API Documentation + # + class Ec2InstanceSavingsPlans < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 instance Savings Plans configuration used for recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] hourly_commitment + # The hourly commitment for the Savings Plans type. + # @return [String] + # + # @!attribute [rw] instance_family + # The instance family of the recommended Savings Plan. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] savings_plans_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] term + # The Savings Plans recommendation term in years. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2InstanceSavingsPlansConfiguration AWS API Documentation + # + class Ec2InstanceSavingsPlansConfiguration < Struct.new( + :account_scope, + :hourly_commitment, + :instance_family, + :payment_option, + :savings_plans_region, + :term) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 reserved instances recommendation details. + # + # @!attribute [rw] configuration + # The EC2 reserved instances configuration used for recommendations. + # @return [Types::Ec2ReservedInstancesConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the purchase recommendation. + # @return [Types::ReservedInstancesCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2ReservedInstances AWS API Documentation + # + class Ec2ReservedInstances < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The EC2 reserved instances configuration used for recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] current_generation + # Determines whether the recommendation is for a current generation + # instance. + # @return [String] + # + # @!attribute [rw] instance_family + # The instance family of the recommended reservation. + # @return [String] + # + # @!attribute [rw] instance_type + # The type of instance that Amazon Web Services recommends. + # @return [String] + # + # @!attribute [rw] monthly_recurring_cost + # How much purchasing reserved instances costs you on a monthly basis. + # @return [String] + # + # @!attribute [rw] normalized_units_to_purchase + # The number of normalized units that Amazon Web Services recommends + # that you purchase. + # @return [String] + # + # @!attribute [rw] number_of_instances_to_purchase + # The number of instances that Amazon Web Services recommends that you + # purchase. + # @return [String] + # + # @!attribute [rw] offering_class + # Indicates whether the recommendation is for standard or convertible + # reservations. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] platform + # The platform of the recommended reservation. The platform is the + # specific combination of operating system, license model, and + # software on an instance. + # @return [String] + # + # @!attribute [rw] reserved_instances_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] service + # The service that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] size_flex_eligible + # Determines whether the recommendation is size flexible. + # @return [Boolean] + # + # @!attribute [rw] tenancy + # Determines whether the recommended reservation is dedicated or + # shared. + # @return [String] + # + # @!attribute [rw] term + # The reserved instances recommendation term in years. + # @return [String] + # + # @!attribute [rw] upfront_cost + # How much purchasing this instance costs you upfront. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Ec2ReservedInstancesConfiguration AWS API Documentation + # + class Ec2ReservedInstancesConfiguration < Struct.new( + :account_scope, + :current_generation, + :instance_family, + :instance_type, + :monthly_recurring_cost, + :normalized_units_to_purchase, + :number_of_instances_to_purchase, + :offering_class, + :payment_option, + :platform, + :reserved_instances_region, + :service, + :size_flex_eligible, + :tenancy, + :term, + :upfront_cost) + SENSITIVE = [] + include Aws::Structure + end + + # The ECS service recommendation details. + # + # @!attribute [rw] configuration + # The ECS service configuration used for recommendations. + # @return [Types::EcsServiceConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the recommendation. + # @return [Types::ResourceCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/EcsService AWS API Documentation + # + class EcsService < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The ECS service configuration used for recommendations. + # + # @!attribute [rw] compute + # Details about the compute configuration. + # @return [Types::ComputeConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/EcsServiceConfiguration AWS API Documentation + # + class EcsServiceConfiguration < Struct.new( + :compute) + SENSITIVE = [] + include Aws::Structure + end + + # The ElastiCache reserved instances recommendation details. + # + # @!attribute [rw] configuration + # The ElastiCache reserved instances configuration used for + # recommendations. + # @return [Types::ElastiCacheReservedInstancesConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the purchase recommendation. + # @return [Types::ReservedInstancesCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ElastiCacheReservedInstances AWS API Documentation + # + class ElastiCacheReservedInstances < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The ElastiCache reserved instances configuration used for + # recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] current_generation + # Determines whether the recommendation is for a current generation + # instance. + # @return [String] + # + # @!attribute [rw] instance_family + # The instance family of the recommended reservation. + # @return [String] + # + # @!attribute [rw] instance_type + # The type of instance that Amazon Web Services recommends. + # @return [String] + # + # @!attribute [rw] monthly_recurring_cost + # How much purchasing reserved instances costs you on a monthly basis. + # @return [String] + # + # @!attribute [rw] normalized_units_to_purchase + # The number of normalized units that Amazon Web Services recommends + # that you purchase. + # @return [String] + # + # @!attribute [rw] number_of_instances_to_purchase + # The number of instances that Amazon Web Services recommends that you + # purchase. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] reserved_instances_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] service + # The service that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] size_flex_eligible + # Determines whether the recommendation is size flexible. + # @return [Boolean] + # + # @!attribute [rw] term + # The reserved instances recommendation term in years. + # @return [String] + # + # @!attribute [rw] upfront_cost + # How much purchasing this instance costs you upfront. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ElastiCacheReservedInstancesConfiguration AWS API Documentation + # + class ElastiCacheReservedInstancesConfiguration < Struct.new( + :account_scope, + :current_generation, + :instance_family, + :instance_type, + :monthly_recurring_cost, + :normalized_units_to_purchase, + :number_of_instances_to_purchase, + :payment_option, + :reserved_instances_region, + :service, + :size_flex_eligible, + :term, + :upfront_cost) + SENSITIVE = [] + include Aws::Structure + end + + # Estimated discount details of the current and recommended resource + # configuration for a recommendation. + # + # @!attribute [rw] other_discount + # Estimated other discounts include all discounts that are not + # itemized. Itemized discounts include `reservedInstanceDiscount` and + # `savingsPlansDiscount`. + # @return [Float] + # + # @!attribute [rw] reserved_instances_discount + # Estimated reserved instance discounts. + # @return [Float] + # + # @!attribute [rw] savings_plans_discount + # Estimated Savings Plans discounts. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/EstimatedDiscounts AWS API Documentation + # + class EstimatedDiscounts < Struct.new( + :other_discount, + :reserved_instances_discount, + :savings_plans_discount) + SENSITIVE = [] + include Aws::Structure + end + + # Describes a filter that returns a more specific list of + # recommendations. Filters recommendations by different dimensions. + # + # @!attribute [rw] account_ids + # The account that the recommendation is for. + # @return [Array] + # + # @!attribute [rw] action_types + # The type of action you can take by adopting the recommendation. + # @return [Array] + # + # @!attribute [rw] implementation_efforts + # The effort required to implement the recommendation. + # @return [Array] + # + # @!attribute [rw] recommendation_ids + # The IDs for the recommendations. + # @return [Array] + # + # @!attribute [rw] regions + # The Amazon Web Services Region of the resource. + # @return [Array] + # + # @!attribute [rw] resource_arns + # The Amazon Resource Name (ARN) of the recommendation. + # @return [Array] + # + # @!attribute [rw] resource_ids + # The resource ID of the recommendation. + # @return [Array] + # + # @!attribute [rw] resource_types + # The resource type of the recommendation. + # @return [Array] + # + # @!attribute [rw] restart_needed + # Whether or not implementing the recommendation requires a restart. + # @return [Boolean] + # + # @!attribute [rw] rollback_possible + # Whether or not implementing the recommendation can be rolled back. + # @return [Boolean] + # + # @!attribute [rw] tags + # A list of tags assigned to the recommendation. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Filter AWS API Documentation + # + class Filter < Struct.new( + :account_ids, + :action_types, + :implementation_efforts, + :recommendation_ids, + :regions, + :resource_arns, + :resource_ids, + :resource_types, + :restart_needed, + :rollback_possible, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @api private + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetPreferencesRequest AWS API Documentation + # + class GetPreferencesRequest < Aws::EmptyStructure; end + + # @!attribute [rw] member_account_discount_visibility + # Retrieves the status of the "member account discount visibility" + # preference. + # @return [String] + # + # @!attribute [rw] savings_estimation_mode + # Retrieves the status of the "savings estimation mode" preference. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetPreferencesResponse AWS API Documentation + # + class GetPreferencesResponse < Struct.new( + :member_account_discount_visibility, + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] recommendation_id + # The ID for the recommendation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetRecommendationRequest AWS API Documentation + # + class GetRecommendationRequest < Struct.new( + :recommendation_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The account that the recommendation is for. + # @return [String] + # + # @!attribute [rw] action_type + # The type of action you can take by adopting the recommendation. + # @return [String] + # + # @!attribute [rw] cost_calculation_lookback_period_in_days + # The lookback period used to calculate cost impact for a + # recommendation. + # @return [Integer] + # + # @!attribute [rw] currency_code + # The currency code used for the recommendation. + # @return [String] + # + # @!attribute [rw] current_resource_details + # The details for the resource. + # @return [Types::ResourceDetails] + # + # @!attribute [rw] current_resource_type + # The type of resource. + # @return [String] + # + # @!attribute [rw] estimated_monthly_cost + # The estimated monthly cost of the recommendation. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # The estimated monthly savings amount for the recommendation. + # @return [Float] + # + # @!attribute [rw] estimated_savings_over_cost_calculation_lookback_period + # The estimated savings amount over the lookback period used to + # calculate cost impact for a recommendation. + # @return [Float] + # + # @!attribute [rw] estimated_savings_percentage + # The estimated savings percentage relative to the total cost over the + # cost calculation lookback period. + # @return [Float] + # + # @!attribute [rw] implementation_effort + # The effort required to implement the recommendation. + # @return [String] + # + # @!attribute [rw] last_refresh_timestamp + # The time when the recommendation was last generated. + # @return [Time] + # + # @!attribute [rw] recommendation_id + # The ID for the recommendation. + # @return [String] + # + # @!attribute [rw] recommendation_lookback_period_in_days + # The lookback period that's used to generate the recommendation. + # @return [Integer] + # + # @!attribute [rw] recommended_resource_details + # The details about the recommended resource. + # @return [Types::ResourceDetails] + # + # @!attribute [rw] recommended_resource_type + # The resource type of the recommendation. + # @return [String] + # + # @!attribute [rw] region + # The Amazon Web Services Region of the resource. + # @return [String] + # + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource. + # @return [String] + # + # @!attribute [rw] resource_id + # The unique identifier for the resource. This is the same as the + # Amazon Resource Name (ARN), if available. + # @return [String] + # + # @!attribute [rw] restart_needed + # Whether or not implementing the recommendation requires a restart. + # @return [Boolean] + # + # @!attribute [rw] rollback_possible + # Whether or not implementing the recommendation can be rolled back. + # @return [Boolean] + # + # @!attribute [rw] source + # The source of the recommendation. + # @return [String] + # + # @!attribute [rw] tags + # A list of tags associated with the resource for which the + # recommendation exists. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/GetRecommendationResponse AWS API Documentation + # + class GetRecommendationResponse < Struct.new( + :account_id, + :action_type, + :cost_calculation_lookback_period_in_days, + :currency_code, + :current_resource_details, + :current_resource_type, + :estimated_monthly_cost, + :estimated_monthly_savings, + :estimated_savings_over_cost_calculation_lookback_period, + :estimated_savings_percentage, + :implementation_effort, + :last_refresh_timestamp, + :recommendation_id, + :recommendation_lookback_period_in_days, + :recommended_resource_details, + :recommended_resource_type, + :region, + :resource_arn, + :resource_id, + :restart_needed, + :rollback_possible, + :source, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # The Instance configuration used for recommendations. + # + # @!attribute [rw] type + # Details about the type. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/InstanceConfiguration AWS API Documentation + # + class InstanceConfiguration < Struct.new( + :type) + SENSITIVE = [] + include Aws::Structure + end + + # An error on the server occurred during the processing of your request. + # Try again later. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The Lambda function recommendation details. + # + # @!attribute [rw] configuration + # The Lambda function configuration used for recommendations. + # @return [Types::LambdaFunctionConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the recommendation. + # @return [Types::ResourceCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/LambdaFunction AWS API Documentation + # + class LambdaFunction < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The Lambda function configuration used for recommendations. + # + # @!attribute [rw] compute + # Details about the compute configuration. + # @return [Types::ComputeConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/LambdaFunctionConfiguration AWS API Documentation + # + class LambdaFunctionConfiguration < Struct.new( + :compute) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The enrollment status of a specific account ID in the organization. + # @return [String] + # + # @!attribute [rw] include_organization_info + # Indicates whether to return the enrollment status for the + # organization. + # @return [Boolean] + # + # @!attribute [rw] max_results + # The maximum number of objects that are returned for the request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListEnrollmentStatusesRequest AWS API Documentation + # + class ListEnrollmentStatusesRequest < Struct.new( + :account_id, + :include_organization_info, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] items + # The account enrollment statuses. + # @return [Array] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListEnrollmentStatusesResponse AWS API Documentation + # + class ListEnrollmentStatusesResponse < Struct.new( + :items, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] filter + # Describes a filter that returns a more specific list of + # recommendations. Filters recommendations by different dimensions. + # @return [Types::Filter] + # + # @!attribute [rw] group_by + # The grouping of recommendations by a dimension. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of recommendations that are returned for the + # request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendationSummariesRequest AWS API Documentation + # + class ListRecommendationSummariesRequest < Struct.new( + :filter, + :group_by, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] currency_code + # The currency code used for the recommendation. + # @return [String] + # + # @!attribute [rw] estimated_total_deduped_savings + # The total overall savings for the aggregated view. + # @return [Float] + # + # @!attribute [rw] group_by + # The dimension used to group the recommendations by. + # @return [String] + # + # @!attribute [rw] items + # List of all savings recommendations. + # @return [Array] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendationSummariesResponse AWS API Documentation + # + class ListRecommendationSummariesResponse < Struct.new( + :currency_code, + :estimated_total_deduped_savings, + :group_by, + :items, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] filter + # The constraints that you want all returned recommendations to match. + # @return [Types::Filter] + # + # @!attribute [rw] include_all_recommendations + # List of all recommendations for a resource, or a single + # recommendation if de-duped by `resourceId`. + # @return [Boolean] + # + # @!attribute [rw] max_results + # The maximum number of recommendations that are returned for the + # request. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @!attribute [rw] order_by + # The ordering of recommendations by a dimension. + # @return [Types::OrderBy] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendationsRequest AWS API Documentation + # + class ListRecommendationsRequest < Struct.new( + :filter, + :include_all_recommendations, + :max_results, + :next_token, + :order_by) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] items + # List of all savings recommendations. + # @return [Array] + # + # @!attribute [rw] next_token + # The token to retrieve the next set of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ListRecommendationsResponse AWS API Documentation + # + class ListRecommendationsResponse < Struct.new( + :items, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # The OpenSearch reserved instances recommendation details. + # + # @!attribute [rw] configuration + # The OpenSearch reserved instances configuration used for + # recommendations. + # @return [Types::OpenSearchReservedInstancesConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the purchase recommendation. + # @return [Types::ReservedInstancesCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/OpenSearchReservedInstances AWS API Documentation + # + class OpenSearchReservedInstances < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The OpenSearch reserved instances configuration used for + # recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] current_generation + # Determines whether the recommendation is for a current generation + # instance. + # @return [String] + # + # @!attribute [rw] instance_type + # The type of instance that Amazon Web Services recommends. + # @return [String] + # + # @!attribute [rw] monthly_recurring_cost + # How much purchasing reserved instances costs you on a monthly basis. + # @return [String] + # + # @!attribute [rw] normalized_units_to_purchase + # The number of normalized units that Amazon Web Services recommends + # that you purchase. + # @return [String] + # + # @!attribute [rw] number_of_instances_to_purchase + # The number of instances that Amazon Web Services recommends that you + # purchase. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] reserved_instances_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] service + # The service that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] size_flex_eligible + # Determines whether the recommendation is size flexible. + # @return [Boolean] + # + # @!attribute [rw] term + # The reserved instances recommendation term in years. + # @return [String] + # + # @!attribute [rw] upfront_cost + # How much purchasing this instance costs you upfront. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/OpenSearchReservedInstancesConfiguration AWS API Documentation + # + class OpenSearchReservedInstancesConfiguration < Struct.new( + :account_scope, + :current_generation, + :instance_type, + :monthly_recurring_cost, + :normalized_units_to_purchase, + :number_of_instances_to_purchase, + :payment_option, + :reserved_instances_region, + :service, + :size_flex_eligible, + :term, + :upfront_cost) + SENSITIVE = [] + include Aws::Structure + end + + # Defines how rows will be sorted in the response. + # + # @!attribute [rw] dimension + # Sorts by dimension values. + # @return [String] + # + # @!attribute [rw] order + # The order that's used to sort the data. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/OrderBy AWS API Documentation + # + class OrderBy < Struct.new( + :dimension, + :order) + SENSITIVE = [] + include Aws::Structure + end + + # The RDS reserved instances recommendation details. + # + # @!attribute [rw] configuration + # The RDS reserved instances configuration used for recommendations. + # @return [Types::RdsReservedInstancesConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the purchase recommendation. + # @return [Types::ReservedInstancesCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/RdsReservedInstances AWS API Documentation + # + class RdsReservedInstances < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The RDS reserved instances configuration used for recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] current_generation + # Determines whether the recommendation is for a current generation + # instance. + # @return [String] + # + # @!attribute [rw] database_edition + # The database edition that the recommended reservation supports. + # @return [String] + # + # @!attribute [rw] database_engine + # The database engine that the recommended reservation supports. + # @return [String] + # + # @!attribute [rw] deployment_option + # Determines whether the recommendation is for a reservation in a + # single Availability Zone or a reservation with a backup in a second + # Availability Zone. + # @return [String] + # + # @!attribute [rw] instance_family + # The instance family of the recommended reservation. + # @return [String] + # + # @!attribute [rw] instance_type + # The type of instance that Amazon Web Services recommends. + # @return [String] + # + # @!attribute [rw] license_model + # The license model that the recommended reservation supports. + # @return [String] + # + # @!attribute [rw] monthly_recurring_cost + # How much purchasing this instance costs you on a monthly basis. + # @return [String] + # + # @!attribute [rw] normalized_units_to_purchase + # The number of normalized units that Amazon Web Services recommends + # that you purchase. + # @return [String] + # + # @!attribute [rw] number_of_instances_to_purchase + # The number of instances that Amazon Web Services recommends that you + # purchase. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] reserved_instances_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] service + # The service that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] size_flex_eligible + # Determines whether the recommendation is size flexible. + # @return [Boolean] + # + # @!attribute [rw] term + # The reserved instances recommendation term in years. + # @return [String] + # + # @!attribute [rw] upfront_cost + # How much purchasing this instance costs you upfront. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/RdsReservedInstancesConfiguration AWS API Documentation + # + class RdsReservedInstancesConfiguration < Struct.new( + :account_scope, + :current_generation, + :database_edition, + :database_engine, + :deployment_option, + :instance_family, + :instance_type, + :license_model, + :monthly_recurring_cost, + :normalized_units_to_purchase, + :number_of_instances_to_purchase, + :payment_option, + :reserved_instances_region, + :service, + :size_flex_eligible, + :term, + :upfront_cost) + SENSITIVE = [] + include Aws::Structure + end + + # Describes a recommendation. + # + # @!attribute [rw] account_id + # The account that the recommendation is for. + # @return [String] + # + # @!attribute [rw] action_type + # The type of tasks that can be carried out by this action. + # @return [String] + # + # @!attribute [rw] currency_code + # The currency code used for the recommendation. + # @return [String] + # + # @!attribute [rw] current_resource_summary + # Describes the current resource. + # @return [String] + # + # @!attribute [rw] current_resource_type + # The current resource type. + # @return [String] + # + # @!attribute [rw] estimated_monthly_cost + # The estimated monthly cost for the recommendation. + # @return [Float] + # + # @!attribute [rw] estimated_monthly_savings + # The estimated monthly savings amount for the recommendation. + # @return [Float] + # + # @!attribute [rw] estimated_savings_percentage + # The estimated savings percentage relative to the total cost over the + # cost calculation lookback period. + # @return [Float] + # + # @!attribute [rw] implementation_effort + # The effort required to implement the recommendation. + # @return [String] + # + # @!attribute [rw] last_refresh_timestamp + # The time when the recommendation was last generated. + # @return [Time] + # + # @!attribute [rw] recommendation_id + # The ID for the recommendation. + # @return [String] + # + # @!attribute [rw] recommendation_lookback_period_in_days + # The lookback period that's used to generate the recommendation. + # @return [Integer] + # + # @!attribute [rw] recommended_resource_summary + # Describes the recommended resource. + # @return [String] + # + # @!attribute [rw] recommended_resource_type + # The recommended resource type. + # @return [String] + # + # @!attribute [rw] region + # The Amazon Web Services Region of the resource. + # @return [String] + # + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) for the recommendation. + # @return [String] + # + # @!attribute [rw] resource_id + # The resource ID for the recommendation. + # @return [String] + # + # @!attribute [rw] restart_needed + # Whether or not implementing the recommendation requires a restart. + # @return [Boolean] + # + # @!attribute [rw] rollback_possible + # Whether or not implementing the recommendation can be rolled back. + # @return [Boolean] + # + # @!attribute [rw] source + # The source of the recommendation. + # @return [String] + # + # @!attribute [rw] tags + # A list of tags assigned to the recommendation. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Recommendation AWS API Documentation + # + class Recommendation < Struct.new( + :account_id, + :action_type, + :currency_code, + :current_resource_summary, + :current_resource_type, + :estimated_monthly_cost, + :estimated_monthly_savings, + :estimated_savings_percentage, + :implementation_effort, + :last_refresh_timestamp, + :recommendation_id, + :recommendation_lookback_period_in_days, + :recommended_resource_summary, + :recommended_resource_type, + :region, + :resource_arn, + :resource_id, + :restart_needed, + :rollback_possible, + :source, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # The summary of rightsizing recommendations, including de-duped savings + # from all types of recommendations. + # + # @!attribute [rw] estimated_monthly_savings + # The estimated total savings resulting from modifications, on a + # monthly basis. + # @return [Float] + # + # @!attribute [rw] group + # The grouping of recommendations. + # @return [String] + # + # @!attribute [rw] recommendation_count + # The total number of instance recommendations. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/RecommendationSummary AWS API Documentation + # + class RecommendationSummary < Struct.new( + :estimated_monthly_savings, + :group, + :recommendation_count) + SENSITIVE = [] + include Aws::Structure + end + + # The Redshift reserved instances recommendation details. + # + # @!attribute [rw] configuration + # The Redshift reserved instances configuration used for + # recommendations. + # @return [Types::RedshiftReservedInstancesConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the purchase recommendation. + # @return [Types::ReservedInstancesCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/RedshiftReservedInstances AWS API Documentation + # + class RedshiftReservedInstances < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The Redshift reserved instances configuration used for + # recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] current_generation + # Determines whether the recommendation is for a current generation + # instance. + # @return [String] + # + # @!attribute [rw] instance_family + # The instance family of the recommended reservation. + # @return [String] + # + # @!attribute [rw] instance_type + # The type of instance that Amazon Web Services recommends. + # @return [String] + # + # @!attribute [rw] monthly_recurring_cost + # How much purchasing reserved instances costs you on a monthly basis. + # @return [String] + # + # @!attribute [rw] normalized_units_to_purchase + # The number of normalized units that Amazon Web Services recommends + # that you purchase. + # @return [String] + # + # @!attribute [rw] number_of_instances_to_purchase + # The number of instances that Amazon Web Services recommends that you + # purchase. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] reserved_instances_region + # The Amazon Web Services Region of the commitment. + # @return [String] + # + # @!attribute [rw] service + # The service that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] size_flex_eligible + # Determines whether the recommendation is size flexible. + # @return [Boolean] + # + # @!attribute [rw] term + # The reserved instances recommendation term in years. + # @return [String] + # + # @!attribute [rw] upfront_cost + # How much purchasing this instance costs you upfront. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/RedshiftReservedInstancesConfiguration AWS API Documentation + # + class RedshiftReservedInstancesConfiguration < Struct.new( + :account_scope, + :current_generation, + :instance_family, + :instance_type, + :monthly_recurring_cost, + :normalized_units_to_purchase, + :number_of_instances_to_purchase, + :payment_option, + :reserved_instances_region, + :service, + :size_flex_eligible, + :term, + :upfront_cost) + SENSITIVE = [] + include Aws::Structure + end + + # Cost impact of the purchase recommendation. + # + # @!attribute [rw] pricing + # Pricing details of the purchase recommendation. + # @return [Types::ReservedInstancesPricing] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ReservedInstancesCostCalculation AWS API Documentation + # + class ReservedInstancesCostCalculation < Struct.new( + :pricing) + SENSITIVE = [] + include Aws::Structure + end + + # Pricing details for your recommended reserved instance. + # + # @!attribute [rw] estimated_monthly_amortized_reservation_cost + # The estimated cost of your recurring monthly fees for the + # recommended reserved instance across the month. + # @return [Float] + # + # @!attribute [rw] estimated_on_demand_cost + # The remaining On-Demand cost estimated to not be covered by the + # recommended reserved instance, over the length of the lookback + # period. + # @return [Float] + # + # @!attribute [rw] monthly_reservation_eligible_cost + # The cost of paying for the recommended reserved instance monthly. + # @return [Float] + # + # @!attribute [rw] savings_percentage + # The savings percentage relative to the total On-Demand costs that + # are associated with this instance. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ReservedInstancesPricing AWS API Documentation + # + class ReservedInstancesPricing < Struct.new( + :estimated_monthly_amortized_reservation_cost, + :estimated_on_demand_cost, + :monthly_reservation_eligible_cost, + :savings_percentage) + SENSITIVE = [] + include Aws::Structure + end + + # Cost impact of the resource recommendation. + # + # @!attribute [rw] pricing + # Pricing details of the resource recommendation. + # @return [Types::ResourcePricing] + # + # @!attribute [rw] usages + # Usage details of the resource recommendation. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ResourceCostCalculation AWS API Documentation + # + class ResourceCostCalculation < Struct.new( + :pricing, + :usages) + SENSITIVE = [] + include Aws::Structure + end + + # Contains detailed information about the specified resource. + # + # @note ResourceDetails is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of ResourceDetails corresponding to the set member. + # + # @!attribute [rw] compute_savings_plans + # The Compute Savings Plans recommendation details. + # @return [Types::ComputeSavingsPlans] + # + # @!attribute [rw] ebs_volume + # The Amazon Elastic Block Store volume recommendation details. + # @return [Types::EbsVolume] + # + # @!attribute [rw] ec2_auto_scaling_group + # The EC2 Auto Scaling group recommendation details. + # @return [Types::Ec2AutoScalingGroup] + # + # @!attribute [rw] ec2_instance + # The EC2 instance recommendation details. + # @return [Types::Ec2Instance] + # + # @!attribute [rw] ec2_instance_savings_plans + # The EC2 instance Savings Plans recommendation details. + # @return [Types::Ec2InstanceSavingsPlans] + # + # @!attribute [rw] ec2_reserved_instances + # The EC2 reserved instances recommendation details. + # @return [Types::Ec2ReservedInstances] + # + # @!attribute [rw] ecs_service + # The ECS service recommendation details. + # @return [Types::EcsService] + # + # @!attribute [rw] elasti_cache_reserved_instances + # The ElastiCache reserved instances recommendation details. + # @return [Types::ElastiCacheReservedInstances] + # + # @!attribute [rw] lambda_function + # The Lambda function recommendation details. + # @return [Types::LambdaFunction] + # + # @!attribute [rw] open_search_reserved_instances + # The OpenSearch reserved instances recommendation details. + # @return [Types::OpenSearchReservedInstances] + # + # @!attribute [rw] rds_reserved_instances + # The RDS reserved instances recommendation details. + # @return [Types::RdsReservedInstances] + # + # @!attribute [rw] redshift_reserved_instances + # The Redshift reserved instances recommendation details. + # @return [Types::RedshiftReservedInstances] + # + # @!attribute [rw] sage_maker_savings_plans + # The SageMaker Savings Plans recommendation details. + # @return [Types::SageMakerSavingsPlans] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ResourceDetails AWS API Documentation + # + class ResourceDetails < Struct.new( + :compute_savings_plans, + :ebs_volume, + :ec2_auto_scaling_group, + :ec2_instance, + :ec2_instance_savings_plans, + :ec2_reserved_instances, + :ecs_service, + :elasti_cache_reserved_instances, + :lambda_function, + :open_search_reserved_instances, + :rds_reserved_instances, + :redshift_reserved_instances, + :sage_maker_savings_plans, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class ComputeSavingsPlans < ResourceDetails; end + class EbsVolume < ResourceDetails; end + class Ec2AutoScalingGroup < ResourceDetails; end + class Ec2Instance < ResourceDetails; end + class Ec2InstanceSavingsPlans < ResourceDetails; end + class Ec2ReservedInstances < ResourceDetails; end + class EcsService < ResourceDetails; end + class ElastiCacheReservedInstances < ResourceDetails; end + class LambdaFunction < ResourceDetails; end + class OpenSearchReservedInstances < ResourceDetails; end + class RdsReservedInstances < ResourceDetails; end + class RedshiftReservedInstances < ResourceDetails; end + class SageMakerSavingsPlans < ResourceDetails; end + class Unknown < ResourceDetails; end + end + + # The specified Amazon Resource Name (ARN) in the request doesn't + # exist. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The identifier of the resource that was not found. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message, + :resource_id) + SENSITIVE = [] + include Aws::Structure + end + + # Contains pricing information about the specified resource. + # + # @!attribute [rw] estimated_cost_after_discounts + # The savings estimate incorporating all discounts with Amazon Web + # Services, such as Reserved Instances and Savings Plans. + # @return [Float] + # + # @!attribute [rw] estimated_cost_before_discounts + # The savings estimate using Amazon Web Services public pricing + # without incorporating any discounts. + # @return [Float] + # + # @!attribute [rw] estimated_discounts + # The estimated discounts for a recommendation. + # @return [Types::EstimatedDiscounts] + # + # @!attribute [rw] estimated_net_unused_amortized_commitments + # The estimated net unused amortized commitment for the + # recommendation. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ResourcePricing AWS API Documentation + # + class ResourcePricing < Struct.new( + :estimated_cost_after_discounts, + :estimated_cost_before_discounts, + :estimated_discounts, + :estimated_net_unused_amortized_commitments) + SENSITIVE = [] + include Aws::Structure + end + + # The SageMaker Savings Plans recommendation details. + # + # @!attribute [rw] configuration + # The SageMaker Savings Plans configuration used for recommendations. + # @return [Types::SageMakerSavingsPlansConfiguration] + # + # @!attribute [rw] cost_calculation + # Cost impact of the Savings Plans purchase recommendation. + # @return [Types::SavingsPlansCostCalculation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/SageMakerSavingsPlans AWS API Documentation + # + class SageMakerSavingsPlans < Struct.new( + :configuration, + :cost_calculation) + SENSITIVE = [] + include Aws::Structure + end + + # The SageMaker Savings Plans configuration used for recommendations. + # + # @!attribute [rw] account_scope + # The account scope that you want your recommendations for. + # @return [String] + # + # @!attribute [rw] hourly_commitment + # The hourly commitment for the Savings Plans type. + # @return [String] + # + # @!attribute [rw] payment_option + # The payment option for the commitment. + # @return [String] + # + # @!attribute [rw] term + # The Savings Plans recommendation term in years. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/SageMakerSavingsPlansConfiguration AWS API Documentation + # + class SageMakerSavingsPlansConfiguration < Struct.new( + :account_scope, + :hourly_commitment, + :payment_option, + :term) + SENSITIVE = [] + include Aws::Structure + end + + # Cost impact of the purchase recommendation. + # + # @!attribute [rw] pricing + # Pricing details of the purchase recommendation. + # @return [Types::SavingsPlansPricing] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/SavingsPlansCostCalculation AWS API Documentation + # + class SavingsPlansCostCalculation < Struct.new( + :pricing) + SENSITIVE = [] + include Aws::Structure + end + + # Pricing information about a Savings Plan. + # + # @!attribute [rw] estimated_monthly_commitment + # Estimated monthly commitment for the Savings Plan. + # @return [Float] + # + # @!attribute [rw] estimated_on_demand_cost + # Estimated On-Demand cost you will pay after buying the Savings Plan. + # @return [Float] + # + # @!attribute [rw] monthly_savings_plans_eligible_cost + # The cost of paying for the recommended Savings Plan monthly. + # @return [Float] + # + # @!attribute [rw] savings_percentage + # Estimated savings as a percentage of your overall costs after buying + # the Savings Plan. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/SavingsPlansPricing AWS API Documentation + # + class SavingsPlansPricing < Struct.new( + :estimated_monthly_commitment, + :estimated_on_demand_cost, + :monthly_savings_plans_eligible_cost, + :savings_percentage) + SENSITIVE = [] + include Aws::Structure + end + + # The storage configuration used for recommendations. + # + # @!attribute [rw] size_in_gb + # The storage volume. + # @return [Float] + # + # @!attribute [rw] type + # The storage type. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/StorageConfiguration AWS API Documentation + # + class StorageConfiguration < Struct.new( + :size_in_gb, + :type) + SENSITIVE = [] + include Aws::Structure + end + + # The tag structure that contains a tag key and value. + # + # @!attribute [rw] key + # The key that's associated with the tag. + # @return [String] + # + # @!attribute [rw] value + # The value that's associated with the tag. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Tag AWS API Documentation + # + class Tag < Struct.new( + :key, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # The request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] include_member_accounts + # Indicates whether to enroll member accounts of the organization if + # the account is the management account. + # @return [Boolean] + # + # @!attribute [rw] status + # Sets the account status. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdateEnrollmentStatusRequest AWS API Documentation + # + class UpdateEnrollmentStatusRequest < Struct.new( + :include_member_accounts, + :status) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] status + # The enrollment status of the account. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdateEnrollmentStatusResponse AWS API Documentation + # + class UpdateEnrollmentStatusResponse < Struct.new( + :status) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] member_account_discount_visibility + # Sets the "member account discount visibility" preference. + # @return [String] + # + # @!attribute [rw] savings_estimation_mode + # Sets the "savings estimation mode" preference. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdatePreferencesRequest AWS API Documentation + # + class UpdatePreferencesRequest < Struct.new( + :member_account_discount_visibility, + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] member_account_discount_visibility + # Shows the status of the "member account discount visibility" + # preference. + # @return [String] + # + # @!attribute [rw] savings_estimation_mode + # Shows the status of the "savings estimation mode" preference. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/UpdatePreferencesResponse AWS API Documentation + # + class UpdatePreferencesResponse < Struct.new( + :member_account_discount_visibility, + :savings_estimation_mode) + SENSITIVE = [] + include Aws::Structure + end + + # Details about the usage. + # + # @!attribute [rw] operation + # The operation value. + # @return [String] + # + # @!attribute [rw] product_code + # The product code. + # @return [String] + # + # @!attribute [rw] unit + # The usage unit. + # @return [String] + # + # @!attribute [rw] usage_amount + # The usage amount. + # @return [Float] + # + # @!attribute [rw] usage_type + # The usage type. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/Usage AWS API Documentation + # + class Usage < Struct.new( + :operation, + :product_code, + :unit, + :usage_amount, + :usage_type) + SENSITIVE = [] + include Aws::Structure + end + + # The input fails to satisfy the constraints specified by an Amazon Web + # Services service. + # + # @!attribute [rw] fields + # The list of fields that are invalid. + # @return [Array] + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] reason + # The reason for the validation exception. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ValidationException AWS API Documentation + # + class ValidationException < Struct.new( + :fields, + :message, + :reason) + SENSITIVE = [] + include Aws::Structure + end + + # The input failed to meet the constraints specified by the Amazon Web + # Services service in a specified field. + # + # @!attribute [rw] field_name + # The field name where the invalid entry was detected. + # @return [String] + # + # @!attribute [rw] message + # A message with the reason for the validation exception error. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/cost-optimization-hub-2022-07-26/ValidationExceptionDetail AWS API Documentation + # + class ValidationExceptionDetail < Struct.new( + :field_name, + :message) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/spec/endpoint_provider_spec.rb b/gems/aws-sdk-costoptimizationhub/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..1d2e3341be4 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/spec/endpoint_provider_spec.rb @@ -0,0 +1,361 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::CostOptimizationHub + describe EndpointProvider do + subject { Aws::CostOptimizationHub::EndpointProvider.new } + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub-fips.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://cost-optimization-hub.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For custom endpoint with fips disabled and dualstack enabled' do + let(:expected) do + {"error"=>"Invalid Configuration: Dualstack and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-costoptimizationhub/spec/spec_helper.rb b/gems/aws-sdk-costoptimizationhub/spec/spec_helper.rb new file mode 100644 index 00000000000..f0eda9a7513 --- /dev/null +++ b/gems/aws-sdk-costoptimizationhub/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-costoptimizationhub' diff --git a/gems/aws-sdk-detective/CHANGELOG.md b/gems/aws-sdk-detective/CHANGELOG.md index 57002ddf273..1ecd64bf1ef 100644 --- a/gems/aws-sdk-detective/CHANGELOG.md +++ b/gems/aws-sdk-detective/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.43.0 (2023-11-27) +------------------ + +* Feature - Added new APIs in Detective to support resource investigations + 1.42.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-detective/VERSION b/gems/aws-sdk-detective/VERSION index a50908ca3da..b978278f05f 100644 --- a/gems/aws-sdk-detective/VERSION +++ b/gems/aws-sdk-detective/VERSION @@ -1 +1 @@ -1.42.0 +1.43.0 diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective.rb index 63cc881320e..45a25641e2e 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective.rb @@ -52,6 +52,6 @@ # @!group service module Aws::Detective - GEM_VERSION = '1.42.0' + GEM_VERSION = '1.43.0' end diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/client.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/client.rb index 6ebe6fc91f5..f6bf8dadde8 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/client.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/client.rb @@ -877,6 +877,57 @@ def enable_organization_admin_account(params = {}, options = {}) req.send_request(options) end + # Returns the investigation results of an investigation for a behavior + # graph. + # + # @option params [required, String] :graph_arn + # The ARN of the behavior graph. + # + # @option params [required, String] :investigation_id + # The investigation ID of the investigation report. + # + # @return [Types::GetInvestigationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetInvestigationResponse#graph_arn #graph_arn} => String + # * {Types::GetInvestigationResponse#investigation_id #investigation_id} => String + # * {Types::GetInvestigationResponse#entity_arn #entity_arn} => String + # * {Types::GetInvestigationResponse#entity_type #entity_type} => String + # * {Types::GetInvestigationResponse#created_time #created_time} => Time + # * {Types::GetInvestigationResponse#scope_start_time #scope_start_time} => Time + # * {Types::GetInvestigationResponse#scope_end_time #scope_end_time} => Time + # * {Types::GetInvestigationResponse#status #status} => String + # * {Types::GetInvestigationResponse#severity #severity} => String + # * {Types::GetInvestigationResponse#state #state} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_investigation({ + # graph_arn: "GraphArn", # required + # investigation_id: "InvestigationId", # required + # }) + # + # @example Response structure + # + # resp.graph_arn #=> String + # resp.investigation_id #=> String + # resp.entity_arn #=> String + # resp.entity_type #=> String, one of "IAM_ROLE", "IAM_USER" + # resp.created_time #=> Time + # resp.scope_start_time #=> Time + # resp.scope_end_time #=> Time + # resp.status #=> String, one of "RUNNING", "FAILED", "SUCCESSFUL" + # resp.severity #=> String, one of "INFORMATIONAL", "LOW", "MEDIUM", "HIGH", "CRITICAL" + # resp.state #=> String, one of "ACTIVE", "ARCHIVED" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/GetInvestigation AWS API Documentation + # + # @overload get_investigation(params = {}) + # @param [Hash] params ({}) + def get_investigation(params = {}, options = {}) + req = build_request(:get_investigation, params) + req.send_request(options) + end + # Returns the membership details for specified member accounts for a # behavior graph. # @@ -1031,6 +1082,171 @@ def list_graphs(params = {}, options = {}) req.send_request(options) end + # Get the indicators from an investigation + # + # @option params [required, String] :graph_arn + # The ARN of the behavior graph. + # + # @option params [required, String] :investigation_id + # The investigation ID of the investigation report. + # + # @option params [String] :indicator_type + # See [Detective investigations.][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/detective/latest/userguide/detective-investigations.html + # + # @option params [String] :next_token + # List if there are more results available. The value of nextToken is a + # unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return a Validation Exception error. + # + # @option params [Integer] :max_results + # List the maximum number of indicators in a page. + # + # @return [Types::ListIndicatorsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListIndicatorsResponse#graph_arn #graph_arn} => String + # * {Types::ListIndicatorsResponse#investigation_id #investigation_id} => String + # * {Types::ListIndicatorsResponse#next_token #next_token} => String + # * {Types::ListIndicatorsResponse#indicators #indicators} => Array<Types::Indicator> + # + # @example Request syntax with placeholder values + # + # resp = client.list_indicators({ + # graph_arn: "GraphArn", # required + # investigation_id: "InvestigationId", # required + # indicator_type: "TTP_OBSERVED", # accepts TTP_OBSERVED, IMPOSSIBLE_TRAVEL, FLAGGED_IP_ADDRESS, NEW_GEOLOCATION, NEW_ASO, NEW_USER_AGENT, RELATED_FINDING, RELATED_FINDING_GROUP + # next_token: "AiPaginationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.graph_arn #=> String + # resp.investigation_id #=> String + # resp.next_token #=> String + # resp.indicators #=> Array + # resp.indicators[0].indicator_type #=> String, one of "TTP_OBSERVED", "IMPOSSIBLE_TRAVEL", "FLAGGED_IP_ADDRESS", "NEW_GEOLOCATION", "NEW_ASO", "NEW_USER_AGENT", "RELATED_FINDING", "RELATED_FINDING_GROUP" + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.tactic #=> String + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.technique #=> String + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.procedure #=> String + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.ip_address #=> String + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.api_name #=> String + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.api_success_count #=> Integer + # resp.indicators[0].indicator_detail.tt_ps_observed_detail.api_failure_count #=> Integer + # resp.indicators[0].indicator_detail.impossible_travel_detail.starting_ip_address #=> String + # resp.indicators[0].indicator_detail.impossible_travel_detail.ending_ip_address #=> String + # resp.indicators[0].indicator_detail.impossible_travel_detail.starting_location #=> String + # resp.indicators[0].indicator_detail.impossible_travel_detail.ending_location #=> String + # resp.indicators[0].indicator_detail.impossible_travel_detail.hourly_time_delta #=> Integer + # resp.indicators[0].indicator_detail.flagged_ip_address_detail.ip_address #=> String + # resp.indicators[0].indicator_detail.flagged_ip_address_detail.reason #=> String, one of "AWS_THREAT_INTELLIGENCE" + # resp.indicators[0].indicator_detail.new_geolocation_detail.location #=> String + # resp.indicators[0].indicator_detail.new_geolocation_detail.ip_address #=> String + # resp.indicators[0].indicator_detail.new_geolocation_detail.is_new_for_entire_account #=> Boolean + # resp.indicators[0].indicator_detail.new_aso_detail.aso #=> String + # resp.indicators[0].indicator_detail.new_aso_detail.is_new_for_entire_account #=> Boolean + # resp.indicators[0].indicator_detail.new_user_agent_detail.user_agent #=> String + # resp.indicators[0].indicator_detail.new_user_agent_detail.is_new_for_entire_account #=> Boolean + # resp.indicators[0].indicator_detail.related_finding_detail.arn #=> String + # resp.indicators[0].indicator_detail.related_finding_detail.type #=> String + # resp.indicators[0].indicator_detail.related_finding_detail.ip_address #=> String + # resp.indicators[0].indicator_detail.related_finding_group_detail.id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListIndicators AWS API Documentation + # + # @overload list_indicators(params = {}) + # @param [Hash] params ({}) + def list_indicators(params = {}, options = {}) + req = build_request(:list_indicators, params) + req.send_request(options) + end + + # List all Investigations. + # + # @option params [required, String] :graph_arn + # The ARN of the behavior graph. + # + # @option params [String] :next_token + # List if there are more results available. The value of nextToken is a + # unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return a Validation Exception error. + # + # @option params [Integer] :max_results + # List the maximum number of investigations in a page. + # + # @option params [Types::FilterCriteria] :filter_criteria + # Filter the investigation results based on a criteria. + # + # @option params [Types::SortCriteria] :sort_criteria + # Sorts the investigation results based on a criteria. + # + # @return [Types::ListInvestigationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListInvestigationsResponse#investigation_details #investigation_details} => Array<Types::InvestigationDetail> + # * {Types::ListInvestigationsResponse#next_token #next_token} => String + # + # @example Request syntax with placeholder values + # + # resp = client.list_investigations({ + # graph_arn: "GraphArn", # required + # next_token: "AiPaginationToken", + # max_results: 1, + # filter_criteria: { + # severity: { + # value: "Value", # required + # }, + # status: { + # value: "Value", # required + # }, + # state: { + # value: "Value", # required + # }, + # entity_arn: { + # value: "Value", # required + # }, + # created_time: { + # start_inclusive: Time.now, # required + # end_inclusive: Time.now, # required + # }, + # }, + # sort_criteria: { + # field: "SEVERITY", # accepts SEVERITY, STATUS, CREATED_TIME + # sort_order: "ASC", # accepts ASC, DESC + # }, + # }) + # + # @example Response structure + # + # resp.investigation_details #=> Array + # resp.investigation_details[0].investigation_id #=> String + # resp.investigation_details[0].severity #=> String, one of "INFORMATIONAL", "LOW", "MEDIUM", "HIGH", "CRITICAL" + # resp.investigation_details[0].status #=> String, one of "RUNNING", "FAILED", "SUCCESSFUL" + # resp.investigation_details[0].state #=> String, one of "ACTIVE", "ARCHIVED" + # resp.investigation_details[0].created_time #=> Time + # resp.investigation_details[0].entity_arn #=> String + # resp.investigation_details[0].entity_type #=> String, one of "IAM_ROLE", "IAM_USER" + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListInvestigations AWS API Documentation + # + # @overload list_investigations(params = {}) + # @param [Hash] params ({}) + def list_investigations(params = {}, options = {}) + req = build_request(:list_investigations, params) + req.send_request(options) + end + # Retrieves the list of open and accepted behavior graph invitations for # the member account. This operation can only be called by an invited # member account. @@ -1274,6 +1490,48 @@ def reject_invitation(params = {}, options = {}) req.send_request(options) end + # initiate an investigation on an entity in a graph + # + # @option params [required, String] :graph_arn + # The ARN of the behavior graph. + # + # @option params [required, String] :entity_arn + # The unique Amazon Resource Name (ARN) of the IAM user and IAM role. + # + # @option params [required, Time,DateTime,Date,Integer,String] :scope_start_time + # The data and time when the investigation began. The value is an UTC + # ISO8601 formatted string. For example, `2021-08-18T16:35:56.284Z`. + # + # @option params [required, Time,DateTime,Date,Integer,String] :scope_end_time + # The data and time when the investigation began. The value is an UTC + # ISO8601 formatted string. For example, `2021-08-18T16:35:56.284Z`. + # + # @return [Types::StartInvestigationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::StartInvestigationResponse#investigation_id #investigation_id} => String + # + # @example Request syntax with placeholder values + # + # resp = client.start_investigation({ + # graph_arn: "GraphArn", # required + # entity_arn: "EntityArn", # required + # scope_start_time: Time.now, # required + # scope_end_time: Time.now, # required + # }) + # + # @example Response structure + # + # resp.investigation_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/StartInvestigation AWS API Documentation + # + # @overload start_investigation(params = {}) + # @param [Hash] params ({}) + def start_investigation(params = {}, options = {}) + req = build_request(:start_investigation, params) + req.send_request(options) + end + # Sends a request to enable data ingest for a member account that has a # status of `ACCEPTED_BUT_DISABLED`. # @@ -1396,6 +1654,37 @@ def update_datasource_packages(params = {}, options = {}) req.send_request(options) end + # Update the state of an investigation. + # + # @option params [required, String] :graph_arn + # The ARN of the behavior graph. + # + # @option params [required, String] :investigation_id + # The investigation ID of the investigation report. + # + # @option params [required, String] :state + # The current state of the investigation. An archived investigation + # indicates you have completed reviewing the investigation. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_investigation_state({ + # graph_arn: "GraphArn", # required + # investigation_id: "InvestigationId", # required + # state: "ACTIVE", # required, accepts ACTIVE, ARCHIVED + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/UpdateInvestigationState AWS API Documentation + # + # @overload update_investigation_state(params = {}) + # @param [Hash] params ({}) + def update_investigation_state(params = {}, options = {}) + req = build_request(:update_investigation_state, params) + req.send_request(options) + end + # Updates the configuration for the Organizations integration in the # current Region. Can only be called by the Detective administrator # account for the organization. @@ -1438,7 +1727,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-detective' - context[:gem_version] = '1.42.0' + context[:gem_version] = '1.43.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/client_api.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/client_api.rb index e3251e07636..e6deb519771 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/client_api.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/client_api.rb @@ -13,6 +13,9 @@ module ClientApi include Seahorse::Model + APIFailureCount = Shapes::IntegerShape.new(name: 'APIFailureCount') + APIName = Shapes::StringShape.new(name: 'APIName') + APISuccessCount = Shapes::IntegerShape.new(name: 'APISuccessCount') AcceptInvitationRequest = Shapes::StructureShape.new(name: 'AcceptInvitationRequest') AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') Account = Shapes::StructureShape.new(name: 'Account') @@ -22,6 +25,8 @@ module ClientApi AccountList = Shapes::ListShape.new(name: 'AccountList') Administrator = Shapes::StructureShape.new(name: 'Administrator') AdministratorList = Shapes::ListShape.new(name: 'AdministratorList') + AiPaginationToken = Shapes::StringShape.new(name: 'AiPaginationToken') + Aso = Shapes::StringShape.new(name: 'Aso') BatchGetGraphMemberDatasourcesRequest = Shapes::StructureShape.new(name: 'BatchGetGraphMemberDatasourcesRequest') BatchGetGraphMemberDatasourcesResponse = Shapes::StructureShape.new(name: 'BatchGetGraphMemberDatasourcesResponse') BatchGetMembershipDatasourcesRequest = Shapes::StructureShape.new(name: 'BatchGetMembershipDatasourcesRequest') @@ -41,6 +46,7 @@ module ClientApi DatasourcePackageIngestStates = Shapes::MapShape.new(name: 'DatasourcePackageIngestStates') DatasourcePackageList = Shapes::ListShape.new(name: 'DatasourcePackageList') DatasourcePackageUsageInfo = Shapes::StructureShape.new(name: 'DatasourcePackageUsageInfo') + DateFilter = Shapes::StructureShape.new(name: 'DateFilter') DeleteGraphRequest = Shapes::StructureShape.new(name: 'DeleteGraphRequest') DeleteMembersRequest = Shapes::StructureShape.new(name: 'DeleteMembersRequest') DeleteMembersResponse = Shapes::StructureShape.new(name: 'DeleteMembersResponse') @@ -50,22 +56,45 @@ module ClientApi EmailAddress = Shapes::StringShape.new(name: 'EmailAddress') EmailMessage = Shapes::StringShape.new(name: 'EmailMessage') EnableOrganizationAdminAccountRequest = Shapes::StructureShape.new(name: 'EnableOrganizationAdminAccountRequest') + EntityArn = Shapes::StringShape.new(name: 'EntityArn') + EntityType = Shapes::StringShape.new(name: 'EntityType') ErrorCode = Shapes::StringShape.new(name: 'ErrorCode') ErrorCodeReason = Shapes::StringShape.new(name: 'ErrorCodeReason') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') + Field = Shapes::StringShape.new(name: 'Field') + FilterCriteria = Shapes::StructureShape.new(name: 'FilterCriteria') + FlaggedIpAddressDetail = Shapes::StructureShape.new(name: 'FlaggedIpAddressDetail') + GetInvestigationRequest = Shapes::StructureShape.new(name: 'GetInvestigationRequest') + GetInvestigationResponse = Shapes::StructureShape.new(name: 'GetInvestigationResponse') GetMembersRequest = Shapes::StructureShape.new(name: 'GetMembersRequest') GetMembersResponse = Shapes::StructureShape.new(name: 'GetMembersResponse') Graph = Shapes::StructureShape.new(name: 'Graph') GraphArn = Shapes::StringShape.new(name: 'GraphArn') GraphArnList = Shapes::ListShape.new(name: 'GraphArnList') GraphList = Shapes::ListShape.new(name: 'GraphList') + HourlyTimeDelta = Shapes::IntegerShape.new(name: 'HourlyTimeDelta') + Id = Shapes::StringShape.new(name: 'Id') + ImpossibleTravelDetail = Shapes::StructureShape.new(name: 'ImpossibleTravelDetail') + Indicator = Shapes::StructureShape.new(name: 'Indicator') + IndicatorDetail = Shapes::StructureShape.new(name: 'IndicatorDetail') + IndicatorType = Shapes::StringShape.new(name: 'IndicatorType') + Indicators = Shapes::ListShape.new(name: 'Indicators') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + InvestigationDetail = Shapes::StructureShape.new(name: 'InvestigationDetail') + InvestigationDetails = Shapes::ListShape.new(name: 'InvestigationDetails') + InvestigationId = Shapes::StringShape.new(name: 'InvestigationId') InvitationType = Shapes::StringShape.new(name: 'InvitationType') + IpAddress = Shapes::StringShape.new(name: 'IpAddress') + IsNewForEntireAccount = Shapes::BooleanShape.new(name: 'IsNewForEntireAccount') LastIngestStateChangeDates = Shapes::MapShape.new(name: 'LastIngestStateChangeDates') ListDatasourcePackagesRequest = Shapes::StructureShape.new(name: 'ListDatasourcePackagesRequest') ListDatasourcePackagesResponse = Shapes::StructureShape.new(name: 'ListDatasourcePackagesResponse') ListGraphsRequest = Shapes::StructureShape.new(name: 'ListGraphsRequest') ListGraphsResponse = Shapes::StructureShape.new(name: 'ListGraphsResponse') + ListIndicatorsRequest = Shapes::StructureShape.new(name: 'ListIndicatorsRequest') + ListIndicatorsResponse = Shapes::StructureShape.new(name: 'ListIndicatorsResponse') + ListInvestigationsRequest = Shapes::StructureShape.new(name: 'ListInvestigationsRequest') + ListInvestigationsResponse = Shapes::StructureShape.new(name: 'ListInvestigationsResponse') ListInvitationsRequest = Shapes::StructureShape.new(name: 'ListInvitationsRequest') ListInvitationsResponse = Shapes::StructureShape.new(name: 'ListInvitationsResponse') ListMembersRequest = Shapes::StructureShape.new(name: 'ListMembersRequest') @@ -74,6 +103,8 @@ module ClientApi ListOrganizationAdminAccountsResponse = Shapes::StructureShape.new(name: 'ListOrganizationAdminAccountsResponse') ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') + Location = Shapes::StringShape.new(name: 'Location') + MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') MemberDetail = Shapes::StructureShape.new(name: 'MemberDetail') MemberDetailList = Shapes::ListShape.new(name: 'MemberDetailList') MemberDisabledReason = Shapes::StringShape.new(name: 'MemberDisabledReason') @@ -81,23 +112,42 @@ module ClientApi MemberStatus = Shapes::StringShape.new(name: 'MemberStatus') MembershipDatasources = Shapes::StructureShape.new(name: 'MembershipDatasources') MembershipDatasourcesList = Shapes::ListShape.new(name: 'MembershipDatasourcesList') + NewAsoDetail = Shapes::StructureShape.new(name: 'NewAsoDetail') + NewGeolocationDetail = Shapes::StructureShape.new(name: 'NewGeolocationDetail') + NewUserAgentDetail = Shapes::StructureShape.new(name: 'NewUserAgentDetail') PaginationToken = Shapes::StringShape.new(name: 'PaginationToken') Percentage = Shapes::FloatShape.new(name: 'Percentage') + Procedure = Shapes::StringShape.new(name: 'Procedure') + Reason = Shapes::StringShape.new(name: 'Reason') RejectInvitationRequest = Shapes::StructureShape.new(name: 'RejectInvitationRequest') + RelatedFindingDetail = Shapes::StructureShape.new(name: 'RelatedFindingDetail') + RelatedFindingGroupDetail = Shapes::StructureShape.new(name: 'RelatedFindingGroupDetail') Resource = Shapes::StringShape.new(name: 'Resource') ResourceList = Shapes::ListShape.new(name: 'ResourceList') ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') + Severity = Shapes::StringShape.new(name: 'Severity') + SortCriteria = Shapes::StructureShape.new(name: 'SortCriteria') + SortOrder = Shapes::StringShape.new(name: 'SortOrder') + StartInvestigationRequest = Shapes::StructureShape.new(name: 'StartInvestigationRequest') + StartInvestigationResponse = Shapes::StructureShape.new(name: 'StartInvestigationResponse') StartMonitoringMemberRequest = Shapes::StructureShape.new(name: 'StartMonitoringMemberRequest') + State = Shapes::StringShape.new(name: 'State') + Status = Shapes::StringShape.new(name: 'Status') + StringFilter = Shapes::StructureShape.new(name: 'StringFilter') + TTPsObservedDetail = Shapes::StructureShape.new(name: 'TTPsObservedDetail') + Tactic = Shapes::StringShape.new(name: 'Tactic') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') TagMap = Shapes::MapShape.new(name: 'TagMap') TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest') TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse') TagValue = Shapes::StringShape.new(name: 'TagValue') + Technique = Shapes::StringShape.new(name: 'Technique') Timestamp = Shapes::TimestampShape.new(name: 'Timestamp', timestampFormat: "iso8601") TimestampForCollection = Shapes::StructureShape.new(name: 'TimestampForCollection') TooManyRequestsException = Shapes::StructureShape.new(name: 'TooManyRequestsException') + Type = Shapes::StringShape.new(name: 'Type') UnprocessedAccount = Shapes::StructureShape.new(name: 'UnprocessedAccount') UnprocessedAccountList = Shapes::ListShape.new(name: 'UnprocessedAccountList') UnprocessedGraph = Shapes::StructureShape.new(name: 'UnprocessedGraph') @@ -106,8 +156,11 @@ module ClientApi UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') UpdateDatasourcePackagesRequest = Shapes::StructureShape.new(name: 'UpdateDatasourcePackagesRequest') + UpdateInvestigationStateRequest = Shapes::StructureShape.new(name: 'UpdateInvestigationStateRequest') UpdateOrganizationConfigurationRequest = Shapes::StructureShape.new(name: 'UpdateOrganizationConfigurationRequest') + UserAgent = Shapes::StringShape.new(name: 'UserAgent') ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + Value = Shapes::StringShape.new(name: 'Value') VolumeUsageByDatasourcePackage = Shapes::MapShape.new(name: 'VolumeUsageByDatasourcePackage') AcceptInvitationRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) @@ -190,6 +243,10 @@ module ClientApi DatasourcePackageUsageInfo.add_member(:volume_usage_update_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "VolumeUsageUpdateTime")) DatasourcePackageUsageInfo.struct_class = Types::DatasourcePackageUsageInfo + DateFilter.add_member(:start_inclusive, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartInclusive")) + DateFilter.add_member(:end_inclusive, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "EndInclusive")) + DateFilter.struct_class = Types::DateFilter + DeleteGraphRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) DeleteGraphRequest.struct_class = Types::DeleteGraphRequest @@ -213,6 +270,33 @@ module ClientApi EnableOrganizationAdminAccountRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location_name: "AccountId")) EnableOrganizationAdminAccountRequest.struct_class = Types::EnableOrganizationAdminAccountRequest + FilterCriteria.add_member(:severity, Shapes::ShapeRef.new(shape: StringFilter, location_name: "Severity")) + FilterCriteria.add_member(:status, Shapes::ShapeRef.new(shape: StringFilter, location_name: "Status")) + FilterCriteria.add_member(:state, Shapes::ShapeRef.new(shape: StringFilter, location_name: "State")) + FilterCriteria.add_member(:entity_arn, Shapes::ShapeRef.new(shape: StringFilter, location_name: "EntityArn")) + FilterCriteria.add_member(:created_time, Shapes::ShapeRef.new(shape: DateFilter, location_name: "CreatedTime")) + FilterCriteria.struct_class = Types::FilterCriteria + + FlaggedIpAddressDetail.add_member(:ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "IpAddress")) + FlaggedIpAddressDetail.add_member(:reason, Shapes::ShapeRef.new(shape: Reason, location_name: "Reason")) + FlaggedIpAddressDetail.struct_class = Types::FlaggedIpAddressDetail + + GetInvestigationRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) + GetInvestigationRequest.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, required: true, location_name: "InvestigationId")) + GetInvestigationRequest.struct_class = Types::GetInvestigationRequest + + GetInvestigationResponse.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, location_name: "GraphArn")) + GetInvestigationResponse.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, location_name: "InvestigationId")) + GetInvestigationResponse.add_member(:entity_arn, Shapes::ShapeRef.new(shape: EntityArn, location_name: "EntityArn")) + GetInvestigationResponse.add_member(:entity_type, Shapes::ShapeRef.new(shape: EntityType, location_name: "EntityType")) + GetInvestigationResponse.add_member(:created_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTime")) + GetInvestigationResponse.add_member(:scope_start_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "ScopeStartTime")) + GetInvestigationResponse.add_member(:scope_end_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "ScopeEndTime")) + GetInvestigationResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status")) + GetInvestigationResponse.add_member(:severity, Shapes::ShapeRef.new(shape: Severity, location_name: "Severity")) + GetInvestigationResponse.add_member(:state, Shapes::ShapeRef.new(shape: State, location_name: "State")) + GetInvestigationResponse.struct_class = Types::GetInvestigationResponse + GetMembersRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) GetMembersRequest.add_member(:account_ids, Shapes::ShapeRef.new(shape: AccountIdList, required: true, location_name: "AccountIds")) GetMembersRequest.struct_class = Types::GetMembersRequest @@ -229,9 +313,43 @@ module ClientApi GraphList.member = Shapes::ShapeRef.new(shape: Graph) + ImpossibleTravelDetail.add_member(:starting_ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "StartingIpAddress")) + ImpossibleTravelDetail.add_member(:ending_ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "EndingIpAddress")) + ImpossibleTravelDetail.add_member(:starting_location, Shapes::ShapeRef.new(shape: Location, location_name: "StartingLocation")) + ImpossibleTravelDetail.add_member(:ending_location, Shapes::ShapeRef.new(shape: Location, location_name: "EndingLocation")) + ImpossibleTravelDetail.add_member(:hourly_time_delta, Shapes::ShapeRef.new(shape: HourlyTimeDelta, location_name: "HourlyTimeDelta")) + ImpossibleTravelDetail.struct_class = Types::ImpossibleTravelDetail + + Indicator.add_member(:indicator_type, Shapes::ShapeRef.new(shape: IndicatorType, location_name: "IndicatorType")) + Indicator.add_member(:indicator_detail, Shapes::ShapeRef.new(shape: IndicatorDetail, location_name: "IndicatorDetail")) + Indicator.struct_class = Types::Indicator + + IndicatorDetail.add_member(:tt_ps_observed_detail, Shapes::ShapeRef.new(shape: TTPsObservedDetail, location_name: "TTPsObservedDetail")) + IndicatorDetail.add_member(:impossible_travel_detail, Shapes::ShapeRef.new(shape: ImpossibleTravelDetail, location_name: "ImpossibleTravelDetail")) + IndicatorDetail.add_member(:flagged_ip_address_detail, Shapes::ShapeRef.new(shape: FlaggedIpAddressDetail, location_name: "FlaggedIpAddressDetail")) + IndicatorDetail.add_member(:new_geolocation_detail, Shapes::ShapeRef.new(shape: NewGeolocationDetail, location_name: "NewGeolocationDetail")) + IndicatorDetail.add_member(:new_aso_detail, Shapes::ShapeRef.new(shape: NewAsoDetail, location_name: "NewAsoDetail")) + IndicatorDetail.add_member(:new_user_agent_detail, Shapes::ShapeRef.new(shape: NewUserAgentDetail, location_name: "NewUserAgentDetail")) + IndicatorDetail.add_member(:related_finding_detail, Shapes::ShapeRef.new(shape: RelatedFindingDetail, location_name: "RelatedFindingDetail")) + IndicatorDetail.add_member(:related_finding_group_detail, Shapes::ShapeRef.new(shape: RelatedFindingGroupDetail, location_name: "RelatedFindingGroupDetail")) + IndicatorDetail.struct_class = Types::IndicatorDetail + + Indicators.member = Shapes::ShapeRef.new(shape: Indicator) + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) InternalServerException.struct_class = Types::InternalServerException + InvestigationDetail.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, location_name: "InvestigationId")) + InvestigationDetail.add_member(:severity, Shapes::ShapeRef.new(shape: Severity, location_name: "Severity")) + InvestigationDetail.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "Status")) + InvestigationDetail.add_member(:state, Shapes::ShapeRef.new(shape: State, location_name: "State")) + InvestigationDetail.add_member(:created_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTime")) + InvestigationDetail.add_member(:entity_arn, Shapes::ShapeRef.new(shape: EntityArn, location_name: "EntityArn")) + InvestigationDetail.add_member(:entity_type, Shapes::ShapeRef.new(shape: EntityType, location_name: "EntityType")) + InvestigationDetail.struct_class = Types::InvestigationDetail + + InvestigationDetails.member = Shapes::ShapeRef.new(shape: InvestigationDetail) + LastIngestStateChangeDates.key = Shapes::ShapeRef.new(shape: DatasourcePackageIngestState) LastIngestStateChangeDates.value = Shapes::ShapeRef.new(shape: TimestampForCollection) @@ -252,6 +370,30 @@ module ClientApi ListGraphsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken")) ListGraphsResponse.struct_class = Types::ListGraphsResponse + ListIndicatorsRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) + ListIndicatorsRequest.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, required: true, location_name: "InvestigationId")) + ListIndicatorsRequest.add_member(:indicator_type, Shapes::ShapeRef.new(shape: IndicatorType, location_name: "IndicatorType")) + ListIndicatorsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: AiPaginationToken, location_name: "NextToken")) + ListIndicatorsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListIndicatorsRequest.struct_class = Types::ListIndicatorsRequest + + ListIndicatorsResponse.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, location_name: "GraphArn")) + ListIndicatorsResponse.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, location_name: "InvestigationId")) + ListIndicatorsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: AiPaginationToken, location_name: "NextToken")) + ListIndicatorsResponse.add_member(:indicators, Shapes::ShapeRef.new(shape: Indicators, location_name: "Indicators")) + ListIndicatorsResponse.struct_class = Types::ListIndicatorsResponse + + ListInvestigationsRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) + ListInvestigationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: AiPaginationToken, location_name: "NextToken")) + ListInvestigationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) + ListInvestigationsRequest.add_member(:filter_criteria, Shapes::ShapeRef.new(shape: FilterCriteria, location_name: "FilterCriteria")) + ListInvestigationsRequest.add_member(:sort_criteria, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "SortCriteria")) + ListInvestigationsRequest.struct_class = Types::ListInvestigationsRequest + + ListInvestigationsResponse.add_member(:investigation_details, Shapes::ShapeRef.new(shape: InvestigationDetails, location_name: "InvestigationDetails")) + ListInvestigationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: AiPaginationToken, location_name: "NextToken")) + ListInvestigationsResponse.struct_class = Types::ListInvestigationsResponse + ListInvitationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken")) ListInvitationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MemberResultsLimit, location_name: "MaxResults")) ListInvitationsRequest.struct_class = Types::ListInvitationsRequest @@ -310,9 +452,30 @@ module ClientApi MembershipDatasourcesList.member = Shapes::ShapeRef.new(shape: MembershipDatasources) + NewAsoDetail.add_member(:aso, Shapes::ShapeRef.new(shape: Aso, location_name: "Aso")) + NewAsoDetail.add_member(:is_new_for_entire_account, Shapes::ShapeRef.new(shape: IsNewForEntireAccount, location_name: "IsNewForEntireAccount")) + NewAsoDetail.struct_class = Types::NewAsoDetail + + NewGeolocationDetail.add_member(:location, Shapes::ShapeRef.new(shape: Location, location_name: "Location")) + NewGeolocationDetail.add_member(:ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "IpAddress")) + NewGeolocationDetail.add_member(:is_new_for_entire_account, Shapes::ShapeRef.new(shape: IsNewForEntireAccount, location_name: "IsNewForEntireAccount")) + NewGeolocationDetail.struct_class = Types::NewGeolocationDetail + + NewUserAgentDetail.add_member(:user_agent, Shapes::ShapeRef.new(shape: UserAgent, location_name: "UserAgent")) + NewUserAgentDetail.add_member(:is_new_for_entire_account, Shapes::ShapeRef.new(shape: IsNewForEntireAccount, location_name: "IsNewForEntireAccount")) + NewUserAgentDetail.struct_class = Types::NewUserAgentDetail + RejectInvitationRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) RejectInvitationRequest.struct_class = Types::RejectInvitationRequest + RelatedFindingDetail.add_member(:arn, Shapes::ShapeRef.new(shape: EntityArn, location_name: "Arn")) + RelatedFindingDetail.add_member(:type, Shapes::ShapeRef.new(shape: Type, location_name: "Type")) + RelatedFindingDetail.add_member(:ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "IpAddress")) + RelatedFindingDetail.struct_class = Types::RelatedFindingDetail + + RelatedFindingGroupDetail.add_member(:id, Shapes::ShapeRef.new(shape: Id, location_name: "Id")) + RelatedFindingGroupDetail.struct_class = Types::RelatedFindingGroupDetail + ResourceList.member = Shapes::ShapeRef.new(shape: Resource) ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) @@ -322,10 +485,35 @@ module ClientApi ServiceQuotaExceededException.add_member(:resources, Shapes::ShapeRef.new(shape: ResourceList, location_name: "Resources")) ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException + SortCriteria.add_member(:field, Shapes::ShapeRef.new(shape: Field, location_name: "Field")) + SortCriteria.add_member(:sort_order, Shapes::ShapeRef.new(shape: SortOrder, location_name: "SortOrder")) + SortCriteria.struct_class = Types::SortCriteria + + StartInvestigationRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) + StartInvestigationRequest.add_member(:entity_arn, Shapes::ShapeRef.new(shape: EntityArn, required: true, location_name: "EntityArn")) + StartInvestigationRequest.add_member(:scope_start_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "ScopeStartTime")) + StartInvestigationRequest.add_member(:scope_end_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "ScopeEndTime")) + StartInvestigationRequest.struct_class = Types::StartInvestigationRequest + + StartInvestigationResponse.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, location_name: "InvestigationId")) + StartInvestigationResponse.struct_class = Types::StartInvestigationResponse + StartMonitoringMemberRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) StartMonitoringMemberRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location_name: "AccountId")) StartMonitoringMemberRequest.struct_class = Types::StartMonitoringMemberRequest + StringFilter.add_member(:value, Shapes::ShapeRef.new(shape: Value, required: true, location_name: "Value")) + StringFilter.struct_class = Types::StringFilter + + TTPsObservedDetail.add_member(:tactic, Shapes::ShapeRef.new(shape: Tactic, location_name: "Tactic")) + TTPsObservedDetail.add_member(:technique, Shapes::ShapeRef.new(shape: Technique, location_name: "Technique")) + TTPsObservedDetail.add_member(:procedure, Shapes::ShapeRef.new(shape: Procedure, location_name: "Procedure")) + TTPsObservedDetail.add_member(:ip_address, Shapes::ShapeRef.new(shape: IpAddress, location_name: "IpAddress")) + TTPsObservedDetail.add_member(:api_name, Shapes::ShapeRef.new(shape: APIName, location_name: "APIName")) + TTPsObservedDetail.add_member(:api_success_count, Shapes::ShapeRef.new(shape: APISuccessCount, location_name: "APISuccessCount")) + TTPsObservedDetail.add_member(:api_failure_count, Shapes::ShapeRef.new(shape: APIFailureCount, location_name: "APIFailureCount")) + TTPsObservedDetail.struct_class = Types::TTPsObservedDetail + TagKeyList.member = Shapes::ShapeRef.new(shape: TagKey) TagMap.key = Shapes::ShapeRef.new(shape: TagKey) @@ -365,6 +553,11 @@ module ClientApi UpdateDatasourcePackagesRequest.add_member(:datasource_packages, Shapes::ShapeRef.new(shape: DatasourcePackageList, required: true, location_name: "DatasourcePackages")) UpdateDatasourcePackagesRequest.struct_class = Types::UpdateDatasourcePackagesRequest + UpdateInvestigationStateRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) + UpdateInvestigationStateRequest.add_member(:investigation_id, Shapes::ShapeRef.new(shape: InvestigationId, required: true, location_name: "InvestigationId")) + UpdateInvestigationStateRequest.add_member(:state, Shapes::ShapeRef.new(shape: State, required: true, location_name: "State")) + UpdateInvestigationStateRequest.struct_class = Types::UpdateInvestigationStateRequest + UpdateOrganizationConfigurationRequest.add_member(:graph_arn, Shapes::ShapeRef.new(shape: GraphArn, required: true, location_name: "GraphArn")) UpdateOrganizationConfigurationRequest.add_member(:auto_enable, Shapes::ShapeRef.new(shape: Boolean, location_name: "AutoEnable")) UpdateOrganizationConfigurationRequest.struct_class = Types::UpdateOrganizationConfigurationRequest @@ -531,6 +724,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) end) + api.add_operation(:get_investigation, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetInvestigation" + o.http_method = "POST" + o.http_request_uri = "/investigations/getInvestigation" + o.input = Shapes::ShapeRef.new(shape: GetInvestigationRequest) + o.output = Shapes::ShapeRef.new(shape: GetInvestigationResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) + end) + api.add_operation(:get_members, Seahorse::Model::Operation.new.tap do |o| o.name = "GetMembers" o.http_method = "POST" @@ -578,6 +784,32 @@ module ClientApi ) end) + api.add_operation(:list_indicators, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListIndicators" + o.http_method = "POST" + o.http_request_uri = "/investigations/listIndicators" + o.input = Shapes::ShapeRef.new(shape: ListIndicatorsRequest) + o.output = Shapes::ShapeRef.new(shape: ListIndicatorsResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) + end) + + api.add_operation(:list_investigations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListInvestigations" + o.http_method = "POST" + o.http_request_uri = "/investigations/listInvestigations" + o.input = Shapes::ShapeRef.new(shape: ListInvestigationsRequest) + o.output = Shapes::ShapeRef.new(shape: ListInvestigationsResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) + end) + api.add_operation(:list_invitations, Seahorse::Model::Operation.new.tap do |o| o.name = "ListInvitations" o.http_method = "POST" @@ -656,6 +888,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ValidationException) end) + api.add_operation(:start_investigation, Seahorse::Model::Operation.new.tap do |o| + o.name = "StartInvestigation" + o.http_method = "POST" + o.http_request_uri = "/investigations/startInvestigation" + o.input = Shapes::ShapeRef.new(shape: StartInvestigationRequest) + o.output = Shapes::ShapeRef.new(shape: StartInvestigationResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:start_monitoring_member, Seahorse::Model::Operation.new.tap do |o| o.name = "StartMonitoringMember" o.http_method = "POST" @@ -707,6 +952,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ValidationException) end) + api.add_operation(:update_investigation_state, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateInvestigationState" + o.http_method = "POST" + o.http_request_uri = "/investigations/updateInvestigationState" + o.input = Shapes::ShapeRef.new(shape: UpdateInvestigationStateRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException) + end) + api.add_operation(:update_organization_configuration, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateOrganizationConfiguration" o.http_method = "POST" diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoint_provider.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoint_provider.rb index 31446cf7103..5f192b3050c 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoint_provider.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://api.detective-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoints.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoints.rb index 536e9b76d08..92f2bfc114e 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoints.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/endpoints.rb @@ -166,6 +166,20 @@ def self.build(context) end end + class GetInvestigation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Detective::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetMembers def self.build(context) unless context.config.regional_endpoint @@ -208,6 +222,34 @@ def self.build(context) end end + class ListIndicators + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Detective::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListInvestigations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Detective::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListInvitations def self.build(context) unless context.config.regional_endpoint @@ -278,6 +320,20 @@ def self.build(context) end end + class StartInvestigation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Detective::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class StartMonitoringMember def self.build(context) unless context.config.regional_endpoint @@ -334,6 +390,20 @@ def self.build(context) end end + class UpdateInvestigationState + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Detective::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UpdateOrganizationConfiguration def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/plugins/endpoints.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/plugins/endpoints.rb index 9a2704c8214..b7bf95bfd7e 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/plugins/endpoints.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/plugins/endpoints.rb @@ -78,12 +78,18 @@ def parameters_for_operation(context) Aws::Detective::Endpoints::DisassociateMembership.build(context) when :enable_organization_admin_account Aws::Detective::Endpoints::EnableOrganizationAdminAccount.build(context) + when :get_investigation + Aws::Detective::Endpoints::GetInvestigation.build(context) when :get_members Aws::Detective::Endpoints::GetMembers.build(context) when :list_datasource_packages Aws::Detective::Endpoints::ListDatasourcePackages.build(context) when :list_graphs Aws::Detective::Endpoints::ListGraphs.build(context) + when :list_indicators + Aws::Detective::Endpoints::ListIndicators.build(context) + when :list_investigations + Aws::Detective::Endpoints::ListInvestigations.build(context) when :list_invitations Aws::Detective::Endpoints::ListInvitations.build(context) when :list_members @@ -94,6 +100,8 @@ def parameters_for_operation(context) Aws::Detective::Endpoints::ListTagsForResource.build(context) when :reject_invitation Aws::Detective::Endpoints::RejectInvitation.build(context) + when :start_investigation + Aws::Detective::Endpoints::StartInvestigation.build(context) when :start_monitoring_member Aws::Detective::Endpoints::StartMonitoringMember.build(context) when :tag_resource @@ -102,6 +110,8 @@ def parameters_for_operation(context) Aws::Detective::Endpoints::UntagResource.build(context) when :update_datasource_packages Aws::Detective::Endpoints::UpdateDatasourcePackages.build(context) + when :update_investigation_state + Aws::Detective::Endpoints::UpdateInvestigationState.build(context) when :update_organization_configuration Aws::Detective::Endpoints::UpdateOrganizationConfiguration.build(context) end diff --git a/gems/aws-sdk-detective/lib/aws-sdk-detective/types.rb b/gems/aws-sdk-detective/lib/aws-sdk-detective/types.rb index dce7257b07a..33a045c80e4 100644 --- a/gems/aws-sdk-detective/lib/aws-sdk-detective/types.rb +++ b/gems/aws-sdk-detective/lib/aws-sdk-detective/types.rb @@ -323,6 +323,27 @@ class DatasourcePackageUsageInfo < Struct.new( include Aws::Structure end + # Contains details on the time range used to filter data. + # + # @!attribute [rw] start_inclusive + # A timestamp representing the start of the time period from when data + # is filtered, including the start date. + # @return [Time] + # + # @!attribute [rw] end_inclusive + # A timestamp representing the end date of the time period until when + # data is filtered , including the end date. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/DateFilter AWS API Documentation + # + class DateFilter < Struct.new( + :start_inclusive, + :end_inclusive) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the behavior graph to disable. # @return [String] @@ -429,6 +450,143 @@ class EnableOrganizationAdminAccountRequest < Struct.new( include Aws::Structure end + # Details on the criteria used to define the filter for investigation + # results. + # + # @!attribute [rw] severity + # Filter the investigation results based on the severity. + # @return [Types::StringFilter] + # + # @!attribute [rw] status + # Filter the investigation results based on the status. + # @return [Types::StringFilter] + # + # @!attribute [rw] state + # Filter the investigation results based on the state. + # @return [Types::StringFilter] + # + # @!attribute [rw] entity_arn + # Filter the investigation results based on the Amazon Resource Name + # (ARN) of the entity. + # @return [Types::StringFilter] + # + # @!attribute [rw] created_time + # Filter the investigation results based on when the investigation was + # created. + # @return [Types::DateFilter] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/FilterCriteria AWS API Documentation + # + class FilterCriteria < Struct.new( + :severity, + :status, + :state, + :entity_arn, + :created_time) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information on suspicious IP addresses identified as + # indicators of compromise. This indicator is derived from Amazon Web + # Services threat intelligence. + # + # @!attribute [rw] ip_address + # IP address of the suspicious entity. + # @return [String] + # + # @!attribute [rw] reason + # Details the reason the IP address was flagged as suspicious. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/FlaggedIpAddressDetail AWS API Documentation + # + class FlaggedIpAddressDetail < Struct.new( + :ip_address, + :reason) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/GetInvestigationRequest AWS API Documentation + # + class GetInvestigationRequest < Struct.new( + :graph_arn, + :investigation_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @!attribute [rw] entity_arn + # The unique Amazon Resource Name (ARN) of the IAM user and IAM role. + # @return [String] + # + # @!attribute [rw] entity_type + # Type of entity. For example, Amazon Web Services accounts, such as + # IAM user and role. + # @return [String] + # + # @!attribute [rw] created_time + # The UTC time stamp of the creation time of the investigation report. + # @return [Time] + # + # @!attribute [rw] scope_start_time + # The start date and time for the scope time set to generate the + # investigation report. + # @return [Time] + # + # @!attribute [rw] scope_end_time + # The data and time when the investigation began. The value is an UTC + # ISO8601 formatted string. For example, 2021-08-18T16:35:56.284Z. + # @return [Time] + # + # @!attribute [rw] status + # Status based on the completion status of the investigation. + # @return [String] + # + # @!attribute [rw] severity + # Severity based on the likelihood and impact of the indicators of + # compromise discovered in the investigation. + # @return [String] + # + # @!attribute [rw] state + # The current state of the investigation. An archived investigation + # indicates you have completed reviewing the investigation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/GetInvestigationResponse AWS API Documentation + # + class GetInvestigationResponse < Struct.new( + :graph_arn, + :investigation_id, + :entity_arn, + :entity_type, + :created_time, + :scope_start_time, + :scope_end_time, + :status, + :severity, + :state) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the behavior graph for which to request the member # details. @@ -495,6 +653,116 @@ class Graph < Struct.new( include Aws::Structure end + # Contains information on unusual and impossible travel in an account. + # + # @!attribute [rw] starting_ip_address + # IP address where the resource was first used in the impossible + # travel + # @return [String] + # + # @!attribute [rw] ending_ip_address + # IP address where the resource was last used in the impossible + # travel. + # @return [String] + # + # @!attribute [rw] starting_location + # Location where the resource was first used in the impossible travel + # @return [String] + # + # @!attribute [rw] ending_location + # Location where the resource was last used in the impossible travel. + # @return [String] + # + # @!attribute [rw] hourly_time_delta + # Returns the time difference between the first and last timestamp the + # resource was used. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ImpossibleTravelDetail AWS API Documentation + # + class ImpossibleTravelDetail < Struct.new( + :starting_ip_address, + :ending_ip_address, + :starting_location, + :ending_location, + :hourly_time_delta) + SENSITIVE = [] + include Aws::Structure + end + + # Investigations triages indicators of compromises such as a finding and + # surfaces only the most critical and suspicious issues, so you can + # focus on high-level investigations. + # + # @!attribute [rw] indicator_type + # The type of indicator. + # @return [String] + # + # @!attribute [rw] indicator_detail + # Details about the indicator of compromise. + # @return [Types::IndicatorDetail] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/Indicator AWS API Documentation + # + class Indicator < Struct.new( + :indicator_type, + :indicator_detail) + SENSITIVE = [] + include Aws::Structure + end + + # Details about the indicators of compromise which are used to determine + # if a resource is involved in a security incident. + # + # @!attribute [rw] tt_ps_observed_detail + # Details about the indicator of compromise. + # @return [Types::TTPsObservedDetail] + # + # @!attribute [rw] impossible_travel_detail + # Identifies unusual and impossible user activity for an account. + # @return [Types::ImpossibleTravelDetail] + # + # @!attribute [rw] flagged_ip_address_detail + # Suspicious IP addresses that are flagged, which indicates critical + # or severe threats based on threat intelligence by Detective. This + # indicator is derived from AWS threat intelligence. + # @return [Types::FlaggedIpAddressDetail] + # + # @!attribute [rw] new_geolocation_detail + # Contains details about the new geographic location. + # @return [Types::NewGeolocationDetail] + # + # @!attribute [rw] new_aso_detail + # Contains details about the new Autonomous System Organization (ASO). + # @return [Types::NewAsoDetail] + # + # @!attribute [rw] new_user_agent_detail + # Contains details about the new user agent. + # @return [Types::NewUserAgentDetail] + # + # @!attribute [rw] related_finding_detail + # Contains details about related findings. + # @return [Types::RelatedFindingDetail] + # + # @!attribute [rw] related_finding_group_detail + # Contains details about related finding groups. + # @return [Types::RelatedFindingGroupDetail] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/IndicatorDetail AWS API Documentation + # + class IndicatorDetail < Struct.new( + :tt_ps_observed_detail, + :impossible_travel_detail, + :flagged_ip_address_detail, + :new_geolocation_detail, + :new_aso_detail, + :new_user_agent_detail, + :related_finding_detail, + :related_finding_group_detail) + SENSITIVE = [] + include Aws::Structure + end + # The request was valid but failed because of a problem with the # service. # @@ -509,6 +777,54 @@ class InternalServerException < Struct.new( include Aws::Structure end + # Details about the investigation related to a potential security event + # identified by Detective + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @!attribute [rw] severity + # Severity based on the likelihood and impact of the indicators of + # compromise discovered in the investigation. + # @return [String] + # + # @!attribute [rw] status + # Status based on the completion status of the investigation. + # @return [String] + # + # @!attribute [rw] state + # The current state of the investigation. An archived investigation + # indicates you have completed reviewing the investigation. + # @return [String] + # + # @!attribute [rw] created_time + # The UTC time stamp of the creation time of the investigation report. + # @return [Time] + # + # @!attribute [rw] entity_arn + # The unique Amazon Resource Name (ARN) of the IAM user and IAM role. + # @return [String] + # + # @!attribute [rw] entity_type + # Type of entity. For example, Amazon Web Services accounts, such as + # IAM user and role. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/InvestigationDetail AWS API Documentation + # + class InvestigationDetail < Struct.new( + :investigation_id, + :severity, + :status, + :state, + :created_time, + :entity_arn, + :entity_type) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the behavior graph. # @return [String] @@ -593,6 +909,143 @@ class ListGraphsResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @!attribute [rw] indicator_type + # See [Detective investigations.][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/detective/latest/userguide/detective-investigations.html + # @return [String] + # + # @!attribute [rw] next_token + # List if there are more results available. The value of nextToken is + # a unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return a Validation Exception error. + # @return [String] + # + # @!attribute [rw] max_results + # List the maximum number of indicators in a page. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListIndicatorsRequest AWS API Documentation + # + class ListIndicatorsRequest < Struct.new( + :graph_arn, + :investigation_id, + :indicator_type, + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @!attribute [rw] next_token + # List if there are more results available. The value of nextToken is + # a unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return a Validation Exception error. + # @return [String] + # + # @!attribute [rw] indicators + # Indicators of compromise listed based on severity. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListIndicatorsResponse AWS API Documentation + # + class ListIndicatorsResponse < Struct.new( + :graph_arn, + :investigation_id, + :next_token, + :indicators) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] next_token + # List if there are more results available. The value of nextToken is + # a unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return a Validation Exception error. + # @return [String] + # + # @!attribute [rw] max_results + # List the maximum number of investigations in a page. + # @return [Integer] + # + # @!attribute [rw] filter_criteria + # Filter the investigation results based on a criteria. + # @return [Types::FilterCriteria] + # + # @!attribute [rw] sort_criteria + # Sorts the investigation results based on a criteria. + # @return [Types::SortCriteria] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListInvestigationsRequest AWS API Documentation + # + class ListInvestigationsRequest < Struct.new( + :graph_arn, + :next_token, + :max_results, + :filter_criteria, + :sort_criteria) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] investigation_details + # Investigations details lists the summary of uncommon behavior or + # malicious activity which indicates a compromise. + # @return [Array] + # + # @!attribute [rw] next_token + # List if there are more results available. The value of nextToken is + # a unique pagination token for each page. Repeat the call using the + # returned token to retrieve the next page. Keep all other arguments + # unchanged. + # + # Each pagination token expires after 24 hours. Using an expired + # pagination token will return an HTTP 400 InvalidToken error. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/ListInvestigationsResponse AWS API Documentation + # + class ListInvestigationsResponse < Struct.new( + :investigation_details, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] next_token # For requests to retrieve the next page of results, the pagination # token that was returned with the previous page of results. The @@ -939,6 +1392,71 @@ class MembershipDatasources < Struct.new( include Aws::Structure end + # Details new Autonomous System Organizations (ASOs) used either at the + # resource or account level. + # + # @!attribute [rw] aso + # Details about the new Autonomous System Organization (ASO). + # @return [String] + # + # @!attribute [rw] is_new_for_entire_account + # Checks if the ASO is for new for the entire account. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/NewAsoDetail AWS API Documentation + # + class NewAsoDetail < Struct.new( + :aso, + :is_new_for_entire_account) + SENSITIVE = [] + include Aws::Structure + end + + # Details new geolocations used either at the resource or account level. + # For example, lists an observed geolocation that is an infrequent or + # unused location based on previous user activity. + # + # @!attribute [rw] location + # Location where the resource was accessed. + # @return [String] + # + # @!attribute [rw] ip_address + # IP address using which the resource was accessed. + # @return [String] + # + # @!attribute [rw] is_new_for_entire_account + # Checks if the gelocation is new for the entire account. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/NewGeolocationDetail AWS API Documentation + # + class NewGeolocationDetail < Struct.new( + :location, + :ip_address, + :is_new_for_entire_account) + SENSITIVE = [] + include Aws::Structure + end + + # Details new user agents used either at the resource or account level. + # + # @!attribute [rw] user_agent + # New user agent which accessed the resource. + # @return [String] + # + # @!attribute [rw] is_new_for_entire_account + # Checks if the user agent is new for the entire account. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/NewUserAgentDetail AWS API Documentation + # + class NewUserAgentDetail < Struct.new( + :user_agent, + :is_new_for_entire_account) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the behavior graph to reject the invitation to. # @@ -954,6 +1472,49 @@ class RejectInvitationRequest < Struct.new( include Aws::Structure end + # Details related activities associated with a potential security event. + # Lists all distinct categories of evidence that are connected to the + # resource or the finding group. + # + # @!attribute [rw] arn + # The ARN of the related finding. + # @return [String] + # + # @!attribute [rw] type + # The type of finding. + # @return [String] + # + # @!attribute [rw] ip_address + # The IP address of the finding. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/RelatedFindingDetail AWS API Documentation + # + class RelatedFindingDetail < Struct.new( + :arn, + :type, + :ip_address) + SENSITIVE = [] + include Aws::Structure + end + + # Details multiple activities as they related to a potential security + # event. Detective uses graph analysis technique that infers + # relationships between findings and entities, and groups them together + # as a finding group. + # + # @!attribute [rw] id + # The unique identifier for the finding group. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/RelatedFindingGroupDetail AWS API Documentation + # + class RelatedFindingGroupDetail < Struct.new( + :id) + SENSITIVE = [] + include Aws::Structure + end + # The request refers to a nonexistent resource. # # @!attribute [rw] message @@ -996,6 +1557,66 @@ class ServiceQuotaExceededException < Struct.new( include Aws::Structure end + # Details about the criteria used for sorting investigations. + # + # @!attribute [rw] field + # Represents the `Field` attribute to sort investigations. + # @return [String] + # + # @!attribute [rw] sort_order + # The order by which the sorted findings are displayed. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/SortCriteria AWS API Documentation + # + class SortCriteria < Struct.new( + :field, + :sort_order) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] entity_arn + # The unique Amazon Resource Name (ARN) of the IAM user and IAM role. + # @return [String] + # + # @!attribute [rw] scope_start_time + # The data and time when the investigation began. The value is an UTC + # ISO8601 formatted string. For example, `2021-08-18T16:35:56.284Z`. + # @return [Time] + # + # @!attribute [rw] scope_end_time + # The data and time when the investigation began. The value is an UTC + # ISO8601 formatted string. For example, `2021-08-18T16:35:56.284Z`. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/StartInvestigationRequest AWS API Documentation + # + class StartInvestigationRequest < Struct.new( + :graph_arn, + :entity_arn, + :scope_start_time, + :scope_end_time) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/StartInvestigationResponse AWS API Documentation + # + class StartInvestigationResponse < Struct.new( + :investigation_id) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the behavior graph. # @return [String] @@ -1016,6 +1637,70 @@ class StartMonitoringMemberRequest < Struct.new( include Aws::Structure end + # A string for filtering Detective investigations. + # + # @!attribute [rw] value + # The string filter value. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/StringFilter AWS API Documentation + # + class StringFilter < Struct.new( + :value) + SENSITIVE = [] + include Aws::Structure + end + + # Details tactics, techniques, and procedures (TTPs) used in a potential + # security event. Tactics are based on [MITRE ATT&CK Matrix for + # Enterprise][1]. + # + # + # + # [1]: https://attack.mitre.org/matrices/enterprise/ + # + # @!attribute [rw] tactic + # The tactic used, identified by the investigation. + # @return [String] + # + # @!attribute [rw] technique + # The technique used, identified by the investigation. + # @return [String] + # + # @!attribute [rw] procedure + # The procedure used, identified by the investigation. + # @return [String] + # + # @!attribute [rw] ip_address + # The IP address where the TTP was observed. + # @return [String] + # + # @!attribute [rw] api_name + # The name of the API where the TTP was observed. + # @return [String] + # + # @!attribute [rw] api_success_count + # The total number of successful API requests. + # @return [Integer] + # + # @!attribute [rw] api_failure_count + # The total number of failed API requests. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/TTPsObservedDetail AWS API Documentation + # + class TTPsObservedDetail < Struct.new( + :tactic, + :technique, + :procedure, + :ip_address, + :api_name, + :api_success_count, + :api_failure_count) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The ARN of the behavior graph to assign the tags to. # @return [String] @@ -1150,6 +1835,29 @@ class UpdateDatasourcePackagesRequest < Struct.new( include Aws::Structure end + # @!attribute [rw] graph_arn + # The ARN of the behavior graph. + # @return [String] + # + # @!attribute [rw] investigation_id + # The investigation ID of the investigation report. + # @return [String] + # + # @!attribute [rw] state + # The current state of the investigation. An archived investigation + # indicates you have completed reviewing the investigation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/detective-2018-10-26/UpdateInvestigationStateRequest AWS API Documentation + # + class UpdateInvestigationStateRequest < Struct.new( + :graph_arn, + :investigation_id, + :state) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] graph_arn # The ARN of the organization behavior graph. # @return [String] diff --git a/gems/aws-sdk-ecs/CHANGELOG.md b/gems/aws-sdk-ecs/CHANGELOG.md index 4f63cbd7ddc..a4f0274bdad 100644 --- a/gems/aws-sdk-ecs/CHANGELOG.md +++ b/gems/aws-sdk-ecs/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.134.0 (2023-11-27) +------------------ + +* Feature - Adds a new 'type' property to the Setting structure. Adds a new AccountSetting - guardDutyActivate for ECS. + 1.133.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-ecs/VERSION b/gems/aws-sdk-ecs/VERSION index 445cade7793..c12e5e4ac1d 100644 --- a/gems/aws-sdk-ecs/VERSION +++ b/gems/aws-sdk-ecs/VERSION @@ -1 +1 @@ -1.133.0 +1.134.0 diff --git a/gems/aws-sdk-ecs/lib/aws-sdk-ecs.rb b/gems/aws-sdk-ecs/lib/aws-sdk-ecs.rb index bc169fe1745..32e18c024c1 100644 --- a/gems/aws-sdk-ecs/lib/aws-sdk-ecs.rb +++ b/gems/aws-sdk-ecs/lib/aws-sdk-ecs.rb @@ -53,6 +53,6 @@ # @!group service module Aws::ECS - GEM_VERSION = '1.133.0' + GEM_VERSION = '1.134.0' end diff --git a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client.rb b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client.rb index 5683dbc3897..a2d0148072a 100644 --- a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client.rb +++ b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client.rb @@ -1913,15 +1913,16 @@ def create_task_set(params = {}, options = {}) # @example Request syntax with placeholder values # # resp = client.delete_account_setting({ - # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod + # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod, guardDutyActivate # principal_arn: "String", # }) # # @example Response structure # - # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod" + # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" # resp.setting.value #=> String # resp.setting.principal_arn #=> String + # resp.setting.type #=> String, one of "user", "aws_managed" # # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteAccountSetting AWS API Documentation # @@ -4579,7 +4580,7 @@ def get_task_protection(params = {}, options = {}) # @example Request syntax with placeholder values # # resp = client.list_account_settings({ - # name: "serviceLongArnFormat", # accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod + # name: "serviceLongArnFormat", # accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod, guardDutyActivate # value: "String", # principal_arn: "String", # effective_settings: false, @@ -4590,9 +4591,10 @@ def get_task_protection(params = {}, options = {}) # @example Response structure # # resp.settings #=> Array - # resp.settings[0].name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod" + # resp.settings[0].name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" # resp.settings[0].value #=> String # resp.settings[0].principal_arn #=> String + # resp.settings[0].type #=> String, one of "user", "aws_managed" # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListAccountSettings AWS API Documentation @@ -5499,6 +5501,13 @@ def list_tasks(params = {}, options = {}) # see [Amazon Web Services Fargate task maintenance][5] in the *Amazon # ECS Developer Guide*. # + # The `guardDutyActivate` parameter is read-only in Amazon ECS and + # indicates whether Amazon ECS Runtime Monitoring is enabled or disabled + # by your security administrator in your Amazon ECS account. Amazon + # GuardDuty controls this account setting on your behalf. For more + # information, see [Protecting Amazon ECS workloads with Amazon ECS + # Runtime Monitoring][6]. + # # # # [1]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html @@ -5506,6 +5515,7 @@ def list_tasks(params = {}, options = {}) # [3]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html # [4]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/supported-iam-actions-tagging.html # [5]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html + # [6]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html # # @option params [required, String] :name # The Amazon ECS resource name for which to modify the account setting. @@ -5525,9 +5535,17 @@ def list_tasks(params = {}, options = {}) # Developer Guide*. If you specify `fargateTaskRetirementWaitPeriod`, # the wait time to retire a Fargate task is affected. # + # The `guardDutyActivate` parameter is read-only in Amazon ECS and + # indicates whether Amazon ECS Runtime Monitoring is enabled or disabled + # by your security administrator in your Amazon ECS account. Amazon + # GuardDuty controls this account setting on your behalf. For more + # information, see [Protecting Amazon ECS workloads with Amazon ECS + # Runtime Monitoring][2]. + # # # # [1]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources + # [2]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html # # @option params [required, String] :value # The account setting value for the specified principal ARN. Accepted @@ -5609,16 +5627,17 @@ def list_tasks(params = {}, options = {}) # @example Request syntax with placeholder values # # resp = client.put_account_setting({ - # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod + # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod, guardDutyActivate # value: "String", # required # principal_arn: "String", # }) # # @example Response structure # - # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod" + # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" # resp.setting.value #=> String # resp.setting.principal_arn #=> String + # resp.setting.type #=> String, one of "user", "aws_managed" # # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSetting AWS API Documentation # @@ -5665,11 +5684,19 @@ def put_account_setting(params = {}, options = {}) # maintenance, see [Amazon Web Services Fargate task maintenance][3] in # the *Amazon ECS Developer Guide*. # + # The `guardDutyActivate` parameter is read-only in Amazon ECS and + # indicates whether Amazon ECS Runtime Monitoring is enabled or disabled + # by your security administrator in your Amazon ECS account. Amazon + # GuardDuty controls this account setting on your behalf. For more + # information, see [Protecting Amazon ECS workloads with Amazon ECS + # Runtime Monitoring][4]. + # # # # [1]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources # [2]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-fips-compliance.html # [3]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html + # [4]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html # # @option params [required, String] :value # The account setting value for the specified principal ARN. Accepted @@ -5715,15 +5742,16 @@ def put_account_setting(params = {}, options = {}) # @example Request syntax with placeholder values # # resp = client.put_account_setting_default({ - # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod + # name: "serviceLongArnFormat", # required, accepts serviceLongArnFormat, taskLongArnFormat, containerInstanceLongArnFormat, awsvpcTrunking, containerInsights, fargateFIPSMode, tagResourceAuthorization, fargateTaskRetirementWaitPeriod, guardDutyActivate # value: "String", # required # }) # # @example Response structure # - # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod" + # resp.setting.name #=> String, one of "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" # resp.setting.value #=> String # resp.setting.principal_arn #=> String + # resp.setting.type #=> String, one of "user", "aws_managed" # # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSettingDefault AWS API Documentation # @@ -9823,7 +9851,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-ecs' - context[:gem_version] = '1.133.0' + context[:gem_version] = '1.134.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client_api.rb b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client_api.rb index f7f30d2852b..531120a9f22 100644 --- a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client_api.rb +++ b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/client_api.rb @@ -305,6 +305,7 @@ module ClientApi Session = Shapes::StructureShape.new(name: 'Session') Setting = Shapes::StructureShape.new(name: 'Setting') SettingName = Shapes::StringShape.new(name: 'SettingName') + SettingType = Shapes::StringShape.new(name: 'SettingType') Settings = Shapes::ListShape.new(name: 'Settings') SortOrder = Shapes::StringShape.new(name: 'SortOrder') StabilityStatus = Shapes::StringShape.new(name: 'StabilityStatus') @@ -1477,6 +1478,7 @@ module ClientApi Setting.add_member(:name, Shapes::ShapeRef.new(shape: SettingName, location_name: "name")) Setting.add_member(:value, Shapes::ShapeRef.new(shape: String, location_name: "value")) Setting.add_member(:principal_arn, Shapes::ShapeRef.new(shape: String, location_name: "principalArn")) + Setting.add_member(:type, Shapes::ShapeRef.new(shape: SettingType, location_name: "type")) Setting.struct_class = Types::Setting Settings.member = Shapes::ShapeRef.new(shape: Setting) diff --git a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb index 0ae9135574e..25c4e8c2bf7 100644 --- a/gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb +++ b/gems/aws-sdk-ecs/lib/aws-sdk-ecs/types.rb @@ -7347,11 +7347,19 @@ class ProxyConfiguration < Struct.new( # the Fargate tasks maintenance, see [Amazon Web Services Fargate task # maintenance][3] in the *Amazon ECS Developer Guide*. # + # The `guardDutyActivate` parameter is read-only in Amazon ECS and + # indicates whether Amazon ECS Runtime Monitoring is enabled or + # disabled by your security administrator in your Amazon ECS account. + # Amazon GuardDuty controls this account setting on your behalf. For + # more information, see [Protecting Amazon ECS workloads with Amazon + # ECS Runtime Monitoring][4]. + # # # # [1]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources # [2]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-fips-compliance.html # [3]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html + # [4]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html # @return [String] # # @!attribute [rw] value @@ -7411,9 +7419,17 @@ class PutAccountSettingDefaultResponse < Struct.new( # `fargateTaskRetirementWaitPeriod`, the wait time to retire a Fargate # task is affected. # + # The `guardDutyActivate` parameter is read-only in Amazon ECS and + # indicates whether Amazon ECS Runtime Monitoring is enabled or + # disabled by your security administrator in your Amazon ECS account. + # Amazon GuardDuty controls this account setting on your behalf. For + # more information, see [Protecting Amazon ECS workloads with Amazon + # ECS Runtime Monitoring][2]. + # # # # [1]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources + # [2]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html # @return [String] # # @!attribute [rw] value @@ -9315,12 +9331,23 @@ class Session < Struct.new( # If this field is omitted, the authenticated user is assumed. # @return [String] # + # @!attribute [rw] type + # Indicates whether Amazon Web Services manages the account setting, + # or if the user manages it. + # + # `aws_managed` account settings are read-only, as Amazon Web Services + # manages such on the customer's behalf. Currently, the + # `guardDutyActivate` account setting is the only one Amazon Web + # Services manages. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/Setting AWS API Documentation # class Setting < Struct.new( :name, :value, - :principal_arn) + :principal_arn, + :type) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-efs/CHANGELOG.md b/gems/aws-sdk-efs/CHANGELOG.md index 646f27f20a3..789a12b4834 100644 --- a/gems/aws-sdk-efs/CHANGELOG.md +++ b/gems/aws-sdk-efs/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.69.0 (2023-11-27) +------------------ + +* Feature - Adding support for EFS Archive lifecycle configuration. + 1.68.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-efs/VERSION b/gems/aws-sdk-efs/VERSION index ee2f4ca9130..49349856550 100644 --- a/gems/aws-sdk-efs/VERSION +++ b/gems/aws-sdk-efs/VERSION @@ -1 +1 @@ -1.68.0 +1.69.0 diff --git a/gems/aws-sdk-efs/lib/aws-sdk-efs.rb b/gems/aws-sdk-efs/lib/aws-sdk-efs.rb index a235502c7db..81b0ff52d8c 100644 --- a/gems/aws-sdk-efs/lib/aws-sdk-efs.rb +++ b/gems/aws-sdk-efs/lib/aws-sdk-efs.rb @@ -52,6 +52,6 @@ # @!group service module Aws::EFS - GEM_VERSION = '1.68.0' + GEM_VERSION = '1.69.0' end diff --git a/gems/aws-sdk-efs/lib/aws-sdk-efs/client.rb b/gems/aws-sdk-efs/lib/aws-sdk-efs/client.rb index d8203cf7158..cf69719e209 100644 --- a/gems/aws-sdk-efs/lib/aws-sdk-efs/client.rb +++ b/gems/aws-sdk-efs/lib/aws-sdk-efs/client.rb @@ -448,11 +448,11 @@ def initialize(*args) # requests made using the access point. # # @option params [Types::RootDirectory] :root_directory - # Specifies the directory on the Amazon EFS file system that the access - # point exposes as the root directory of your file system to NFS clients - # using the access point. The clients using the access point can only - # access the root directory and below. If the `RootDirectory` > - # `Path` specified does not exist, EFS creates it and applies the + # Specifies the directory on the EFS file system that the access point + # exposes as the root directory of your file system to NFS clients using + # the access point. The clients using the access point can only access + # the root directory and below. If the `RootDirectory` > `Path` + # specified does not exist, Amazon EFS creates it and applies the # `CreationInfo` settings when a client connects to an access point. # When specifying a `RootDirectory`, you must provide the `Path`, and # the `CreationInfo`. @@ -573,12 +573,17 @@ def create_access_point(params = {}, options = {}) # # This operation accepts an optional `PerformanceMode` parameter that # you choose for your file system. We recommend `generalPurpose` - # performance mode for most file systems. File systems using the `maxIO` - # performance mode can scale to higher levels of aggregate throughput - # and operations per second with a tradeoff of slightly higher latencies - # for most file operations. The performance mode can't be changed after - # the file system has been created. For more information, see [Amazon - # EFS performance modes][2]. + # performance mode for all file systems. File systems using the `maxIO` + # mode is a previous generation performance type that is designed for + # highly parallelized workloads that can tolerate higher latencies than + # the General Purpose mode. Max I/O mode is not supported for One Zone + # file systems or file systems that use Elastic throughput. + # + # Due to the higher per-operation latencies with Max I/O, we recommend + # using General Purpose performance mode for all file systems. + # + # The performance mode can't be changed after the file system has been + # created. For more information, see [Amazon EFS performance modes][2]. # # You can set the throughput mode for the file system using the # `ThroughputMode` parameter. @@ -616,17 +621,16 @@ def create_access_point(params = {}, options = {}) # not need to pass this option.** # # @option params [String] :performance_mode - # The performance mode of the file system. We recommend `generalPurpose` - # performance mode for most file systems. File systems using the `maxIO` + # The Performance mode of the file system. We recommend `generalPurpose` + # performance mode for all file systems. File systems using the `maxIO` # performance mode can scale to higher levels of aggregate throughput # and operations per second with a tradeoff of slightly higher latencies # for most file operations. The performance mode can't be changed after - # the file system has been created. + # the file system has been created. The `maxIO` mode is not supported on + # One Zone file systems. # - # The `maxIO` mode is not supported on file systems using One Zone - # storage classes. - # - # + # Due to the higher per-operation latencies with Max I/O, we recommend + # using General Purpose performance mode for all file systems. # # Default is `generalPurpose`. # @@ -668,10 +672,10 @@ def create_access_point(params = {}, options = {}) # `bursting`, `provisioned`, or `elastic`. If you set `ThroughputMode` # to `provisioned`, you must also set a value for # `ProvisionedThroughputInMibps`. After you create the file system, you - # can decrease your file system's throughput in Provisioned Throughput - # mode or change between the throughput modes, with certain time - # restrictions. For more information, see [Specifying throughput with - # provisioned mode][1] in the *Amazon EFS User Guide*. + # can decrease your file system's Provisioned throughput or change + # between the throughput modes, with certain time restrictions. For more + # information, see [Specifying throughput with provisioned mode][1] in + # the *Amazon EFS User Guide*. # # Default is `bursting`. # @@ -693,15 +697,14 @@ def create_access_point(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/efs/latest/ug/limits.html#soft-limits # # @option params [String] :availability_zone_name - # Used to create a file system that uses One Zone storage classes. It - # specifies the Amazon Web Services Availability Zone in which to create - # the file system. Use the format `us-east-1a` to specify the - # Availability Zone. For more information about One Zone storage - # classes, see [Using EFS storage classes][1] in the *Amazon EFS User - # Guide*. + # Used to create a One Zone file system. It specifies the Amazon Web + # Services Availability Zone in which to create the file system. Use the + # format `us-east-1a` to specify the Availability Zone. For more + # information about One Zone file systems, see [Using EFS storage + # classes][1] in the *Amazon EFS User Guide*. # - # One Zone storage classes are not available in all Availability Zones - # in Amazon Web Services Regions where Amazon EFS is available. + # One Zone file systems are not available in all Availability Zones in + # Amazon Web Services Regions where Amazon EFS is available. # # # @@ -712,10 +715,9 @@ def create_access_point(params = {}, options = {}) # @option params [Boolean] :backup # Specifies whether automatic backups are enabled on the file system # that you are creating. Set the value to `true` to enable automatic - # backups. If you are creating a file system that uses One Zone storage - # classes, automatic backups are enabled by default. For more - # information, see [Automatic backups][1] in the *Amazon EFS User - # Guide*. + # backups. If you are creating a One Zone file system, automatic backups + # are enabled by default. For more information, see [Automatic + # backups][1] in the *Amazon EFS User Guide*. # # Default is `false`. However, if you specify an `AvailabilityZoneName`, # the default is `true`. @@ -834,6 +836,7 @@ def create_access_point(params = {}, options = {}) # resp.size_in_bytes.timestamp #=> Time # resp.size_in_bytes.value_in_ia #=> Integer # resp.size_in_bytes.value_in_standard #=> Integer + # resp.size_in_bytes.value_in_archive #=> Integer # resp.performance_mode #=> String, one of "generalPurpose", "maxIO" # resp.encrypted #=> Boolean # resp.kms_key_id #=> String @@ -864,13 +867,12 @@ def create_file_system(params = {}, options = {}) # the subnets. EC2 instances do not need to be in the same subnet as the # mount target in order to access their file system. # - # You can create only one mount target for an EFS file system using One - # Zone storage classes. You must create that mount target in the same - # Availability Zone in which the file system is located. Use the - # `AvailabilityZoneName` and `AvailabiltyZoneId` properties in the - # DescribeFileSystems response object to get this information. Use the - # `subnetId` associated with the file system's Availability Zone when - # creating the mount target. + # You can create only one mount target for a One Zone file system. You + # must create that mount target in the same Availability Zone in which + # the file system is located. Use the `AvailabilityZoneName` and + # `AvailabiltyZoneId` properties in the DescribeFileSystems response + # object to get this information. Use the `subnetId` associated with the + # file system's Availability Zone when creating the mount target. # # For more information, see [Amazon EFS: How it Works][1]. # @@ -986,9 +988,9 @@ def create_file_system(params = {}, options = {}) # The ID of the file system for which to create the mount target. # # @option params [required, String] :subnet_id - # The ID of the subnet to add the mount target in. For file systems that - # use One Zone storage classes, use the subnet that is associated with - # the file system's Availability Zone. + # The ID of the subnet to add the mount target in. For One Zone file + # systems, use the subnet that is associated with the file system's + # Availability Zone. # # @option params [String] :ip_address # Valid IPv4 address within the address range of the specified subnet. @@ -1086,10 +1088,10 @@ def create_mount_target(params = {}, options = {}) # *Amazon Web Services General Reference Reference Guide* # # * **Availability Zone** - If you want the destination file system to - # use EFS One Zone availability and durability, you must specify the - # Availability Zone to create the file system in. For more - # information about EFS storage classes, see [ Amazon EFS storage - # classes][3] in the *Amazon EFS User Guide*. + # use EFS One Zone availability, you must specify the Availability + # Zone to create the file system in. For more information about EFS + # storage classes, see [ Amazon EFS storage classes][3] in the + # *Amazon EFS User Guide*. # # * **Encryption** - All destination file systems are created with # encryption at rest enabled. You can specify the Key Management @@ -1115,12 +1117,11 @@ def create_mount_target(params = {}, options = {}) # # The following properties are turned off by default: # - # * **Lifecycle management** - EFS lifecycle management and EFS - # Intelligent-Tiering are not enabled on the destination file system. - # After the destination file system is created, you can enable EFS - # lifecycle management and EFS Intelligent-Tiering. + # * **Lifecycle management** – Lifecycle management is not enabled on + # the destination file system. After the destination file system is + # created, you can enable it. # - # * **Automatic backups** - Automatic daily backups are enabled on the + # * **Automatic backups** – Automatic daily backups are enabled on the # destination file system. After the file system is created, you can # change this setting. # @@ -1629,7 +1630,8 @@ def describe_account_preferences(params = {}, options = {}) # Returns the backup policy for the specified EFS file system. # # @option params [required, String] :file_system_id - # Specifies which EFS file system to retrieve the `BackupPolicy` for. + # Specifies which EFS file system for which to retrieve the + # `BackupPolicy`. # # @return [Types::BackupPolicyDescription] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # @@ -1801,6 +1803,7 @@ def describe_file_system_policy(params = {}, options = {}) # resp.file_systems[0].size_in_bytes.timestamp #=> Time # resp.file_systems[0].size_in_bytes.value_in_ia #=> Integer # resp.file_systems[0].size_in_bytes.value_in_standard #=> Integer + # resp.file_systems[0].size_in_bytes.value_in_archive #=> Integer # resp.file_systems[0].performance_mode #=> String, one of "generalPurpose", "maxIO" # resp.file_systems[0].encrypted #=> Boolean # resp.file_systems[0].kms_key_id #=> String @@ -1823,14 +1826,10 @@ def describe_file_systems(params = {}, options = {}) end # Returns the current `LifecycleConfiguration` object for the specified - # Amazon EFS file system. EFS lifecycle management uses the - # `LifecycleConfiguration` object to identify which files to move to the - # EFS Infrequent Access (IA) storage class. For a file system without a - # `LifecycleConfiguration` object, the call returns an empty array in - # the response. - # - # When EFS Intelligent-Tiering is enabled, - # `TransitionToPrimaryStorageClass` has a value of `AFTER_1_ACCESS`. + # Amazon EFS file system. Llifecycle management uses the + # `LifecycleConfiguration` object to identify when to move files between + # storage classes. For a file system without a `LifecycleConfiguration` + # object, the call returns an empty array in the response. # # This operation requires permissions for the # `elasticfilesystem:DescribeLifecycleConfiguration` operation. @@ -1871,8 +1870,9 @@ def describe_file_systems(params = {}, options = {}) # @example Response structure # # resp.lifecycle_policies #=> Array - # resp.lifecycle_policies[0].transition_to_ia #=> String, one of "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_1_DAY" + # resp.lifecycle_policies[0].transition_to_ia #=> String, one of "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_1_DAY", "AFTER_180_DAYS", "AFTER_270_DAYS", "AFTER_365_DAYS" # resp.lifecycle_policies[0].transition_to_primary_storage_class #=> String, one of "AFTER_1_ACCESS" + # resp.lifecycle_policies[0].transition_to_archive #=> String, one of "AFTER_1_DAY", "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_180_DAYS", "AFTER_270_DAYS", "AFTER_365_DAYS" # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticfilesystem-2015-02-01/DescribeLifecycleConfiguration AWS API Documentation # @@ -1983,6 +1983,8 @@ def describe_mount_target_security_groups(params = {}, options = {}) # * {Types::DescribeMountTargetsResponse#mount_targets #mount_targets} => Array<Types::MountTargetDescription> # * {Types::DescribeMountTargetsResponse#next_marker #next_marker} => String # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # # # @example Example: To describe the mount targets for a file system # @@ -2064,6 +2066,8 @@ def describe_mount_targets(params = {}, options = {}) # * {Types::DescribeReplicationConfigurationsResponse#replications #replications} => Array<Types::ReplicationConfigurationDescription> # * {Types::DescribeReplicationConfigurationsResponse#next_token #next_token} => String # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # # @example Request syntax with placeholder values # # resp = client.describe_replication_configurations({ @@ -2444,25 +2448,33 @@ def put_file_system_policy(params = {}, options = {}) req.send_request(options) end - # Use this action to manage EFS lifecycle management and EFS - # Intelligent-Tiering. A `LifecycleConfiguration` consists of one or - # more `LifecyclePolicy` objects that define the following: + # Use this action to manage storage of your file system. A + # `LifecycleConfiguration` consists of one or more `LifecyclePolicy` + # objects that define the following: + # + # * TransitionToIA – When to move files in the + # file system from primary storage (Standard storage class) into the + # Infrequent Access (IA) storage. # - # * **EFS Lifecycle management** - When Amazon EFS automatically - # transitions files in a file system into the lower-cost EFS - # Infrequent Access (IA) storage class. + # * TransitionToArchive – When to move files in + # the file system from their current storage class (either IA or + # Standard storage) into the Archive storage. # - # To enable EFS Lifecycle management, set the value of - # `TransitionToIA` to one of the available options. + # File systems cannot transition into Archive storage before + # transitioning into IA storage. Therefore, TransitionToArchive must + # either not be set or must be later than TransitionToIA. # - # * **EFS Intelligent-Tiering** - When Amazon EFS automatically - # transitions files from IA back into the file system's primary - # storage class (EFS Standard or EFS One Zone Standard). + # The Archive storage class is available only for file systems that + # use the Elastic Throughput mode and the General Purpose Performance + # mode. # - # To enable EFS Intelligent-Tiering, set the value of - # `TransitionToPrimaryStorageClass` to `AFTER_1_ACCESS`. + # # - # For more information, see [EFS Lifecycle Management][1]. + # * TransitionToPrimaryStorageClass – Whether to + # move files in the file system back to primary storage (Standard + # storage class) after they are accessed in IA or Archive storage. + # + # For more information, see [ Managing file system storage][1]. # # Each Amazon EFS file system supports one lifecycle configuration, # which applies to all files in the file system. If a @@ -2470,17 +2482,16 @@ def put_file_system_policy(params = {}, options = {}) # system, a `PutLifecycleConfiguration` call modifies the existing # configuration. A `PutLifecycleConfiguration` call with an empty # `LifecyclePolicies` array in the request body deletes any existing - # `LifecycleConfiguration` and turns off lifecycle management and EFS - # Intelligent-Tiering for the file system. + # `LifecycleConfiguration` for the file system. # # In the request, specify the following: # # * The ID for the file system for which you are enabling, disabling, or - # modifying lifecycle management and EFS Intelligent-Tiering. + # modifying Lifecycle management. # # * A `LifecyclePolicies` array of `LifecyclePolicy` objects that define - # when files are moved into IA storage, and when they are moved back - # to Standard storage. + # when to move files to IA storage, to Archive storage, and back to + # primary storage. # # Amazon EFS requires that each `LifecyclePolicy` object have only # have a single transition, so the `LifecyclePolicies` array needs to @@ -2507,21 +2518,37 @@ def put_file_system_policy(params = {}, options = {}) # @option params [required, Array] :lifecycle_policies # An array of `LifecyclePolicy` objects that define the file system's # `LifecycleConfiguration` object. A `LifecycleConfiguration` object - # informs EFS lifecycle management and EFS Intelligent-Tiering of the - # following: + # informs EFS Lifecycle management of the following: + # + # * TransitionToIA – When to move files in the + # file system from primary storage (Standard storage class) into the + # Infrequent Access (IA) storage. # - # * When to move files in the file system from primary storage to the IA - # storage class. + # * TransitionToArchive – When to move files in + # the file system from their current storage class (either IA or + # Standard storage) into the Archive storage. + # + # File systems cannot transition into Archive storage before + # transitioning into IA storage. Therefore, TransitionToArchive must + # either not be set or must be later than TransitionToIA. + # + # The Archive storage class is available only for file systems that + # use the Elastic Throughput mode and the General Purpose Performance + # mode. + # + # # - # * When to move files that are in IA storage to primary storage. + # * TransitionToPrimaryStorageClass – Whether to + # move files in the file system back to primary storage (Standard + # storage class) after they are accessed in IA or Archive storage. # # When using the `put-lifecycle-configuration` CLI command or the # `PutLifecycleConfiguration` API action, Amazon EFS requires that each # `LifecyclePolicy` object have only a single transition. This means # that in a request body, `LifecyclePolicies` must be structured as an - # array of `LifecyclePolicy` objects, one object for each transition, - # `TransitionToIA`, `TransitionToPrimaryStorageClass`. See the example - # requests in the following section for more information. + # array of `LifecyclePolicy` objects, one object for each storage + # transition. See the example requests in the following section for more + # information. # # # @@ -2560,8 +2587,9 @@ def put_file_system_policy(params = {}, options = {}) # file_system_id: "FileSystemId", # required # lifecycle_policies: [ # required # { - # transition_to_ia: "AFTER_7_DAYS", # accepts AFTER_7_DAYS, AFTER_14_DAYS, AFTER_30_DAYS, AFTER_60_DAYS, AFTER_90_DAYS, AFTER_1_DAY + # transition_to_ia: "AFTER_7_DAYS", # accepts AFTER_7_DAYS, AFTER_14_DAYS, AFTER_30_DAYS, AFTER_60_DAYS, AFTER_90_DAYS, AFTER_1_DAY, AFTER_180_DAYS, AFTER_270_DAYS, AFTER_365_DAYS # transition_to_primary_storage_class: "AFTER_1_ACCESS", # accepts AFTER_1_ACCESS + # transition_to_archive: "AFTER_1_DAY", # accepts AFTER_1_DAY, AFTER_7_DAYS, AFTER_14_DAYS, AFTER_30_DAYS, AFTER_60_DAYS, AFTER_90_DAYS, AFTER_180_DAYS, AFTER_270_DAYS, AFTER_365_DAYS # }, # ], # }) @@ -2569,8 +2597,9 @@ def put_file_system_policy(params = {}, options = {}) # @example Response structure # # resp.lifecycle_policies #=> Array - # resp.lifecycle_policies[0].transition_to_ia #=> String, one of "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_1_DAY" + # resp.lifecycle_policies[0].transition_to_ia #=> String, one of "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_1_DAY", "AFTER_180_DAYS", "AFTER_270_DAYS", "AFTER_365_DAYS" # resp.lifecycle_policies[0].transition_to_primary_storage_class #=> String, one of "AFTER_1_ACCESS" + # resp.lifecycle_policies[0].transition_to_archive #=> String, one of "AFTER_1_DAY", "AFTER_7_DAYS", "AFTER_14_DAYS", "AFTER_30_DAYS", "AFTER_60_DAYS", "AFTER_90_DAYS", "AFTER_180_DAYS", "AFTER_270_DAYS", "AFTER_365_DAYS" # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticfilesystem-2015-02-01/PutLifecycleConfiguration AWS API Documentation # @@ -2716,6 +2745,7 @@ def untag_resource(params = {}, options = {}) # resp.size_in_bytes.timestamp #=> Time # resp.size_in_bytes.value_in_ia #=> Integer # resp.size_in_bytes.value_in_standard #=> Integer + # resp.size_in_bytes.value_in_archive #=> Integer # resp.performance_mode #=> String, one of "generalPurpose", "maxIO" # resp.encrypted #=> Boolean # resp.kms_key_id #=> String @@ -2749,7 +2779,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-efs' - context[:gem_version] = '1.68.0' + context[:gem_version] = '1.69.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-efs/lib/aws-sdk-efs/client_api.rb b/gems/aws-sdk-efs/lib/aws-sdk-efs/client_api.rb index 7aada170426..d97bcb5d7f3 100644 --- a/gems/aws-sdk-efs/lib/aws-sdk-efs/client_api.rb +++ b/gems/aws-sdk-efs/lib/aws-sdk-efs/client_api.rb @@ -154,6 +154,7 @@ module ClientApi Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') Token = Shapes::StringShape.new(name: 'Token') TooManyRequests = Shapes::StructureShape.new(name: 'TooManyRequests') + TransitionToArchiveRules = Shapes::StringShape.new(name: 'TransitionToArchiveRules') TransitionToIARules = Shapes::StringShape.new(name: 'TransitionToIARules') TransitionToPrimaryStorageClassRules = Shapes::StringShape.new(name: 'TransitionToPrimaryStorageClassRules') Uid = Shapes::IntegerShape.new(name: 'Uid') @@ -400,6 +401,7 @@ module ClientApi FileSystemSize.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "Timestamp")) FileSystemSize.add_member(:value_in_ia, Shapes::ShapeRef.new(shape: FileSystemNullableSizeValue, location_name: "ValueInIA")) FileSystemSize.add_member(:value_in_standard, Shapes::ShapeRef.new(shape: FileSystemNullableSizeValue, location_name: "ValueInStandard")) + FileSystemSize.add_member(:value_in_archive, Shapes::ShapeRef.new(shape: FileSystemNullableSizeValue, location_name: "ValueInArchive")) FileSystemSize.struct_class = Types::FileSystemSize IncorrectFileSystemLifeCycleState.add_member(:error_code, Shapes::ShapeRef.new(shape: ErrorCode, required: true, location_name: "ErrorCode")) @@ -433,6 +435,7 @@ module ClientApi LifecyclePolicy.add_member(:transition_to_ia, Shapes::ShapeRef.new(shape: TransitionToIARules, location_name: "TransitionToIA")) LifecyclePolicy.add_member(:transition_to_primary_storage_class, Shapes::ShapeRef.new(shape: TransitionToPrimaryStorageClassRules, location_name: "TransitionToPrimaryStorageClass")) + LifecyclePolicy.add_member(:transition_to_archive, Shapes::ShapeRef.new(shape: TransitionToArchiveRules, location_name: "TransitionToArchive")) LifecyclePolicy.struct_class = Types::LifecyclePolicy ListTagsForResourceRequest.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location: "uri", location_name: "ResourceId")) @@ -859,6 +862,12 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: FileSystemNotFound) o.errors << Shapes::ShapeRef.new(shape: MountTargetNotFound) o.errors << Shapes::ShapeRef.new(shape: AccessPointNotFound) + o[:pager] = Aws::Pager.new( + limit_key: "max_items", + tokens: { + "next_marker" => "marker" + } + ) end) api.add_operation(:describe_replication_configurations, Seahorse::Model::Operation.new.tap do |o| @@ -872,6 +881,12 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerError) o.errors << Shapes::ShapeRef.new(shape: ReplicationNotFound) o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) end) api.add_operation(:describe_tags, Seahorse::Model::Operation.new.tap do |o| diff --git a/gems/aws-sdk-efs/lib/aws-sdk-efs/endpoint_provider.rb b/gems/aws-sdk-efs/lib/aws-sdk-efs/endpoint_provider.rb index 0669d3cebae..1c5963106d9 100644 --- a/gems/aws-sdk-efs/lib/aws-sdk-efs/endpoint_provider.rb +++ b/gems/aws-sdk-efs/lib/aws-sdk-efs/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://elasticfilesystem-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-efs/lib/aws-sdk-efs/types.rb b/gems/aws-sdk-efs/lib/aws-sdk-efs/types.rb index 2d47bf5cc38..d0056107382 100644 --- a/gems/aws-sdk-efs/lib/aws-sdk-efs/types.rb +++ b/gems/aws-sdk-efs/lib/aws-sdk-efs/types.rb @@ -78,8 +78,8 @@ class AccessPointAlreadyExists < Struct.new( # @return [Types::PosixUser] # # @!attribute [rw] root_directory - # The directory on the Amazon EFS file system that the access point - # exposes as the root directory to NFS clients using the access point. + # The directory on the EFS file system that the access point exposes + # as the root directory to NFS clients using the access point. # @return [Types::RootDirectory] # # @!attribute [rw] owner_id @@ -216,16 +216,16 @@ class AvailabilityZonesMismatch < Struct.new( # @!attribute [rw] status # Describes the status of the file system's backup policy. # - # * ENABLED - EFS is automatically backing up + # * ENABLED – EFS is automatically backing up # the file system. # - # * ENABLING - EFS is turning on automatic + # * ENABLING – EFS is turning on automatic # backups for the file system. # - # * DISABLED - Automatic back ups are turned off + # * DISABLED – Automatic back ups are turned off # for the file system. # - # * DISABLING - EFS is turning off automatic + # * DISABLING – EFS is turning off automatic # backups for the file system. # @return [String] # @@ -308,14 +308,14 @@ class BadRequest < Struct.new( # @return [Types::PosixUser] # # @!attribute [rw] root_directory - # Specifies the directory on the Amazon EFS file system that the - # access point exposes as the root directory of your file system to - # NFS clients using the access point. The clients using the access - # point can only access the root directory and below. If the - # `RootDirectory` > `Path` specified does not exist, EFS creates it - # and applies the `CreationInfo` settings when a client connects to an - # access point. When specifying a `RootDirectory`, you must provide - # the `Path`, and the `CreationInfo`. + # Specifies the directory on the EFS file system that the access point + # exposes as the root directory of your file system to NFS clients + # using the access point. The clients using the access point can only + # access the root directory and below. If the `RootDirectory` > + # `Path` specified does not exist, Amazon EFS creates it and applies + # the `CreationInfo` settings when a client connects to an access + # point. When specifying a `RootDirectory`, you must provide the + # `Path`, and the `CreationInfo`. # # Amazon EFS creates a root directory only if you have provided the # CreationInfo: OwnUid, OwnGID, and permissions for the directory. If @@ -345,18 +345,16 @@ class CreateAccessPointRequest < Struct.new( # @return [String] # # @!attribute [rw] performance_mode - # The performance mode of the file system. We recommend - # `generalPurpose` performance mode for most file systems. File - # systems using the `maxIO` performance mode can scale to higher - # levels of aggregate throughput and operations per second with a - # tradeoff of slightly higher latencies for most file operations. The - # performance mode can't be changed after the file system has been - # created. + # The Performance mode of the file system. We recommend + # `generalPurpose` performance mode for all file systems. File systems + # using the `maxIO` performance mode can scale to higher levels of + # aggregate throughput and operations per second with a tradeoff of + # slightly higher latencies for most file operations. The performance + # mode can't be changed after the file system has been created. The + # `maxIO` mode is not supported on One Zone file systems. # - # The `maxIO` mode is not supported on file systems using One Zone - # storage classes. - # - # + # Due to the higher per-operation latencies with Max I/O, we recommend + # using General Purpose performance mode for all file systems. # # Default is `generalPurpose`. # @return [String] @@ -401,10 +399,10 @@ class CreateAccessPointRequest < Struct.new( # `bursting`, `provisioned`, or `elastic`. If you set `ThroughputMode` # to `provisioned`, you must also set a value for # `ProvisionedThroughputInMibps`. After you create the file system, - # you can decrease your file system's throughput in Provisioned - # Throughput mode or change between the throughput modes, with certain - # time restrictions. For more information, see [Specifying throughput - # with provisioned mode][1] in the *Amazon EFS User Guide*. + # you can decrease your file system's Provisioned throughput or + # change between the throughput modes, with certain time restrictions. + # For more information, see [Specifying throughput with provisioned + # mode][1] in the *Amazon EFS User Guide*. # # Default is `bursting`. # @@ -428,15 +426,14 @@ class CreateAccessPointRequest < Struct.new( # @return [Float] # # @!attribute [rw] availability_zone_name - # Used to create a file system that uses One Zone storage classes. It - # specifies the Amazon Web Services Availability Zone in which to - # create the file system. Use the format `us-east-1a` to specify the - # Availability Zone. For more information about One Zone storage - # classes, see [Using EFS storage classes][1] in the *Amazon EFS User - # Guide*. + # Used to create a One Zone file system. It specifies the Amazon Web + # Services Availability Zone in which to create the file system. Use + # the format `us-east-1a` to specify the Availability Zone. For more + # information about One Zone file systems, see [Using EFS storage + # classes][1] in the *Amazon EFS User Guide*. # - # One Zone storage classes are not available in all Availability Zones - # in Amazon Web Services Regions where Amazon EFS is available. + # One Zone file systems are not available in all Availability Zones in + # Amazon Web Services Regions where Amazon EFS is available. # # # @@ -448,10 +445,9 @@ class CreateAccessPointRequest < Struct.new( # @!attribute [rw] backup # Specifies whether automatic backups are enabled on the file system # that you are creating. Set the value to `true` to enable automatic - # backups. If you are creating a file system that uses One Zone - # storage classes, automatic backups are enabled by default. For more - # information, see [Automatic backups][1] in the *Amazon EFS User - # Guide*. + # backups. If you are creating a One Zone file system, automatic + # backups are enabled by default. For more information, see [Automatic + # backups][1] in the *Amazon EFS User Guide*. # # Default is `false`. However, if you specify an # `AvailabilityZoneName`, the default is `true`. @@ -500,9 +496,9 @@ class CreateFileSystemRequest < Struct.new( # @return [String] # # @!attribute [rw] subnet_id - # The ID of the subnet to add the mount target in. For file systems - # that use One Zone storage classes, use the subnet that is associated - # with the file system's Availability Zone. + # The ID of the subnet to add the mount target in. For One Zone file + # systems, use the subnet that is associated with the file system's + # Availability Zone. # @return [String] # # @!attribute [rw] ip_address @@ -808,7 +804,8 @@ class DescribeAccountPreferencesResponse < Struct.new( end # @!attribute [rw] file_system_id - # Specifies which EFS file system to retrieve the `BackupPolicy` for. + # Specifies which EFS file system for which to retrieve the + # `BackupPolicy`. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticfilesystem-2015-02-01/DescribeBackupPolicyRequest AWS API Documentation @@ -1103,7 +1100,7 @@ class DescribeTagsResponse < Struct.new( # configuration. # # @!attribute [rw] status - # Describes the status of the destination Amazon EFS file system. + # Describes the status of the destination EFS file system. # # * The `Paused` state occurs as a result of opting out of the source # or destination Region after the replication configuration was @@ -1164,9 +1161,9 @@ class Destination < Struct.new( # @return [String] # # @!attribute [rw] availability_zone_name - # To create a file system that uses EFS One Zone storage, specify the - # name of the Availability Zone in which to create the destination - # file system. + # To create a file system that uses One Zone storage, specify the name + # of the Availability Zone in which to create the destination file + # system. # @return [String] # # @!attribute [rw] kms_key_id @@ -1287,7 +1284,7 @@ class FileSystemAlreadyExists < Struct.new( # @return [Types::FileSystemSize] # # @!attribute [rw] performance_mode - # The performance mode of the file system. + # The Performance mode of the file system. # @return [String] # # @!attribute [rw] encrypted @@ -1316,9 +1313,9 @@ class FileSystemAlreadyExists < Struct.new( # # @!attribute [rw] availability_zone_name # Describes the Amazon Web Services Availability Zone in which the - # file system is located, and is valid only for file systems using One - # Zone storage classes. For more information, see [Using EFS storage - # classes][1] in the *Amazon EFS User Guide*. + # file system is located, and is valid only for One Zone file systems. + # For more information, see [Using EFS storage classes][1] in the + # *Amazon EFS User Guide*. # # # @@ -1327,10 +1324,10 @@ class FileSystemAlreadyExists < Struct.new( # # @!attribute [rw] availability_zone_id # The unique and consistent identifier of the Availability Zone in - # which the file system's One Zone storage classes exist. For - # example, `use1-az1` is an Availability Zone ID for the us-east-1 - # Amazon Web Services Region, and it has the same location in every - # Amazon Web Services account. + # which the file system is located, and is valid only for One Zone + # file systems. For example, `use1-az1` is an Availability Zone ID for + # the us-east-1 Amazon Web Services Region, and it has the same + # location in every Amazon Web Services account. # @return [String] # # @!attribute [rw] tags @@ -1494,13 +1491,19 @@ class FileSystemPolicyDescription < Struct.new( # Standard storage class. # @return [Integer] # + # @!attribute [rw] value_in_archive + # The latest known metered size (in bytes) of data stored in the + # Archive storage class. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticfilesystem-2015-02-01/FileSystemSize AWS API Documentation # class FileSystemSize < Struct.new( :value, :timestamp, :value_in_ia, - :value_in_standard) + :value_in_standard, + :value_in_archive) SENSITIVE = [] include Aws::Structure end @@ -1690,19 +1693,18 @@ class LifecycleConfigurationDescription < Struct.new( include Aws::Structure end - # Describes a policy used by EFS lifecycle management and EFS - # Intelligent-Tiering that specifies when to transition files into and - # out of the file system's Infrequent Access (IA) storage class. For - # more information, see [EFS Intelligent‐Tiering and EFS Lifecycle - # Management][1]. + # Describes a policy used by Lifecycle management that specifies when to + # transition files into and out of the Infrequent Access (IA) and + # Archive storage classes. For more information, see [Managing file + # system storage][1]. # # When using the `put-lifecycle-configuration` CLI command or the # `PutLifecycleConfiguration` API action, Amazon EFS requires that each # `LifecyclePolicy` object have only a single transition. This means # that in a request body, `LifecyclePolicies` must be structured as an - # array of `LifecyclePolicy` objects, one object for each transition, - # `TransitionToIA`, `TransitionToPrimaryStorageClass`. For more - # information, see the request examples in PutLifecycleConfiguration. + # array of `LifecyclePolicy` objects, one object for each transition. + # For more information, see the request examples in + # PutLifecycleConfiguration. # # # @@ -1711,14 +1713,22 @@ class LifecycleConfigurationDescription < Struct.new( # [1]: https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html # # @!attribute [rw] transition_to_ia - # Describes the period of time that a file is not accessed, after - # which it transitions to IA storage. Metadata operations such as + # The number of days after files were last accessed in primary storage + # (the Standard storage class) at which to move them to Infrequent + # Access (IA) storage. Metadata operations such as listing the + # contents of a directory don't count as file access events. + # @return [String] + # + # @!attribute [rw] transition_to_primary_storage_class + # Whether to move files back to primary (Standard) storage after they + # are accessed in IA or Archive storage. Metadata operations such as # listing the contents of a directory don't count as file access # events. # @return [String] # - # @!attribute [rw] transition_to_primary_storage_class - # Describes when to transition a file from IA storage to primary + # @!attribute [rw] transition_to_archive + # The number of days after files were last accessed in primary storage + # (the Standard storage class) files at which to move them to Archive # storage. Metadata operations such as listing the contents of a # directory don't count as file access events. # @return [String] @@ -1727,7 +1737,8 @@ class LifecycleConfigurationDescription < Struct.new( # class LifecyclePolicy < Struct.new( :transition_to_ia, - :transition_to_primary_storage_class) + :transition_to_primary_storage_class, + :transition_to_archive) SENSITIVE = [] include Aws::Structure end @@ -2141,21 +2152,37 @@ class PutFileSystemPolicyRequest < Struct.new( # @!attribute [rw] lifecycle_policies # An array of `LifecyclePolicy` objects that define the file system's # `LifecycleConfiguration` object. A `LifecycleConfiguration` object - # informs EFS lifecycle management and EFS Intelligent-Tiering of the - # following: + # informs EFS Lifecycle management of the following: + # + # * TransitionToIA – When to move files in the + # file system from primary storage (Standard storage class) into the + # Infrequent Access (IA) storage. # - # * When to move files in the file system from primary storage to the - # IA storage class. + # * TransitionToArchive – When to move files in + # the file system from their current storage class (either IA or + # Standard storage) into the Archive storage. # - # * When to move files that are in IA storage to primary storage. + # File systems cannot transition into Archive storage before + # transitioning into IA storage. Therefore, TransitionToArchive must + # either not be set or must be later than TransitionToIA. + # + # The Archive storage class is available only for file systems that + # use the Elastic Throughput mode and the General Purpose + # Performance mode. + # + # + # + # * TransitionToPrimaryStorageClass – Whether to + # move files in the file system back to primary storage (Standard + # storage class) after they are accessed in IA or Archive storage. # # When using the `put-lifecycle-configuration` CLI command or the # `PutLifecycleConfiguration` API action, Amazon EFS requires that # each `LifecyclePolicy` object have only a single transition. This # means that in a request body, `LifecyclePolicies` must be structured # as an array of `LifecyclePolicy` objects, one object for each - # transition, `TransitionToIA`, `TransitionToPrimaryStorageClass`. See - # the example requests in the following section for more information. + # storage transition. See the example requests in the following + # section for more information. # # # @return [Array] @@ -2177,8 +2204,8 @@ class PutLifecycleConfigurationRequest < Struct.new( # @return [String] # # @!attribute [rw] source_file_system_region - # The Amazon Web Services Region in which the source Amazon EFS file - # system is located. + # The Amazon Web Services Region in which the source EFS file system + # is located. # @return [String] # # @!attribute [rw] source_file_system_arn @@ -2187,8 +2214,8 @@ class PutLifecycleConfigurationRequest < Struct.new( # @return [String] # # @!attribute [rw] original_source_file_system_arn - # The Amazon Resource Name (ARN) of the original source Amazon EFS - # file system in the replication configuration. + # The Amazon Resource Name (ARN) of the original source EFS file + # system in the replication configuration. # @return [String] # # @!attribute [rw] creation_time diff --git a/gems/aws-sdk-eks/CHANGELOG.md b/gems/aws-sdk-eks/CHANGELOG.md index 733db2ac774..c12a5892fa2 100644 --- a/gems/aws-sdk-eks/CHANGELOG.md +++ b/gems/aws-sdk-eks/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.94.0 (2023-11-27) +------------------ + +* Feature - This release adds support for EKS Pod Identity feature. EKS Pod Identity makes it easy for customers to obtain IAM permissions for the applications running in their EKS clusters. + 1.93.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-eks/VERSION b/gems/aws-sdk-eks/VERSION index 95784efddbc..8db4a57b3d0 100644 --- a/gems/aws-sdk-eks/VERSION +++ b/gems/aws-sdk-eks/VERSION @@ -1 +1 @@ -1.93.0 +1.94.0 diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks.rb index 11137511b26..c9ce30b7ab5 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks.rb @@ -53,6 +53,6 @@ # @!group service module Aws::EKS - GEM_VERSION = '1.93.0' + GEM_VERSION = '1.94.0' end diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks/client.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks/client.rb index 31600f3d613..316f9e3e656 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks/client.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks/client.rb @@ -709,17 +709,39 @@ def create_addon(params = {}, options = {}) # to your cluster's control plane over the Kubernetes API server # endpoint and a certificate file that is created for your cluster. # + # You can use the `endpointPublicAccess` and `endpointPrivateAccess` + # parameters to enable or disable public and private access to your + # cluster's Kubernetes API server endpoint. By default, public access + # is enabled, and private access is disabled. For more information, see + # [Amazon EKS Cluster Endpoint Access Control][1] in the Amazon + # EKS User Guide . + # + # You can use the `logging` parameter to enable or disable exporting the + # Kubernetes control plane logs for your cluster to CloudWatch Logs. By + # default, cluster control plane logs aren't exported to CloudWatch + # Logs. For more information, see [Amazon EKS Cluster Control Plane + # Logs][2] in the Amazon EKS User Guide . + # + # CloudWatch Logs ingestion, archive storage, and data scanning rates + # apply to exported control plane logs. For more information, see + # [CloudWatch Pricing][3]. + # + # + # # In most cases, it takes several minutes to create a cluster. After you # create an Amazon EKS cluster, you must configure your Kubernetes # tooling to communicate with the API server and launch nodes into your # cluster. For more information, see [Managing Cluster - # Authentication][1] and [Launching Amazon EKS nodes][2] in the *Amazon + # Authentication][4] and [Launching Amazon EKS nodes][5] in the *Amazon # EKS User Guide*. # # # - # [1]: https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html - # [2]: https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html + # [1]: https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html + # [2]: https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html + # [3]: http://aws.amazon.com/cloudwatch/pricing/ + # [4]: https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html + # [5]: https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html # # @option params [required, String] :name # The unique name to give to your cluster. @@ -963,8 +985,8 @@ def create_cluster(params = {}, options = {}) # # @option params [Integer] :license_quantity # The number of licenses to purchase with the subscription. Valid values - # are between 1 and 1000. This value cannot be changed after creating - # the subscription. + # are between 1 and 100. This value can't be changed after creating the + # subscription. # # @option params [String] :license_type # The license type for all licenses in the subscription. Valid value is @@ -985,7 +1007,7 @@ def create_cluster(params = {}, options = {}) # @option params [Hash] :tags # The metadata for a subscription to assist with categorization and # organization. Each tag consists of a key and an optional value. - # Subscription tags do not propagate to any other resources associated + # Subscription tags don't propagate to any other resources associated # with the subscription. # # @return [Types::CreateEksAnywhereSubscriptionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: @@ -1469,6 +1491,120 @@ def create_nodegroup(params = {}, options = {}) req.send_request(options) end + # Creates an EKS Pod Identity association between a service account in + # an Amazon EKS cluster and an IAM role with *EKS Pod Identity*. Use EKS + # Pod Identity to give temporary IAM credentials to pods and the + # credentials are rotated automatically. + # + # Amazon EKS Pod Identity associations provide the ability to manage + # credentials for your applications, similar to the way that 7EC2l + # instance profiles provide credentials to Amazon EC2 instances. + # + # If a pod uses a service account that has an association, Amazon EKS + # sets environment variables in the containers of the pod. The + # environment variables configure the Amazon Web Services SDKs, + # including the Command Line Interface, to use the EKS Pod Identity + # credentials. + # + # Pod Identity is a simpler method than *IAM roles for service + # accounts*, as this method doesn't use OIDC identity providers. + # Additionally, you can configure a role for Pod Identity once, and + # reuse it across clusters. + # + # @option params [required, String] :cluster_name + # The name of the cluster to create the association in. + # + # @option params [required, String] :namespace + # The name of the Kubernetes namespace inside the cluster to create the + # association in. The service account and the pods that use the service + # account must be in this namespace. + # + # @option params [required, String] :service_account + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # + # @option params [required, String] :role_arn + # The Amazon Resource Name (ARN) of the IAM role to associate with the + # service account. The EKS Pod Identity agent manages credentials to + # assume this role for applications in the containers in the pods that + # use this service account. + # + # @option params [String] :client_request_token + # Unique, case-sensitive identifier that you provide to ensure the + # idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @option params [Hash] :tags + # The metadata that you apply to a resource to assist with + # categorization and organization. Each tag consists of a key and an + # optional value. You define both. + # + # The following basic restrictions apply to tags: + # + # * Maximum number of tags per resource – 50 + # + # * For each resource, each tag key must be unique, and each tag key can + # have only one value. + # + # * Maximum key length – 128 Unicode characters in UTF-8 + # + # * Maximum value length – 256 Unicode characters in UTF-8 + # + # * If your tagging schema is used across multiple services and + # resources, remember that other services may have restrictions on + # allowed characters. Generally allowed characters are: letters, + # numbers, and spaces representable in UTF-8, and the following + # characters: + - = . \_ : / @. + # + # * Tag keys and values are case-sensitive. + # + # * Do not use `aws:`, `AWS:`, or any upper or lowercase combination of + # such as a prefix for either keys or values as it is reserved for + # Amazon Web Services use. You cannot edit or delete tag keys or + # values with this prefix. Tags with this prefix do not count against + # your tags per resource limit. + # + # @return [Types::CreatePodIdentityAssociationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreatePodIdentityAssociationResponse#association #association} => Types::PodIdentityAssociation + # + # @example Request syntax with placeholder values + # + # resp = client.create_pod_identity_association({ + # cluster_name: "String", # required + # namespace: "String", # required + # service_account: "String", # required + # role_arn: "String", # required + # client_request_token: "String", + # tags: { + # "TagKey" => "TagValue", + # }, + # }) + # + # @example Response structure + # + # resp.association.cluster_name #=> String + # resp.association.namespace #=> String + # resp.association.service_account #=> String + # resp.association.role_arn #=> String + # resp.association.association_arn #=> String + # resp.association.association_id #=> String + # resp.association.tags #=> Hash + # resp.association.tags["TagKey"] #=> String + # resp.association.created_at #=> Time + # resp.association.modified_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreatePodIdentityAssociation AWS API Documentation + # + # @overload create_pod_identity_association(params = {}) + # @param [Hash] params ({}) + def create_pod_identity_association(params = {}, options = {}) + req = build_request(:create_pod_identity_association, params) + req.send_request(options) + end + # Delete an Amazon EKS add-on. # # When you remove the add-on, it will also be deleted from the cluster. @@ -1639,10 +1775,10 @@ def delete_cluster(params = {}, options = {}) req.send_request(options) end - # Deletes an expired / inactive subscription. Deleting inactive + # Deletes an expired or inactive subscription. Deleting inactive # subscriptions removes them from the Amazon Web Services Management # Console view and from list/describe API responses. Subscriptions can - # only be cancelled within 7 days of creation, and are cancelled by + # only be cancelled within 7 days of creation and are cancelled by # creating a ticket in the Amazon Web Services Support Center. # # @option params [required, String] :id @@ -1816,6 +1952,52 @@ def delete_nodegroup(params = {}, options = {}) req.send_request(options) end + # Deletes a EKS Pod Identity association. + # + # The temporary Amazon Web Services credentials from the previous IAM + # role session might still be valid until the session expiry. If you + # need to immediately revoke the temporary session credentials, then go + # to the role in the IAM console. + # + # @option params [required, String] :cluster_name + # The cluster name that + # + # @option params [required, String] :association_id + # The ID of the association to be deleted. + # + # @return [Types::DeletePodIdentityAssociationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DeletePodIdentityAssociationResponse#association #association} => Types::PodIdentityAssociation + # + # @example Request syntax with placeholder values + # + # resp = client.delete_pod_identity_association({ + # cluster_name: "String", # required + # association_id: "String", # required + # }) + # + # @example Response structure + # + # resp.association.cluster_name #=> String + # resp.association.namespace #=> String + # resp.association.service_account #=> String + # resp.association.role_arn #=> String + # resp.association.association_arn #=> String + # resp.association.association_id #=> String + # resp.association.tags #=> Hash + # resp.association.tags["TagKey"] #=> String + # resp.association.created_at #=> Time + # resp.association.modified_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeletePodIdentityAssociation AWS API Documentation + # + # @overload delete_pod_identity_association(params = {}) + # @param [Hash] params ({}) + def delete_pod_identity_association(params = {}, options = {}) + req = build_request(:delete_pod_identity_association, params) + req.send_request(options) + end + # Deregisters a connected cluster to remove it from the Amazon EKS # control plane. # @@ -2448,6 +2630,53 @@ def describe_nodegroup(params = {}, options = {}) req.send_request(options) end + # Returns descriptive information about an EKS Pod Identity association. + # + # This action requires the ID of the association. You can get the ID + # from the response to the `CreatePodIdentityAssocation` for newly + # created associations. Or, you can list the IDs for associations with + # `ListPodIdentityAssociations` and filter the list by namespace or + # service account. + # + # @option params [required, String] :cluster_name + # The name of the cluster that the association is in. + # + # @option params [required, String] :association_id + # The ID of the association that you want the description of. + # + # @return [Types::DescribePodIdentityAssociationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribePodIdentityAssociationResponse#association #association} => Types::PodIdentityAssociation + # + # @example Request syntax with placeholder values + # + # resp = client.describe_pod_identity_association({ + # cluster_name: "String", # required + # association_id: "String", # required + # }) + # + # @example Response structure + # + # resp.association.cluster_name #=> String + # resp.association.namespace #=> String + # resp.association.service_account #=> String + # resp.association.role_arn #=> String + # resp.association.association_arn #=> String + # resp.association.association_id #=> String + # resp.association.tags #=> Hash + # resp.association.tags["TagKey"] #=> String + # resp.association.created_at #=> Time + # resp.association.modified_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribePodIdentityAssociation AWS API Documentation + # + # @overload describe_pod_identity_association(params = {}) + # @param [Hash] params ({}) + def describe_pod_identity_association(params = {}, options = {}) + req = build_request(:describe_pod_identity_association, params) + req.send_request(options) + end + # Returns descriptive information about an update against your Amazon # EKS cluster or associated managed node group or Amazon EKS add-on. # @@ -2720,11 +2949,11 @@ def list_clusters(params = {}, options = {}) # results and a nextToken value if applicable. # # @option params [String] :next_token - # The nextToken value to include in a future - # ListEksAnywhereSubscriptions request. When the results of a - # ListEksAnywhereSubscriptions request exceed maxResults, you can use - # this value to retrieve the next page of results. This value is null - # when there are no more results to return. + # The `nextToken` value returned from a previous paginated + # `ListEksAnywhereSubscriptions` request where `maxResults` was used and + # the results exceeded the value of that parameter. Pagination continues + # from the end of the previous results that returned the `nextToken` + # value. # # @option params [Array] :include_status # An array of subscription statuses to filter on. @@ -2734,6 +2963,8 @@ def list_clusters(params = {}, options = {}) # * {Types::ListEksAnywhereSubscriptionsResponse#subscriptions #subscriptions} => Array<Types::EksAnywhereSubscription> # * {Types::ListEksAnywhereSubscriptionsResponse#next_token #next_token} => String # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # # @example Request syntax with placeholder values # # resp = client.list_eks_anywhere_subscriptions({ @@ -2935,6 +3166,79 @@ def list_nodegroups(params = {}, options = {}) req.send_request(options) end + # List the EKS Pod Identity associations in a cluster. You can filter + # the list by the namespace that the association is in or the service + # account that the association uses. + # + # @option params [required, String] :cluster_name + # The name of the cluster that the associations are in. + # + # @option params [String] :namespace + # The name of the Kubernetes namespace inside the cluster that the + # associations are in. + # + # @option params [String] :service_account + # The name of the Kubernetes service account that the associations use. + # + # @option params [Integer] :max_results + # The maximum number of EKS Pod Identity association results returned by + # `ListPodIdentityAssociations` in paginated output. When you use this + # parameter, `ListPodIdentityAssociations` returns only `maxResults` + # results in a single page along with a `nextToken` response element. + # You can see the remaining results of the initial request by sending + # another `ListPodIdentityAssociations` request with the returned + # `nextToken` value. This value can be between 1 and 100. If you don't + # use this parameter, `ListPodIdentityAssociations` returns up to 100 + # results and a `nextToken` value if applicable. + # + # @option params [String] :next_token + # The `nextToken` value returned from a previous paginated `ListUpdates` + # request where `maxResults` was used and the results exceeded the value + # of that parameter. Pagination continues from the end of the previous + # results that returned the `nextToken` value. + # + # This token should be treated as an opaque identifier that is used only + # to retrieve the next items in a list and not for other programmatic + # purposes. + # + # + # + # @return [Types::ListPodIdentityAssociationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListPodIdentityAssociationsResponse#associations #associations} => Array<Types::PodIdentityAssociationSummary> + # * {Types::ListPodIdentityAssociationsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_pod_identity_associations({ + # cluster_name: "String", # required + # namespace: "String", + # service_account: "String", + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.associations #=> Array + # resp.associations[0].cluster_name #=> String + # resp.associations[0].namespace #=> String + # resp.associations[0].service_account #=> String + # resp.associations[0].association_arn #=> String + # resp.associations[0].association_id #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListPodIdentityAssociations AWS API Documentation + # + # @overload list_pod_identity_associations(params = {}) + # @param [Hash] params ({}) + def list_pod_identity_associations(params = {}, options = {}) + req = build_request(:list_pod_identity_associations, params) + req.send_request(options) + end + # List the tags for an Amazon EKS resource. # # @option params [required, String] :resource_arn @@ -3364,8 +3668,14 @@ def update_addon(params = {}, options = {}) # more information, see [Amazon EKS cluster endpoint access control][3] # in the Amazon EKS User Guide . # - # You can't update the subnets or security group IDs for an existing - # cluster. + # You can also use this API operation to choose different subnets and + # security groups for the cluster. You must specify at least two subnets + # that are in different Availability Zones. You can't change which VPC + # the subnets are from, the subnets must be in the same VPC as the + # subnets that the cluster was created with. For more information about + # the VPC requirements, see + # [https://docs.aws.amazon.com/eks/latest/userguide/network\_reqs.html][4] + # in the Amazon EKS User Guide . # # Cluster updates are asynchronous, and they should finish within a few # minutes. During an update, the cluster status moves to `UPDATING` @@ -3378,6 +3688,7 @@ def update_addon(params = {}, options = {}) # [1]: https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html # [2]: http://aws.amazon.com/cloudwatch/pricing/ # [3]: https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html + # [4]: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html # # @option params [required, String] :name # The name of the Amazon EKS cluster to update. @@ -3529,6 +3840,7 @@ def update_cluster_version(params = {}, options = {}) # updated after subscription creation. # # @option params [required, String] :id + # The ID of the subscription. # # @option params [required, Boolean] :auto_renew # A boolean indicating whether or not to automatically renew the @@ -3828,6 +4140,63 @@ def update_nodegroup_version(params = {}, options = {}) req.send_request(options) end + # Updates a EKS Pod Identity association. Only the IAM role can be + # changed; an association can't be moved between clusters, namespaces, + # or service accounts. If you need to edit the namespace or service + # account, you need to remove the association and then create a new + # association with your desired settings. + # + # @option params [required, String] :cluster_name + # The name of the cluster that you want to update the association in. + # + # @option params [required, String] :association_id + # The ID of the association to be updated. + # + # @option params [String] :role_arn + # The new IAM role to change the + # + # @option params [String] :client_request_token + # Unique, case-sensitive identifier that you provide to ensure the + # idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @return [Types::UpdatePodIdentityAssociationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdatePodIdentityAssociationResponse#association #association} => Types::PodIdentityAssociation + # + # @example Request syntax with placeholder values + # + # resp = client.update_pod_identity_association({ + # cluster_name: "String", # required + # association_id: "String", # required + # role_arn: "String", + # client_request_token: "String", + # }) + # + # @example Response structure + # + # resp.association.cluster_name #=> String + # resp.association.namespace #=> String + # resp.association.service_account #=> String + # resp.association.role_arn #=> String + # resp.association.association_arn #=> String + # resp.association.association_id #=> String + # resp.association.tags #=> Hash + # resp.association.tags["TagKey"] #=> String + # resp.association.created_at #=> Time + # resp.association.modified_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdatePodIdentityAssociation AWS API Documentation + # + # @overload update_pod_identity_association(params = {}) + # @param [Hash] params ({}) + def update_pod_identity_association(params = {}, options = {}) + req = build_request(:update_pod_identity_association, params) + req.send_request(options) + end + # @!endgroup # @param params ({}) @@ -3841,7 +4210,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-eks' - context[:gem_version] = '1.93.0' + context[:gem_version] = '1.94.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks/client_api.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks/client_api.rb index a86bf63d8bd..bee362dca78 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks/client_api.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks/client_api.rb @@ -63,6 +63,8 @@ module ClientApi CreateFargateProfileResponse = Shapes::StructureShape.new(name: 'CreateFargateProfileResponse') CreateNodegroupRequest = Shapes::StructureShape.new(name: 'CreateNodegroupRequest') CreateNodegroupResponse = Shapes::StructureShape.new(name: 'CreateNodegroupResponse') + CreatePodIdentityAssociationRequest = Shapes::StructureShape.new(name: 'CreatePodIdentityAssociationRequest') + CreatePodIdentityAssociationResponse = Shapes::StructureShape.new(name: 'CreatePodIdentityAssociationResponse') DeleteAddonRequest = Shapes::StructureShape.new(name: 'DeleteAddonRequest') DeleteAddonResponse = Shapes::StructureShape.new(name: 'DeleteAddonResponse') DeleteClusterRequest = Shapes::StructureShape.new(name: 'DeleteClusterRequest') @@ -73,6 +75,8 @@ module ClientApi DeleteFargateProfileResponse = Shapes::StructureShape.new(name: 'DeleteFargateProfileResponse') DeleteNodegroupRequest = Shapes::StructureShape.new(name: 'DeleteNodegroupRequest') DeleteNodegroupResponse = Shapes::StructureShape.new(name: 'DeleteNodegroupResponse') + DeletePodIdentityAssociationRequest = Shapes::StructureShape.new(name: 'DeletePodIdentityAssociationRequest') + DeletePodIdentityAssociationResponse = Shapes::StructureShape.new(name: 'DeletePodIdentityAssociationResponse') DeregisterClusterRequest = Shapes::StructureShape.new(name: 'DeregisterClusterRequest') DeregisterClusterResponse = Shapes::StructureShape.new(name: 'DeregisterClusterResponse') DescribeAddonConfigurationRequest = Shapes::StructureShape.new(name: 'DescribeAddonConfigurationRequest') @@ -92,6 +96,8 @@ module ClientApi DescribeIdentityProviderConfigResponse = Shapes::StructureShape.new(name: 'DescribeIdentityProviderConfigResponse') DescribeNodegroupRequest = Shapes::StructureShape.new(name: 'DescribeNodegroupRequest') DescribeNodegroupResponse = Shapes::StructureShape.new(name: 'DescribeNodegroupResponse') + DescribePodIdentityAssociationRequest = Shapes::StructureShape.new(name: 'DescribePodIdentityAssociationRequest') + DescribePodIdentityAssociationResponse = Shapes::StructureShape.new(name: 'DescribePodIdentityAssociationResponse') DescribeUpdateRequest = Shapes::StructureShape.new(name: 'DescribeUpdateRequest') DescribeUpdateResponse = Shapes::StructureShape.new(name: 'DescribeUpdateResponse') DisassociateIdentityProviderConfigRequest = Shapes::StructureShape.new(name: 'DisassociateIdentityProviderConfigRequest') @@ -146,6 +152,9 @@ module ClientApi ListNodegroupsRequest = Shapes::StructureShape.new(name: 'ListNodegroupsRequest') ListNodegroupsRequestMaxResults = Shapes::IntegerShape.new(name: 'ListNodegroupsRequestMaxResults') ListNodegroupsResponse = Shapes::StructureShape.new(name: 'ListNodegroupsResponse') + ListPodIdentityAssociationsMaxResults = Shapes::IntegerShape.new(name: 'ListPodIdentityAssociationsMaxResults') + ListPodIdentityAssociationsRequest = Shapes::StructureShape.new(name: 'ListPodIdentityAssociationsRequest') + ListPodIdentityAssociationsResponse = Shapes::StructureShape.new(name: 'ListPodIdentityAssociationsResponse') ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') ListUpdatesRequest = Shapes::StructureShape.new(name: 'ListUpdatesRequest') @@ -172,6 +181,9 @@ module ClientApi OutpostConfigRequest = Shapes::StructureShape.new(name: 'OutpostConfigRequest') OutpostConfigResponse = Shapes::StructureShape.new(name: 'OutpostConfigResponse') PercentCapacity = Shapes::IntegerShape.new(name: 'PercentCapacity') + PodIdentityAssociation = Shapes::StructureShape.new(name: 'PodIdentityAssociation') + PodIdentityAssociationSummaries = Shapes::ListShape.new(name: 'PodIdentityAssociationSummaries') + PodIdentityAssociationSummary = Shapes::StructureShape.new(name: 'PodIdentityAssociationSummary') Provider = Shapes::StructureShape.new(name: 'Provider') RegisterClusterRequest = Shapes::StructureShape.new(name: 'RegisterClusterRequest') RegisterClusterResponse = Shapes::StructureShape.new(name: 'RegisterClusterResponse') @@ -215,6 +227,8 @@ module ClientApi UpdateParam = Shapes::StructureShape.new(name: 'UpdateParam') UpdateParamType = Shapes::StringShape.new(name: 'UpdateParamType') UpdateParams = Shapes::ListShape.new(name: 'UpdateParams') + UpdatePodIdentityAssociationRequest = Shapes::StructureShape.new(name: 'UpdatePodIdentityAssociationRequest') + UpdatePodIdentityAssociationResponse = Shapes::StructureShape.new(name: 'UpdatePodIdentityAssociationResponse') UpdateStatus = Shapes::StringShape.new(name: 'UpdateStatus') UpdateTaintsPayload = Shapes::StructureShape.new(name: 'UpdateTaintsPayload') UpdateType = Shapes::StringShape.new(name: 'UpdateType') @@ -447,6 +461,17 @@ module ClientApi CreateNodegroupResponse.add_member(:nodegroup, Shapes::ShapeRef.new(shape: Nodegroup, location_name: "nodegroup")) CreateNodegroupResponse.struct_class = Types::CreateNodegroupResponse + CreatePodIdentityAssociationRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) + CreatePodIdentityAssociationRequest.add_member(:namespace, Shapes::ShapeRef.new(shape: String, required: true, location_name: "namespace")) + CreatePodIdentityAssociationRequest.add_member(:service_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceAccount")) + CreatePodIdentityAssociationRequest.add_member(:role_arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "roleArn")) + CreatePodIdentityAssociationRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: String, location_name: "clientRequestToken", metadata: {"idempotencyToken"=>true})) + CreatePodIdentityAssociationRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + CreatePodIdentityAssociationRequest.struct_class = Types::CreatePodIdentityAssociationRequest + + CreatePodIdentityAssociationResponse.add_member(:association, Shapes::ShapeRef.new(shape: PodIdentityAssociation, location_name: "association")) + CreatePodIdentityAssociationResponse.struct_class = Types::CreatePodIdentityAssociationResponse + DeleteAddonRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: ClusterName, required: true, location: "uri", location_name: "name")) DeleteAddonRequest.add_member(:addon_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "addonName")) DeleteAddonRequest.add_member(:preserve, Shapes::ShapeRef.new(shape: Boolean, location: "querystring", location_name: "preserve")) @@ -481,6 +506,13 @@ module ClientApi DeleteNodegroupResponse.add_member(:nodegroup, Shapes::ShapeRef.new(shape: Nodegroup, location_name: "nodegroup")) DeleteNodegroupResponse.struct_class = Types::DeleteNodegroupResponse + DeletePodIdentityAssociationRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) + DeletePodIdentityAssociationRequest.add_member(:association_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "associationId")) + DeletePodIdentityAssociationRequest.struct_class = Types::DeletePodIdentityAssociationRequest + + DeletePodIdentityAssociationResponse.add_member(:association, Shapes::ShapeRef.new(shape: PodIdentityAssociation, location_name: "association")) + DeletePodIdentityAssociationResponse.struct_class = Types::DeletePodIdentityAssociationResponse + DeregisterClusterRequest.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) DeregisterClusterRequest.struct_class = Types::DeregisterClusterRequest @@ -549,6 +581,13 @@ module ClientApi DescribeNodegroupResponse.add_member(:nodegroup, Shapes::ShapeRef.new(shape: Nodegroup, location_name: "nodegroup")) DescribeNodegroupResponse.struct_class = Types::DescribeNodegroupResponse + DescribePodIdentityAssociationRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) + DescribePodIdentityAssociationRequest.add_member(:association_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "associationId")) + DescribePodIdentityAssociationRequest.struct_class = Types::DescribePodIdentityAssociationRequest + + DescribePodIdentityAssociationResponse.add_member(:association, Shapes::ShapeRef.new(shape: PodIdentityAssociation, location_name: "association")) + DescribePodIdentityAssociationResponse.struct_class = Types::DescribePodIdentityAssociationResponse + DescribeUpdateRequest.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) DescribeUpdateRequest.add_member(:update_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "updateId")) DescribeUpdateRequest.add_member(:nodegroup_name, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nodegroupName")) @@ -725,6 +764,17 @@ module ClientApi ListNodegroupsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) ListNodegroupsResponse.struct_class = Types::ListNodegroupsResponse + ListPodIdentityAssociationsRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) + ListPodIdentityAssociationsRequest.add_member(:namespace, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "namespace")) + ListPodIdentityAssociationsRequest.add_member(:service_account, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "serviceAccount")) + ListPodIdentityAssociationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListPodIdentityAssociationsMaxResults, location: "querystring", location_name: "maxResults")) + ListPodIdentityAssociationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken")) + ListPodIdentityAssociationsRequest.struct_class = Types::ListPodIdentityAssociationsRequest + + ListPodIdentityAssociationsResponse.add_member(:associations, Shapes::ShapeRef.new(shape: PodIdentityAssociationSummaries, location_name: "associations")) + ListPodIdentityAssociationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListPodIdentityAssociationsResponse.struct_class = Types::ListPodIdentityAssociationsResponse + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest @@ -838,6 +888,26 @@ module ClientApi OutpostConfigResponse.add_member(:control_plane_placement, Shapes::ShapeRef.new(shape: ControlPlanePlacementResponse, location_name: "controlPlanePlacement")) OutpostConfigResponse.struct_class = Types::OutpostConfigResponse + PodIdentityAssociation.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName")) + PodIdentityAssociation.add_member(:namespace, Shapes::ShapeRef.new(shape: String, location_name: "namespace")) + PodIdentityAssociation.add_member(:service_account, Shapes::ShapeRef.new(shape: String, location_name: "serviceAccount")) + PodIdentityAssociation.add_member(:role_arn, Shapes::ShapeRef.new(shape: String, location_name: "roleArn")) + PodIdentityAssociation.add_member(:association_arn, Shapes::ShapeRef.new(shape: String, location_name: "associationArn")) + PodIdentityAssociation.add_member(:association_id, Shapes::ShapeRef.new(shape: String, location_name: "associationId")) + PodIdentityAssociation.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + PodIdentityAssociation.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt")) + PodIdentityAssociation.add_member(:modified_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "modifiedAt")) + PodIdentityAssociation.struct_class = Types::PodIdentityAssociation + + PodIdentityAssociationSummaries.member = Shapes::ShapeRef.new(shape: PodIdentityAssociationSummary) + + PodIdentityAssociationSummary.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName")) + PodIdentityAssociationSummary.add_member(:namespace, Shapes::ShapeRef.new(shape: String, location_name: "namespace")) + PodIdentityAssociationSummary.add_member(:service_account, Shapes::ShapeRef.new(shape: String, location_name: "serviceAccount")) + PodIdentityAssociationSummary.add_member(:association_arn, Shapes::ShapeRef.new(shape: String, location_name: "associationArn")) + PodIdentityAssociationSummary.add_member(:association_id, Shapes::ShapeRef.new(shape: String, location_name: "associationId")) + PodIdentityAssociationSummary.struct_class = Types::PodIdentityAssociationSummary + Provider.add_member(:key_arn, Shapes::ShapeRef.new(shape: String, location_name: "keyArn")) Provider.struct_class = Types::Provider @@ -996,6 +1066,15 @@ module ClientApi UpdateParams.member = Shapes::ShapeRef.new(shape: UpdateParam) + UpdatePodIdentityAssociationRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "name")) + UpdatePodIdentityAssociationRequest.add_member(:association_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "associationId")) + UpdatePodIdentityAssociationRequest.add_member(:role_arn, Shapes::ShapeRef.new(shape: String, location_name: "roleArn")) + UpdatePodIdentityAssociationRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: String, location_name: "clientRequestToken", metadata: {"idempotencyToken"=>true})) + UpdatePodIdentityAssociationRequest.struct_class = Types::UpdatePodIdentityAssociationRequest + + UpdatePodIdentityAssociationResponse.add_member(:association, Shapes::ShapeRef.new(shape: PodIdentityAssociation, location_name: "association")) + UpdatePodIdentityAssociationResponse.struct_class = Types::UpdatePodIdentityAssociationResponse + UpdateTaintsPayload.add_member(:add_or_update_taints, Shapes::ShapeRef.new(shape: taintsList, location_name: "addOrUpdateTaints")) UpdateTaintsPayload.add_member(:remove_taints, Shapes::ShapeRef.new(shape: taintsList, location_name: "removeTaints")) UpdateTaintsPayload.struct_class = Types::UpdateTaintsPayload @@ -1144,6 +1223,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + api.add_operation(:create_pod_identity_association, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreatePodIdentityAssociation" + o.http_method = "POST" + o.http_request_uri = "/clusters/{name}/pod-identity-associations" + o.input = Shapes::ShapeRef.new(shape: CreatePodIdentityAssociationRequest) + o.output = Shapes::ShapeRef.new(shape: CreatePodIdentityAssociationResponse) + o.errors << Shapes::ShapeRef.new(shape: ServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ResourceLimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException) + end) + api.add_operation(:delete_addon, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteAddon" o.http_method = "DELETE" @@ -1208,6 +1301,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + api.add_operation(:delete_pod_identity_association, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeletePodIdentityAssociation" + o.http_method = "DELETE" + o.http_request_uri = "/clusters/{name}/pod-identity-associations/{associationId}" + o.input = Shapes::ShapeRef.new(shape: DeletePodIdentityAssociationRequest) + o.output = Shapes::ShapeRef.new(shape: DeletePodIdentityAssociationResponse) + o.errors << Shapes::ShapeRef.new(shape: ServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + end) + api.add_operation(:deregister_cluster, Seahorse::Model::Operation.new.tap do |o| o.name = "DeregisterCluster" o.http_method = "DELETE" @@ -1325,6 +1430,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) end) + api.add_operation(:describe_pod_identity_association, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribePodIdentityAssociation" + o.http_method = "GET" + o.http_request_uri = "/clusters/{name}/pod-identity-associations/{associationId}" + o.input = Shapes::ShapeRef.new(shape: DescribePodIdentityAssociationRequest) + o.output = Shapes::ShapeRef.new(shape: DescribePodIdentityAssociationResponse) + o.errors << Shapes::ShapeRef.new(shape: ServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + end) + api.add_operation(:describe_update, Seahorse::Model::Operation.new.tap do |o| o.name = "DescribeUpdate" o.http_method = "GET" @@ -1398,6 +1515,12 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ClientException) o.errors << Shapes::ShapeRef.new(shape: ServerException) o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) end) api.add_operation(:list_fargate_profiles, Seahorse::Model::Operation.new.tap do |o| @@ -1456,6 +1579,24 @@ module ClientApi ) end) + api.add_operation(:list_pod_identity_associations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListPodIdentityAssociations" + o.http_method = "GET" + o.http_request_uri = "/clusters/{name}/pod-identity-associations" + o.input = Shapes::ShapeRef.new(shape: ListPodIdentityAssociationsRequest) + o.output = Shapes::ShapeRef.new(shape: ListPodIdentityAssociationsResponse) + o.errors << Shapes::ShapeRef.new(shape: ServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "ListTagsForResource" o.http_method = "GET" @@ -1602,6 +1743,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) end) + + api.add_operation(:update_pod_identity_association, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdatePodIdentityAssociation" + o.http_method = "POST" + o.http_request_uri = "/clusters/{name}/pod-identity-associations/{associationId}" + o.input = Shapes::ShapeRef.new(shape: UpdatePodIdentityAssociationRequest) + o.output = Shapes::ShapeRef.new(shape: UpdatePodIdentityAssociationResponse) + o.errors << Shapes::ShapeRef.new(shape: ServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + end) end end diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks/endpoints.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks/endpoints.rb index a73ad5bb2db..eb36a5062c2 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks/endpoints.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks/endpoints.rb @@ -110,6 +110,20 @@ def self.build(context) end end + class CreatePodIdentityAssociation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKS::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteAddon def self.build(context) unless context.config.regional_endpoint @@ -180,6 +194,20 @@ def self.build(context) end end + class DeletePodIdentityAssociation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKS::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeregisterCluster def self.build(context) unless context.config.regional_endpoint @@ -306,6 +334,20 @@ def self.build(context) end end + class DescribePodIdentityAssociation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKS::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DescribeUpdate def self.build(context) unless context.config.regional_endpoint @@ -418,6 +460,20 @@ def self.build(context) end end + class ListPodIdentityAssociations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKS::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListTagsForResource def self.build(context) unless context.config.regional_endpoint @@ -572,5 +628,19 @@ def self.build(context) end end + class UpdatePodIdentityAssociation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKS::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + end end diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks/plugins/endpoints.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks/plugins/endpoints.rb index 36946c3ec34..41fdd019210 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks/plugins/endpoints.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks/plugins/endpoints.rb @@ -70,6 +70,8 @@ def parameters_for_operation(context) Aws::EKS::Endpoints::CreateFargateProfile.build(context) when :create_nodegroup Aws::EKS::Endpoints::CreateNodegroup.build(context) + when :create_pod_identity_association + Aws::EKS::Endpoints::CreatePodIdentityAssociation.build(context) when :delete_addon Aws::EKS::Endpoints::DeleteAddon.build(context) when :delete_cluster @@ -80,6 +82,8 @@ def parameters_for_operation(context) Aws::EKS::Endpoints::DeleteFargateProfile.build(context) when :delete_nodegroup Aws::EKS::Endpoints::DeleteNodegroup.build(context) + when :delete_pod_identity_association + Aws::EKS::Endpoints::DeletePodIdentityAssociation.build(context) when :deregister_cluster Aws::EKS::Endpoints::DeregisterCluster.build(context) when :describe_addon @@ -98,6 +102,8 @@ def parameters_for_operation(context) Aws::EKS::Endpoints::DescribeIdentityProviderConfig.build(context) when :describe_nodegroup Aws::EKS::Endpoints::DescribeNodegroup.build(context) + when :describe_pod_identity_association + Aws::EKS::Endpoints::DescribePodIdentityAssociation.build(context) when :describe_update Aws::EKS::Endpoints::DescribeUpdate.build(context) when :disassociate_identity_provider_config @@ -114,6 +120,8 @@ def parameters_for_operation(context) Aws::EKS::Endpoints::ListIdentityProviderConfigs.build(context) when :list_nodegroups Aws::EKS::Endpoints::ListNodegroups.build(context) + when :list_pod_identity_associations + Aws::EKS::Endpoints::ListPodIdentityAssociations.build(context) when :list_tags_for_resource Aws::EKS::Endpoints::ListTagsForResource.build(context) when :list_updates @@ -136,6 +144,8 @@ def parameters_for_operation(context) Aws::EKS::Endpoints::UpdateNodegroupConfig.build(context) when :update_nodegroup_version Aws::EKS::Endpoints::UpdateNodegroupVersion.build(context) + when :update_pod_identity_association + Aws::EKS::Endpoints::UpdatePodIdentityAssociation.build(context) end end end diff --git a/gems/aws-sdk-eks/lib/aws-sdk-eks/types.rb b/gems/aws-sdk-eks/lib/aws-sdk-eks/types.rb index 903972fa789..10f19098865 100644 --- a/gems/aws-sdk-eks/lib/aws-sdk-eks/types.rb +++ b/gems/aws-sdk-eks/lib/aws-sdk-eks/types.rb @@ -21,6 +21,7 @@ module Types # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html # # @!attribute [rw] message + # You do not have sufficient access to perform this action. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AccessDeniedException AWS API Documentation @@ -340,6 +341,9 @@ class AutoScalingGroup < Struct.new( # error message. # # @!attribute [rw] message + # This exception is thrown if the request contains a semantic error. + # The precise meaning will depend on the API, and will be documented + # in the error message. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/BadRequestException AWS API Documentation @@ -385,6 +389,7 @@ class Certificate < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The Amazon EKS add-on name associated with the exception. # @return [String] # # @!attribute [rw] subscription_id @@ -392,6 +397,14 @@ class Certificate < Struct.new( # @return [String] # # @!attribute [rw] message + # These errors are usually caused by a client action. Actions can + # include using an action or resource on behalf of an [IAM + # principal][1] that doesn't have permissions to use the action or + # resource or specifying an identifier that is not valid. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ClientException AWS API Documentation @@ -983,7 +996,7 @@ class CreateClusterResponse < Struct.new( # # @!attribute [rw] license_quantity # The number of licenses to purchase with the subscription. Valid - # values are between 1 and 1000. This value cannot be changed after + # values are between 1 and 100. This value can't be changed after # creating the subscription. # @return [Integer] # @@ -1009,7 +1022,7 @@ class CreateClusterResponse < Struct.new( # @!attribute [rw] tags # The metadata for a subscription to assist with categorization and # organization. Each tag consists of a key and an optional value. - # Subscription tags do not propagate to any other resources associated + # Subscription tags don't propagate to any other resources associated # with the subscription. # @return [Hash] # @@ -1347,6 +1360,95 @@ class CreateNodegroupResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] cluster_name + # The name of the cluster to create the association in. + # @return [String] + # + # @!attribute [rw] namespace + # The name of the Kubernetes namespace inside the cluster to create + # the association in. The service account and the pods that use the + # service account must be in this namespace. + # @return [String] + # + # @!attribute [rw] service_account + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the IAM role to associate with the + # service account. The EKS Pod Identity agent manages credentials to + # assume this role for applications in the containers in the pods that + # use this service account. + # @return [String] + # + # @!attribute [rw] client_request_token + # Unique, case-sensitive identifier that you provide to ensure the + # idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @!attribute [rw] tags + # The metadata that you apply to a resource to assist with + # categorization and organization. Each tag consists of a key and an + # optional value. You define both. + # + # The following basic restrictions apply to tags: + # + # * Maximum number of tags per resource – 50 + # + # * For each resource, each tag key must be unique, and each tag key + # can have only one value. + # + # * Maximum key length – 128 Unicode characters in UTF-8 + # + # * Maximum value length – 256 Unicode characters in UTF-8 + # + # * If your tagging schema is used across multiple services and + # resources, remember that other services may have restrictions on + # allowed characters. Generally allowed characters are: letters, + # numbers, and spaces representable in UTF-8, and the following + # characters: + - = . \_ : / @. + # + # * Tag keys and values are case-sensitive. + # + # * Do not use `aws:`, `AWS:`, or any upper or lowercase combination + # of such as a prefix for either keys or values as it is reserved + # for Amazon Web Services use. You cannot edit or delete tag keys or + # values with this prefix. Tags with this prefix do not count + # against your tags per resource limit. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreatePodIdentityAssociationRequest AWS API Documentation + # + class CreatePodIdentityAssociationRequest < Struct.new( + :cluster_name, + :namespace, + :service_account, + :role_arn, + :client_request_token, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] association + # The full description of your new association. + # + # The description includes an ID for the association. Use the ID of + # the association in further actions to manage the association. + # @return [Types::PodIdentityAssociation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreatePodIdentityAssociationResponse AWS API Documentation + # + class CreatePodIdentityAssociationResponse < Struct.new( + :association) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] cluster_name # The name of the cluster to delete the add-on from. # @return [String] @@ -1501,6 +1603,36 @@ class DeleteNodegroupResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] cluster_name + # The cluster name that + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association to be deleted. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeletePodIdentityAssociationRequest AWS API Documentation + # + class DeletePodIdentityAssociationRequest < Struct.new( + :cluster_name, + :association_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] association + # The full description of the EKS Pod Identity association that was + # deleted. + # @return [Types::PodIdentityAssociation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeletePodIdentityAssociationResponse AWS API Documentation + # + class DeletePodIdentityAssociationResponse < Struct.new( + :association) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] name # The name of the connected cluster to deregister. # @return [String] @@ -1685,11 +1817,11 @@ class DescribeAddonVersionsRequest < Struct.new( # @return [Array] # # @!attribute [rw] next_token - # The `nextToken` value returned from a previous paginated - # `DescribeAddonVersionsResponse` where `maxResults` was used and the - # results exceeded the value of that parameter. Pagination continues - # from the end of the previous results that returned the `nextToken` - # value. + # The `nextToken` value to include in a future `DescribeAddonVersions` + # request. When the results of a `DescribeAddonVersions` request + # exceed `maxResults`, you can use this value to retrieve the next + # page of results. This value is `null` when there are no more results + # to return. # # This token should be treated as an opaque identifier that is used # only to retrieve the next items in a list and not for other @@ -1845,6 +1977,35 @@ class DescribeNodegroupResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] cluster_name + # The name of the cluster that the association is in. + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association that you want the description of. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribePodIdentityAssociationRequest AWS API Documentation + # + class DescribePodIdentityAssociationRequest < Struct.new( + :cluster_name, + :association_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] association + # The full description of the EKS Pod Identity association. + # @return [Types::PodIdentityAssociation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribePodIdentityAssociationResponse AWS API Documentation + # + class DescribePodIdentityAssociationResponse < Struct.new( + :association) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] name # The name of the Amazon EKS cluster associated with the update. # @return [String] @@ -1957,7 +2118,7 @@ class DisassociateIdentityProviderConfigResponse < Struct.new( # # @!attribute [rw] license_quantity # The number of licenses included in a subscription. Valid values are - # between 1 and 1000. + # between 1 and 100. # @return [Integer] # # @!attribute [rw] license_type @@ -1980,7 +2141,8 @@ class DisassociateIdentityProviderConfigResponse < Struct.new( # @return [Boolean] # # @!attribute [rw] license_arns - # License Manager License ARNs associated with the subscription. + # Amazon Web Services License Manager ARN associated with the + # subscription. # @return [Array] # # @!attribute [rw] tags @@ -2020,7 +2182,7 @@ class EksAnywhereSubscription < Struct.new( # @return [Integer] # # @!attribute [rw] unit - # The term unit of the subscription. Valid value is MONTHS. + # The term unit of the subscription. Valid value is `MONTHS`. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/EksAnywhereSubscriptionTerm AWS API Documentation @@ -2258,6 +2420,8 @@ class IdentityProviderConfigResponse < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The specified parameter for the add-on name is invalid. Review the + # available parameters for the API request # @return [String] # # @!attribute [rw] subscription_id @@ -2265,6 +2429,8 @@ class IdentityProviderConfigResponse < Struct.new( # @return [String] # # @!attribute [rw] message + # The specified parameter is invalid. Review the available parameters + # for the API request. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/InvalidParameterException AWS API Documentation @@ -2292,6 +2458,8 @@ class InvalidParameterException < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The request is invalid given the state of the add-on name. Check the + # state of the cluster and the associated operations. # @return [String] # # @!attribute [rw] subscription_id @@ -2299,6 +2467,7 @@ class InvalidParameterException < Struct.new( # @return [String] # # @!attribute [rw] message + # The Amazon EKS add-on name associated with the exception. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/InvalidRequestException AWS API Documentation @@ -2599,10 +2768,10 @@ class ListAddonsRequest < Struct.new( # @return [Array] # # @!attribute [rw] next_token - # The `nextToken` value returned from a previous paginated - # `ListAddonsResponse` where `maxResults` was used and the results - # exceeded the value of that parameter. Pagination continues from the - # end of the previous results that returned the `nextToken` value. + # The `nextToken` value to include in a future `ListAddons` request. + # When the results of a `ListAddons` request exceed `maxResults`, you + # can use this value to retrieve the next page of results. This value + # is `null` when there are no more results to return. # # This token should be treated as an opaque identifier that is used # only to retrieve the next items in a list and not for other @@ -2695,11 +2864,11 @@ class ListClustersResponse < Struct.new( # @return [Integer] # # @!attribute [rw] next_token - # The nextToken value to include in a future - # ListEksAnywhereSubscriptions request. When the results of a - # ListEksAnywhereSubscriptions request exceed maxResults, you can use - # this value to retrieve the next page of results. This value is null - # when there are no more results to return. + # The `nextToken` value returned from a previous paginated + # `ListEksAnywhereSubscriptions` request where `maxResults` was used + # and the results exceeded the value of that parameter. Pagination + # continues from the end of the previous results that returned the + # `nextToken` value. # @return [String] # # @!attribute [rw] include_status @@ -2835,11 +3004,11 @@ class ListIdentityProviderConfigsRequest < Struct.new( # @return [Array] # # @!attribute [rw] next_token - # The `nextToken` value returned from a previous paginated - # `ListIdentityProviderConfigsResponse` where `maxResults` was used - # and the results exceeded the value of that parameter. Pagination - # continues from the end of the previous results that returned the - # `nextToken` value. + # The `nextToken` value to include in a future + # `ListIdentityProviderConfigsResponse` request. When the results of a + # `ListIdentityProviderConfigsResponse` request exceed `maxResults`, + # you can use this value to retrieve the next page of results. This + # value is `null` when there are no more results to return. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListIdentityProviderConfigsResponse AWS API Documentation @@ -2907,6 +3076,97 @@ class ListNodegroupsResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] cluster_name + # The name of the cluster that the associations are in. + # @return [String] + # + # @!attribute [rw] namespace + # The name of the Kubernetes namespace inside the cluster that the + # associations are in. + # @return [String] + # + # @!attribute [rw] service_account + # The name of the Kubernetes service account that the associations + # use. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of EKS Pod Identity association results returned + # by `ListPodIdentityAssociations` in paginated output. When you use + # this parameter, `ListPodIdentityAssociations` returns only + # `maxResults` results in a single page along with a `nextToken` + # response element. You can see the remaining results of the initial + # request by sending another `ListPodIdentityAssociations` request + # with the returned `nextToken` value. This value can be between 1 and + # 100. If you don't use this parameter, `ListPodIdentityAssociations` + # returns up to 100 results and a `nextToken` value if applicable. + # @return [Integer] + # + # @!attribute [rw] next_token + # The `nextToken` value returned from a previous paginated + # `ListUpdates` request where `maxResults` was used and the results + # exceeded the value of that parameter. Pagination continues from the + # end of the previous results that returned the `nextToken` value. + # + # This token should be treated as an opaque identifier that is used + # only to retrieve the next items in a list and not for other + # programmatic purposes. + # + # + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListPodIdentityAssociationsRequest AWS API Documentation + # + class ListPodIdentityAssociationsRequest < Struct.new( + :cluster_name, + :namespace, + :service_account, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] associations + # The list of summarized descriptions of the associations that are in + # the cluster and match any filters that you provided. + # + # Each summary is simplified by removing these fields compared to the + # full ` PodIdentityAssociation `: + # + # * The IAM role: `roleArn` + # + # * The timestamp that the association was created at: `createdAt` + # + # * The most recent timestamp that the association was modified at:. + # `modifiedAt` + # + # * The tags on the association: `tags` + # @return [Array] + # + # @!attribute [rw] next_token + # The `nextToken` value to include in a future + # `ListPodIdentityAssociations` request. When the results of a + # `ListPodIdentityAssociations` request exceed `maxResults`, you can + # use this value to retrieve the next page of results. This value is + # `null` when there are no more results to return. + # + # This token should be treated as an opaque identifier that is used + # only to retrieve the next items in a list and not for other + # programmatic purposes. + # + # + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListPodIdentityAssociationsResponse AWS API Documentation + # + class ListPodIdentityAssociationsResponse < Struct.new( + :associations, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The Amazon Resource Name (ARN) that identifies the resource for # which to list the tags. Currently, the supported resources are @@ -3341,6 +3601,8 @@ class NodegroupUpdateConfig < Struct.new( # Clients should not retry such requests. # # @!attribute [rw] message + # A service resource associated with the request could not be found. + # Clients should not retry such requests. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/NotFoundException AWS API Documentation @@ -3624,6 +3886,144 @@ class OutpostConfigResponse < Struct.new( include Aws::Structure end + # Amazon EKS Pod Identity associations provide the ability to manage + # credentials for your applications, similar to the way that 7EC2l + # instance profiles provide credentials to Amazon EC2 instances. + # + # @!attribute [rw] cluster_name + # The name of the cluster that the association is in. + # @return [String] + # + # @!attribute [rw] namespace + # The name of the Kubernetes namespace inside the cluster to create + # the association in. The service account and the pods that use the + # service account must be in this namespace. + # @return [String] + # + # @!attribute [rw] service_account + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the IAM role to associate with the + # service account. The EKS Pod Identity agent manages credentials to + # assume this role for applications in the containers in the pods that + # use this service account. + # @return [String] + # + # @!attribute [rw] association_arn + # The Amazon Resource Name (ARN) of the association. + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association. + # @return [String] + # + # @!attribute [rw] tags + # The metadata that you apply to a resource to assist with + # categorization and organization. Each tag consists of a key and an + # optional value. You define both. + # + # The following basic restrictions apply to tags: + # + # * Maximum number of tags per resource – 50 + # + # * For each resource, each tag key must be unique, and each tag key + # can have only one value. + # + # * Maximum key length – 128 Unicode characters in UTF-8 + # + # * Maximum value length – 256 Unicode characters in UTF-8 + # + # * If your tagging schema is used across multiple services and + # resources, remember that other services may have restrictions on + # allowed characters. Generally allowed characters are: letters, + # numbers, and spaces representable in UTF-8, and the following + # characters: + - = . \_ : / @. + # + # * Tag keys and values are case-sensitive. + # + # * Do not use `aws:`, `AWS:`, or any upper or lowercase combination + # of such as a prefix for either keys or values as it is reserved + # for Amazon Web Services use. You cannot edit or delete tag keys or + # values with this prefix. Tags with this prefix do not count + # against your tags per resource limit. + # @return [Hash] + # + # @!attribute [rw] created_at + # The timestamp that the association was created at. + # @return [Time] + # + # @!attribute [rw] modified_at + # The most recent timestamp that the association was modified at + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/PodIdentityAssociation AWS API Documentation + # + class PodIdentityAssociation < Struct.new( + :cluster_name, + :namespace, + :service_account, + :role_arn, + :association_arn, + :association_id, + :tags, + :created_at, + :modified_at) + SENSITIVE = [] + include Aws::Structure + end + + # The summarized description of the association. + # + # Each summary is simplified by removing these fields compared to the + # full ` PodIdentityAssociation `: + # + # * The IAM role: `roleArn` + # + # * The timestamp that the association was created at: `createdAt` + # + # * The most recent timestamp that the association was modified at:. + # `modifiedAt` + # + # * The tags on the association: `tags` + # + # @!attribute [rw] cluster_name + # The name of the cluster that the association is in. + # @return [String] + # + # @!attribute [rw] namespace + # The name of the Kubernetes namespace inside the cluster to create + # the association in. The service account and the pods that use the + # service account must be in this namespace. + # @return [String] + # + # @!attribute [rw] service_account + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # @return [String] + # + # @!attribute [rw] association_arn + # The Amazon Resource Name (ARN) of the association. + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/PodIdentityAssociationSummary AWS API Documentation + # + class PodIdentityAssociationSummary < Struct.new( + :cluster_name, + :namespace, + :service_account, + :association_arn, + :association_id) + SENSITIVE = [] + include Aws::Structure + end + # Identifies the Key Management Service (KMS) key used to encrypt the # secrets. # @@ -3748,9 +4148,11 @@ class RemoteAccessConfig < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The specified add-on name is in use. # @return [String] # # @!attribute [rw] message + # The Amazon EKS message associated with the exception. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ResourceInUseException AWS API Documentation @@ -3779,6 +4181,7 @@ class ResourceInUseException < Struct.new( # @return [String] # # @!attribute [rw] message + # The Amazon EKS message associated with the exception. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ResourceLimitExceededException AWS API Documentation @@ -3810,6 +4213,7 @@ class ResourceLimitExceededException < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The Amazon EKS add-on name associated with the exception. # @return [String] # # @!attribute [rw] subscription_id @@ -3817,6 +4221,7 @@ class ResourceLimitExceededException < Struct.new( # @return [String] # # @!attribute [rw] message + # The Amazon EKS message associated with the exception. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ResourceNotFoundException AWS API Documentation @@ -3836,6 +4241,8 @@ class ResourceNotFoundException < Struct.new( # still propagating. Retry later. # # @!attribute [rw] message + # Required resources (such as service-linked roles) were created and + # are still propagating. Retry later. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ResourcePropagationDelayException AWS API Documentation @@ -3857,6 +4264,7 @@ class ResourcePropagationDelayException < Struct.new( # @return [String] # # @!attribute [rw] addon_name + # The Amazon EKS add-on name associated with the exception. # @return [String] # # @!attribute [rw] subscription_id @@ -3864,6 +4272,7 @@ class ResourcePropagationDelayException < Struct.new( # @return [String] # # @!attribute [rw] message + # These errors are usually caused by a server-side issue. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ServerException AWS API Documentation @@ -3881,6 +4290,7 @@ class ServerException < Struct.new( # The service is unavailable. Back off and retry the operation. # # @!attribute [rw] message + # The request has failed due to a temporary failure of the server. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ServiceUnavailableException AWS API Documentation @@ -3950,6 +4360,10 @@ class Taint < Struct.new( # choose subnets for your cluster. # # @!attribute [rw] message + # At least one of your specified cluster subnets is in an Availability + # Zone that does not support Amazon EKS. The exception output + # specifies the supported Availability Zones for your account, from + # which you can choose subnets for your cluster. # @return [String] # # @!attribute [rw] cluster_name @@ -4241,6 +4655,7 @@ class UpdateClusterVersionResponse < Struct.new( end # @!attribute [rw] id + # The ID of the subscription. # @return [String] # # @!attribute [rw] auto_renew @@ -4481,6 +4896,50 @@ class UpdateParam < Struct.new( include Aws::Structure end + # @!attribute [rw] cluster_name + # The name of the cluster that you want to update the association in. + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association to be updated. + # @return [String] + # + # @!attribute [rw] role_arn + # The new IAM role to change the + # @return [String] + # + # @!attribute [rw] client_request_token + # Unique, case-sensitive identifier that you provide to ensure the + # idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdatePodIdentityAssociationRequest AWS API Documentation + # + class UpdatePodIdentityAssociationRequest < Struct.new( + :cluster_name, + :association_id, + :role_arn, + :client_request_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] association + # The full description of the EKS Pod Identity association that was + # updated. + # @return [Types::PodIdentityAssociation] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdatePodIdentityAssociationResponse AWS API Documentation + # + class UpdatePodIdentityAssociationResponse < Struct.new( + :association) + SENSITIVE = [] + include Aws::Structure + end + # An object representing the details of an update to a taints payload. # For more information, see [Node taints on managed node groups][1]. # diff --git a/gems/aws-sdk-eksauth/CHANGELOG.md b/gems/aws-sdk-eksauth/CHANGELOG.md new file mode 100644 index 00000000000..f0a23b352b0 --- /dev/null +++ b/gems/aws-sdk-eksauth/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-eksauth`. + diff --git a/gems/aws-sdk-eksauth/LICENSE.txt b/gems/aws-sdk-eksauth/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-eksauth/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-eksauth/VERSION b/gems/aws-sdk-eksauth/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-eksauth/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-eksauth/aws-sdk-eksauth.gemspec b/gems/aws-sdk-eksauth/aws-sdk-eksauth.gemspec new file mode 100644 index 00000000000..daf2a389e83 --- /dev/null +++ b/gems/aws-sdk-eksauth/aws-sdk-eksauth.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-eksauth' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - Amazon EKS Auth' + spec.description = 'Official AWS Ruby gem for Amazon EKS Auth. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-eksauth', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-eksauth/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-eksauth/features/env.rb b/gems/aws-sdk-eksauth/features/env.rb new file mode 100644 index 00000000000..0253642800f --- /dev/null +++ b/gems/aws-sdk-eksauth/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-eksauth' + +Aws::EKSAuth::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-eksauth/features/smoke.feature b/gems/aws-sdk-eksauth/features/smoke.feature new file mode 100644 index 00000000000..67bf1c7bc86 --- /dev/null +++ b/gems/aws-sdk-eksauth/features/smoke.feature @@ -0,0 +1,11 @@ +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Feature: Smoke tests for EKSAuth + +Background: + Given I create a client in region 'us-west-2' diff --git a/gems/aws-sdk-eksauth/features/smoke_step_definitions.rb b/gems/aws-sdk-eksauth/features/smoke_step_definitions.rb new file mode 100644 index 00000000000..14ee64cb8df --- /dev/null +++ b/gems/aws-sdk-eksauth/features/smoke_step_definitions.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +# Shared Smoke Test Definitions +Given(/I create a client in region '(.*?)'/) do |region| + @regional_client = Aws::EKSAuth::Client.new(region: region) +end + +Given(/I create a client with endpoint '(.*?)'/) do |endpoint| + @regional_client = Aws::EKSAuth::Client.new(endpoint: endpoint) +end + +When(/I call the operation '(.*?)' with params:/) do |operation, params| + opts = JSON.parse(params, symbolize_names: true) + begin + @regional_client.send(operation.to_sym, opts) + @operation_raised_error = false + rescue StandardError + @operation_raised_error = true + end +end + +Then(/I expect an error was raised/) do + expect(@operation_raised_error).to be_truthy +end + +Then(/I expect an error was not raised/) do + expect(@operation_raised_error).not_to be_truthy +end diff --git a/gems/aws-sdk-eksauth/features/step_definitions.rb b/gems/aws-sdk-eksauth/features/step_definitions.rb new file mode 100644 index 00000000000..d37c11ddcaf --- /dev/null +++ b/gems/aws-sdk-eksauth/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@eksauth") do + @service = Aws::EKSAuth::Resource.new + @client = @service.client +end + +After("@eksauth") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth.rb new file mode 100644 index 00000000000..25c6a231f00 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-eksauth/types' +require_relative 'aws-sdk-eksauth/client_api' +require_relative 'aws-sdk-eksauth/plugins/endpoints.rb' +require_relative 'aws-sdk-eksauth/client' +require_relative 'aws-sdk-eksauth/errors' +require_relative 'aws-sdk-eksauth/waiters' +require_relative 'aws-sdk-eksauth/resource' +require_relative 'aws-sdk-eksauth/endpoint_parameters' +require_relative 'aws-sdk-eksauth/endpoint_provider' +require_relative 'aws-sdk-eksauth/endpoints' +require_relative 'aws-sdk-eksauth/customizations' + +# This module provides support for Amazon EKS Auth. This module is available in the +# `aws-sdk-eksauth` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# eks_auth = Aws::EKSAuth::Client.new +# resp = eks_auth.assume_role_for_pod_identity(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from Amazon EKS Auth are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::EKSAuth::Errors::ServiceError +# # rescues all Amazon EKS Auth API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::EKSAuth + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client.rb new file mode 100644 index 00000000000..a4a544d21a0 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client.rb @@ -0,0 +1,478 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/rest_json.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:eksauth) + +module Aws::EKSAuth + # An API client for EKSAuth. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::EKSAuth::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :eksauth + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::RestJson) + add_plugin(Aws::EKSAuth::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::EKSAuth::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::EKSAuth::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # The Amazon EKS Auth API and the `AssumeRoleForPodIdentity` action are + # only used by the EKS Pod Identity Agent. + # + # We recommend that applications use the Amazon Web Services SDKs to + # connect to Amazon Web Services services; if credentials from an EKS + # Pod Identity association are available in the pod, the latest versions + # of the SDKs use them automatically. + # + # @option params [required, String] :cluster_name + # The name of the cluster for the request. + # + # @option params [required, String] :token + # The token of the Kubernetes service account for the pod. + # + # @return [Types::AssumeRoleForPodIdentityResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::AssumeRoleForPodIdentityResponse#subject #subject} => Types::Subject + # * {Types::AssumeRoleForPodIdentityResponse#audience #audience} => String + # * {Types::AssumeRoleForPodIdentityResponse#pod_identity_association #pod_identity_association} => Types::PodIdentityAssociation + # * {Types::AssumeRoleForPodIdentityResponse#assumed_role_user #assumed_role_user} => Types::AssumedRoleUser + # * {Types::AssumeRoleForPodIdentityResponse#credentials #credentials} => Types::Credentials + # + # @example Request syntax with placeholder values + # + # resp = client.assume_role_for_pod_identity({ + # cluster_name: "ClusterName", # required + # token: "JwtToken", # required + # }) + # + # @example Response structure + # + # resp.subject.namespace #=> String + # resp.subject.service_account #=> String + # resp.audience #=> String + # resp.pod_identity_association.association_arn #=> String + # resp.pod_identity_association.association_id #=> String + # resp.assumed_role_user.arn #=> String + # resp.assumed_role_user.assume_role_id #=> String + # resp.credentials.session_token #=> String + # resp.credentials.secret_access_key #=> String + # resp.credentials.access_key_id #=> String + # resp.credentials.expiration #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/AssumeRoleForPodIdentity AWS API Documentation + # + # @overload assume_role_for_pod_identity(params = {}) + # @param [Hash] params ({}) + def assume_role_for_pod_identity(params = {}, options = {}) + req = build_request(:assume_role_for_pod_identity, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-eksauth' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client_api.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client_api.rb new file mode 100644 index 00000000000..5ec4aceb1d5 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/client_api.rb @@ -0,0 +1,129 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + # @api private + module ClientApi + + include Seahorse::Model + + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') + AssumeRoleForPodIdentityRequest = Shapes::StructureShape.new(name: 'AssumeRoleForPodIdentityRequest') + AssumeRoleForPodIdentityResponse = Shapes::StructureShape.new(name: 'AssumeRoleForPodIdentityResponse') + AssumedRoleUser = Shapes::StructureShape.new(name: 'AssumedRoleUser') + ClusterName = Shapes::StringShape.new(name: 'ClusterName') + Credentials = Shapes::StructureShape.new(name: 'Credentials') + ExpiredTokenException = Shapes::StructureShape.new(name: 'ExpiredTokenException') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + InvalidParameterException = Shapes::StructureShape.new(name: 'InvalidParameterException') + InvalidRequestException = Shapes::StructureShape.new(name: 'InvalidRequestException') + InvalidTokenException = Shapes::StructureShape.new(name: 'InvalidTokenException') + JwtToken = Shapes::StringShape.new(name: 'JwtToken') + PodIdentityAssociation = Shapes::StructureShape.new(name: 'PodIdentityAssociation') + ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + ServiceUnavailableException = Shapes::StructureShape.new(name: 'ServiceUnavailableException') + String = Shapes::StringShape.new(name: 'String') + Subject = Shapes::StructureShape.new(name: 'Subject') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') + + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + AccessDeniedException.struct_class = Types::AccessDeniedException + + AssumeRoleForPodIdentityRequest.add_member(:cluster_name, Shapes::ShapeRef.new(shape: ClusterName, required: true, location: "uri", location_name: "clusterName")) + AssumeRoleForPodIdentityRequest.add_member(:token, Shapes::ShapeRef.new(shape: JwtToken, required: true, location_name: "token")) + AssumeRoleForPodIdentityRequest.struct_class = Types::AssumeRoleForPodIdentityRequest + + AssumeRoleForPodIdentityResponse.add_member(:subject, Shapes::ShapeRef.new(shape: Subject, required: true, location_name: "subject")) + AssumeRoleForPodIdentityResponse.add_member(:audience, Shapes::ShapeRef.new(shape: String, required: true, location_name: "audience")) + AssumeRoleForPodIdentityResponse.add_member(:pod_identity_association, Shapes::ShapeRef.new(shape: PodIdentityAssociation, required: true, location_name: "podIdentityAssociation")) + AssumeRoleForPodIdentityResponse.add_member(:assumed_role_user, Shapes::ShapeRef.new(shape: AssumedRoleUser, required: true, location_name: "assumedRoleUser")) + AssumeRoleForPodIdentityResponse.add_member(:credentials, Shapes::ShapeRef.new(shape: Credentials, required: true, location_name: "credentials")) + AssumeRoleForPodIdentityResponse.struct_class = Types::AssumeRoleForPodIdentityResponse + + AssumedRoleUser.add_member(:arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "arn")) + AssumedRoleUser.add_member(:assume_role_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "assumeRoleId")) + AssumedRoleUser.struct_class = Types::AssumedRoleUser + + Credentials.add_member(:session_token, Shapes::ShapeRef.new(shape: String, required: true, location_name: "sessionToken")) + Credentials.add_member(:secret_access_key, Shapes::ShapeRef.new(shape: String, required: true, location_name: "secretAccessKey")) + Credentials.add_member(:access_key_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "accessKeyId")) + Credentials.add_member(:expiration, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "expiration")) + Credentials.struct_class = Types::Credentials + + ExpiredTokenException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + ExpiredTokenException.struct_class = Types::ExpiredTokenException + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + InternalServerException.struct_class = Types::InternalServerException + + InvalidParameterException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + InvalidParameterException.struct_class = Types::InvalidParameterException + + InvalidRequestException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + InvalidRequestException.struct_class = Types::InvalidRequestException + + InvalidTokenException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + InvalidTokenException.struct_class = Types::InvalidTokenException + + PodIdentityAssociation.add_member(:association_arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "associationArn")) + PodIdentityAssociation.add_member(:association_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "associationId")) + PodIdentityAssociation.struct_class = Types::PodIdentityAssociation + + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + + ServiceUnavailableException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + ServiceUnavailableException.struct_class = Types::ServiceUnavailableException + + Subject.add_member(:namespace, Shapes::ShapeRef.new(shape: String, required: true, location_name: "namespace")) + Subject.add_member(:service_account, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceAccount")) + Subject.struct_class = Types::Subject + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message")) + ThrottlingException.struct_class = Types::ThrottlingException + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2023-11-26" + + api.metadata = { + "apiVersion" => "2023-11-26", + "endpointPrefix" => "eks-auth", + "jsonVersion" => "1.1", + "protocol" => "rest-json", + "serviceFullName" => "Amazon EKS Auth", + "serviceId" => "EKS Auth", + "signatureVersion" => "v4", + "signingName" => "eks-auth", + "uid" => "eks-auth-2023-11-26", + } + + api.add_operation(:assume_role_for_pod_identity, Seahorse::Model::Operation.new.tap do |o| + o.name = "AssumeRoleForPodIdentity" + o.http_method = "POST" + o.http_request_uri = "/clusters/{clusterName}/assume-role-for-pod-identity" + o.input = Shapes::ShapeRef.new(shape: AssumeRoleForPodIdentityRequest) + o.output = Shapes::ShapeRef.new(shape: AssumeRoleForPodIdentityResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: InvalidTokenException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: ExpiredTokenException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException) + end) + end + + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/customizations.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_parameters.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_parameters.rb new file mode 100644 index 00000000000..b602ba93446 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_parameters.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_provider.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_provider.rb new file mode 100644 index 00000000000..c7d76439e9f --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoint_provider.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://eks-auth-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://eks-auth.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://eks-auth-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://eks-auth.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoints.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoints.rb new file mode 100644 index 00000000000..44c532771ee --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/endpoints.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::EKSAuth + # @api private + module Endpoints + + class AssumeRoleForPodIdentity + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::EKSAuth::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/errors.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/errors.rb new file mode 100644 index 00000000000..58e053bdf53 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/errors.rb @@ -0,0 +1,182 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + + # When EKSAuth returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::EKSAuth::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all EKSAuth errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::EKSAuth::Errors::ServiceError + # # rescues all EKSAuth API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {AccessDeniedException} + # * {ExpiredTokenException} + # * {InternalServerException} + # * {InvalidParameterException} + # * {InvalidRequestException} + # * {InvalidTokenException} + # * {ResourceNotFoundException} + # * {ServiceUnavailableException} + # * {ThrottlingException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ExpiredTokenException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::ExpiredTokenException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InvalidParameterException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::InvalidParameterException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InvalidRequestException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::InvalidRequestException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class InvalidTokenException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::InvalidTokenException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ResourceNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::ResourceNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ServiceUnavailableException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::ServiceUnavailableException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::EKSAuth::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/plugins/endpoints.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/plugins/endpoints.rb new file mode 100644 index 00000000000..fff5324ff8a --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/plugins/endpoints.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::EKSAuth + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::EKSAuth::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::EKSAuth::EndpointParameters`' + ) do |cfg| + Aws::EKSAuth::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :assume_role_for_pod_identity + Aws::EKSAuth::Endpoints::AssumeRoleForPodIdentity.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/resource.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/resource.rb new file mode 100644 index 00000000000..01dd2dc0bc0 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/types.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/types.rb new file mode 100644 index 00000000000..db27e852ed7 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/types.rb @@ -0,0 +1,310 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::EKSAuth + module Types + + # You don't have permissions to perform the requested operation. The + # IAM principal making the request must have at least one IAM + # permissions policy attached that grants the required permissions. For + # more information, see [Access management][1] in the *IAM User Guide*. + # + # + # + # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] cluster_name + # The name of the cluster for the request. + # @return [String] + # + # @!attribute [rw] token + # The token of the Kubernetes service account for the pod. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/AssumeRoleForPodIdentityRequest AWS API Documentation + # + class AssumeRoleForPodIdentityRequest < Struct.new( + :cluster_name, + :token) + SENSITIVE = [:token] + include Aws::Structure + end + + # @!attribute [rw] subject + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # @return [Types::Subject] + # + # @!attribute [rw] audience + # The identity that is allowed to use the credentials. This value is + # always `pods.eks.amazonaws.com`. + # @return [String] + # + # @!attribute [rw] pod_identity_association + # The Amazon Resource Name (ARN) and ID of the EKS Pod Identity + # association. + # @return [Types::PodIdentityAssociation] + # + # @!attribute [rw] assumed_role_user + # An object with the permanent IAM role identity and the temporary + # session name. + # + # The ARN of the IAM role that the temporary credentials authenticate + # to. + # + # The session name of the temporary session requested to STS. The + # value is a unique identifier that contains the role ID, a colon + # (`:`), and the role session name of the role that is being assumed. + # The role ID is generated by IAM when the role is created. The role + # session name part of the value follows this format: + # `eks-clustername-podname-random UUID ` + # @return [Types::AssumedRoleUser] + # + # @!attribute [rw] credentials + # The *Amazon Web Services Signature Version 4* type of temporary + # credentials. + # @return [Types::Credentials] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/AssumeRoleForPodIdentityResponse AWS API Documentation + # + class AssumeRoleForPodIdentityResponse < Struct.new( + :subject, + :audience, + :pod_identity_association, + :assumed_role_user, + :credentials) + SENSITIVE = [:credentials] + include Aws::Structure + end + + # An object with the permanent IAM role identity and the temporary + # session name. + # + # @!attribute [rw] arn + # The ARN of the IAM role that the temporary credentials authenticate + # to. + # @return [String] + # + # @!attribute [rw] assume_role_id + # The session name of the temporary session requested to STS. The + # value is a unique identifier that contains the role ID, a colon + # (`:`), and the role session name of the role that is being assumed. + # The role ID is generated by IAM when the role is created. The role + # session name part of the value follows this format: + # `eks-clustername-podname-random UUID ` + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/AssumedRoleUser AWS API Documentation + # + class AssumedRoleUser < Struct.new( + :arn, + :assume_role_id) + SENSITIVE = [] + include Aws::Structure + end + + # The *Amazon Web Services Signature Version 4* type of temporary + # credentials. + # + # @!attribute [rw] session_token + # The token that applications inside the pods must pass to any service + # API to use the temporary credentials. + # @return [String] + # + # @!attribute [rw] secret_access_key + # The secret access key that applications inside the pods use to sign + # requests. + # @return [String] + # + # @!attribute [rw] access_key_id + # The access key ID that identifies the temporary security + # credentials. + # @return [String] + # + # @!attribute [rw] expiration + # The Unix epoch timestamp in seconds when the current credentials + # expire. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/Credentials AWS API Documentation + # + class Credentials < Struct.new( + :session_token, + :secret_access_key, + :access_key_id, + :expiration) + SENSITIVE = [] + include Aws::Structure + end + + # The specified Kubernetes service account token is expired. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/ExpiredTokenException AWS API Documentation + # + class ExpiredTokenException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # These errors are usually caused by a server-side issue. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The specified parameter is invalid. Review the available parameters + # for the API request. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/InvalidParameterException AWS API Documentation + # + class InvalidParameterException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # This exception is thrown if the request contains a semantic error. The + # precise meaning will depend on the API, and will be documented in the + # error message. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/InvalidRequestException AWS API Documentation + # + class InvalidRequestException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The specified Kubernetes service account token is invalid. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/InvalidTokenException AWS API Documentation + # + class InvalidTokenException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Amazon EKS Pod Identity associations provide the ability to manage + # credentials for your applications, similar to the way that Amazon EC2 + # instance profiles provide credentials to Amazon EC2 instances. + # + # @!attribute [rw] association_arn + # The Amazon Resource Name (ARN) of the EKS Pod Identity association. + # @return [String] + # + # @!attribute [rw] association_id + # The ID of the association. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/PodIdentityAssociation AWS API Documentation + # + class PodIdentityAssociation < Struct.new( + :association_arn, + :association_id) + SENSITIVE = [] + include Aws::Structure + end + + # The specified resource could not be found. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The service is unavailable. Back off and retry the operation. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/ServiceUnavailableException AWS API Documentation + # + class ServiceUnavailableException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # An object containing the name of the Kubernetes service account inside + # the cluster to associate the IAM credentials with. + # + # @!attribute [rw] namespace + # The name of the Kubernetes namespace inside the cluster to create + # the association in. The service account and the pods that use the + # service account must be in this namespace. + # @return [String] + # + # @!attribute [rw] service_account + # The name of the Kubernetes service account inside the cluster to + # associate the IAM credentials with. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/Subject AWS API Documentation + # + class Subject < Struct.new( + :namespace, + :service_account) + SENSITIVE = [] + include Aws::Structure + end + + # The request was denied because your request rate is too high. Reduce + # the frequency of requests. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/eks-auth-2023-11-26/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/waiters.rb b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/waiters.rb new file mode 100644 index 00000000000..66b4876e825 --- /dev/null +++ b/gems/aws-sdk-eksauth/lib/aws-sdk-eksauth/waiters.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'aws-sdk-core/waiters' + +module Aws::EKSAuth + module Waiters + end +end diff --git a/gems/aws-sdk-eksauth/spec/endpoint_provider_spec.rb b/gems/aws-sdk-eksauth/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..66971435b75 --- /dev/null +++ b/gems/aws-sdk-eksauth/spec/endpoint_provider_spec.rb @@ -0,0 +1,156 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::EKSAuth + describe EndpointProvider do + subject { Aws::EKSAuth::EndpointProvider.new } + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://eks-auth.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-eksauth/spec/spec_helper.rb b/gems/aws-sdk-eksauth/spec/spec_helper.rb new file mode 100644 index 00000000000..7999d5674e8 --- /dev/null +++ b/gems/aws-sdk-eksauth/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-eksauth' diff --git a/gems/aws-sdk-elasticloadbalancingv2/CHANGELOG.md b/gems/aws-sdk-elasticloadbalancingv2/CHANGELOG.md index 2c7970d90be..f7afccb78af 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/CHANGELOG.md +++ b/gems/aws-sdk-elasticloadbalancingv2/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.95.0 (2023-11-27) +------------------ + +* Feature - This release enables both mutual authentication (mTLS), and Automatic Target Weights (ATW) for Application Load Balancers. + 1.94.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-elasticloadbalancingv2/VERSION b/gems/aws-sdk-elasticloadbalancingv2/VERSION index 8db4a57b3d0..55f6ae93382 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/VERSION +++ b/gems/aws-sdk-elasticloadbalancingv2/VERSION @@ -1 +1 @@ -1.94.0 +1.95.0 diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2.rb index e9fdda07cc6..d826d027ae7 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2.rb @@ -53,6 +53,6 @@ # @!group service module Aws::ElasticLoadBalancingV2 - GEM_VERSION = '1.94.0' + GEM_VERSION = '1.95.0' end diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client.rb index cebde073180..3eb43608756 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client.rb @@ -443,8 +443,8 @@ def add_listener_certificates(params = {}, options = {}) # Adds the specified tags to the specified Elastic Load Balancing # resource. You can tag your Application Load Balancers, Network Load - # Balancers, Gateway Load Balancers, target groups, listeners, and - # rules. + # Balancers, Gateway Load Balancers, target groups, trust stores, + # listeners, and rules. # # Each tag consists of a key and an optional value. If a resource # already has a tag with the same key, `AddTags` updates its value. @@ -499,6 +499,49 @@ def add_tags(params = {}, options = {}) req.send_request(options) end + # Adds the specified revocation file to the specified trust store. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [Array] :revocation_contents + # The revocation file to add. + # + # @return [Types::AddTrustStoreRevocationsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::AddTrustStoreRevocationsOutput#trust_store_revocations #trust_store_revocations} => Array<Types::TrustStoreRevocation> + # + # @example Request syntax with placeholder values + # + # resp = client.add_trust_store_revocations({ + # trust_store_arn: "TrustStoreArn", # required + # revocation_contents: [ + # { + # s3_bucket: "S3Bucket", + # s3_key: "S3Key", + # s3_object_version: "S3ObjectVersion", + # revocation_type: "CRL", # accepts CRL + # }, + # ], + # }) + # + # @example Response structure + # + # resp.trust_store_revocations #=> Array + # resp.trust_store_revocations[0].trust_store_arn #=> String + # resp.trust_store_revocations[0].revocation_id #=> Integer + # resp.trust_store_revocations[0].revocation_type #=> String, one of "CRL" + # resp.trust_store_revocations[0].number_of_revoked_entries #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTrustStoreRevocations AWS API Documentation + # + # @overload add_trust_store_revocations(params = {}) + # @param [Hash] params ({}) + def add_trust_store_revocations(params = {}, options = {}) + req = build_request(:add_trust_store_revocations, params) + req.send_request(options) + end + # Creates a listener for the specified Application Load Balancer, # Network Load Balancer, or Gateway Load Balancer. # @@ -581,6 +624,9 @@ def add_tags(params = {}, options = {}) # @option params [Array] :tags # The tags to assign to the listener. # + # @option params [Types::MutualAuthenticationAttributes] :mutual_authentication + # The mutual authentication configuration information. + # # @return [Types::CreateListenerOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateListenerOutput#listeners #listeners} => Array<Types::Listener> @@ -750,6 +796,11 @@ def add_tags(params = {}, options = {}) # value: "TagValue", # }, # ], + # mutual_authentication: { + # mode: "Mode", + # trust_store_arn: "TrustStoreArn", + # ignore_client_certificate_expiry: false, + # }, # }) # # @example Response structure @@ -805,6 +856,9 @@ def add_tags(params = {}, options = {}) # resp.listeners[0].default_actions[0].forward_config.target_group_stickiness_config.duration_seconds #=> Integer # resp.listeners[0].alpn_policy #=> Array # resp.listeners[0].alpn_policy[0] #=> String + # resp.listeners[0].mutual_authentication.mode #=> String + # resp.listeners[0].mutual_authentication.trust_store_arn #=> String + # resp.listeners[0].mutual_authentication.ignore_client_certificate_expiry #=> Boolean # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener AWS API Documentation # @@ -1597,6 +1651,64 @@ def create_target_group(params = {}, options = {}) req.send_request(options) end + # Creates a trust store. + # + # @option params [required, String] :name + # The name of the trust store. + # + # This name must be unique per region and cannot be changed after + # creation. + # + # @option params [required, String] :ca_certificates_bundle_s3_bucket + # The Amazon S3 bucket for the ca certificates bundle. + # + # @option params [required, String] :ca_certificates_bundle_s3_key + # The Amazon S3 path for the ca certificates bundle. + # + # @option params [String] :ca_certificates_bundle_s3_object_version + # The Amazon S3 object version for the ca certificates bundle. If + # undefined the current version is used. + # + # @option params [Array] :tags + # The tags to assign to the trust store. + # + # @return [Types::CreateTrustStoreOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateTrustStoreOutput#trust_stores #trust_stores} => Array<Types::TrustStore> + # + # @example Request syntax with placeholder values + # + # resp = client.create_trust_store({ + # name: "TrustStoreName", # required + # ca_certificates_bundle_s3_bucket: "S3Bucket", # required + # ca_certificates_bundle_s3_key: "S3Key", # required + # ca_certificates_bundle_s3_object_version: "S3ObjectVersion", + # tags: [ + # { + # key: "TagKey", # required + # value: "TagValue", + # }, + # ], + # }) + # + # @example Response structure + # + # resp.trust_stores #=> Array + # resp.trust_stores[0].name #=> String + # resp.trust_stores[0].trust_store_arn #=> String + # resp.trust_stores[0].status #=> String, one of "ACTIVE", "CREATING" + # resp.trust_stores[0].number_of_ca_certificates #=> Integer + # resp.trust_stores[0].total_revoked_entries #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTrustStore AWS API Documentation + # + # @overload create_trust_store(params = {}) + # @param [Hash] params ({}) + def create_trust_store(params = {}, options = {}) + req = build_request(:create_trust_store, params) + req.send_request(options) + end + # Deletes the specified listener. # # Alternatively, your listener is deleted when you delete the load @@ -1743,6 +1855,28 @@ def delete_target_group(params = {}, options = {}) req.send_request(options) end + # Deletes a trust store. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_trust_store({ + # trust_store_arn: "TrustStoreArn", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTrustStore AWS API Documentation + # + # @overload delete_trust_store(params = {}) + # @param [Hash] params ({}) + def delete_trust_store(params = {}, options = {}) + req = build_request(:delete_trust_store, params) + req.send_request(options) + end + # Deregisters the specified targets from the specified target group. # After the targets are deregistered, they no longer receive traffic # from the load balancer. @@ -2042,6 +2176,9 @@ def describe_listener_certificates(params = {}, options = {}) # resp.listeners[0].default_actions[0].forward_config.target_group_stickiness_config.duration_seconds #=> Integer # resp.listeners[0].alpn_policy #=> Array # resp.listeners[0].alpn_policy[0] #=> String + # resp.listeners[0].mutual_authentication.mode #=> String + # resp.listeners[0].mutual_authentication.trust_store_arn #=> String + # resp.listeners[0].mutual_authentication.ignore_client_certificate_expiry #=> Boolean # resp.next_marker #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners AWS API Documentation @@ -2820,6 +2957,9 @@ def describe_target_groups(params = {}, options = {}) # @option params [Array] :targets # The targets. # + # @option params [Array] :include + # Used to inclue anomaly detection information. + # # @return [Types::DescribeTargetHealthOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::DescribeTargetHealthOutput#target_health_descriptions #target_health_descriptions} => Array<Types::TargetHealthDescription> @@ -2902,6 +3042,7 @@ def describe_target_groups(params = {}, options = {}) # availability_zone: "ZoneName", # }, # ], + # include: ["AnomalyDetection"], # accepts AnomalyDetection, All # }) # # @example Response structure @@ -2914,6 +3055,8 @@ def describe_target_groups(params = {}, options = {}) # resp.target_health_descriptions[0].target_health.state #=> String, one of "initial", "healthy", "unhealthy", "unused", "draining", "unavailable" # resp.target_health_descriptions[0].target_health.reason #=> String, one of "Elb.RegistrationInProgress", "Elb.InitialHealthChecking", "Target.ResponseCodeMismatch", "Target.Timeout", "Target.FailedHealthChecks", "Target.NotRegistered", "Target.NotInUse", "Target.DeregistrationInProgress", "Target.InvalidState", "Target.IpUnusable", "Target.HealthCheckDisabled", "Elb.InternalError" # resp.target_health_descriptions[0].target_health.description #=> String + # resp.target_health_descriptions[0].anomaly_detection.result #=> String, one of "anomalous", "normal" + # resp.target_health_descriptions[0].anomaly_detection.mitigation_in_effect #=> String, one of "yes", "no" # # # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage): @@ -2930,6 +3073,215 @@ def describe_target_health(params = {}, options = {}) req.send_request(options) end + # Describes all resources associated with the specified trust store. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [String] :marker + # The marker for the next set of results. (You received this marker from + # a previous call.) + # + # @option params [Integer] :page_size + # The maximum number of results to return with this call. + # + # @return [Types::DescribeTrustStoreAssociationsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeTrustStoreAssociationsOutput#trust_store_associations #trust_store_associations} => Array<Types::TrustStoreAssociation> + # * {Types::DescribeTrustStoreAssociationsOutput#next_marker #next_marker} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.describe_trust_store_associations({ + # trust_store_arn: "TrustStoreArn", # required + # marker: "Marker", + # page_size: 1, + # }) + # + # @example Response structure + # + # resp.trust_store_associations #=> Array + # resp.trust_store_associations[0].resource_arn #=> String + # resp.next_marker #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreAssociations AWS API Documentation + # + # @overload describe_trust_store_associations(params = {}) + # @param [Hash] params ({}) + def describe_trust_store_associations(params = {}, options = {}) + req = build_request(:describe_trust_store_associations, params) + req.send_request(options) + end + + # Describes the revocation files in use by the specified trust store + # arn, or revocation ID. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [Array] :revocation_ids + # The revocation IDs of the revocation files you want to describe. + # + # @option params [String] :marker + # The marker for the next set of results. (You received this marker from + # a previous call.) + # + # @option params [Integer] :page_size + # The maximum number of results to return with this call. + # + # @return [Types::DescribeTrustStoreRevocationsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeTrustStoreRevocationsOutput#trust_store_revocations #trust_store_revocations} => Array<Types::DescribeTrustStoreRevocation> + # * {Types::DescribeTrustStoreRevocationsOutput#next_marker #next_marker} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.describe_trust_store_revocations({ + # trust_store_arn: "TrustStoreArn", # required + # revocation_ids: [1], + # marker: "Marker", + # page_size: 1, + # }) + # + # @example Response structure + # + # resp.trust_store_revocations #=> Array + # resp.trust_store_revocations[0].trust_store_arn #=> String + # resp.trust_store_revocations[0].revocation_id #=> Integer + # resp.trust_store_revocations[0].revocation_type #=> String, one of "CRL" + # resp.trust_store_revocations[0].number_of_revoked_entries #=> Integer + # resp.next_marker #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreRevocations AWS API Documentation + # + # @overload describe_trust_store_revocations(params = {}) + # @param [Hash] params ({}) + def describe_trust_store_revocations(params = {}, options = {}) + req = build_request(:describe_trust_store_revocations, params) + req.send_request(options) + end + + # Describes all trust stores for a given account by trust store arn’s or + # name. + # + # @option params [Array] :trust_store_arns + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [Array] :names + # The names of the trust stores. + # + # @option params [String] :marker + # The marker for the next set of results. (You received this marker from + # a previous call.) + # + # @option params [Integer] :page_size + # The maximum number of results to return with this call. + # + # @return [Types::DescribeTrustStoresOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeTrustStoresOutput#trust_stores #trust_stores} => Array<Types::TrustStore> + # * {Types::DescribeTrustStoresOutput#next_marker #next_marker} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.describe_trust_stores({ + # trust_store_arns: ["TrustStoreArn"], + # names: ["TrustStoreName"], + # marker: "Marker", + # page_size: 1, + # }) + # + # @example Response structure + # + # resp.trust_stores #=> Array + # resp.trust_stores[0].name #=> String + # resp.trust_stores[0].trust_store_arn #=> String + # resp.trust_stores[0].status #=> String, one of "ACTIVE", "CREATING" + # resp.trust_stores[0].number_of_ca_certificates #=> Integer + # resp.trust_stores[0].total_revoked_entries #=> Integer + # resp.next_marker #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStores AWS API Documentation + # + # @overload describe_trust_stores(params = {}) + # @param [Hash] params ({}) + def describe_trust_stores(params = {}, options = {}) + req = build_request(:describe_trust_stores, params) + req.send_request(options) + end + + # Retrieves the ca certificate bundle. + # + # This action returns a pre-signed S3 URI which is active for ten + # minutes. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @return [Types::GetTrustStoreCaCertificatesBundleOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetTrustStoreCaCertificatesBundleOutput#location #location} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_trust_store_ca_certificates_bundle({ + # trust_store_arn: "TrustStoreArn", # required + # }) + # + # @example Response structure + # + # resp.location #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreCaCertificatesBundle AWS API Documentation + # + # @overload get_trust_store_ca_certificates_bundle(params = {}) + # @param [Hash] params ({}) + def get_trust_store_ca_certificates_bundle(params = {}, options = {}) + req = build_request(:get_trust_store_ca_certificates_bundle, params) + req.send_request(options) + end + + # Retrieves the specified revocation file. + # + # This action returns a pre-signed S3 URI which is active for ten + # minutes. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [required, Integer] :revocation_id + # The revocation ID of the revocation file. + # + # @return [Types::GetTrustStoreRevocationContentOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetTrustStoreRevocationContentOutput#location #location} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_trust_store_revocation_content({ + # trust_store_arn: "TrustStoreArn", # required + # revocation_id: 1, # required + # }) + # + # @example Response structure + # + # resp.location #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreRevocationContent AWS API Documentation + # + # @overload get_trust_store_revocation_content(params = {}) + # @param [Hash] params ({}) + def get_trust_store_revocation_content(params = {}, options = {}) + req = build_request(:get_trust_store_revocation_content, params) + req.send_request(options) + end + # Replaces the specified properties of the specified listener. Any # properties that you do not specify remain unchanged. # @@ -3001,6 +3353,9 @@ def describe_target_health(params = {}, options = {}) # # [1]: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#alpn-policies # + # @option params [Types::MutualAuthenticationAttributes] :mutual_authentication + # The mutual authentication configuration information. + # # @return [Types::ModifyListenerOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ModifyListenerOutput#listeners #listeners} => Array<Types::Listener> @@ -3149,6 +3504,11 @@ def describe_target_health(params = {}, options = {}) # }, # ], # alpn_policy: ["AlpnPolicyValue"], + # mutual_authentication: { + # mode: "Mode", + # trust_store_arn: "TrustStoreArn", + # ignore_client_certificate_expiry: false, + # }, # }) # # @example Response structure @@ -3204,6 +3564,9 @@ def describe_target_health(params = {}, options = {}) # resp.listeners[0].default_actions[0].forward_config.target_group_stickiness_config.duration_seconds #=> Integer # resp.listeners[0].alpn_policy #=> Array # resp.listeners[0].alpn_policy[0] #=> String + # resp.listeners[0].mutual_authentication.mode #=> String + # resp.listeners[0].mutual_authentication.trust_store_arn #=> String + # resp.listeners[0].mutual_authentication.ignore_client_certificate_expiry #=> Boolean # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener AWS API Documentation # @@ -3845,6 +4208,52 @@ def modify_target_group_attributes(params = {}, options = {}) req.send_request(options) end + # Update the ca certificate bundle for a given trust store. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [required, String] :ca_certificates_bundle_s3_bucket + # The Amazon S3 bucket for the ca certificates bundle. + # + # @option params [required, String] :ca_certificates_bundle_s3_key + # The Amazon S3 path for the ca certificates bundle. + # + # @option params [String] :ca_certificates_bundle_s3_object_version + # The Amazon S3 object version for the ca certificates bundle. If + # undefined the current version is used. + # + # @return [Types::ModifyTrustStoreOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ModifyTrustStoreOutput#trust_stores #trust_stores} => Array<Types::TrustStore> + # + # @example Request syntax with placeholder values + # + # resp = client.modify_trust_store({ + # trust_store_arn: "TrustStoreArn", # required + # ca_certificates_bundle_s3_bucket: "S3Bucket", # required + # ca_certificates_bundle_s3_key: "S3Key", # required + # ca_certificates_bundle_s3_object_version: "S3ObjectVersion", + # }) + # + # @example Response structure + # + # resp.trust_stores #=> Array + # resp.trust_stores[0].name #=> String + # resp.trust_stores[0].trust_store_arn #=> String + # resp.trust_stores[0].status #=> String, one of "ACTIVE", "CREATING" + # resp.trust_stores[0].number_of_ca_certificates #=> Integer + # resp.trust_stores[0].total_revoked_entries #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTrustStore AWS API Documentation + # + # @overload modify_trust_store(params = {}) + # @param [Hash] params ({}) + def modify_trust_store(params = {}, options = {}) + req = build_request(:modify_trust_store, params) + req.send_request(options) + end + # Registers the specified targets with the specified target group. # # If the target is an EC2 instance, it must be in the `running` state @@ -4005,6 +4414,32 @@ def remove_tags(params = {}, options = {}) req.send_request(options) end + # Removes the specified revocation file from the specified trust store. + # + # @option params [required, String] :trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # + # @option params [required, Array] :revocation_ids + # The revocation IDs of the revocation files you want to remove. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.remove_trust_store_revocations({ + # trust_store_arn: "TrustStoreArn", # required + # revocation_ids: [1], # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTrustStoreRevocations AWS API Documentation + # + # @overload remove_trust_store_revocations(params = {}) + # @param [Hash] params ({}) + def remove_trust_store_revocations(params = {}, options = {}) + req = build_request(:remove_trust_store_revocations, params) + req.send_request(options) + end + # Sets the type of IP addresses used by the subnets of the specified # load balancer. # @@ -4396,7 +4831,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-elasticloadbalancingv2' - context[:gem_version] = '1.94.0' + context[:gem_version] = '1.95.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client_api.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client_api.rb index 300fa26bfa7..d301fa2c858 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client_api.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/client_api.rb @@ -22,10 +22,14 @@ module ClientApi AddListenerCertificatesOutput = Shapes::StructureShape.new(name: 'AddListenerCertificatesOutput') AddTagsInput = Shapes::StructureShape.new(name: 'AddTagsInput') AddTagsOutput = Shapes::StructureShape.new(name: 'AddTagsOutput') + AddTrustStoreRevocationsInput = Shapes::StructureShape.new(name: 'AddTrustStoreRevocationsInput') + AddTrustStoreRevocationsOutput = Shapes::StructureShape.new(name: 'AddTrustStoreRevocationsOutput') AllocationId = Shapes::StringShape.new(name: 'AllocationId') AllocationIdNotFoundException = Shapes::StructureShape.new(name: 'AllocationIdNotFoundException') AlpnPolicyName = Shapes::ListShape.new(name: 'AlpnPolicyName') AlpnPolicyValue = Shapes::StringShape.new(name: 'AlpnPolicyValue') + AnomalyDetection = Shapes::StructureShape.new(name: 'AnomalyDetection') + AnomalyResultEnum = Shapes::StringShape.new(name: 'AnomalyResultEnum') AuthenticateCognitoActionAuthenticationRequestExtraParams = Shapes::MapShape.new(name: 'AuthenticateCognitoActionAuthenticationRequestExtraParams') AuthenticateCognitoActionAuthenticationRequestParamName = Shapes::StringShape.new(name: 'AuthenticateCognitoActionAuthenticationRequestParamName') AuthenticateCognitoActionAuthenticationRequestParamValue = Shapes::StringShape.new(name: 'AuthenticateCognitoActionAuthenticationRequestParamValue') @@ -55,6 +59,7 @@ module ClientApi AvailabilityZone = Shapes::StructureShape.new(name: 'AvailabilityZone') AvailabilityZoneNotSupportedException = Shapes::StructureShape.new(name: 'AvailabilityZoneNotSupportedException') AvailabilityZones = Shapes::ListShape.new(name: 'AvailabilityZones') + CaCertificatesBundleNotFoundException = Shapes::StructureShape.new(name: 'CaCertificatesBundleNotFoundException') CanonicalHostedZoneId = Shapes::StringShape.new(name: 'CanonicalHostedZoneId') Certificate = Shapes::StructureShape.new(name: 'Certificate') CertificateArn = Shapes::StringShape.new(name: 'CertificateArn') @@ -73,6 +78,8 @@ module ClientApi CreateRuleOutput = Shapes::StructureShape.new(name: 'CreateRuleOutput') CreateTargetGroupInput = Shapes::StructureShape.new(name: 'CreateTargetGroupInput') CreateTargetGroupOutput = Shapes::StructureShape.new(name: 'CreateTargetGroupOutput') + CreateTrustStoreInput = Shapes::StructureShape.new(name: 'CreateTrustStoreInput') + CreateTrustStoreOutput = Shapes::StructureShape.new(name: 'CreateTrustStoreOutput') CreatedTime = Shapes::TimestampShape.new(name: 'CreatedTime') CustomerOwnedIpv4Pool = Shapes::StringShape.new(name: 'CustomerOwnedIpv4Pool') DNSName = Shapes::StringShape.new(name: 'DNSName') @@ -85,6 +92,8 @@ module ClientApi DeleteRuleOutput = Shapes::StructureShape.new(name: 'DeleteRuleOutput') DeleteTargetGroupInput = Shapes::StructureShape.new(name: 'DeleteTargetGroupInput') DeleteTargetGroupOutput = Shapes::StructureShape.new(name: 'DeleteTargetGroupOutput') + DeleteTrustStoreInput = Shapes::StructureShape.new(name: 'DeleteTrustStoreInput') + DeleteTrustStoreOutput = Shapes::StructureShape.new(name: 'DeleteTrustStoreOutput') DeregisterTargetsInput = Shapes::StructureShape.new(name: 'DeregisterTargetsInput') DeregisterTargetsOutput = Shapes::StructureShape.new(name: 'DeregisterTargetsOutput') DescribeAccountLimitsInput = Shapes::StructureShape.new(name: 'DescribeAccountLimitsInput') @@ -108,12 +117,22 @@ module ClientApi DescribeTargetGroupsInput = Shapes::StructureShape.new(name: 'DescribeTargetGroupsInput') DescribeTargetGroupsOutput = Shapes::StructureShape.new(name: 'DescribeTargetGroupsOutput') DescribeTargetHealthInput = Shapes::StructureShape.new(name: 'DescribeTargetHealthInput') + DescribeTargetHealthInputIncludeEnum = Shapes::StringShape.new(name: 'DescribeTargetHealthInputIncludeEnum') DescribeTargetHealthOutput = Shapes::StructureShape.new(name: 'DescribeTargetHealthOutput') + DescribeTrustStoreAssociationsInput = Shapes::StructureShape.new(name: 'DescribeTrustStoreAssociationsInput') + DescribeTrustStoreAssociationsOutput = Shapes::StructureShape.new(name: 'DescribeTrustStoreAssociationsOutput') + DescribeTrustStoreRevocation = Shapes::StructureShape.new(name: 'DescribeTrustStoreRevocation') + DescribeTrustStoreRevocationResponse = Shapes::ListShape.new(name: 'DescribeTrustStoreRevocationResponse') + DescribeTrustStoreRevocationsInput = Shapes::StructureShape.new(name: 'DescribeTrustStoreRevocationsInput') + DescribeTrustStoreRevocationsOutput = Shapes::StructureShape.new(name: 'DescribeTrustStoreRevocationsOutput') + DescribeTrustStoresInput = Shapes::StructureShape.new(name: 'DescribeTrustStoresInput') + DescribeTrustStoresOutput = Shapes::StructureShape.new(name: 'DescribeTrustStoresOutput') Description = Shapes::StringShape.new(name: 'Description') DuplicateListenerException = Shapes::StructureShape.new(name: 'DuplicateListenerException') DuplicateLoadBalancerNameException = Shapes::StructureShape.new(name: 'DuplicateLoadBalancerNameException') DuplicateTagKeysException = Shapes::StructureShape.new(name: 'DuplicateTagKeysException') DuplicateTargetGroupNameException = Shapes::StructureShape.new(name: 'DuplicateTargetGroupNameException') + DuplicateTrustStoreNameException = Shapes::StructureShape.new(name: 'DuplicateTrustStoreNameException') EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic = Shapes::StringShape.new(name: 'EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic') EnforceSecurityGroupInboundRulesOnPrivateLinkTrafficEnum = Shapes::StringShape.new(name: 'EnforceSecurityGroupInboundRulesOnPrivateLinkTrafficEnum') FixedResponseActionConfig = Shapes::StructureShape.new(name: 'FixedResponseActionConfig') @@ -121,6 +140,10 @@ module ClientApi FixedResponseActionMessage = Shapes::StringShape.new(name: 'FixedResponseActionMessage') FixedResponseActionStatusCode = Shapes::StringShape.new(name: 'FixedResponseActionStatusCode') ForwardActionConfig = Shapes::StructureShape.new(name: 'ForwardActionConfig') + GetTrustStoreCaCertificatesBundleInput = Shapes::StructureShape.new(name: 'GetTrustStoreCaCertificatesBundleInput') + GetTrustStoreCaCertificatesBundleOutput = Shapes::StructureShape.new(name: 'GetTrustStoreCaCertificatesBundleOutput') + GetTrustStoreRevocationContentInput = Shapes::StructureShape.new(name: 'GetTrustStoreRevocationContentInput') + GetTrustStoreRevocationContentOutput = Shapes::StructureShape.new(name: 'GetTrustStoreRevocationContentOutput') GrpcCode = Shapes::StringShape.new(name: 'GrpcCode') HealthCheckEnabled = Shapes::BooleanShape.new(name: 'HealthCheckEnabled') HealthCheckIntervalSeconds = Shapes::IntegerShape.new(name: 'HealthCheckIntervalSeconds') @@ -134,9 +157,12 @@ module ClientApi HttpHeaderConditionName = Shapes::StringShape.new(name: 'HttpHeaderConditionName') HttpRequestMethodConditionConfig = Shapes::StructureShape.new(name: 'HttpRequestMethodConditionConfig') IPv6Address = Shapes::StringShape.new(name: 'IPv6Address') + IgnoreClientCertificateExpiry = Shapes::BooleanShape.new(name: 'IgnoreClientCertificateExpiry') IncompatibleProtocolsException = Shapes::StructureShape.new(name: 'IncompatibleProtocolsException') + InvalidCaCertificatesBundleException = Shapes::StructureShape.new(name: 'InvalidCaCertificatesBundleException') InvalidConfigurationRequestException = Shapes::StructureShape.new(name: 'InvalidConfigurationRequestException') InvalidLoadBalancerActionException = Shapes::StructureShape.new(name: 'InvalidLoadBalancerActionException') + InvalidRevocationContentException = Shapes::StructureShape.new(name: 'InvalidRevocationContentException') InvalidSchemeException = Shapes::StructureShape.new(name: 'InvalidSchemeException') InvalidSecurityGroupException = Shapes::StructureShape.new(name: 'InvalidSecurityGroupException') InvalidSubnetException = Shapes::StructureShape.new(name: 'InvalidSubnetException') @@ -146,6 +172,7 @@ module ClientApi IsDefault = Shapes::BooleanShape.new(name: 'IsDefault') Limit = Shapes::StructureShape.new(name: 'Limit') Limits = Shapes::ListShape.new(name: 'Limits') + ListOfDescribeTargetHealthIncludeOptions = Shapes::ListShape.new(name: 'ListOfDescribeTargetHealthIncludeOptions') ListOfString = Shapes::ListShape.new(name: 'ListOfString') Listener = Shapes::StructureShape.new(name: 'Listener') ListenerArn = Shapes::StringShape.new(name: 'ListenerArn') @@ -169,9 +196,12 @@ module ClientApi LoadBalancerStateEnum = Shapes::StringShape.new(name: 'LoadBalancerStateEnum') LoadBalancerTypeEnum = Shapes::StringShape.new(name: 'LoadBalancerTypeEnum') LoadBalancers = Shapes::ListShape.new(name: 'LoadBalancers') + Location = Shapes::StringShape.new(name: 'Location') Marker = Shapes::StringShape.new(name: 'Marker') Matcher = Shapes::StructureShape.new(name: 'Matcher') Max = Shapes::StringShape.new(name: 'Max') + MitigationInEffectEnum = Shapes::StringShape.new(name: 'MitigationInEffectEnum') + Mode = Shapes::StringShape.new(name: 'Mode') ModifyListenerInput = Shapes::StructureShape.new(name: 'ModifyListenerInput') ModifyListenerOutput = Shapes::StructureShape.new(name: 'ModifyListenerOutput') ModifyLoadBalancerAttributesInput = Shapes::StructureShape.new(name: 'ModifyLoadBalancerAttributesInput') @@ -182,7 +212,12 @@ module ClientApi ModifyTargetGroupAttributesOutput = Shapes::StructureShape.new(name: 'ModifyTargetGroupAttributesOutput') ModifyTargetGroupInput = Shapes::StructureShape.new(name: 'ModifyTargetGroupInput') ModifyTargetGroupOutput = Shapes::StructureShape.new(name: 'ModifyTargetGroupOutput') + ModifyTrustStoreInput = Shapes::StructureShape.new(name: 'ModifyTrustStoreInput') + ModifyTrustStoreOutput = Shapes::StructureShape.new(name: 'ModifyTrustStoreOutput') + MutualAuthenticationAttributes = Shapes::StructureShape.new(name: 'MutualAuthenticationAttributes') Name = Shapes::StringShape.new(name: 'Name') + NumberOfCaCertificates = Shapes::IntegerShape.new(name: 'NumberOfCaCertificates') + NumberOfRevokedEntries = Shapes::IntegerShape.new(name: 'NumberOfRevokedEntries') OperationNotPermittedException = Shapes::StructureShape.new(name: 'OperationNotPermittedException') OutpostId = Shapes::StringShape.new(name: 'OutpostId') PageSize = Shapes::IntegerShape.new(name: 'PageSize') @@ -209,9 +244,18 @@ module ClientApi RemoveListenerCertificatesOutput = Shapes::StructureShape.new(name: 'RemoveListenerCertificatesOutput') RemoveTagsInput = Shapes::StructureShape.new(name: 'RemoveTagsInput') RemoveTagsOutput = Shapes::StructureShape.new(name: 'RemoveTagsOutput') + RemoveTrustStoreRevocationsInput = Shapes::StructureShape.new(name: 'RemoveTrustStoreRevocationsInput') + RemoveTrustStoreRevocationsOutput = Shapes::StructureShape.new(name: 'RemoveTrustStoreRevocationsOutput') ResourceArn = Shapes::StringShape.new(name: 'ResourceArn') ResourceArns = Shapes::ListShape.new(name: 'ResourceArns') ResourceInUseException = Shapes::StructureShape.new(name: 'ResourceInUseException') + RevocationContent = Shapes::StructureShape.new(name: 'RevocationContent') + RevocationContentNotFoundException = Shapes::StructureShape.new(name: 'RevocationContentNotFoundException') + RevocationContents = Shapes::ListShape.new(name: 'RevocationContents') + RevocationId = Shapes::IntegerShape.new(name: 'RevocationId') + RevocationIdNotFoundException = Shapes::StructureShape.new(name: 'RevocationIdNotFoundException') + RevocationIds = Shapes::ListShape.new(name: 'RevocationIds') + RevocationType = Shapes::StringShape.new(name: 'RevocationType') Rule = Shapes::StructureShape.new(name: 'Rule') RuleArn = Shapes::StringShape.new(name: 'RuleArn') RuleArns = Shapes::ListShape.new(name: 'RuleArns') @@ -222,6 +266,9 @@ module ClientApi RulePriorityList = Shapes::ListShape.new(name: 'RulePriorityList') RulePriorityPair = Shapes::StructureShape.new(name: 'RulePriorityPair') Rules = Shapes::ListShape.new(name: 'Rules') + S3Bucket = Shapes::StringShape.new(name: 'S3Bucket') + S3Key = Shapes::StringShape.new(name: 'S3Key') + S3ObjectVersion = Shapes::StringShape.new(name: 'S3ObjectVersion') SSLPolicyNotFoundException = Shapes::StructureShape.new(name: 'SSLPolicyNotFoundException') SecurityGroupId = Shapes::StringShape.new(name: 'SecurityGroupId') SecurityGroups = Shapes::ListShape.new(name: 'SecurityGroups') @@ -292,7 +339,25 @@ module ClientApi TooManyTagsException = Shapes::StructureShape.new(name: 'TooManyTagsException') TooManyTargetGroupsException = Shapes::StructureShape.new(name: 'TooManyTargetGroupsException') TooManyTargetsException = Shapes::StructureShape.new(name: 'TooManyTargetsException') + TooManyTrustStoreRevocationEntriesException = Shapes::StructureShape.new(name: 'TooManyTrustStoreRevocationEntriesException') + TooManyTrustStoresException = Shapes::StructureShape.new(name: 'TooManyTrustStoresException') TooManyUniqueTargetGroupsPerLoadBalancerException = Shapes::StructureShape.new(name: 'TooManyUniqueTargetGroupsPerLoadBalancerException') + TotalRevokedEntries = Shapes::IntegerShape.new(name: 'TotalRevokedEntries') + TrustStore = Shapes::StructureShape.new(name: 'TrustStore') + TrustStoreArn = Shapes::StringShape.new(name: 'TrustStoreArn') + TrustStoreArns = Shapes::ListShape.new(name: 'TrustStoreArns') + TrustStoreAssociation = Shapes::StructureShape.new(name: 'TrustStoreAssociation') + TrustStoreAssociationResourceArn = Shapes::StringShape.new(name: 'TrustStoreAssociationResourceArn') + TrustStoreAssociations = Shapes::ListShape.new(name: 'TrustStoreAssociations') + TrustStoreInUseException = Shapes::StructureShape.new(name: 'TrustStoreInUseException') + TrustStoreName = Shapes::StringShape.new(name: 'TrustStoreName') + TrustStoreNames = Shapes::ListShape.new(name: 'TrustStoreNames') + TrustStoreNotFoundException = Shapes::StructureShape.new(name: 'TrustStoreNotFoundException') + TrustStoreNotReadyException = Shapes::StructureShape.new(name: 'TrustStoreNotReadyException') + TrustStoreRevocation = Shapes::StructureShape.new(name: 'TrustStoreRevocation') + TrustStoreRevocations = Shapes::ListShape.new(name: 'TrustStoreRevocations') + TrustStoreStatus = Shapes::StringShape.new(name: 'TrustStoreStatus') + TrustStores = Shapes::ListShape.new(name: 'TrustStores') UnsupportedProtocolException = Shapes::StructureShape.new(name: 'UnsupportedProtocolException') VpcId = Shapes::StringShape.new(name: 'VpcId') ZoneName = Shapes::StringShape.new(name: 'ZoneName') @@ -324,10 +389,21 @@ module ClientApi AddTagsOutput.struct_class = Types::AddTagsOutput + AddTrustStoreRevocationsInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + AddTrustStoreRevocationsInput.add_member(:revocation_contents, Shapes::ShapeRef.new(shape: RevocationContents, location_name: "RevocationContents")) + AddTrustStoreRevocationsInput.struct_class = Types::AddTrustStoreRevocationsInput + + AddTrustStoreRevocationsOutput.add_member(:trust_store_revocations, Shapes::ShapeRef.new(shape: TrustStoreRevocations, location_name: "TrustStoreRevocations")) + AddTrustStoreRevocationsOutput.struct_class = Types::AddTrustStoreRevocationsOutput + AllocationIdNotFoundException.struct_class = Types::AllocationIdNotFoundException AlpnPolicyName.member = Shapes::ShapeRef.new(shape: AlpnPolicyValue) + AnomalyDetection.add_member(:result, Shapes::ShapeRef.new(shape: AnomalyResultEnum, location_name: "Result")) + AnomalyDetection.add_member(:mitigation_in_effect, Shapes::ShapeRef.new(shape: MitigationInEffectEnum, location_name: "MitigationInEffect")) + AnomalyDetection.struct_class = Types::AnomalyDetection + AuthenticateCognitoActionAuthenticationRequestExtraParams.key = Shapes::ShapeRef.new(shape: AuthenticateCognitoActionAuthenticationRequestParamName) AuthenticateCognitoActionAuthenticationRequestExtraParams.value = Shapes::ShapeRef.new(shape: AuthenticateCognitoActionAuthenticationRequestParamValue) @@ -368,6 +444,8 @@ module ClientApi AvailabilityZones.member = Shapes::ShapeRef.new(shape: AvailabilityZone) + CaCertificatesBundleNotFoundException.struct_class = Types::CaCertificatesBundleNotFoundException + Certificate.add_member(:certificate_arn, Shapes::ShapeRef.new(shape: CertificateArn, location_name: "CertificateArn")) Certificate.add_member(:is_default, Shapes::ShapeRef.new(shape: Default, location_name: "IsDefault")) Certificate.struct_class = Types::Certificate @@ -390,6 +468,7 @@ module ClientApi CreateListenerInput.add_member(:default_actions, Shapes::ShapeRef.new(shape: Actions, required: true, location_name: "DefaultActions")) CreateListenerInput.add_member(:alpn_policy, Shapes::ShapeRef.new(shape: AlpnPolicyName, location_name: "AlpnPolicy")) CreateListenerInput.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateListenerInput.add_member(:mutual_authentication, Shapes::ShapeRef.new(shape: MutualAuthenticationAttributes, location_name: "MutualAuthentication")) CreateListenerInput.struct_class = Types::CreateListenerInput CreateListenerOutput.add_member(:listeners, Shapes::ShapeRef.new(shape: Listeners, location_name: "Listeners")) @@ -441,6 +520,16 @@ module ClientApi CreateTargetGroupOutput.add_member(:target_groups, Shapes::ShapeRef.new(shape: TargetGroups, location_name: "TargetGroups")) CreateTargetGroupOutput.struct_class = Types::CreateTargetGroupOutput + CreateTrustStoreInput.add_member(:name, Shapes::ShapeRef.new(shape: TrustStoreName, required: true, location_name: "Name")) + CreateTrustStoreInput.add_member(:ca_certificates_bundle_s3_bucket, Shapes::ShapeRef.new(shape: S3Bucket, required: true, location_name: "CaCertificatesBundleS3Bucket")) + CreateTrustStoreInput.add_member(:ca_certificates_bundle_s3_key, Shapes::ShapeRef.new(shape: S3Key, required: true, location_name: "CaCertificatesBundleS3Key")) + CreateTrustStoreInput.add_member(:ca_certificates_bundle_s3_object_version, Shapes::ShapeRef.new(shape: S3ObjectVersion, location_name: "CaCertificatesBundleS3ObjectVersion")) + CreateTrustStoreInput.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateTrustStoreInput.struct_class = Types::CreateTrustStoreInput + + CreateTrustStoreOutput.add_member(:trust_stores, Shapes::ShapeRef.new(shape: TrustStores, location_name: "TrustStores")) + CreateTrustStoreOutput.struct_class = Types::CreateTrustStoreOutput + DeleteListenerInput.add_member(:listener_arn, Shapes::ShapeRef.new(shape: ListenerArn, required: true, location_name: "ListenerArn")) DeleteListenerInput.struct_class = Types::DeleteListenerInput @@ -461,6 +550,11 @@ module ClientApi DeleteTargetGroupOutput.struct_class = Types::DeleteTargetGroupOutput + DeleteTrustStoreInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + DeleteTrustStoreInput.struct_class = Types::DeleteTrustStoreInput + + DeleteTrustStoreOutput.struct_class = Types::DeleteTrustStoreOutput + DeregisterTargetsInput.add_member(:target_group_arn, Shapes::ShapeRef.new(shape: TargetGroupArn, required: true, location_name: "TargetGroupArn")) DeregisterTargetsInput.add_member(:targets, Shapes::ShapeRef.new(shape: TargetDescriptions, required: true, location_name: "Targets")) DeregisterTargetsInput.struct_class = Types::DeregisterTargetsInput @@ -555,11 +649,49 @@ module ClientApi DescribeTargetHealthInput.add_member(:target_group_arn, Shapes::ShapeRef.new(shape: TargetGroupArn, required: true, location_name: "TargetGroupArn")) DescribeTargetHealthInput.add_member(:targets, Shapes::ShapeRef.new(shape: TargetDescriptions, location_name: "Targets")) + DescribeTargetHealthInput.add_member(:include, Shapes::ShapeRef.new(shape: ListOfDescribeTargetHealthIncludeOptions, location_name: "Include")) DescribeTargetHealthInput.struct_class = Types::DescribeTargetHealthInput DescribeTargetHealthOutput.add_member(:target_health_descriptions, Shapes::ShapeRef.new(shape: TargetHealthDescriptions, location_name: "TargetHealthDescriptions")) DescribeTargetHealthOutput.struct_class = Types::DescribeTargetHealthOutput + DescribeTrustStoreAssociationsInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + DescribeTrustStoreAssociationsInput.add_member(:marker, Shapes::ShapeRef.new(shape: Marker, location_name: "Marker")) + DescribeTrustStoreAssociationsInput.add_member(:page_size, Shapes::ShapeRef.new(shape: PageSize, location_name: "PageSize")) + DescribeTrustStoreAssociationsInput.struct_class = Types::DescribeTrustStoreAssociationsInput + + DescribeTrustStoreAssociationsOutput.add_member(:trust_store_associations, Shapes::ShapeRef.new(shape: TrustStoreAssociations, location_name: "TrustStoreAssociations")) + DescribeTrustStoreAssociationsOutput.add_member(:next_marker, Shapes::ShapeRef.new(shape: Marker, location_name: "NextMarker")) + DescribeTrustStoreAssociationsOutput.struct_class = Types::DescribeTrustStoreAssociationsOutput + + DescribeTrustStoreRevocation.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, location_name: "TrustStoreArn")) + DescribeTrustStoreRevocation.add_member(:revocation_id, Shapes::ShapeRef.new(shape: RevocationId, location_name: "RevocationId")) + DescribeTrustStoreRevocation.add_member(:revocation_type, Shapes::ShapeRef.new(shape: RevocationType, location_name: "RevocationType")) + DescribeTrustStoreRevocation.add_member(:number_of_revoked_entries, Shapes::ShapeRef.new(shape: NumberOfRevokedEntries, location_name: "NumberOfRevokedEntries")) + DescribeTrustStoreRevocation.struct_class = Types::DescribeTrustStoreRevocation + + DescribeTrustStoreRevocationResponse.member = Shapes::ShapeRef.new(shape: DescribeTrustStoreRevocation) + + DescribeTrustStoreRevocationsInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + DescribeTrustStoreRevocationsInput.add_member(:revocation_ids, Shapes::ShapeRef.new(shape: RevocationIds, location_name: "RevocationIds")) + DescribeTrustStoreRevocationsInput.add_member(:marker, Shapes::ShapeRef.new(shape: Marker, location_name: "Marker")) + DescribeTrustStoreRevocationsInput.add_member(:page_size, Shapes::ShapeRef.new(shape: PageSize, location_name: "PageSize")) + DescribeTrustStoreRevocationsInput.struct_class = Types::DescribeTrustStoreRevocationsInput + + DescribeTrustStoreRevocationsOutput.add_member(:trust_store_revocations, Shapes::ShapeRef.new(shape: DescribeTrustStoreRevocationResponse, location_name: "TrustStoreRevocations")) + DescribeTrustStoreRevocationsOutput.add_member(:next_marker, Shapes::ShapeRef.new(shape: Marker, location_name: "NextMarker")) + DescribeTrustStoreRevocationsOutput.struct_class = Types::DescribeTrustStoreRevocationsOutput + + DescribeTrustStoresInput.add_member(:trust_store_arns, Shapes::ShapeRef.new(shape: TrustStoreArns, location_name: "TrustStoreArns")) + DescribeTrustStoresInput.add_member(:names, Shapes::ShapeRef.new(shape: TrustStoreNames, location_name: "Names")) + DescribeTrustStoresInput.add_member(:marker, Shapes::ShapeRef.new(shape: Marker, location_name: "Marker")) + DescribeTrustStoresInput.add_member(:page_size, Shapes::ShapeRef.new(shape: PageSize, location_name: "PageSize")) + DescribeTrustStoresInput.struct_class = Types::DescribeTrustStoresInput + + DescribeTrustStoresOutput.add_member(:trust_stores, Shapes::ShapeRef.new(shape: TrustStores, location_name: "TrustStores")) + DescribeTrustStoresOutput.add_member(:next_marker, Shapes::ShapeRef.new(shape: Marker, location_name: "NextMarker")) + DescribeTrustStoresOutput.struct_class = Types::DescribeTrustStoresOutput + DuplicateListenerException.struct_class = Types::DuplicateListenerException DuplicateLoadBalancerNameException.struct_class = Types::DuplicateLoadBalancerNameException @@ -568,6 +700,8 @@ module ClientApi DuplicateTargetGroupNameException.struct_class = Types::DuplicateTargetGroupNameException + DuplicateTrustStoreNameException.struct_class = Types::DuplicateTrustStoreNameException + FixedResponseActionConfig.add_member(:message_body, Shapes::ShapeRef.new(shape: FixedResponseActionMessage, location_name: "MessageBody")) FixedResponseActionConfig.add_member(:status_code, Shapes::ShapeRef.new(shape: FixedResponseActionStatusCode, required: true, location_name: "StatusCode")) FixedResponseActionConfig.add_member(:content_type, Shapes::ShapeRef.new(shape: FixedResponseActionContentType, location_name: "ContentType")) @@ -577,6 +711,19 @@ module ClientApi ForwardActionConfig.add_member(:target_group_stickiness_config, Shapes::ShapeRef.new(shape: TargetGroupStickinessConfig, location_name: "TargetGroupStickinessConfig")) ForwardActionConfig.struct_class = Types::ForwardActionConfig + GetTrustStoreCaCertificatesBundleInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + GetTrustStoreCaCertificatesBundleInput.struct_class = Types::GetTrustStoreCaCertificatesBundleInput + + GetTrustStoreCaCertificatesBundleOutput.add_member(:location, Shapes::ShapeRef.new(shape: Location, location_name: "Location")) + GetTrustStoreCaCertificatesBundleOutput.struct_class = Types::GetTrustStoreCaCertificatesBundleOutput + + GetTrustStoreRevocationContentInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + GetTrustStoreRevocationContentInput.add_member(:revocation_id, Shapes::ShapeRef.new(shape: RevocationId, required: true, location_name: "RevocationId")) + GetTrustStoreRevocationContentInput.struct_class = Types::GetTrustStoreRevocationContentInput + + GetTrustStoreRevocationContentOutput.add_member(:location, Shapes::ShapeRef.new(shape: Location, location_name: "Location")) + GetTrustStoreRevocationContentOutput.struct_class = Types::GetTrustStoreRevocationContentOutput + HealthUnavailableException.struct_class = Types::HealthUnavailableException HostHeaderConditionConfig.add_member(:values, Shapes::ShapeRef.new(shape: ListOfString, location_name: "Values")) @@ -591,10 +738,14 @@ module ClientApi IncompatibleProtocolsException.struct_class = Types::IncompatibleProtocolsException + InvalidCaCertificatesBundleException.struct_class = Types::InvalidCaCertificatesBundleException + InvalidConfigurationRequestException.struct_class = Types::InvalidConfigurationRequestException InvalidLoadBalancerActionException.struct_class = Types::InvalidLoadBalancerActionException + InvalidRevocationContentException.struct_class = Types::InvalidRevocationContentException + InvalidSchemeException.struct_class = Types::InvalidSchemeException InvalidSecurityGroupException.struct_class = Types::InvalidSecurityGroupException @@ -609,6 +760,8 @@ module ClientApi Limits.member = Shapes::ShapeRef.new(shape: Limit) + ListOfDescribeTargetHealthIncludeOptions.member = Shapes::ShapeRef.new(shape: DescribeTargetHealthInputIncludeEnum) + ListOfString.member = Shapes::ShapeRef.new(shape: StringValue) Listener.add_member(:listener_arn, Shapes::ShapeRef.new(shape: ListenerArn, location_name: "ListenerArn")) @@ -619,6 +772,7 @@ module ClientApi Listener.add_member(:ssl_policy, Shapes::ShapeRef.new(shape: SslPolicyName, location_name: "SslPolicy")) Listener.add_member(:default_actions, Shapes::ShapeRef.new(shape: Actions, location_name: "DefaultActions")) Listener.add_member(:alpn_policy, Shapes::ShapeRef.new(shape: AlpnPolicyName, location_name: "AlpnPolicy")) + Listener.add_member(:mutual_authentication, Shapes::ShapeRef.new(shape: MutualAuthenticationAttributes, location_name: "MutualAuthentication")) Listener.struct_class = Types::Listener ListenerArns.member = Shapes::ShapeRef.new(shape: ListenerArn) @@ -680,6 +834,7 @@ module ClientApi ModifyListenerInput.add_member(:certificates, Shapes::ShapeRef.new(shape: CertificateList, location_name: "Certificates")) ModifyListenerInput.add_member(:default_actions, Shapes::ShapeRef.new(shape: Actions, location_name: "DefaultActions")) ModifyListenerInput.add_member(:alpn_policy, Shapes::ShapeRef.new(shape: AlpnPolicyName, location_name: "AlpnPolicy")) + ModifyListenerInput.add_member(:mutual_authentication, Shapes::ShapeRef.new(shape: MutualAuthenticationAttributes, location_name: "MutualAuthentication")) ModifyListenerInput.struct_class = Types::ModifyListenerInput ModifyListenerOutput.add_member(:listeners, Shapes::ShapeRef.new(shape: Listeners, location_name: "Listeners")) @@ -722,6 +877,20 @@ module ClientApi ModifyTargetGroupOutput.add_member(:target_groups, Shapes::ShapeRef.new(shape: TargetGroups, location_name: "TargetGroups")) ModifyTargetGroupOutput.struct_class = Types::ModifyTargetGroupOutput + ModifyTrustStoreInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + ModifyTrustStoreInput.add_member(:ca_certificates_bundle_s3_bucket, Shapes::ShapeRef.new(shape: S3Bucket, required: true, location_name: "CaCertificatesBundleS3Bucket")) + ModifyTrustStoreInput.add_member(:ca_certificates_bundle_s3_key, Shapes::ShapeRef.new(shape: S3Key, required: true, location_name: "CaCertificatesBundleS3Key")) + ModifyTrustStoreInput.add_member(:ca_certificates_bundle_s3_object_version, Shapes::ShapeRef.new(shape: S3ObjectVersion, location_name: "CaCertificatesBundleS3ObjectVersion")) + ModifyTrustStoreInput.struct_class = Types::ModifyTrustStoreInput + + ModifyTrustStoreOutput.add_member(:trust_stores, Shapes::ShapeRef.new(shape: TrustStores, location_name: "TrustStores")) + ModifyTrustStoreOutput.struct_class = Types::ModifyTrustStoreOutput + + MutualAuthenticationAttributes.add_member(:mode, Shapes::ShapeRef.new(shape: Mode, location_name: "Mode")) + MutualAuthenticationAttributes.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, location_name: "TrustStoreArn")) + MutualAuthenticationAttributes.add_member(:ignore_client_certificate_expiry, Shapes::ShapeRef.new(shape: IgnoreClientCertificateExpiry, location_name: "IgnoreClientCertificateExpiry")) + MutualAuthenticationAttributes.struct_class = Types::MutualAuthenticationAttributes + OperationNotPermittedException.struct_class = Types::OperationNotPermittedException PathPatternConditionConfig.add_member(:values, Shapes::ShapeRef.new(shape: ListOfString, location_name: "Values")) @@ -764,10 +933,30 @@ module ClientApi RemoveTagsOutput.struct_class = Types::RemoveTagsOutput + RemoveTrustStoreRevocationsInput.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, required: true, location_name: "TrustStoreArn")) + RemoveTrustStoreRevocationsInput.add_member(:revocation_ids, Shapes::ShapeRef.new(shape: RevocationIds, required: true, location_name: "RevocationIds")) + RemoveTrustStoreRevocationsInput.struct_class = Types::RemoveTrustStoreRevocationsInput + + RemoveTrustStoreRevocationsOutput.struct_class = Types::RemoveTrustStoreRevocationsOutput + ResourceArns.member = Shapes::ShapeRef.new(shape: ResourceArn) ResourceInUseException.struct_class = Types::ResourceInUseException + RevocationContent.add_member(:s3_bucket, Shapes::ShapeRef.new(shape: S3Bucket, location_name: "S3Bucket")) + RevocationContent.add_member(:s3_key, Shapes::ShapeRef.new(shape: S3Key, location_name: "S3Key")) + RevocationContent.add_member(:s3_object_version, Shapes::ShapeRef.new(shape: S3ObjectVersion, location_name: "S3ObjectVersion")) + RevocationContent.add_member(:revocation_type, Shapes::ShapeRef.new(shape: RevocationType, location_name: "RevocationType")) + RevocationContent.struct_class = Types::RevocationContent + + RevocationContentNotFoundException.struct_class = Types::RevocationContentNotFoundException + + RevocationContents.member = Shapes::ShapeRef.new(shape: RevocationContent) + + RevocationIdNotFoundException.struct_class = Types::RevocationIdNotFoundException + + RevocationIds.member = Shapes::ShapeRef.new(shape: RevocationId) + Rule.add_member(:rule_arn, Shapes::ShapeRef.new(shape: RuleArn, location_name: "RuleArn")) Rule.add_member(:priority, Shapes::ShapeRef.new(shape: String, location_name: "Priority")) Rule.add_member(:conditions, Shapes::ShapeRef.new(shape: RuleConditionList, location_name: "Conditions")) @@ -937,6 +1126,7 @@ module ClientApi TargetHealthDescription.add_member(:target, Shapes::ShapeRef.new(shape: TargetDescription, location_name: "Target")) TargetHealthDescription.add_member(:health_check_port, Shapes::ShapeRef.new(shape: HealthCheckPort, location_name: "HealthCheckPort")) TargetHealthDescription.add_member(:target_health, Shapes::ShapeRef.new(shape: TargetHealth, location_name: "TargetHealth")) + TargetHealthDescription.add_member(:anomaly_detection, Shapes::ShapeRef.new(shape: AnomalyDetection, location_name: "AnomalyDetection")) TargetHealthDescription.struct_class = Types::TargetHealthDescription TargetHealthDescriptions.member = Shapes::ShapeRef.new(shape: TargetHealthDescription) @@ -959,8 +1149,44 @@ module ClientApi TooManyTargetsException.struct_class = Types::TooManyTargetsException + TooManyTrustStoreRevocationEntriesException.struct_class = Types::TooManyTrustStoreRevocationEntriesException + + TooManyTrustStoresException.struct_class = Types::TooManyTrustStoresException + TooManyUniqueTargetGroupsPerLoadBalancerException.struct_class = Types::TooManyUniqueTargetGroupsPerLoadBalancerException + TrustStore.add_member(:name, Shapes::ShapeRef.new(shape: TrustStoreName, location_name: "Name")) + TrustStore.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, location_name: "TrustStoreArn")) + TrustStore.add_member(:status, Shapes::ShapeRef.new(shape: TrustStoreStatus, location_name: "Status")) + TrustStore.add_member(:number_of_ca_certificates, Shapes::ShapeRef.new(shape: NumberOfCaCertificates, location_name: "NumberOfCaCertificates")) + TrustStore.add_member(:total_revoked_entries, Shapes::ShapeRef.new(shape: TotalRevokedEntries, location_name: "TotalRevokedEntries")) + TrustStore.struct_class = Types::TrustStore + + TrustStoreArns.member = Shapes::ShapeRef.new(shape: TrustStoreArn) + + TrustStoreAssociation.add_member(:resource_arn, Shapes::ShapeRef.new(shape: TrustStoreAssociationResourceArn, location_name: "ResourceArn")) + TrustStoreAssociation.struct_class = Types::TrustStoreAssociation + + TrustStoreAssociations.member = Shapes::ShapeRef.new(shape: TrustStoreAssociation) + + TrustStoreInUseException.struct_class = Types::TrustStoreInUseException + + TrustStoreNames.member = Shapes::ShapeRef.new(shape: TrustStoreName) + + TrustStoreNotFoundException.struct_class = Types::TrustStoreNotFoundException + + TrustStoreNotReadyException.struct_class = Types::TrustStoreNotReadyException + + TrustStoreRevocation.add_member(:trust_store_arn, Shapes::ShapeRef.new(shape: TrustStoreArn, location_name: "TrustStoreArn")) + TrustStoreRevocation.add_member(:revocation_id, Shapes::ShapeRef.new(shape: RevocationId, location_name: "RevocationId")) + TrustStoreRevocation.add_member(:revocation_type, Shapes::ShapeRef.new(shape: RevocationType, location_name: "RevocationType")) + TrustStoreRevocation.add_member(:number_of_revoked_entries, Shapes::ShapeRef.new(shape: NumberOfRevokedEntries, location_name: "NumberOfRevokedEntries")) + TrustStoreRevocation.struct_class = Types::TrustStoreRevocation + + TrustStoreRevocations.member = Shapes::ShapeRef.new(shape: TrustStoreRevocation) + + TrustStores.member = Shapes::ShapeRef.new(shape: TrustStore) + UnsupportedProtocolException.struct_class = Types::UnsupportedProtocolException @@ -1004,6 +1230,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TargetGroupNotFoundException) o.errors << Shapes::ShapeRef.new(shape: ListenerNotFoundException) o.errors << Shapes::ShapeRef.new(shape: RuleNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + end) + + api.add_operation(:add_trust_store_revocations, Seahorse::Model::Operation.new.tap do |o| + o.name = "AddTrustStoreRevocations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: AddTrustStoreRevocationsInput) + o.output = Shapes::ShapeRef.new(shape: AddTrustStoreRevocationsOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRevocationContentException) + o.errors << Shapes::ShapeRef.new(shape: TooManyTrustStoreRevocationEntriesException) + o.errors << Shapes::ShapeRef.new(shape: RevocationContentNotFoundException) end) api.add_operation(:create_listener, Seahorse::Model::Operation.new.tap do |o| @@ -1030,6 +1269,8 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TooManyUniqueTargetGroupsPerLoadBalancerException) o.errors << Shapes::ShapeRef.new(shape: ALPNPolicyNotSupportedException) o.errors << Shapes::ShapeRef.new(shape: TooManyTagsException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotReadyException) end) api.add_operation(:create_load_balancer, Seahorse::Model::Operation.new.tap do |o| @@ -1088,6 +1329,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TooManyTagsException) end) + api.add_operation(:create_trust_store, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateTrustStore" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CreateTrustStoreInput) + o.output = Shapes::ShapeRef.new(shape: CreateTrustStoreOutput) + o.errors << Shapes::ShapeRef.new(shape: DuplicateTrustStoreNameException) + o.errors << Shapes::ShapeRef.new(shape: TooManyTrustStoresException) + o.errors << Shapes::ShapeRef.new(shape: InvalidCaCertificatesBundleException) + o.errors << Shapes::ShapeRef.new(shape: CaCertificatesBundleNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TooManyTagsException) + o.errors << Shapes::ShapeRef.new(shape: DuplicateTagKeysException) + end) + api.add_operation(:delete_listener, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteListener" o.http_method = "POST" @@ -1128,6 +1383,16 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException) end) + api.add_operation(:delete_trust_store, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteTrustStore" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DeleteTrustStoreInput) + o.output = Shapes::ShapeRef.new(shape: DeleteTrustStoreOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreInUseException) + end) + api.add_operation(:deregister_targets, Seahorse::Model::Operation.new.tap do |o| o.name = "DeregisterTargets" o.http_method = "POST" @@ -1224,6 +1489,7 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TargetGroupNotFoundException) o.errors << Shapes::ShapeRef.new(shape: ListenerNotFoundException) o.errors << Shapes::ShapeRef.new(shape: RuleNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) end) api.add_operation(:describe_target_group_attributes, Seahorse::Model::Operation.new.tap do |o| @@ -1261,6 +1527,71 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: HealthUnavailableException) end) + api.add_operation(:describe_trust_store_associations, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeTrustStoreAssociations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DescribeTrustStoreAssociationsInput) + o.output = Shapes::ShapeRef.new(shape: DescribeTrustStoreAssociationsOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o[:pager] = Aws::Pager.new( + limit_key: "page_size", + tokens: { + "next_marker" => "marker" + } + ) + end) + + api.add_operation(:describe_trust_store_revocations, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeTrustStoreRevocations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DescribeTrustStoreRevocationsInput) + o.output = Shapes::ShapeRef.new(shape: DescribeTrustStoreRevocationsOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: RevocationIdNotFoundException) + o[:pager] = Aws::Pager.new( + limit_key: "page_size", + tokens: { + "next_marker" => "marker" + } + ) + end) + + api.add_operation(:describe_trust_stores, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeTrustStores" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DescribeTrustStoresInput) + o.output = Shapes::ShapeRef.new(shape: DescribeTrustStoresOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o[:pager] = Aws::Pager.new( + limit_key: "page_size", + tokens: { + "next_marker" => "marker" + } + ) + end) + + api.add_operation(:get_trust_store_ca_certificates_bundle, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetTrustStoreCaCertificatesBundle" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetTrustStoreCaCertificatesBundleInput) + o.output = Shapes::ShapeRef.new(shape: GetTrustStoreCaCertificatesBundleOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + end) + + api.add_operation(:get_trust_store_revocation_content, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetTrustStoreRevocationContent" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetTrustStoreRevocationContentInput) + o.output = Shapes::ShapeRef.new(shape: GetTrustStoreRevocationContentOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: RevocationIdNotFoundException) + end) + api.add_operation(:modify_listener, Seahorse::Model::Operation.new.tap do |o| o.name = "ModifyListener" o.http_method = "POST" @@ -1284,6 +1615,8 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InvalidLoadBalancerActionException) o.errors << Shapes::ShapeRef.new(shape: TooManyUniqueTargetGroupsPerLoadBalancerException) o.errors << Shapes::ShapeRef.new(shape: ALPNPolicyNotSupportedException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotReadyException) end) api.add_operation(:modify_load_balancer_attributes, Seahorse::Model::Operation.new.tap do |o| @@ -1335,6 +1668,17 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InvalidConfigurationRequestException) end) + api.add_operation(:modify_trust_store, Seahorse::Model::Operation.new.tap do |o| + o.name = "ModifyTrustStore" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: ModifyTrustStoreInput) + o.output = Shapes::ShapeRef.new(shape: ModifyTrustStoreOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidCaCertificatesBundleException) + o.errors << Shapes::ShapeRef.new(shape: CaCertificatesBundleNotFoundException) + end) + api.add_operation(:register_targets, Seahorse::Model::Operation.new.tap do |o| o.name = "RegisterTargets" o.http_method = "POST" @@ -1368,6 +1712,17 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ListenerNotFoundException) o.errors << Shapes::ShapeRef.new(shape: RuleNotFoundException) o.errors << Shapes::ShapeRef.new(shape: TooManyTagsException) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + end) + + api.add_operation(:remove_trust_store_revocations, Seahorse::Model::Operation.new.tap do |o| + o.name = "RemoveTrustStoreRevocations" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: RemoveTrustStoreRevocationsInput) + o.output = Shapes::ShapeRef.new(shape: RemoveTrustStoreRevocationsOutput) + o.errors << Shapes::ShapeRef.new(shape: TrustStoreNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: RevocationIdNotFoundException) end) api.add_operation(:set_ip_address_type, Seahorse::Model::Operation.new.tap do |o| diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoint_provider.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoint_provider.rb index 63b8e2411f3..c6edff84a5c 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoint_provider.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoint_provider.rb @@ -32,8 +32,8 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) - if Aws::Endpoints::Matchers.string_equals?("aws-us-gov", Aws::Endpoints::Matchers.attr(partition_result, "name")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-us-gov") return Aws::Endpoints::Endpoint.new(url: "https://elasticloadbalancing.#{region}.amazonaws.com", headers: {}, properties: {}) end return Aws::Endpoints::Endpoint.new(url: "https://elasticloadbalancing-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoints.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoints.rb index 18b8868ff84..c5691881a6f 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoints.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/endpoints.rb @@ -40,6 +40,20 @@ def self.build(context) end end + class AddTrustStoreRevocations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateListener def self.build(context) unless context.config.regional_endpoint @@ -96,6 +110,20 @@ def self.build(context) end end + class CreateTrustStore + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteListener def self.build(context) unless context.config.regional_endpoint @@ -152,6 +180,20 @@ def self.build(context) end end + class DeleteTrustStore + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeregisterTargets def self.build(context) unless context.config.regional_endpoint @@ -320,6 +362,76 @@ def self.build(context) end end + class DescribeTrustStoreAssociations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DescribeTrustStoreRevocations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DescribeTrustStores + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetTrustStoreCaCertificatesBundle + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetTrustStoreRevocationContent + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ModifyListener def self.build(context) unless context.config.regional_endpoint @@ -390,6 +502,20 @@ def self.build(context) end end + class ModifyTrustStore + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class RegisterTargets def self.build(context) unless context.config.regional_endpoint @@ -432,6 +558,20 @@ def self.build(context) end end + class RemoveTrustStoreRevocations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::ElasticLoadBalancingV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class SetIpAddressType def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/errors.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/errors.rb index a92c92f3420..3a403f1f17f 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/errors.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/errors.rb @@ -30,15 +30,19 @@ module Aws::ElasticLoadBalancingV2 # * {ALPNPolicyNotSupportedException} # * {AllocationIdNotFoundException} # * {AvailabilityZoneNotSupportedException} + # * {CaCertificatesBundleNotFoundException} # * {CertificateNotFoundException} # * {DuplicateListenerException} # * {DuplicateLoadBalancerNameException} # * {DuplicateTagKeysException} # * {DuplicateTargetGroupNameException} + # * {DuplicateTrustStoreNameException} # * {HealthUnavailableException} # * {IncompatibleProtocolsException} + # * {InvalidCaCertificatesBundleException} # * {InvalidConfigurationRequestException} # * {InvalidLoadBalancerActionException} + # * {InvalidRevocationContentException} # * {InvalidSchemeException} # * {InvalidSecurityGroupException} # * {InvalidSubnetException} @@ -48,6 +52,8 @@ module Aws::ElasticLoadBalancingV2 # * {OperationNotPermittedException} # * {PriorityInUseException} # * {ResourceInUseException} + # * {RevocationContentNotFoundException} + # * {RevocationIdNotFoundException} # * {RuleNotFoundException} # * {SSLPolicyNotFoundException} # * {SubnetNotFoundException} @@ -62,7 +68,12 @@ module Aws::ElasticLoadBalancingV2 # * {TooManyTagsException} # * {TooManyTargetGroupsException} # * {TooManyTargetsException} + # * {TooManyTrustStoreRevocationEntriesException} + # * {TooManyTrustStoresException} # * {TooManyUniqueTargetGroupsPerLoadBalancerException} + # * {TrustStoreInUseException} + # * {TrustStoreNotFoundException} + # * {TrustStoreNotReadyException} # * {UnsupportedProtocolException} # # Additionally, error classes are dynamically generated for service errors based on the error code @@ -101,6 +112,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class CaCertificatesBundleNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::CaCertificatesBundleNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class CertificateNotFoundException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -151,6 +172,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class DuplicateTrustStoreNameException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::DuplicateTrustStoreNameException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class HealthUnavailableException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -171,6 +202,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class InvalidCaCertificatesBundleException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::InvalidCaCertificatesBundleException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class InvalidConfigurationRequestException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -191,6 +232,16 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class InvalidRevocationContentException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::InvalidRevocationContentException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class InvalidSchemeException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -281,6 +332,26 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class RevocationContentNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::RevocationContentNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + + class RevocationIdNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::RevocationIdNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class RuleNotFoundException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -421,6 +492,26 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class TooManyTrustStoreRevocationEntriesException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::TooManyTrustStoreRevocationEntriesException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + + class TooManyTrustStoresException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::TooManyTrustStoresException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class TooManyUniqueTargetGroupsPerLoadBalancerException < ServiceError # @param [Seahorse::Client::RequestContext] context @@ -431,6 +522,36 @@ def initialize(context, message, data = Aws::EmptyStructure.new) end end + class TrustStoreInUseException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::TrustStoreInUseException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + + class TrustStoreNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::TrustStoreNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + + class TrustStoreNotReadyException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::ElasticLoadBalancingV2::Types::TrustStoreNotReadyException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + end + class UnsupportedProtocolException < ServiceError # @param [Seahorse::Client::RequestContext] context diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/plugins/endpoints.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/plugins/endpoints.rb index 2fd245db347..f32105335f7 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/plugins/endpoints.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/plugins/endpoints.rb @@ -60,6 +60,8 @@ def parameters_for_operation(context) Aws::ElasticLoadBalancingV2::Endpoints::AddListenerCertificates.build(context) when :add_tags Aws::ElasticLoadBalancingV2::Endpoints::AddTags.build(context) + when :add_trust_store_revocations + Aws::ElasticLoadBalancingV2::Endpoints::AddTrustStoreRevocations.build(context) when :create_listener Aws::ElasticLoadBalancingV2::Endpoints::CreateListener.build(context) when :create_load_balancer @@ -68,6 +70,8 @@ def parameters_for_operation(context) Aws::ElasticLoadBalancingV2::Endpoints::CreateRule.build(context) when :create_target_group Aws::ElasticLoadBalancingV2::Endpoints::CreateTargetGroup.build(context) + when :create_trust_store + Aws::ElasticLoadBalancingV2::Endpoints::CreateTrustStore.build(context) when :delete_listener Aws::ElasticLoadBalancingV2::Endpoints::DeleteListener.build(context) when :delete_load_balancer @@ -76,6 +80,8 @@ def parameters_for_operation(context) Aws::ElasticLoadBalancingV2::Endpoints::DeleteRule.build(context) when :delete_target_group Aws::ElasticLoadBalancingV2::Endpoints::DeleteTargetGroup.build(context) + when :delete_trust_store + Aws::ElasticLoadBalancingV2::Endpoints::DeleteTrustStore.build(context) when :deregister_targets Aws::ElasticLoadBalancingV2::Endpoints::DeregisterTargets.build(context) when :describe_account_limits @@ -100,6 +106,16 @@ def parameters_for_operation(context) Aws::ElasticLoadBalancingV2::Endpoints::DescribeTargetGroups.build(context) when :describe_target_health Aws::ElasticLoadBalancingV2::Endpoints::DescribeTargetHealth.build(context) + when :describe_trust_store_associations + Aws::ElasticLoadBalancingV2::Endpoints::DescribeTrustStoreAssociations.build(context) + when :describe_trust_store_revocations + Aws::ElasticLoadBalancingV2::Endpoints::DescribeTrustStoreRevocations.build(context) + when :describe_trust_stores + Aws::ElasticLoadBalancingV2::Endpoints::DescribeTrustStores.build(context) + when :get_trust_store_ca_certificates_bundle + Aws::ElasticLoadBalancingV2::Endpoints::GetTrustStoreCaCertificatesBundle.build(context) + when :get_trust_store_revocation_content + Aws::ElasticLoadBalancingV2::Endpoints::GetTrustStoreRevocationContent.build(context) when :modify_listener Aws::ElasticLoadBalancingV2::Endpoints::ModifyListener.build(context) when :modify_load_balancer_attributes @@ -110,12 +126,16 @@ def parameters_for_operation(context) Aws::ElasticLoadBalancingV2::Endpoints::ModifyTargetGroup.build(context) when :modify_target_group_attributes Aws::ElasticLoadBalancingV2::Endpoints::ModifyTargetGroupAttributes.build(context) + when :modify_trust_store + Aws::ElasticLoadBalancingV2::Endpoints::ModifyTrustStore.build(context) when :register_targets Aws::ElasticLoadBalancingV2::Endpoints::RegisterTargets.build(context) when :remove_listener_certificates Aws::ElasticLoadBalancingV2::Endpoints::RemoveListenerCertificates.build(context) when :remove_tags Aws::ElasticLoadBalancingV2::Endpoints::RemoveTags.build(context) + when :remove_trust_store_revocations + Aws::ElasticLoadBalancingV2::Endpoints::RemoveTrustStoreRevocations.build(context) when :set_ip_address_type Aws::ElasticLoadBalancingV2::Endpoints::SetIpAddressType.build(context) when :set_rule_priorities diff --git a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/types.rb b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/types.rb index d9e68881a61..39553bd025f 100644 --- a/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/types.rb +++ b/gems/aws-sdk-elasticloadbalancingv2/lib/aws-sdk-elasticloadbalancingv2/types.rb @@ -138,12 +138,60 @@ class AddTagsInput < Struct.new( # class AddTagsOutput < Aws::EmptyStructure; end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_contents + # The revocation file to add. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTrustStoreRevocationsInput AWS API Documentation + # + class AddTrustStoreRevocationsInput < Struct.new( + :trust_store_arn, + :revocation_contents) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_revocations + # Information about the revocation file added to the trust store. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTrustStoreRevocationsOutput AWS API Documentation + # + class AddTrustStoreRevocationsOutput < Struct.new( + :trust_store_revocations) + SENSITIVE = [] + include Aws::Structure + end + # The specified allocation ID does not exist. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AllocationIdNotFoundException AWS API Documentation # class AllocationIdNotFoundException < Aws::EmptyStructure; end + # Information about anomaly detection and mitigation. + # + # @!attribute [rw] result + # The latest anomaly detection result. + # @return [String] + # + # @!attribute [rw] mitigation_in_effect + # Indicates whether anomaly mitigation is in progress. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AnomalyDetection AWS API Documentation + # + class AnomalyDetection < Struct.new( + :result, + :mitigation_in_effect) + SENSITIVE = [] + include Aws::Structure + end + # Request parameters to use when integrating with Amazon Cognito to # authenticate users. # @@ -343,6 +391,12 @@ class AvailabilityZone < Struct.new( # class AvailabilityZoneNotSupportedException < Aws::EmptyStructure; end + # The specified ca certificate bundle does not exist. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CaCertificatesBundleNotFoundException AWS API Documentation + # + class CaCertificatesBundleNotFoundException < Aws::EmptyStructure; end + # Information about an SSL server certificate. # # @!attribute [rw] certificate_arn @@ -459,6 +513,10 @@ class Cipher < Struct.new( # The tags to assign to the listener. # @return [Array] # + # @!attribute [rw] mutual_authentication + # The mutual authentication configuration information. + # @return [Types::MutualAuthenticationAttributes] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListenerInput AWS API Documentation # class CreateListenerInput < Struct.new( @@ -469,7 +527,8 @@ class CreateListenerInput < Struct.new( :certificates, :default_actions, :alpn_policy, - :tags) + :tags, + :mutual_authentication) SENSITIVE = [] include Aws::Structure end @@ -842,6 +901,54 @@ class CreateTargetGroupOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] name + # The name of the trust store. + # + # This name must be unique per region and cannot be changed after + # creation. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_bucket + # The Amazon S3 bucket for the ca certificates bundle. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_key + # The Amazon S3 path for the ca certificates bundle. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_object_version + # The Amazon S3 object version for the ca certificates bundle. If + # undefined the current version is used. + # @return [String] + # + # @!attribute [rw] tags + # The tags to assign to the trust store. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTrustStoreInput AWS API Documentation + # + class CreateTrustStoreInput < Struct.new( + :name, + :ca_certificates_bundle_s3_bucket, + :ca_certificates_bundle_s3_key, + :ca_certificates_bundle_s3_object_version, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_stores + # Information about the trust store created. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTrustStoreOutput AWS API Documentation + # + class CreateTrustStoreOutput < Struct.new( + :trust_stores) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] listener_arn # The Amazon Resource Name (ARN) of the listener. # @return [String] @@ -906,6 +1013,22 @@ class DeleteTargetGroupInput < Struct.new( # class DeleteTargetGroupOutput < Aws::EmptyStructure; end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTrustStoreInput AWS API Documentation + # + class DeleteTrustStoreInput < Struct.new( + :trust_store_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTrustStoreOutput AWS API Documentation + # + class DeleteTrustStoreOutput < Aws::EmptyStructure; end + # @!attribute [rw] target_group_arn # The Amazon Resource Name (ARN) of the target group. # @return [String] @@ -1324,11 +1447,16 @@ class DescribeTargetGroupsOutput < Struct.new( # The targets. # @return [Array] # + # @!attribute [rw] include + # Used to inclue anomaly detection information. + # @return [Array] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealthInput AWS API Documentation # class DescribeTargetHealthInput < Struct.new( :target_group_arn, - :targets) + :targets, + :include) SENSITIVE = [] include Aws::Structure end @@ -1345,6 +1473,168 @@ class DescribeTargetHealthOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] marker + # The marker for the next set of results. (You received this marker + # from a previous call.) + # @return [String] + # + # @!attribute [rw] page_size + # The maximum number of results to return with this call. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreAssociationsInput AWS API Documentation + # + class DescribeTrustStoreAssociationsInput < Struct.new( + :trust_store_arn, + :marker, + :page_size) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_associations + # Information about the resources the trust store is associated to. + # @return [Array] + # + # @!attribute [rw] next_marker + # If there are additional results, this is the marker for the next set + # of results. Otherwise, this is null. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreAssociationsOutput AWS API Documentation + # + class DescribeTrustStoreAssociationsOutput < Struct.new( + :trust_store_associations, + :next_marker) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the revocations used by a trust store. + # + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_id + # The revocation ID of a revocation file in use. + # @return [Integer] + # + # @!attribute [rw] revocation_type + # The type of revocation file. + # @return [String] + # + # @!attribute [rw] number_of_revoked_entries + # The number of revoked certificates. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreRevocation AWS API Documentation + # + class DescribeTrustStoreRevocation < Struct.new( + :trust_store_arn, + :revocation_id, + :revocation_type, + :number_of_revoked_entries) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_ids + # The revocation IDs of the revocation files you want to describe. + # @return [Array] + # + # @!attribute [rw] marker + # The marker for the next set of results. (You received this marker + # from a previous call.) + # @return [String] + # + # @!attribute [rw] page_size + # The maximum number of results to return with this call. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreRevocationsInput AWS API Documentation + # + class DescribeTrustStoreRevocationsInput < Struct.new( + :trust_store_arn, + :revocation_ids, + :marker, + :page_size) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_revocations + # Information about the revocation file in the trust store. + # @return [Array] + # + # @!attribute [rw] next_marker + # If there are additional results, this is the marker for the next set + # of results. Otherwise, this is null. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoreRevocationsOutput AWS API Documentation + # + class DescribeTrustStoreRevocationsOutput < Struct.new( + :trust_store_revocations, + :next_marker) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_arns + # The Amazon Resource Name (ARN) of the trust store. + # @return [Array] + # + # @!attribute [rw] names + # The names of the trust stores. + # @return [Array] + # + # @!attribute [rw] marker + # The marker for the next set of results. (You received this marker + # from a previous call.) + # @return [String] + # + # @!attribute [rw] page_size + # The maximum number of results to return with this call. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoresInput AWS API Documentation + # + class DescribeTrustStoresInput < Struct.new( + :trust_store_arns, + :names, + :marker, + :page_size) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_stores + # Information about the trust stores. + # @return [Array] + # + # @!attribute [rw] next_marker + # If there are additional results, this is the marker for the next set + # of results. Otherwise, this is null. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTrustStoresOutput AWS API Documentation + # + class DescribeTrustStoresOutput < Struct.new( + :trust_stores, + :next_marker) + SENSITIVE = [] + include Aws::Structure + end + # A listener with the specified port already exists. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DuplicateListenerException AWS API Documentation @@ -1369,6 +1659,12 @@ class DuplicateTagKeysException < Aws::EmptyStructure; end # class DuplicateTargetGroupNameException < Aws::EmptyStructure; end + # A trust store with the specified name already exists. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DuplicateTrustStoreNameException AWS API Documentation + # + class DuplicateTrustStoreNameException < Aws::EmptyStructure; end + # Information about an action that returns a custom HTTP response. # # @!attribute [rw] message_body @@ -1416,6 +1712,59 @@ class ForwardActionConfig < Struct.new( include Aws::Structure end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreCaCertificatesBundleInput AWS API Documentation + # + class GetTrustStoreCaCertificatesBundleInput < Struct.new( + :trust_store_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] location + # The ca certificate bundles Amazon S3 URI. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreCaCertificatesBundleOutput AWS API Documentation + # + class GetTrustStoreCaCertificatesBundleOutput < Struct.new( + :location) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_id + # The revocation ID of the revocation file. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreRevocationContentInput AWS API Documentation + # + class GetTrustStoreRevocationContentInput < Struct.new( + :trust_store_arn, + :revocation_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] location + # The revocation files Amazon S3 URI. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/GetTrustStoreRevocationContentOutput AWS API Documentation + # + class GetTrustStoreRevocationContentOutput < Struct.new( + :location) + SENSITIVE = [] + include Aws::Structure + end + # The health of the specified targets could not be retrieved due to an # internal error. # @@ -1517,6 +1866,13 @@ class HttpRequestMethodConditionConfig < Struct.new( # class IncompatibleProtocolsException < Aws::EmptyStructure; end + # The specified ca certificate bundle is in an invalid format, or + # corrupt. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/InvalidCaCertificatesBundleException AWS API Documentation + # + class InvalidCaCertificatesBundleException < Aws::EmptyStructure; end + # The requested configuration is not valid. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/InvalidConfigurationRequestException AWS API Documentation @@ -1529,6 +1885,13 @@ class InvalidConfigurationRequestException < Aws::EmptyStructure; end # class InvalidLoadBalancerActionException < Aws::EmptyStructure; end + # The provided revocation file is an invalid format, or uses an + # incorrect algorithm. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/InvalidRevocationContentException AWS API Documentation + # + class InvalidRevocationContentException < Aws::EmptyStructure; end + # The requested scheme is not valid. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/InvalidSchemeException AWS API Documentation @@ -1660,6 +2023,10 @@ class Limit < Struct.new( # Negotiation (ALPN) policy. # @return [Array] # + # @!attribute [rw] mutual_authentication + # The mutual authentication configuration information. + # @return [Types::MutualAuthenticationAttributes] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Listener AWS API Documentation # class Listener < Struct.new( @@ -1670,7 +2037,8 @@ class Listener < Struct.new( :certificates, :ssl_policy, :default_actions, - :alpn_policy) + :alpn_policy, + :mutual_authentication) SENSITIVE = [] include Aws::Structure end @@ -1852,6 +2220,19 @@ class LoadBalancerAddress < Struct.new( # seconds. The valid range is 1-4000 seconds. The default is 60 # seconds. # + # * `connection_logs.s3.enabled` - Indicates whether connection logs + # are enabled. The value is `true` or `false`. The default is + # `false`. + # + # * `connection_logs.s3.bucket` - The name of the S3 bucket for the + # connection logs. This attribute is required if connection logs are + # enabled. The bucket must exist in the same region as the load + # balancer and have a bucket policy that grants Elastic Load + # Balancing permissions to write to the bucket. + # + # * `connection_logs.s3.prefix` - The prefix for the location in the + # S3 bucket for the connection logs. + # # * `routing.http.desync_mitigation_mode` - Determines how the load # balancer handles requests that might pose a security risk to your # application. The possible values are `monitor`, `defensive`, and @@ -2068,6 +2449,10 @@ class Matcher < Struct.new( # [1]: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#alpn-policies # @return [Array] # + # @!attribute [rw] mutual_authentication + # The mutual authentication configuration information. + # @return [Types::MutualAuthenticationAttributes] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListenerInput AWS API Documentation # class ModifyListenerInput < Struct.new( @@ -2077,7 +2462,8 @@ class ModifyListenerInput < Struct.new( :ssl_policy, :certificates, :default_actions, - :alpn_policy) + :alpn_policy, + :mutual_authentication) SENSITIVE = [] include Aws::Structure end @@ -2279,6 +2665,71 @@ class ModifyTargetGroupOutput < Struct.new( include Aws::Structure end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_bucket + # The Amazon S3 bucket for the ca certificates bundle. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_key + # The Amazon S3 path for the ca certificates bundle. + # @return [String] + # + # @!attribute [rw] ca_certificates_bundle_s3_object_version + # The Amazon S3 object version for the ca certificates bundle. If + # undefined the current version is used. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTrustStoreInput AWS API Documentation + # + class ModifyTrustStoreInput < Struct.new( + :trust_store_arn, + :ca_certificates_bundle_s3_bucket, + :ca_certificates_bundle_s3_key, + :ca_certificates_bundle_s3_object_version) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] trust_stores + # Information about the modified trust store. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTrustStoreOutput AWS API Documentation + # + class ModifyTrustStoreOutput < Struct.new( + :trust_stores) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the mutual authentication attributes of a listener. + # + # @!attribute [rw] mode + # The client certificate handling method. Options are `off`, + # `passthrough` or `verify`. The default value is `off`. + # @return [String] + # + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] ignore_client_certificate_expiry + # Indicates whether expired client certificates are ignored. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/MutualAuthenticationAttributes AWS API Documentation + # + class MutualAuthenticationAttributes < Struct.new( + :mode, + :trust_store_arn, + :ignore_client_certificate_expiry) + SENSITIVE = [] + include Aws::Structure + end + # This operation is not allowed. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/OperationNotPermittedException AWS API Documentation @@ -2495,12 +2946,74 @@ class RemoveTagsInput < Struct.new( # class RemoveTagsOutput < Aws::EmptyStructure; end + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_ids + # The revocation IDs of the revocation files you want to remove. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTrustStoreRevocationsInput AWS API Documentation + # + class RemoveTrustStoreRevocationsInput < Struct.new( + :trust_store_arn, + :revocation_ids) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTrustStoreRevocationsOutput AWS API Documentation + # + class RemoveTrustStoreRevocationsOutput < Aws::EmptyStructure; end + # A specified resource is in use. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ResourceInUseException AWS API Documentation # class ResourceInUseException < Aws::EmptyStructure; end + # Information about a revocation file. + # + # @!attribute [rw] s3_bucket + # The Amazon S3 bucket for the revocation file. + # @return [String] + # + # @!attribute [rw] s3_key + # The Amazon S3 path for the revocation file. + # @return [String] + # + # @!attribute [rw] s3_object_version + # The Amazon S3 object version of the revocation file. + # @return [String] + # + # @!attribute [rw] revocation_type + # The type of revocation file. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RevocationContent AWS API Documentation + # + class RevocationContent < Struct.new( + :s3_bucket, + :s3_key, + :s3_object_version, + :revocation_type) + SENSITIVE = [] + include Aws::Structure + end + + # The specified revocation file does not exist. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RevocationContentNotFoundException AWS API Documentation + # + class RevocationContentNotFoundException < Aws::EmptyStructure; end + + # The specified revocation ID does not exist. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RevocationIdNotFoundException AWS API Documentation + # + class RevocationIdNotFoundException < Aws::EmptyStructure; end + # Information about a rule. # # @!attribute [rw] rule_arn @@ -3252,8 +3765,14 @@ class TargetGroupAssociationLimitException < Aws::EmptyStructure; end # # * `load_balancing.algorithm.type` - The load balancing algorithm # determines how the load balancer selects targets when routing - # requests. The value is `round_robin` or - # `least_outstanding_requests`. The default is `round_robin`. + # requests. The value is `round_robin`, + # `least_outstanding_requests`, or `weighted_random`. The default is + # `round_robin`. + # + # * `load_balancing.algorithm.anomaly_mitigation` - Only available + # when `load_balancing.algorithm.type` is `weighted_random`. + # Indicates whether anomaly mitigation is enabled. The value is `on` + # or `off`. The default is `off`. # # * `slow_start.duration_seconds` - The time period, in seconds, # during which a newly registered target receives an increasing @@ -3500,12 +4019,21 @@ class TargetHealth < Struct.new( # The health information for the target. # @return [Types::TargetHealth] # + # @!attribute [rw] anomaly_detection + # The anomaly detection result for the target. + # + # If no anomalies were detected, the result is `normal`. + # + # If anomalies were detected, the result is `anomalous`. + # @return [Types::AnomalyDetection] + # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetHealthDescription AWS API Documentation # class TargetHealthDescription < Struct.new( :target, :health_check_port, - :target_health) + :target_health, + :anomaly_detection) SENSITIVE = [] include Aws::Structure end @@ -3550,7 +4078,7 @@ class TooManyRegistrationsForTargetIdException < Aws::EmptyStructure; end # class TooManyRulesException < Aws::EmptyStructure; end - # You've reached the limit on the number of tags per load balancer. + # You've reached the limit on the number of tags for this resource. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TooManyTagsException AWS API Documentation # @@ -3569,6 +4097,19 @@ class TooManyTargetGroupsException < Aws::EmptyStructure; end # class TooManyTargetsException < Aws::EmptyStructure; end + # The specified trust store has too many revocation entries. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TooManyTrustStoreRevocationEntriesException AWS API Documentation + # + class TooManyTrustStoreRevocationEntriesException < Aws::EmptyStructure; end + + # You've reached the limit on the number of trust stores for your + # Amazon Web Services account. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TooManyTrustStoresException AWS API Documentation + # + class TooManyTrustStoresException < Aws::EmptyStructure; end + # You've reached the limit on the number of unique target groups per # load balancer across all listeners. If a target group is used by # multiple actions for a load balancer, it is counted as only one use. @@ -3577,6 +4118,101 @@ class TooManyTargetsException < Aws::EmptyStructure; end # class TooManyUniqueTargetGroupsPerLoadBalancerException < Aws::EmptyStructure; end + # Information about a trust store. + # + # @!attribute [rw] name + # The name of the trust store. + # @return [String] + # + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] status + # The current status of the trust store. + # @return [String] + # + # @!attribute [rw] number_of_ca_certificates + # The number of ca certificates in the trust store. + # @return [Integer] + # + # @!attribute [rw] total_revoked_entries + # The number of revoked certificates in the trust store. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStore AWS API Documentation + # + class TrustStore < Struct.new( + :name, + :trust_store_arn, + :status, + :number_of_ca_certificates, + :total_revoked_entries) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the resources a trust store is associated with. + # + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStoreAssociation AWS API Documentation + # + class TrustStoreAssociation < Struct.new( + :resource_arn) + SENSITIVE = [] + include Aws::Structure + end + + # The specified trust store is currently in use. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStoreInUseException AWS API Documentation + # + class TrustStoreInUseException < Aws::EmptyStructure; end + + # The specified trust store does not exist. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStoreNotFoundException AWS API Documentation + # + class TrustStoreNotFoundException < Aws::EmptyStructure; end + + # The specified trust store is not active. + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStoreNotReadyException AWS API Documentation + # + class TrustStoreNotReadyException < Aws::EmptyStructure; end + + # Information about a revocation file in use by a trust store. + # + # @!attribute [rw] trust_store_arn + # The Amazon Resource Name (ARN) of the trust store. + # @return [String] + # + # @!attribute [rw] revocation_id + # The revocation ID of the revocation file. + # @return [Integer] + # + # @!attribute [rw] revocation_type + # The type of revocation file. + # @return [String] + # + # @!attribute [rw] number_of_revoked_entries + # The number of revoked certificates. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TrustStoreRevocation AWS API Documentation + # + class TrustStoreRevocation < Struct.new( + :trust_store_arn, + :revocation_id, + :revocation_type, + :number_of_revoked_entries) + SENSITIVE = [] + include Aws::Structure + end + # The specified protocol is not supported. # # @see http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/UnsupportedProtocolException AWS API Documentation diff --git a/gems/aws-sdk-freetier/CHANGELOG.md b/gems/aws-sdk-freetier/CHANGELOG.md new file mode 100644 index 00000000000..3bce5d0d82a --- /dev/null +++ b/gems/aws-sdk-freetier/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-freetier`. + diff --git a/gems/aws-sdk-freetier/LICENSE.txt b/gems/aws-sdk-freetier/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-freetier/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-freetier/VERSION b/gems/aws-sdk-freetier/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-freetier/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-freetier/aws-sdk-freetier.gemspec b/gems/aws-sdk-freetier/aws-sdk-freetier.gemspec new file mode 100644 index 00000000000..425459a2b2b --- /dev/null +++ b/gems/aws-sdk-freetier/aws-sdk-freetier.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-freetier' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - AWS Free Tier' + spec.description = 'Official AWS Ruby gem for AWS Free Tier. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-freetier', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-freetier/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-freetier/features/env.rb b/gems/aws-sdk-freetier/features/env.rb new file mode 100644 index 00000000000..1217d1d0da1 --- /dev/null +++ b/gems/aws-sdk-freetier/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-freetier' + +Aws::FreeTier::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-freetier/features/step_definitions.rb b/gems/aws-sdk-freetier/features/step_definitions.rb new file mode 100644 index 00000000000..8b866f434cb --- /dev/null +++ b/gems/aws-sdk-freetier/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@freetier") do + @service = Aws::FreeTier::Resource.new + @client = @service.client +end + +After("@freetier") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier.rb new file mode 100644 index 00000000000..902c651e792 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-freetier/types' +require_relative 'aws-sdk-freetier/client_api' +require_relative 'aws-sdk-freetier/plugins/endpoints.rb' +require_relative 'aws-sdk-freetier/client' +require_relative 'aws-sdk-freetier/errors' +require_relative 'aws-sdk-freetier/resource' +require_relative 'aws-sdk-freetier/endpoint_parameters' +require_relative 'aws-sdk-freetier/endpoint_provider' +require_relative 'aws-sdk-freetier/endpoints' +require_relative 'aws-sdk-freetier/customizations' + +# This module provides support for AWS Free Tier. This module is available in the +# `aws-sdk-freetier` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# free_tier = Aws::FreeTier::Client.new +# resp = free_tier.get_free_tier_usage(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from AWS Free Tier are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::FreeTier::Errors::ServiceError +# # rescues all AWS Free Tier API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::FreeTier + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client.rb new file mode 100644 index 00000000000..2c3bb1b83c8 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client.rb @@ -0,0 +1,509 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/json_rpc.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:freetier) + +module Aws::FreeTier + # An API client for FreeTier. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::FreeTier::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :freetier + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::JsonRpc) + add_plugin(Aws::FreeTier::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :simple_json (false) + # Disables request parameter conversion, validation, and formatting. + # Also disable response data type conversions. This option is useful + # when you want to ensure the highest level of performance by + # avoiding overhead of walking request parameters and response data + # structures. + # + # When `:simple_json` is enabled, the request parameters hash must + # be formatted exactly as the DynamoDB API expects. + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::FreeTier::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::FreeTier::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # Returns a list of all Free Tier usage objects that match your filters. + # + # @option params [Types::Expression] :filter + # An expression that specifies the conditions that you want each + # `FreeTierUsage` object to meet. + # + # @option params [Integer] :max_results + # The maximum number of results to return in the response. `MaxResults` + # means that there can be up to the specified number of values, but + # there might be fewer results based on your filters. + # + # @option params [String] :next_token + # The pagination token that indicates the next set of results to + # retrieve. + # + # @return [Types::GetFreeTierUsageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetFreeTierUsageResponse#free_tier_usages #free_tier_usages} => Array<Types::FreeTierUsage> + # * {Types::GetFreeTierUsageResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.get_free_tier_usage({ + # filter: { + # and: [ + # { + # # recursive Expression + # }, + # ], + # dimensions: { + # key: "SERVICE", # required, accepts SERVICE, OPERATION, USAGE_TYPE, REGION, FREE_TIER_TYPE, DESCRIPTION, USAGE_PERCENTAGE + # match_options: ["EQUALS"], # required, accepts EQUALS, STARTS_WITH, ENDS_WITH, CONTAINS, GREATER_THAN_OR_EQUAL + # values: ["Value"], # required + # }, + # not: { + # # recursive Expression + # }, + # or: [ + # { + # # recursive Expression + # }, + # ], + # }, + # max_results: 1, + # next_token: "NextPageToken", + # }) + # + # @example Response structure + # + # resp.free_tier_usages #=> Array + # resp.free_tier_usages[0].actual_usage_amount #=> Float + # resp.free_tier_usages[0].description #=> String + # resp.free_tier_usages[0].forecasted_usage_amount #=> Float + # resp.free_tier_usages[0].free_tier_type #=> String + # resp.free_tier_usages[0].limit #=> Float + # resp.free_tier_usages[0].operation #=> String + # resp.free_tier_usages[0].region #=> String + # resp.free_tier_usages[0].service #=> String + # resp.free_tier_usages[0].unit #=> String + # resp.free_tier_usages[0].usage_type #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/GetFreeTierUsage AWS API Documentation + # + # @overload get_free_tier_usage(params = {}) + # @param [Hash] params ({}) + def get_free_tier_usage(params = {}, options = {}) + req = build_request(:get_free_tier_usage, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-freetier' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client_api.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client_api.rb new file mode 100644 index 00000000000..6086f35dfd7 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/client_api.rb @@ -0,0 +1,123 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + # @api private + module ClientApi + + include Seahorse::Model + + Dimension = Shapes::StringShape.new(name: 'Dimension') + DimensionValues = Shapes::StructureShape.new(name: 'DimensionValues') + Expression = Shapes::StructureShape.new(name: 'Expression') + Expressions = Shapes::ListShape.new(name: 'Expressions') + FreeTierUsage = Shapes::StructureShape.new(name: 'FreeTierUsage') + FreeTierUsages = Shapes::ListShape.new(name: 'FreeTierUsages') + GenericDouble = Shapes::FloatShape.new(name: 'GenericDouble') + GenericString = Shapes::StringShape.new(name: 'GenericString') + GetFreeTierUsageRequest = Shapes::StructureShape.new(name: 'GetFreeTierUsageRequest') + GetFreeTierUsageResponse = Shapes::StructureShape.new(name: 'GetFreeTierUsageResponse') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + MatchOption = Shapes::StringShape.new(name: 'MatchOption') + MatchOptions = Shapes::ListShape.new(name: 'MatchOptions') + MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') + NextPageToken = Shapes::StringShape.new(name: 'NextPageToken') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + Value = Shapes::StringShape.new(name: 'Value') + Values = Shapes::ListShape.new(name: 'Values') + + DimensionValues.add_member(:key, Shapes::ShapeRef.new(shape: Dimension, required: true, location_name: "Key")) + DimensionValues.add_member(:match_options, Shapes::ShapeRef.new(shape: MatchOptions, required: true, location_name: "MatchOptions")) + DimensionValues.add_member(:values, Shapes::ShapeRef.new(shape: Values, required: true, location_name: "Values")) + DimensionValues.struct_class = Types::DimensionValues + + Expression.add_member(:and, Shapes::ShapeRef.new(shape: Expressions, location_name: "And")) + Expression.add_member(:dimensions, Shapes::ShapeRef.new(shape: DimensionValues, location_name: "Dimensions")) + Expression.add_member(:not, Shapes::ShapeRef.new(shape: Expression, location_name: "Not")) + Expression.add_member(:or, Shapes::ShapeRef.new(shape: Expressions, location_name: "Or")) + Expression.struct_class = Types::Expression + + Expressions.member = Shapes::ShapeRef.new(shape: Expression) + + FreeTierUsage.add_member(:actual_usage_amount, Shapes::ShapeRef.new(shape: GenericDouble, location_name: "actualUsageAmount")) + FreeTierUsage.add_member(:description, Shapes::ShapeRef.new(shape: GenericString, location_name: "description")) + FreeTierUsage.add_member(:forecasted_usage_amount, Shapes::ShapeRef.new(shape: GenericDouble, location_name: "forecastedUsageAmount")) + FreeTierUsage.add_member(:free_tier_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "freeTierType")) + FreeTierUsage.add_member(:limit, Shapes::ShapeRef.new(shape: GenericDouble, location_name: "limit")) + FreeTierUsage.add_member(:operation, Shapes::ShapeRef.new(shape: GenericString, location_name: "operation")) + FreeTierUsage.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "region")) + FreeTierUsage.add_member(:service, Shapes::ShapeRef.new(shape: GenericString, location_name: "service")) + FreeTierUsage.add_member(:unit, Shapes::ShapeRef.new(shape: GenericString, location_name: "unit")) + FreeTierUsage.add_member(:usage_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "usageType")) + FreeTierUsage.struct_class = Types::FreeTierUsage + + FreeTierUsages.member = Shapes::ShapeRef.new(shape: FreeTierUsage) + + GetFreeTierUsageRequest.add_member(:filter, Shapes::ShapeRef.new(shape: Expression, location_name: "filter")) + GetFreeTierUsageRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "maxResults")) + GetFreeTierUsageRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "nextToken")) + GetFreeTierUsageRequest.struct_class = Types::GetFreeTierUsageRequest + + GetFreeTierUsageResponse.add_member(:free_tier_usages, Shapes::ShapeRef.new(shape: FreeTierUsages, required: true, location_name: "freeTierUsages")) + GetFreeTierUsageResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "nextToken")) + GetFreeTierUsageResponse.struct_class = Types::GetFreeTierUsageResponse + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "message")) + InternalServerException.struct_class = Types::InternalServerException + + MatchOptions.member = Shapes::ShapeRef.new(shape: MatchOption) + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "message")) + ThrottlingException.struct_class = Types::ThrottlingException + + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "message")) + ValidationException.struct_class = Types::ValidationException + + Values.member = Shapes::ShapeRef.new(shape: Value) + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2023-09-07" + + api.metadata = { + "apiVersion" => "2023-09-07", + "endpointPrefix" => "freetier", + "jsonVersion" => "1.0", + "protocol" => "json", + "serviceFullName" => "AWS Free Tier", + "serviceId" => "FreeTier", + "signatureVersion" => "v4", + "signingName" => "freetier", + "targetPrefix" => "AWSFreeTierService", + "uid" => "freetier-2023-09-07", + } + + api.add_operation(:get_free_tier_usage, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetFreeTierUsage" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: GetFreeTierUsageRequest) + o.output = Shapes::ShapeRef.new(shape: GetFreeTierUsageResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + end + + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/customizations.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_parameters.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_parameters.rb new file mode 100644 index 00000000000..09974e0557e --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_parameters.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_provider.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_provider.rb new file mode 100644 index 00000000000..9645ba37457 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoint_provider.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws") + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://freetier-fips.#{region}.api.aws", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + return Aws::Endpoints::Endpoint.new(url: "https://freetier.us-east-1.api.aws", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"us-east-1"}]}) + end + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://freetier-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + if Aws::Endpoints::Matchers.string_equals?(region, "aws-cn-global") + return Aws::Endpoints::Endpoint.new(url: "https://freetier.cn-northwest-1.api.amazonwebservices.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"cn-northwest-1"}]}) + end + return Aws::Endpoints::Endpoint.new(url: "https://freetier.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://freetier-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + if Aws::Endpoints::Matchers.string_equals?(region, "aws-cn-global") + return Aws::Endpoints::Endpoint.new(url: "https://freetier.cn-northwest-1.api.amazonwebservices.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"cn-northwest-1"}]}) + end + return Aws::Endpoints::Endpoint.new(url: "https://freetier.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoints.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoints.rb new file mode 100644 index 00000000000..c77fc124644 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/endpoints.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::FreeTier + # @api private + module Endpoints + + class GetFreeTierUsage + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::FreeTier::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/errors.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/errors.rb new file mode 100644 index 00000000000..5377f63048d --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/errors.rb @@ -0,0 +1,86 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + + # When FreeTier returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::FreeTier::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all FreeTier errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::FreeTier::Errors::ServiceError + # # rescues all FreeTier API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {InternalServerException} + # * {ThrottlingException} + # * {ValidationException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::FreeTier::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::FreeTier::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ValidationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::FreeTier::Types::ValidationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/plugins/endpoints.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/plugins/endpoints.rb new file mode 100644 index 00000000000..30bca4aea65 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/plugins/endpoints.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::FreeTier + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::FreeTier::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::FreeTier::EndpointParameters`' + ) do |cfg| + Aws::FreeTier::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :get_free_tier_usage + Aws::FreeTier::Endpoints::GetFreeTierUsage.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/resource.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/resource.rb new file mode 100644 index 00000000000..bfeb124bcf8 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-freetier/lib/aws-sdk-freetier/types.rb b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/types.rb new file mode 100644 index 00000000000..85cdb59d1b7 --- /dev/null +++ b/gems/aws-sdk-freetier/lib/aws-sdk-freetier/types.rb @@ -0,0 +1,268 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::FreeTier + module Types + + # Contains the specifications for the filters to use for your request. + # + # @!attribute [rw] key + # The name of the dimension that you want to filter on. + # @return [String] + # + # @!attribute [rw] match_options + # The match options that you can use to filter your results. You can + # specify only one of these values in the array. + # @return [Array] + # + # @!attribute [rw] values + # The metadata values you can specify to filter upon, so that the + # results all match at least one of the specified values. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/DimensionValues AWS API Documentation + # + class DimensionValues < Struct.new( + :key, + :match_options, + :values) + SENSITIVE = [] + include Aws::Structure + end + + # Use `Expression` to filter in the `GetFreeTierUsage` API operation. + # + # You can use the following patterns: + # + # * Simple dimension values (`Dimensions` root operator) + # + # * Complex expressions with logical operators (`AND`, `NOT`, and `OR` + # root operators). + # + # For *simple dimension values*, you can set the dimension name, values, + # and match type for the filters that you plan to use. + # + # **Example for simple dimension values** + # + # You can filter to match exactly for `REGION==us-east-1 OR + # REGION==us-west-1`. + # + # The corresponding `Expression` appears like the following: `\{ + # "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1", "us-west-1" + # ], "MatchOptions": ["EQUALS"] \} \}` + # + # As shown in the previous example, lists of dimension values are + # combined with `OR` when you apply the filter. + # + # For *complex expressions with logical operators*, you can have nested + # expressions to use the logical operators and specify advanced + # filtering. + # + # **Example for complex expressions with logical operators** + # + # You can filter by `((REGION == us-east-1 OR REGION == us-west-1) OR + # (SERVICE CONTAINS AWSLambda)) AND (USAGE_TYPE !CONTAINS + # DataTransfer)`. + # + # The corresponding `Expression` appears like the following: `\{ "And": + # [ \{"Or": [ \{"Dimensions": \{ "Key": "REGION", "Values": [ + # "us-east-1", "us-west-1" ], "MatchOptions": ["EQUALS"] \}\}, + # \{"Dimensions": \{ "Key": "SERVICE", "Values": ["AWSLambda"], + # "MatchOptions": ["CONTAINS"] \} \} ]\}, \{"Not": \{"Dimensions": \{ + # "Key": "USAGE_TYPE", "Values": ["DataTransfer"], "MatchOptions": + # ["CONTAINS"] \}\}\} ] \}` + # + # In the following **Contents**, you must specify exactly one of the + # following root operators. + # + # @!attribute [rw] and + # Return results that match all `Expressions` that you specified in + # the array. + # @return [Array] + # + # @!attribute [rw] dimensions + # The specific dimension, values, and match type to filter objects + # with. + # @return [Types::DimensionValues] + # + # @!attribute [rw] not + # Return results that don’t match the `Expression` that you specified. + # @return [Types::Expression] + # + # @!attribute [rw] or + # Return results that match any of the `Expressions` that you + # specified. in the array. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/Expression AWS API Documentation + # + class Expression < Struct.new( + :and, + :dimensions, + :not, + :or) + SENSITIVE = [] + include Aws::Structure + end + + # Consists of a Amazon Web Services Free Tier offer’s metadata and your + # data usage for the offer. + # + # @!attribute [rw] actual_usage_amount + # Describes the actual usage accrued month-to-day (MTD) that you've + # used so far. + # @return [Float] + # + # @!attribute [rw] description + # The description of the Free Tier offer. + # @return [String] + # + # @!attribute [rw] forecasted_usage_amount + # Describes the forecasted usage by the month that you're expected to + # use. + # @return [Float] + # + # @!attribute [rw] free_tier_type + # Describes the type of the Free Tier offer. For example, the offer + # can be `"12 Months Free"`, `"Always Free"`, and `"Free Trial"`. + # @return [String] + # + # @!attribute [rw] limit + # Describes the maximum usage allowed in Free Tier. + # @return [Float] + # + # @!attribute [rw] operation + # Describes `usageType` more granularly with the specific Amazon Web + # Service API operation. For example, this can be the `RunInstances` + # API operation for Amazon Elastic Compute Cloud. + # @return [String] + # + # @!attribute [rw] region + # Describes the Amazon Web Services Region for which this offer is + # applicable + # @return [String] + # + # @!attribute [rw] service + # The name of the Amazon Web Service providing the Free Tier offer. + # For example, this can be Amazon Elastic Compute Cloud. + # @return [String] + # + # @!attribute [rw] unit + # Describes the unit of the `usageType`, such as `Hrs`. + # @return [String] + # + # @!attribute [rw] usage_type + # Describes the usage details of the offer. For example, this might be + # `Global-BoxUsage:freetrial`. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/FreeTierUsage AWS API Documentation + # + class FreeTierUsage < Struct.new( + :actual_usage_amount, + :description, + :forecasted_usage_amount, + :free_tier_type, + :limit, + :operation, + :region, + :service, + :unit, + :usage_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] filter + # An expression that specifies the conditions that you want each + # `FreeTierUsage` object to meet. + # @return [Types::Expression] + # + # @!attribute [rw] max_results + # The maximum number of results to return in the response. + # `MaxResults` means that there can be up to the specified number of + # values, but there might be fewer results based on your filters. + # @return [Integer] + # + # @!attribute [rw] next_token + # The pagination token that indicates the next set of results to + # retrieve. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/GetFreeTierUsageRequest AWS API Documentation + # + class GetFreeTierUsageRequest < Struct.new( + :filter, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] free_tier_usages + # The list of Free Tier usage objects that meet your filter + # expression. + # @return [Array] + # + # @!attribute [rw] next_token + # The pagination token that indicates the next set of results to + # retrieve. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/GetFreeTierUsageResponse AWS API Documentation + # + class GetFreeTierUsageResponse < Struct.new( + :free_tier_usages, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # An unexpected error occurred during the processing of your request. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The input fails to satisfy the constraints specified by an Amazon Web + # Service. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/freetier-2023-09-07/ValidationException AWS API Documentation + # + class ValidationException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-freetier/spec/endpoint_provider_spec.rb b/gems/aws-sdk-freetier/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..63e1463e1f6 --- /dev/null +++ b/gems/aws-sdk-freetier/spec/endpoint_provider_spec.rb @@ -0,0 +1,184 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::FreeTier + describe EndpointProvider do + subject { Aws::FreeTier::EndpointProvider.new } + + context 'For region aws-global with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"us-east-1"}]}, "url"=>"https://freetier.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"aws-global", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://freetier-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"us-east-1"}]}, "url"=>"https://freetier.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region aws-cn-global with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"freetier", "signingRegion"=>"cn-northwest-1"}]}, "url"=>"https://freetier.cn-northwest-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"aws-cn-global", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://freetier-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://freetier.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://freetier-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://freetier.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-freetier/spec/spec_helper.rb b/gems/aws-sdk-freetier/spec/spec_helper.rb new file mode 100644 index 00000000000..97dac47e64b --- /dev/null +++ b/gems/aws-sdk-freetier/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-freetier' diff --git a/gems/aws-sdk-fsx/CHANGELOG.md b/gems/aws-sdk-fsx/CHANGELOG.md index 41cd61f1990..885ad305946 100644 --- a/gems/aws-sdk-fsx/CHANGELOG.md +++ b/gems/aws-sdk-fsx/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.81.0 (2023-11-27) +------------------ + +* Feature - Added support for FSx for ONTAP scale-out file systems and FlexGroup volumes. Added the HAPairs field and ThroughputCapacityPerHAPair for filesystem. Added AggregateConfiguration (containing Aggregates and ConstituentsPerAggregate) and SizeInBytes for volume. + 1.80.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-fsx/VERSION b/gems/aws-sdk-fsx/VERSION index aaceec04e04..dbd41264aa9 100644 --- a/gems/aws-sdk-fsx/VERSION +++ b/gems/aws-sdk-fsx/VERSION @@ -1 +1 @@ -1.80.0 +1.81.0 diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx.rb index eb0deedd051..06903199ee8 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx.rb @@ -52,6 +52,6 @@ # @!group service module Aws::FSx - GEM_VERSION = '1.80.0' + GEM_VERSION = '1.81.0' end diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client.rb index 82eb0d954f5..88087f02d85 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client.rb @@ -758,7 +758,7 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.backup.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.backup.file_system.administrative_actions #=> Array - # resp.backup.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backup.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backup.file_system.administrative_actions[0].progress_percent #=> Integer # resp.backup.file_system.administrative_actions[0].request_time #=> Time # resp.backup.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -793,6 +793,11 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.backup.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.backup.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.backup.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -809,7 +814,7 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -823,6 +828,9 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -834,9 +842,11 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backup.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backup.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backup.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backup.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backup.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backup.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backup.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.backup.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backup.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -852,6 +862,8 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.backup.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backup.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.backup.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.backup.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backup.file_system.file_system_type_version #=> String # resp.backup.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backup.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -904,6 +916,11 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backup.volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backup.volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backup.volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backup.volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backup.volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backup.volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backup.volume.ontap_configuration.size_in_bytes #=> Integer # resp.backup.volume.resource_arn #=> String # resp.backup.volume.tags #=> Array # resp.backup.volume.tags[0].key #=> String @@ -912,7 +929,7 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.backup.volume.lifecycle_transition_reason.message #=> String # resp.backup.volume.administrative_actions #=> Array - # resp.backup.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backup.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backup.volume.administrative_actions[0].progress_percent #=> Integer # resp.backup.volume.administrative_actions[0].request_time #=> Time # resp.backup.volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -984,7 +1001,7 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -1000,6 +1017,8 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -1029,6 +1048,8 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backup.volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backup.volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backup.volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backup.volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backup.volume.open_zfs_configuration.parent_volume_id #=> String # resp.backup.volume.open_zfs_configuration.volume_path #=> String # resp.backup.volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -1037,7 +1058,7 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backup.volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backup.volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backup.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backup.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backup.volume.open_zfs_configuration.read_only #=> Boolean # resp.backup.volume.open_zfs_configuration.nfs_exports #=> Array # resp.backup.volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -1051,6 +1072,9 @@ def cancel_data_repository_task(params = {}, options = {}) # resp.backup.volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.backup.volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backup.volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backup.volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backup.volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backup.volume.open_zfs_configuration.destination_snapshot #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CopyBackup AWS API Documentation # @@ -1061,6 +1085,288 @@ def copy_backup(params = {}, options = {}) req.send_request(options) end + # Updates an existing volume by using a snapshot from another Amazon FSx + # for OpenZFS file system. For more information, see [on-demand data + # replication][1] in the Amazon FSx for OpenZFS User Guide. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/on-demand-replication.html + # + # @option params [String] :client_request_token + # (Optional) An idempotency token for resource creation, in a string of + # up to 63 ASCII characters. This token is automatically filled on your + # behalf when you use the Command Line Interface (CLI) or an Amazon Web + # Services SDK. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @option params [required, String] :volume_id + # Specifies the ID of the volume that you are copying the snapshot to. + # + # @option params [required, String] :source_snapshot_arn + # The Amazon Resource Name (ARN) for a given resource. ARNs uniquely + # identify Amazon Web Services resources. We require an ARN when you + # need to specify a resource unambiguously across all of Amazon Web + # Services. For more information, see [Amazon Resource Names (ARNs)][1] + # in the *Amazon Web Services General Reference*. + # + # + # + # [1]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + # + # @option params [String] :copy_strategy + # Specifies the strategy to use when copying data from a snapshot to the + # volume. + # + # * `FULL_COPY` - Copies all data from the snapshot to the volume. + # + # * `INCREMENTAL_COPY` - Copies only the snapshot data that's changed + # since the previous replication. + # + # `CLONE` isn't a valid copy strategy option for the + # `CopySnapshotAndUpdateVolume` operation. + # + # + # + # @option params [Array] :options + # Confirms that you want to delete data on the destination volume that + # wasn’t there during the previous snapshot replication. + # + # Your replication will fail if you don’t include an option for a + # specific type of data and that data is on your destination. For + # example, if you don’t include `DELETE_INTERMEDIATE_SNAPSHOTS` and + # there are intermediate snapshots on the destination, you can’t copy + # the snapshot. + # + # * `DELETE_INTERMEDIATE_SNAPSHOTS` - Deletes snapshots on the + # destination volume that aren’t on the source volume. + # + # * `DELETE_CLONED_VOLUMES` - Deletes snapshot clones on the destination + # volume that aren't on the source volume. + # + # * `DELETE_INTERMEDIATE_DATA` - Overwrites snapshots on the destination + # volume that don’t match the source snapshot that you’re copying. + # + # @return [Types::CopySnapshotAndUpdateVolumeResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CopySnapshotAndUpdateVolumeResponse#volume_id #volume_id} => String + # * {Types::CopySnapshotAndUpdateVolumeResponse#lifecycle #lifecycle} => String + # * {Types::CopySnapshotAndUpdateVolumeResponse#administrative_actions #administrative_actions} => Array<Types::AdministrativeAction> + # + # @example Request syntax with placeholder values + # + # resp = client.copy_snapshot_and_update_volume({ + # client_request_token: "ClientRequestToken", + # volume_id: "VolumeId", # required + # source_snapshot_arn: "ResourceARN", # required + # copy_strategy: "CLONE", # accepts CLONE, FULL_COPY, INCREMENTAL_COPY + # options: ["DELETE_INTERMEDIATE_SNAPSHOTS"], # accepts DELETE_INTERMEDIATE_SNAPSHOTS, DELETE_CLONED_VOLUMES, DELETE_INTERMEDIATE_DATA + # }) + # + # @example Response structure + # + # resp.volume_id #=> String + # resp.lifecycle #=> String, one of "CREATING", "CREATED", "DELETING", "FAILED", "MISCONFIGURED", "PENDING", "AVAILABLE" + # resp.administrative_actions #=> Array + # resp.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" + # resp.administrative_actions[0].progress_percent #=> Integer + # resp.administrative_actions[0].request_time #=> Time + # resp.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" + # resp.administrative_actions[0].target_file_system_values.owner_id #=> String + # resp.administrative_actions[0].target_file_system_values.creation_time #=> Time + # resp.administrative_actions[0].target_file_system_values.file_system_id #=> String + # resp.administrative_actions[0].target_file_system_values.file_system_type #=> String, one of "WINDOWS", "LUSTRE", "ONTAP", "OPENZFS" + # resp.administrative_actions[0].target_file_system_values.lifecycle #=> String, one of "AVAILABLE", "CREATING", "FAILED", "DELETING", "MISCONFIGURED", "UPDATING", "MISCONFIGURED_UNAVAILABLE" + # resp.administrative_actions[0].target_file_system_values.failure_details.message #=> String + # resp.administrative_actions[0].target_file_system_values.storage_capacity #=> Integer + # resp.administrative_actions[0].target_file_system_values.storage_type #=> String, one of "SSD", "HDD" + # resp.administrative_actions[0].target_file_system_values.vpc_id #=> String + # resp.administrative_actions[0].target_file_system_values.subnet_ids #=> Array + # resp.administrative_actions[0].target_file_system_values.subnet_ids[0] #=> String + # resp.administrative_actions[0].target_file_system_values.network_interface_ids #=> Array + # resp.administrative_actions[0].target_file_system_values.network_interface_ids[0] #=> String + # resp.administrative_actions[0].target_file_system_values.dns_name #=> String + # resp.administrative_actions[0].target_file_system_values.kms_key_id #=> String + # resp.administrative_actions[0].target_file_system_values.resource_arn #=> String + # resp.administrative_actions[0].target_file_system_values.tags #=> Array + # resp.administrative_actions[0].target_file_system_values.tags[0].key #=> String + # resp.administrative_actions[0].target_file_system_values.tags[0].value #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.active_directory_id #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.domain_name #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.organizational_unit_distinguished_name #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.file_system_administrators_group #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.user_name #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.dns_ips #=> Array + # resp.administrative_actions[0].target_file_system_values.windows_configuration.self_managed_active_directory_configuration.dns_ips[0] #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.remote_administration_endpoint #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.preferred_subnet_id #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.preferred_file_server_ip #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.throughput_capacity #=> Integer + # resp.administrative_actions[0].target_file_system_values.windows_configuration.maintenance_operations_in_progress #=> Array + # resp.administrative_actions[0].target_file_system_values.windows_configuration.maintenance_operations_in_progress[0] #=> String, one of "PATCHING", "BACKING_UP" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.weekly_maintenance_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.daily_automatic_backup_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.automatic_backup_retention_days #=> Integer + # resp.administrative_actions[0].target_file_system_values.windows_configuration.copy_tags_to_backups #=> Boolean + # resp.administrative_actions[0].target_file_system_values.windows_configuration.aliases #=> Array + # resp.administrative_actions[0].target_file_system_values.windows_configuration.aliases[0].name #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.aliases[0].lifecycle #=> String, one of "AVAILABLE", "CREATING", "DELETING", "CREATE_FAILED", "DELETE_FAILED" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.audit_log_configuration.file_access_audit_log_level #=> String, one of "DISABLED", "SUCCESS_ONLY", "FAILURE_ONLY", "SUCCESS_AND_FAILURE" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.audit_log_configuration.file_share_access_audit_log_level #=> String, one of "DISABLED", "SUCCESS_ONLY", "FAILURE_ONLY", "SUCCESS_AND_FAILURE" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.audit_log_configuration.audit_log_destination #=> String + # resp.administrative_actions[0].target_file_system_values.windows_configuration.disk_iops_configuration.mode #=> String, one of "AUTOMATIC", "USER_PROVISIONED" + # resp.administrative_actions[0].target_file_system_values.windows_configuration.disk_iops_configuration.iops #=> Integer + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.weekly_maintenance_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.lifecycle #=> String, one of "CREATING", "AVAILABLE", "MISCONFIGURED", "UPDATING", "DELETING", "FAILED" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.import_path #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.export_path #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.imported_file_chunk_size #=> Integer + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.auto_import_policy #=> String, one of "NONE", "NEW", "NEW_CHANGED", "NEW_CHANGED_DELETED" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_repository_configuration.failure_details.message #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.deployment_type #=> String, one of "SCRATCH_1", "SCRATCH_2", "PERSISTENT_1", "PERSISTENT_2" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.per_unit_storage_throughput #=> Integer + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.mount_name #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.daily_automatic_backup_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.automatic_backup_retention_days #=> Integer + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.copy_tags_to_backups #=> Boolean + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.drive_cache_type #=> String, one of "NONE", "READ" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.data_compression_type #=> String, one of "NONE", "LZ4" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.log_configuration.level #=> String, one of "DISABLED", "WARN_ONLY", "ERROR_ONLY", "WARN_ERROR" + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.log_configuration.destination #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.root_squash_configuration.root_squash #=> String + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array + # resp.administrative_actions[0].target_file_system_values.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String + # resp.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses[0] #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.management.dns_name #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.management.ip_addresses #=> Array + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.management.ip_addresses[0] #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.disk_iops_configuration.mode #=> String, one of "AUTOMATIC", "USER_PROVISIONED" + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.disk_iops_configuration.iops #=> Integer + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.preferred_subnet_id #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.route_table_ids #=> Array + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.route_table_ids[0] #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer + # resp.administrative_actions[0].target_file_system_values.file_system_type_version #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_volumes #=> Boolean + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.daily_automatic_backup_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.deployment_type #=> String, one of "SINGLE_AZ_1", "SINGLE_AZ_2", "MULTI_AZ_1" + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.throughput_capacity #=> Integer + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.weekly_maintenance_start_time #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.disk_iops_configuration.mode #=> String, one of "AUTOMATIC", "USER_PROVISIONED" + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.disk_iops_configuration.iops #=> Integer + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.root_volume_id #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.preferred_subnet_id #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.endpoint_ip_address_range #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.route_table_ids #=> Array + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.route_table_ids[0] #=> String + # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.endpoint_ip_address #=> String + # resp.administrative_actions[0].failure_details.message #=> String + # resp.administrative_actions[0].target_volume_values.creation_time #=> Time + # resp.administrative_actions[0].target_volume_values.file_system_id #=> String + # resp.administrative_actions[0].target_volume_values.lifecycle #=> String, one of "CREATING", "CREATED", "DELETING", "FAILED", "MISCONFIGURED", "PENDING", "AVAILABLE" + # resp.administrative_actions[0].target_volume_values.name #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.flex_cache_endpoint_type #=> String, one of "NONE", "ORIGIN", "CACHE" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.junction_path #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.security_style #=> String, one of "UNIX", "NTFS", "MIXED" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.size_in_megabytes #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.storage_efficiency_enabled #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.storage_virtual_machine_id #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.storage_virtual_machine_root #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.tiering_policy.cooling_period #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.tiering_policy.name #=> String, one of "SNAPSHOT_ONLY", "AUTO", "ALL", "NONE" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.uuid #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.ontap_volume_type #=> String, one of "RW", "DP", "LS" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snapshot_policy #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.copy_tags_to_backups #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.audit_log_volume #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.autocommit_period.type #=> String, one of "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", "NONE" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.autocommit_period.value #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.privileged_delete #=> String, one of "DISABLED", "ENABLED", "PERMANENTLY_DISABLED" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.default_retention.type #=> String, one of "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", "INFINITE", "UNSPECIFIED" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.default_retention.value #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.minimum_retention.type #=> String, one of "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", "INFINITE", "UNSPECIFIED" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.minimum_retention.value #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.type #=> String, one of "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", "INFINITE", "UNSPECIFIED" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer + # resp.administrative_actions[0].target_volume_values.resource_arn #=> String + # resp.administrative_actions[0].target_volume_values.tags #=> Array + # resp.administrative_actions[0].target_volume_values.tags[0].key #=> String + # resp.administrative_actions[0].target_volume_values.tags[0].value #=> String + # resp.administrative_actions[0].target_volume_values.volume_id #=> String + # resp.administrative_actions[0].target_volume_values.volume_type #=> String, one of "ONTAP", "OPENZFS" + # resp.administrative_actions[0].target_volume_values.lifecycle_transition_reason.message #=> String + # resp.administrative_actions[0].target_volume_values.administrative_actions #=> Types::AdministrativeActions + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.parent_volume_id #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.volume_path #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.storage_capacity_quota_gi_b #=> Integer + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.record_size_ki_b #=> Integer + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations[0].clients #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations[0].options #=> Array + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations[0].options[0] #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.user_and_group_quotas #=> Array + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.user_and_group_quotas[0].type #=> String, one of "USER", "GROUP" + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.user_and_group_quotas[0].id #=> Integer + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.user_and_group_quotas[0].storage_capacity_quota_gi_b #=> Integer + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String + # resp.administrative_actions[0].target_snapshot_values.resource_arn #=> String + # resp.administrative_actions[0].target_snapshot_values.snapshot_id #=> String + # resp.administrative_actions[0].target_snapshot_values.name #=> String + # resp.administrative_actions[0].target_snapshot_values.volume_id #=> String + # resp.administrative_actions[0].target_snapshot_values.creation_time #=> Time + # resp.administrative_actions[0].target_snapshot_values.lifecycle #=> String, one of "PENDING", "CREATING", "DELETING", "AVAILABLE" + # resp.administrative_actions[0].target_snapshot_values.lifecycle_transition_reason.message #=> String + # resp.administrative_actions[0].target_snapshot_values.tags #=> Array + # resp.administrative_actions[0].target_snapshot_values.tags[0].key #=> String + # resp.administrative_actions[0].target_snapshot_values.tags[0].value #=> String + # resp.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.administrative_actions[0].remaining_transfer_bytes #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CopySnapshotAndUpdateVolume AWS API Documentation + # + # @overload copy_snapshot_and_update_volume(params = {}) + # @param [Hash] params ({}) + def copy_snapshot_and_update_volume(params = {}, options = {}) + req = build_request(:copy_snapshot_and_update_volume, params) + req.send_request(options) + end + # Creates a backup of an existing Amazon FSx for Windows File Server # file system, Amazon FSx for Lustre file system, Amazon FSx for NetApp # ONTAP volume, or Amazon FSx for OpenZFS file system. We recommend @@ -1284,7 +1590,7 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.backup.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.backup.file_system.administrative_actions #=> Array - # resp.backup.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backup.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backup.file_system.administrative_actions[0].progress_percent #=> Integer # resp.backup.file_system.administrative_actions[0].request_time #=> Time # resp.backup.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -1319,6 +1625,11 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backup.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.backup.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.backup.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.backup.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -1335,7 +1646,7 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -1349,6 +1660,9 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backup.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -1360,9 +1674,11 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backup.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backup.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backup.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backup.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backup.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backup.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backup.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backup.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.backup.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backup.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -1378,6 +1694,8 @@ def copy_backup(params = {}, options = {}) # resp.backup.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.backup.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backup.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.backup.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.backup.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backup.file_system.file_system_type_version #=> String # resp.backup.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backup.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -1430,6 +1748,11 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backup.volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backup.volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backup.volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backup.volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backup.volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backup.volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backup.volume.ontap_configuration.size_in_bytes #=> Integer # resp.backup.volume.resource_arn #=> String # resp.backup.volume.tags #=> Array # resp.backup.volume.tags[0].key #=> String @@ -1438,7 +1761,7 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.backup.volume.lifecycle_transition_reason.message #=> String # resp.backup.volume.administrative_actions #=> Array - # resp.backup.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backup.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backup.volume.administrative_actions[0].progress_percent #=> Integer # resp.backup.volume.administrative_actions[0].request_time #=> Time # resp.backup.volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -1510,7 +1833,7 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -1526,6 +1849,8 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.backup.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.backup.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backup.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -1555,6 +1880,8 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backup.volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backup.volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backup.volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backup.volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backup.volume.open_zfs_configuration.parent_volume_id #=> String # resp.backup.volume.open_zfs_configuration.volume_path #=> String # resp.backup.volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -1563,7 +1890,7 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backup.volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backup.volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backup.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backup.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backup.volume.open_zfs_configuration.read_only #=> Boolean # resp.backup.volume.open_zfs_configuration.nfs_exports #=> Array # resp.backup.volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -1577,6 +1904,9 @@ def copy_backup(params = {}, options = {}) # resp.backup.volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.backup.volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backup.volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backup.volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backup.volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backup.volume.open_zfs_configuration.destination_snapshot #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateBackup AWS API Documentation # @@ -2192,7 +2522,9 @@ def create_file_cache(params = {}, options = {}) # GiB, and increments of 3600 GiB. # # **FSx for ONTAP file systems** - The amount of storage capacity that - # you can configure is from 1024 GiB up to 196,608 GiB (192 TiB). + # you can configure depends on the value of the `HAPairs` property. The + # minimum value is calculated as 1,024 * `HAPairs` and the maxium is + # calculated as 524,288 * `HAPairs`.. # # **FSx for OpenZFS file systems** - The amount of storage capacity that # you can configure is from 64 GiB up to 524,288 GiB (512 TiB). @@ -2474,7 +2806,7 @@ def create_file_cache(params = {}, options = {}) # ontap_configuration: { # automatic_backup_retention_days: 1, # daily_automatic_backup_start_time: "DailyTime", - # deployment_type: "MULTI_AZ_1", # required, accepts MULTI_AZ_1, SINGLE_AZ_1 + # deployment_type: "MULTI_AZ_1", # required, accepts MULTI_AZ_1, SINGLE_AZ_1, SINGLE_AZ_2 # endpoint_ip_address_range: "IpAddressRange", # fsx_admin_password: "AdminPassword", # disk_iops_configuration: { @@ -2483,8 +2815,10 @@ def create_file_cache(params = {}, options = {}) # }, # preferred_subnet_id: "SubnetId", # route_table_ids: ["RouteTableId"], - # throughput_capacity: 1, # required + # throughput_capacity: 1, # weekly_maintenance_start_time: "WeeklyTime", + # ha_pairs: 1, + # throughput_capacity_per_ha_pair: 1, # }, # file_system_type_version: "FileSystemTypeVersion", # open_zfs_configuration: { @@ -2596,7 +2930,7 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_system.administrative_actions #=> Array - # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_system.administrative_actions[0].progress_percent #=> Integer # resp.file_system.administrative_actions[0].request_time #=> Time # resp.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -2631,6 +2965,11 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -2647,7 +2986,7 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -2661,6 +3000,9 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -2672,9 +3014,11 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -2690,6 +3034,8 @@ def create_file_cache(params = {}, options = {}) # resp.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_system.file_system_type_version #=> String # resp.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -2883,7 +3229,8 @@ def create_file_system(params = {}, options = {}) # # If used to create a file system other than OpenZFS, you must provide a # value that matches the backup's `StorageCapacity` value. If you - # provide any other value, Amazon FSx responds with a 400 Bad Request. + # provide any other value, Amazon FSx responds with with an HTTP status + # code 400 Bad Request. # # @return [Types::CreateFileSystemFromBackupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # @@ -3121,7 +3468,7 @@ def create_file_system(params = {}, options = {}) # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_system.administrative_actions #=> Array - # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_system.administrative_actions[0].progress_percent #=> Integer # resp.file_system.administrative_actions[0].request_time #=> Time # resp.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -3156,6 +3503,11 @@ def create_file_system(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -3172,7 +3524,7 @@ def create_file_system(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -3186,6 +3538,9 @@ def create_file_system(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -3197,9 +3552,11 @@ def create_file_system(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -3215,6 +3572,8 @@ def create_file_system(params = {}, options = {}) # resp.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_system.file_system_type_version #=> String # resp.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -3322,7 +3681,7 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.tags[0].key #=> String # resp.snapshot.tags[0].value #=> String # resp.snapshot.administrative_actions #=> Array - # resp.snapshot.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.snapshot.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.snapshot.administrative_actions[0].progress_percent #=> Integer # resp.snapshot.administrative_actions[0].request_time #=> Time # resp.snapshot.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -3394,7 +3753,7 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -3410,6 +3769,8 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -3456,6 +3817,11 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.snapshot.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.snapshot.administrative_actions[0].target_volume_values.tags #=> Array # resp.snapshot.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -3472,7 +3838,7 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -3486,7 +3852,12 @@ def create_file_system_from_backup(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.snapshot.administrative_actions[0].target_snapshot_values #=> Types::Snapshot + # resp.snapshot.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.snapshot.administrative_actions[0].remaining_transfer_bytes #=> Integer # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateSnapshot AWS API Documentation # @@ -3659,7 +4030,7 @@ def create_storage_virtual_machine(params = {}, options = {}) # ontap_configuration: { # junction_path: "JunctionPath", # security_style: "UNIX", # accepts UNIX, NTFS, MIXED - # size_in_megabytes: 1, # required + # size_in_megabytes: 1, # storage_efficiency_enabled: false, # storage_virtual_machine_id: "StorageVirtualMachineId", # required # tiering_policy: { @@ -3693,6 +4064,12 @@ def create_storage_virtual_machine(params = {}, options = {}) # snaplock_type: "COMPLIANCE", # required, accepts COMPLIANCE, ENTERPRISE # volume_append_mode_enabled: false, # }, + # volume_style: "FLEXVOL", # accepts FLEXVOL, FLEXGROUP + # aggregate_configuration: { + # aggregates: ["Aggregate"], + # constituents_per_aggregate: 1, + # }, + # size_in_bytes: 1, # }, # tags: [ # { @@ -3709,7 +4086,7 @@ def create_storage_virtual_machine(params = {}, options = {}) # copy_tags_to_snapshots: false, # origin_snapshot: { # snapshot_arn: "ResourceARN", # required - # copy_strategy: "CLONE", # required, accepts CLONE, FULL_COPY + # copy_strategy: "CLONE", # required, accepts CLONE, FULL_COPY, INCREMENTAL_COPY # }, # read_only: false, # nfs_exports: [ @@ -3763,6 +4140,11 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.volume.ontap_configuration.size_in_bytes #=> Integer # resp.volume.resource_arn #=> String # resp.volume.tags #=> Array # resp.volume.tags[0].key #=> String @@ -3771,7 +4153,7 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.volume.lifecycle_transition_reason.message #=> String # resp.volume.administrative_actions #=> Array - # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.volume.administrative_actions[0].progress_percent #=> Integer # resp.volume.administrative_actions[0].request_time #=> Time # resp.volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -3843,7 +4225,7 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -3859,6 +4241,8 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -3888,6 +4272,8 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.volume.open_zfs_configuration.parent_volume_id #=> String # resp.volume.open_zfs_configuration.volume_path #=> String # resp.volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -3896,7 +4282,7 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.volume.open_zfs_configuration.read_only #=> Boolean # resp.volume.open_zfs_configuration.nfs_exports #=> Array # resp.volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -3910,6 +4296,9 @@ def create_storage_virtual_machine(params = {}, options = {}) # resp.volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.volume.open_zfs_configuration.destination_snapshot #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateVolume AWS API Documentation # @@ -3958,7 +4347,7 @@ def create_volume(params = {}, options = {}) # ontap_configuration: { # junction_path: "JunctionPath", # security_style: "UNIX", # accepts UNIX, NTFS, MIXED - # size_in_megabytes: 1, # required + # size_in_megabytes: 1, # storage_efficiency_enabled: false, # storage_virtual_machine_id: "StorageVirtualMachineId", # required # tiering_policy: { @@ -3992,6 +4381,12 @@ def create_volume(params = {}, options = {}) # snaplock_type: "COMPLIANCE", # required, accepts COMPLIANCE, ENTERPRISE # volume_append_mode_enabled: false, # }, + # volume_style: "FLEXVOL", # accepts FLEXVOL, FLEXGROUP + # aggregate_configuration: { + # aggregates: ["Aggregate"], + # constituents_per_aggregate: 1, + # }, + # size_in_bytes: 1, # }, # tags: [ # { @@ -4032,6 +4427,11 @@ def create_volume(params = {}, options = {}) # resp.volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.volume.ontap_configuration.size_in_bytes #=> Integer # resp.volume.resource_arn #=> String # resp.volume.tags #=> Array # resp.volume.tags[0].key #=> String @@ -4040,7 +4440,7 @@ def create_volume(params = {}, options = {}) # resp.volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.volume.lifecycle_transition_reason.message #=> String # resp.volume.administrative_actions #=> Array - # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.volume.administrative_actions[0].progress_percent #=> Integer # resp.volume.administrative_actions[0].request_time #=> Time # resp.volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -4112,7 +4512,7 @@ def create_volume(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -4128,6 +4528,8 @@ def create_volume(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -4157,6 +4559,8 @@ def create_volume(params = {}, options = {}) # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.volume.open_zfs_configuration.parent_volume_id #=> String # resp.volume.open_zfs_configuration.volume_path #=> String # resp.volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -4165,7 +4569,7 @@ def create_volume(params = {}, options = {}) # resp.volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.volume.open_zfs_configuration.read_only #=> Boolean # resp.volume.open_zfs_configuration.nfs_exports #=> Array # resp.volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -4179,6 +4583,9 @@ def create_volume(params = {}, options = {}) # resp.volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.volume.open_zfs_configuration.destination_snapshot #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateVolumeFromBackup AWS API Documentation # @@ -4858,7 +5265,7 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.backups[0].file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.backups[0].file_system.administrative_actions #=> Array - # resp.backups[0].file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backups[0].file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backups[0].file_system.administrative_actions[0].progress_percent #=> Integer # resp.backups[0].file_system.administrative_actions[0].request_time #=> Time # resp.backups[0].file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -4893,6 +5300,11 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.backups[0].file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.backups[0].file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.backups[0].file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -4909,7 +5321,7 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -4923,6 +5335,9 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backups[0].file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -4934,9 +5349,11 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backups[0].file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backups[0].file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backups[0].file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backups[0].file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backups[0].file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backups[0].file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backups[0].file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backups[0].file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.backups[0].file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backups[0].file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -4952,6 +5369,8 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].file_system.ontap_configuration.throughput_capacity #=> Integer # resp.backups[0].file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backups[0].file_system.ontap_configuration.fsx_admin_password #=> String + # resp.backups[0].file_system.ontap_configuration.ha_pairs #=> Integer + # resp.backups[0].file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backups[0].file_system.file_system_type_version #=> String # resp.backups[0].file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backups[0].file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -5004,6 +5423,11 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.backups[0].volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.backups[0].volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.backups[0].volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.backups[0].volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.backups[0].volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.backups[0].volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.backups[0].volume.ontap_configuration.size_in_bytes #=> Integer # resp.backups[0].volume.resource_arn #=> String # resp.backups[0].volume.tags #=> Array # resp.backups[0].volume.tags[0].key #=> String @@ -5012,7 +5436,7 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.backups[0].volume.lifecycle_transition_reason.message #=> String # resp.backups[0].volume.administrative_actions #=> Array - # resp.backups[0].volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.backups[0].volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.backups[0].volume.administrative_actions[0].progress_percent #=> Integer # resp.backups[0].volume.administrative_actions[0].request_time #=> Time # resp.backups[0].volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -5084,7 +5508,7 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -5100,6 +5524,8 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.backups[0].volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.backups[0].volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.backups[0].volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.backups[0].volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -5129,6 +5555,8 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.backups[0].volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.backups[0].volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.backups[0].volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.backups[0].volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.backups[0].volume.open_zfs_configuration.parent_volume_id #=> String # resp.backups[0].volume.open_zfs_configuration.volume_path #=> String # resp.backups[0].volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -5137,7 +5565,7 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.backups[0].volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.backups[0].volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.backups[0].volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.backups[0].volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.backups[0].volume.open_zfs_configuration.read_only #=> Boolean # resp.backups[0].volume.open_zfs_configuration.nfs_exports #=> Array # resp.backups[0].volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -5151,6 +5579,9 @@ def delete_volume(params = {}, options = {}) # resp.backups[0].volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.backups[0].volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.backups[0].volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.backups[0].volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.backups[0].volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.backups[0].volume.open_zfs_configuration.destination_snapshot #=> String # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeBackups AWS API Documentation @@ -5693,7 +6124,7 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_systems[0].lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_systems[0].administrative_actions #=> Array - # resp.file_systems[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_systems[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_systems[0].administrative_actions[0].progress_percent #=> Integer # resp.file_systems[0].administrative_actions[0].request_time #=> Time # resp.file_systems[0].administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -5728,6 +6159,11 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_systems[0].administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_systems[0].administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_systems[0].administrative_actions[0].target_volume_values.tags #=> Array # resp.file_systems[0].administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -5744,7 +6180,7 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -5758,6 +6194,9 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_systems[0].administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_systems[0].administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_systems[0].administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_systems[0].administrative_actions[0].target_snapshot_values.name #=> String @@ -5769,9 +6208,11 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_systems[0].administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_systems[0].administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_systems[0].administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_systems[0].administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_systems[0].ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_systems[0].ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_systems[0].ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_systems[0].ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_systems[0].ontap_configuration.endpoint_ip_address_range #=> String # resp.file_systems[0].ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_systems[0].ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -5787,6 +6228,8 @@ def describe_file_system_aliases(params = {}, options = {}) # resp.file_systems[0].ontap_configuration.throughput_capacity #=> Integer # resp.file_systems[0].ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_systems[0].ontap_configuration.fsx_admin_password #=> String + # resp.file_systems[0].ontap_configuration.ha_pairs #=> Integer + # resp.file_systems[0].ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_systems[0].file_system_type_version #=> String # resp.file_systems[0].open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_systems[0].open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -5814,6 +6257,32 @@ def describe_file_systems(params = {}, options = {}) req.send_request(options) end + # Indicates whether participant accounts in your organization can create + # Amazon FSx for NetApp ONTAP Multi-AZ file systems in subnets that are + # shared by a virtual private cloud (VPC) owner. For more information, + # see the [Amazon FSx for NetApp ONTAP User Guide][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/maz-shared-vpc.html + # + # @return [Types::DescribeSharedVpcConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeSharedVpcConfigurationResponse#enable_fsx_route_table_updates_from_participant_accounts #enable_fsx_route_table_updates_from_participant_accounts} => String + # + # @example Response structure + # + # resp.enable_fsx_route_table_updates_from_participant_accounts #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeSharedVpcConfiguration AWS API Documentation + # + # @overload describe_shared_vpc_configuration(params = {}) + # @param [Hash] params ({}) + def describe_shared_vpc_configuration(params = {}, options = {}) + req = build_request(:describe_shared_vpc_configuration, params) + req.send_request(options) + end + # Returns the description of specific Amazon FSx for OpenZFS snapshots, # if a `SnapshotIds` value is provided. Otherwise, this operation # returns all snapshots owned by your Amazon Web Services account in the @@ -5895,7 +6364,7 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].tags[0].key #=> String # resp.snapshots[0].tags[0].value #=> String # resp.snapshots[0].administrative_actions #=> Array - # resp.snapshots[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.snapshots[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.snapshots[0].administrative_actions[0].progress_percent #=> Integer # resp.snapshots[0].administrative_actions[0].request_time #=> Time # resp.snapshots[0].administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -5967,7 +6436,7 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -5983,6 +6452,8 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.snapshots[0].administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.snapshots[0].administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.snapshots[0].administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.snapshots[0].administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -6029,6 +6500,11 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.snapshots[0].administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.snapshots[0].administrative_actions[0].target_volume_values.resource_arn #=> String # resp.snapshots[0].administrative_actions[0].target_volume_values.tags #=> Array # resp.snapshots[0].administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -6045,7 +6521,7 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -6059,7 +6535,12 @@ def describe_file_systems(params = {}, options = {}) # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.snapshots[0].administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.snapshots[0].administrative_actions[0].target_snapshot_values #=> Types::Snapshot + # resp.snapshots[0].administrative_actions[0].total_transfer_bytes #=> Integer + # resp.snapshots[0].administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeSnapshots AWS API Documentation @@ -6230,6 +6711,11 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.volumes[0].ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.volumes[0].ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.volumes[0].ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.volumes[0].ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.volumes[0].ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.volumes[0].ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.volumes[0].ontap_configuration.size_in_bytes #=> Integer # resp.volumes[0].resource_arn #=> String # resp.volumes[0].tags #=> Array # resp.volumes[0].tags[0].key #=> String @@ -6238,7 +6724,7 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.volumes[0].lifecycle_transition_reason.message #=> String # resp.volumes[0].administrative_actions #=> Array - # resp.volumes[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.volumes[0].administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.volumes[0].administrative_actions[0].progress_percent #=> Integer # resp.volumes[0].administrative_actions[0].request_time #=> Time # resp.volumes[0].administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -6310,7 +6796,7 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -6326,6 +6812,8 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.volumes[0].administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.volumes[0].administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.volumes[0].administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.volumes[0].administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -6355,6 +6843,8 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.volumes[0].administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.volumes[0].administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.volumes[0].administrative_actions[0].total_transfer_bytes #=> Integer + # resp.volumes[0].administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.volumes[0].open_zfs_configuration.parent_volume_id #=> String # resp.volumes[0].open_zfs_configuration.volume_path #=> String # resp.volumes[0].open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -6363,7 +6853,7 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.volumes[0].open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.volumes[0].open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.volumes[0].open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.volumes[0].open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.volumes[0].open_zfs_configuration.read_only #=> Boolean # resp.volumes[0].open_zfs_configuration.nfs_exports #=> Array # resp.volumes[0].open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -6377,6 +6867,9 @@ def describe_storage_virtual_machines(params = {}, options = {}) # resp.volumes[0].open_zfs_configuration.restore_to_snapshot #=> String # resp.volumes[0].open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.volumes[0].open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.volumes[0].open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.volumes[0].open_zfs_configuration.source_snapshot_arn #=> String + # resp.volumes[0].open_zfs_configuration.destination_snapshot #=> String # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeVolumes AWS API Documentation @@ -6391,8 +6884,9 @@ def describe_volumes(params = {}, options = {}) # Use this action to disassociate, or remove, one or more Domain Name # Service (DNS) aliases from an Amazon FSx for Windows File Server file # system. If you attempt to disassociate a DNS alias that is not - # associated with the file system, Amazon FSx responds with a 400 Bad - # Request. For more information, see [Working with DNS Aliases][1]. + # associated with the file system, Amazon FSx responds with an HTTP + # status code 400 (Bad Request). For more information, see [Working with + # DNS Aliases][1]. # # The system generated response showing the DNS aliases that Amazon FSx # is attempting to disassociate from the file system. Use the API @@ -6628,7 +7122,7 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_system.administrative_actions #=> Array - # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_system.administrative_actions[0].progress_percent #=> Integer # resp.file_system.administrative_actions[0].request_time #=> Time # resp.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -6663,6 +7157,11 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -6679,7 +7178,7 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -6693,6 +7192,9 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -6704,9 +7206,11 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -6722,6 +7226,8 @@ def list_tags_for_resource(params = {}, options = {}) # resp.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_system.file_system_type_version #=> String # resp.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -6800,7 +7306,7 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.volume_id #=> String # resp.lifecycle #=> String, one of "CREATING", "CREATED", "DELETING", "FAILED", "MISCONFIGURED", "PENDING", "AVAILABLE" # resp.administrative_actions #=> Array - # resp.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.administrative_actions[0].progress_percent #=> Integer # resp.administrative_actions[0].request_time #=> Time # resp.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -6872,7 +7378,7 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -6888,6 +7394,8 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -6934,6 +7442,11 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.administrative_actions[0].target_volume_values.tags #=> Array # resp.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -6950,7 +7463,7 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -6964,6 +7477,9 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.administrative_actions[0].target_snapshot_values.name #=> String @@ -6975,6 +7491,8 @@ def release_file_system_nfs_v3_locks(params = {}, options = {}) # resp.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.administrative_actions[0].remaining_transfer_bytes #=> Integer # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/RestoreVolumeFromSnapshot AWS API Documentation # @@ -7081,7 +7599,7 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_system.administrative_actions #=> Array - # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_system.administrative_actions[0].progress_percent #=> Integer # resp.file_system.administrative_actions[0].request_time #=> Time # resp.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -7116,6 +7634,11 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -7132,7 +7655,7 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -7146,6 +7669,9 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -7157,9 +7683,11 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -7175,6 +7703,8 @@ def restore_volume_from_snapshot(params = {}, options = {}) # resp.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_system.file_system_type_version #=> String # resp.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -7509,12 +8039,16 @@ def update_file_cache(params = {}, options = {}) # # * `FsxAdminPassword` # + # * `HAPairs` + # # * `RemoveRouteTableIds` # # * `StorageCapacity` # # * `ThroughputCapacity` # + # * `ThroughputCapacityPerHAPair` + # # * `WeeklyMaintenanceStartTime` # # For FSx for OpenZFS file systems, you can update the following @@ -7728,6 +8262,7 @@ def update_file_cache(params = {}, options = {}) # throughput_capacity: 1, # add_route_table_ids: ["RouteTableId"], # remove_route_table_ids: ["RouteTableId"], + # throughput_capacity_per_ha_pair: 1, # }, # open_zfs_configuration: { # automatic_backup_retention_days: 1, @@ -7814,7 +8349,7 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids #=> Array # resp.file_system.lustre_configuration.root_squash_configuration.no_squash_nids[0] #=> String # resp.file_system.administrative_actions #=> Array - # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.file_system.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.file_system.administrative_actions[0].progress_percent #=> Integer # resp.file_system.administrative_actions[0].request_time #=> Time # resp.file_system.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -7849,6 +8384,11 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.file_system.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.file_system.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_volume_values.tags #=> Array # resp.file_system.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -7865,7 +8405,7 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -7879,6 +8419,9 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.file_system.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.resource_arn #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.snapshot_id #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.name #=> String @@ -7890,9 +8433,11 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.file_system.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.file_system.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.file_system.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.file_system.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.file_system.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.file_system.ontap_configuration.endpoint_ip_address_range #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.file_system.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -7908,6 +8453,8 @@ def update_file_cache(params = {}, options = {}) # resp.file_system.ontap_configuration.throughput_capacity #=> Integer # resp.file_system.ontap_configuration.weekly_maintenance_start_time #=> String # resp.file_system.ontap_configuration.fsx_admin_password #=> String + # resp.file_system.ontap_configuration.ha_pairs #=> Integer + # resp.file_system.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.file_system.file_system_type_version #=> String # resp.file_system.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.file_system.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -7934,6 +8481,63 @@ def update_file_system(params = {}, options = {}) req.send_request(options) end + # Configures whether participant accounts in your organization can + # create Amazon FSx for NetApp ONTAP Multi-AZ file systems in subnets + # that are shared by a virtual private cloud (VPC) owner. For more + # information, see the [Amazon FSx for NetApp ONTAP User Guide][1]. + # + # We strongly recommend that participant-created Multi-AZ file systems + # in the shared VPC are deleted before you disable this feature. Once + # the feature is disabled, these file systems will enter a + # `MISCONFIGURED` state and behave like Single-AZ file systems. For more + # information, see [Important considerations before disabling shared VPC + # support for Multi-AZ file systems][2]. + # + # + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/maz-shared-vpc.html + # [2]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/maz-shared-vpc.html#disabling-maz-vpc-sharing + # + # @option params [String] :enable_fsx_route_table_updates_from_participant_accounts + # Specifies whether participant accounts can create FSx for ONTAP + # Multi-AZ file systems in shared subnets. Set to `true` to enable or + # `false` to disable. + # + # @option params [String] :client_request_token + # (Optional) An idempotency token for resource creation, in a string of + # up to 63 ASCII characters. This token is automatically filled on your + # behalf when you use the Command Line Interface (CLI) or an Amazon Web + # Services SDK. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @return [Types::UpdateSharedVpcConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateSharedVpcConfigurationResponse#enable_fsx_route_table_updates_from_participant_accounts #enable_fsx_route_table_updates_from_participant_accounts} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_shared_vpc_configuration({ + # enable_fsx_route_table_updates_from_participant_accounts: "VerboseFlag", + # client_request_token: "ClientRequestToken", + # }) + # + # @example Response structure + # + # resp.enable_fsx_route_table_updates_from_participant_accounts #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateSharedVpcConfiguration AWS API Documentation + # + # @overload update_shared_vpc_configuration(params = {}) + # @param [Hash] params ({}) + def update_shared_vpc_configuration(params = {}, options = {}) + req = build_request(:update_shared_vpc_configuration, params) + req.send_request(options) + end + # Updates the name of an Amazon FSx for OpenZFS snapshot. # # @option params [String] :client_request_token @@ -7977,7 +8581,7 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.tags[0].key #=> String # resp.snapshot.tags[0].value #=> String # resp.snapshot.administrative_actions #=> Array - # resp.snapshot.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.snapshot.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.snapshot.administrative_actions[0].progress_percent #=> Integer # resp.snapshot.administrative_actions[0].request_time #=> Time # resp.snapshot.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -8049,7 +8653,7 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -8065,6 +8669,8 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.snapshot.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.snapshot.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.snapshot.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -8111,6 +8717,11 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.snapshot.administrative_actions[0].target_volume_values.ontap_configuration.size_in_bytes #=> Integer # resp.snapshot.administrative_actions[0].target_volume_values.resource_arn #=> String # resp.snapshot.administrative_actions[0].target_volume_values.tags #=> Array # resp.snapshot.administrative_actions[0].target_volume_values.tags[0].key #=> String @@ -8127,7 +8738,7 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.read_only #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports #=> Array # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -8141,7 +8752,12 @@ def update_file_system(params = {}, options = {}) # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.restore_to_snapshot #=> String # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.source_snapshot_arn #=> String + # resp.snapshot.administrative_actions[0].target_volume_values.open_zfs_configuration.destination_snapshot #=> String # resp.snapshot.administrative_actions[0].target_snapshot_values #=> Types::Snapshot + # resp.snapshot.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.snapshot.administrative_actions[0].remaining_transfer_bytes #=> Integer # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateSnapshot AWS API Documentation # @@ -8312,6 +8928,7 @@ def update_storage_virtual_machine(params = {}, options = {}) # }, # volume_append_mode_enabled: false, # }, + # size_in_bytes: 1, # }, # name: "VolumeName", # open_zfs_configuration: { @@ -8371,6 +8988,11 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.ontap_configuration.snaplock_configuration.retention_period.maximum_retention.value #=> Integer # resp.volume.ontap_configuration.snaplock_configuration.snaplock_type #=> String, one of "COMPLIANCE", "ENTERPRISE" # resp.volume.ontap_configuration.snaplock_configuration.volume_append_mode_enabled #=> Boolean + # resp.volume.ontap_configuration.volume_style #=> String, one of "FLEXVOL", "FLEXGROUP" + # resp.volume.ontap_configuration.aggregate_configuration.aggregates #=> Array + # resp.volume.ontap_configuration.aggregate_configuration.aggregates[0] #=> String + # resp.volume.ontap_configuration.aggregate_configuration.total_constituents #=> Integer + # resp.volume.ontap_configuration.size_in_bytes #=> Integer # resp.volume.resource_arn #=> String # resp.volume.tags #=> Array # resp.volume.tags[0].key #=> String @@ -8379,7 +9001,7 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.volume_type #=> String, one of "ONTAP", "OPENZFS" # resp.volume.lifecycle_transition_reason.message #=> String # resp.volume.administrative_actions #=> Array - # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY" + # resp.volume.administrative_actions[0].administrative_action_type #=> String, one of "FILE_SYSTEM_UPDATE", "STORAGE_OPTIMIZATION", "FILE_SYSTEM_ALIAS_ASSOCIATION", "FILE_SYSTEM_ALIAS_DISASSOCIATION", "VOLUME_UPDATE", "SNAPSHOT_UPDATE", "RELEASE_NFS_V3_LOCKS", "VOLUME_RESTORE", "THROUGHPUT_OPTIMIZATION", "IOPS_OPTIMIZATION", "STORAGE_TYPE_OPTIMIZATION", "MISCONFIGURED_STATE_RECOVERY", "VOLUME_UPDATE_WITH_SNAPSHOT", "VOLUME_INITIALIZE_WITH_SNAPSHOT" # resp.volume.administrative_actions[0].progress_percent #=> Integer # resp.volume.administrative_actions[0].request_time #=> Time # resp.volume.administrative_actions[0].status #=> String, one of "FAILED", "IN_PROGRESS", "PENDING", "COMPLETED", "UPDATED_OPTIMIZING" @@ -8451,7 +9073,7 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.administrative_actions #=> Types::AdministrativeActions # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.daily_automatic_backup_start_time #=> String - # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1" + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.deployment_type #=> String, one of "MULTI_AZ_1", "SINGLE_AZ_1", "SINGLE_AZ_2" # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoint_ip_address_range #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.dns_name #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.endpoints.intercluster.ip_addresses #=> Array @@ -8467,6 +9089,8 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.weekly_maintenance_start_time #=> String # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.fsx_admin_password #=> String + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.ha_pairs #=> Integer + # resp.volume.administrative_actions[0].target_file_system_values.ontap_configuration.throughput_capacity_per_ha_pair #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.file_system_type_version #=> String # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.automatic_backup_retention_days #=> Integer # resp.volume.administrative_actions[0].target_file_system_values.open_zfs_configuration.copy_tags_to_backups #=> Boolean @@ -8496,6 +9120,8 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].key #=> String # resp.volume.administrative_actions[0].target_snapshot_values.tags[0].value #=> String # resp.volume.administrative_actions[0].target_snapshot_values.administrative_actions #=> Types::AdministrativeActions + # resp.volume.administrative_actions[0].total_transfer_bytes #=> Integer + # resp.volume.administrative_actions[0].remaining_transfer_bytes #=> Integer # resp.volume.open_zfs_configuration.parent_volume_id #=> String # resp.volume.open_zfs_configuration.volume_path #=> String # resp.volume.open_zfs_configuration.storage_capacity_reservation_gi_b #=> Integer @@ -8504,7 +9130,7 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.open_zfs_configuration.data_compression_type #=> String, one of "NONE", "ZSTD", "LZ4" # resp.volume.open_zfs_configuration.copy_tags_to_snapshots #=> Boolean # resp.volume.open_zfs_configuration.origin_snapshot.snapshot_arn #=> String - # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY" + # resp.volume.open_zfs_configuration.origin_snapshot.copy_strategy #=> String, one of "CLONE", "FULL_COPY", "INCREMENTAL_COPY" # resp.volume.open_zfs_configuration.read_only #=> Boolean # resp.volume.open_zfs_configuration.nfs_exports #=> Array # resp.volume.open_zfs_configuration.nfs_exports[0].client_configurations #=> Array @@ -8518,6 +9144,9 @@ def update_storage_virtual_machine(params = {}, options = {}) # resp.volume.open_zfs_configuration.restore_to_snapshot #=> String # resp.volume.open_zfs_configuration.delete_intermediate_snaphots #=> Boolean # resp.volume.open_zfs_configuration.delete_cloned_volumes #=> Boolean + # resp.volume.open_zfs_configuration.delete_intermediate_data #=> Boolean + # resp.volume.open_zfs_configuration.source_snapshot_arn #=> String + # resp.volume.open_zfs_configuration.destination_snapshot #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateVolume AWS API Documentation # @@ -8541,7 +9170,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-fsx' - context[:gem_version] = '1.80.0' + context[:gem_version] = '1.81.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client_api.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client_api.rb index baad910b22d..04bb0bce09a 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client_api.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/client_api.rb @@ -23,6 +23,10 @@ module ClientApi AdministrativeActionFailureDetails = Shapes::StructureShape.new(name: 'AdministrativeActionFailureDetails') AdministrativeActionType = Shapes::StringShape.new(name: 'AdministrativeActionType') AdministrativeActions = Shapes::ListShape.new(name: 'AdministrativeActions') + Aggregate = Shapes::StringShape.new(name: 'Aggregate') + AggregateConfiguration = Shapes::StructureShape.new(name: 'AggregateConfiguration') + AggregateListMultiplier = Shapes::IntegerShape.new(name: 'AggregateListMultiplier') + Aggregates = Shapes::ListShape.new(name: 'Aggregates') Alias = Shapes::StructureShape.new(name: 'Alias') AliasLifecycle = Shapes::StringShape.new(name: 'AliasLifecycle') Aliases = Shapes::ListShape.new(name: 'Aliases') @@ -59,7 +63,10 @@ module ClientApi CoolingPeriod = Shapes::IntegerShape.new(name: 'CoolingPeriod') CopyBackupRequest = Shapes::StructureShape.new(name: 'CopyBackupRequest') CopyBackupResponse = Shapes::StructureShape.new(name: 'CopyBackupResponse') + CopySnapshotAndUpdateVolumeRequest = Shapes::StructureShape.new(name: 'CopySnapshotAndUpdateVolumeRequest') + CopySnapshotAndUpdateVolumeResponse = Shapes::StructureShape.new(name: 'CopySnapshotAndUpdateVolumeResponse') CopyTagsToDataRepositoryAssociations = Shapes::BooleanShape.new(name: 'CopyTagsToDataRepositoryAssociations') + CreateAggregateConfiguration = Shapes::StructureShape.new(name: 'CreateAggregateConfiguration') CreateBackupRequest = Shapes::StructureShape.new(name: 'CreateBackupRequest') CreateBackupResponse = Shapes::StructureShape.new(name: 'CreateBackupResponse') CreateDataRepositoryAssociationRequest = Shapes::StructureShape.new(name: 'CreateDataRepositoryAssociationRequest') @@ -159,6 +166,8 @@ module ClientApi DescribeFileSystemAliasesResponse = Shapes::StructureShape.new(name: 'DescribeFileSystemAliasesResponse') DescribeFileSystemsRequest = Shapes::StructureShape.new(name: 'DescribeFileSystemsRequest') DescribeFileSystemsResponse = Shapes::StructureShape.new(name: 'DescribeFileSystemsResponse') + DescribeSharedVpcConfigurationRequest = Shapes::StructureShape.new(name: 'DescribeSharedVpcConfigurationRequest') + DescribeSharedVpcConfigurationResponse = Shapes::StructureShape.new(name: 'DescribeSharedVpcConfigurationResponse') DescribeSnapshotsRequest = Shapes::StructureShape.new(name: 'DescribeSnapshotsRequest') DescribeSnapshotsResponse = Shapes::StructureShape.new(name: 'DescribeSnapshotsResponse') DescribeStorageVirtualMachinesRequest = Shapes::StructureShape.new(name: 'DescribeStorageVirtualMachinesRequest') @@ -216,6 +225,7 @@ module ClientApi Flag = Shapes::BooleanShape.new(name: 'Flag') FlexCacheEndpointType = Shapes::StringShape.new(name: 'FlexCacheEndpointType') GeneralARN = Shapes::StringShape.new(name: 'GeneralARN') + HAPairs = Shapes::IntegerShape.new(name: 'HAPairs') IncompatibleParameterError = Shapes::StructureShape.new(name: 'IncompatibleParameterError') IncompatibleRegionForMultiAZ = Shapes::StructureShape.new(name: 'IncompatibleRegionForMultiAZ') InputOntapVolumeType = Shapes::StringShape.new(name: 'InputOntapVolumeType') @@ -299,6 +309,7 @@ module ClientApi ReleaseFileSystemNfsV3LocksRequest = Shapes::StructureShape.new(name: 'ReleaseFileSystemNfsV3LocksRequest') ReleaseFileSystemNfsV3LocksResponse = Shapes::StructureShape.new(name: 'ReleaseFileSystemNfsV3LocksResponse') ReleasedCapacity = Shapes::IntegerShape.new(name: 'ReleasedCapacity') + RemainingTransferBytes = Shapes::IntegerShape.new(name: 'RemainingTransferBytes') ReportFormat = Shapes::StringShape.new(name: 'ReportFormat') ReportScope = Shapes::StringShape.new(name: 'ReportScope') RepositoryDnsIps = Shapes::ListShape.new(name: 'RepositoryDnsIps') @@ -379,9 +390,12 @@ module ClientApi Tags = Shapes::ListShape.new(name: 'Tags') TaskId = Shapes::StringShape.new(name: 'TaskId') TaskIds = Shapes::ListShape.new(name: 'TaskIds') + ThroughputCapacityPerHAPair = Shapes::IntegerShape.new(name: 'ThroughputCapacityPerHAPair') TieringPolicy = Shapes::StructureShape.new(name: 'TieringPolicy') TieringPolicyName = Shapes::StringShape.new(name: 'TieringPolicyName') + TotalConstituents = Shapes::IntegerShape.new(name: 'TotalConstituents') TotalCount = Shapes::IntegerShape.new(name: 'TotalCount') + TotalTransferBytes = Shapes::IntegerShape.new(name: 'TotalTransferBytes') UUID = Shapes::StringShape.new(name: 'UUID') Unit = Shapes::StringShape.new(name: 'Unit') UnsupportedOperation = Shapes::StructureShape.new(name: 'UnsupportedOperation') @@ -400,6 +414,10 @@ module ClientApi UpdateFileSystemWindowsConfiguration = Shapes::StructureShape.new(name: 'UpdateFileSystemWindowsConfiguration') UpdateOntapVolumeConfiguration = Shapes::StructureShape.new(name: 'UpdateOntapVolumeConfiguration') UpdateOpenZFSVolumeConfiguration = Shapes::StructureShape.new(name: 'UpdateOpenZFSVolumeConfiguration') + UpdateOpenZFSVolumeOption = Shapes::StringShape.new(name: 'UpdateOpenZFSVolumeOption') + UpdateOpenZFSVolumeOptions = Shapes::ListShape.new(name: 'UpdateOpenZFSVolumeOptions') + UpdateSharedVpcConfigurationRequest = Shapes::StructureShape.new(name: 'UpdateSharedVpcConfigurationRequest') + UpdateSharedVpcConfigurationResponse = Shapes::StructureShape.new(name: 'UpdateSharedVpcConfigurationResponse') UpdateSnaplockConfiguration = Shapes::StructureShape.new(name: 'UpdateSnaplockConfiguration') UpdateSnapshotRequest = Shapes::StructureShape.new(name: 'UpdateSnapshotRequest') UpdateSnapshotResponse = Shapes::StructureShape.new(name: 'UpdateSnapshotResponse') @@ -409,8 +427,10 @@ module ClientApi UpdateVolumeRequest = Shapes::StructureShape.new(name: 'UpdateVolumeRequest') UpdateVolumeResponse = Shapes::StructureShape.new(name: 'UpdateVolumeResponse') Value = Shapes::IntegerShape.new(name: 'Value') + VerboseFlag = Shapes::StringShape.new(name: 'VerboseFlag') Volume = Shapes::StructureShape.new(name: 'Volume') VolumeCapacity = Shapes::IntegerShape.new(name: 'VolumeCapacity') + VolumeCapacityBytes = Shapes::IntegerShape.new(name: 'VolumeCapacityBytes') VolumeFilter = Shapes::StructureShape.new(name: 'VolumeFilter') VolumeFilterName = Shapes::StringShape.new(name: 'VolumeFilterName') VolumeFilterValue = Shapes::StringShape.new(name: 'VolumeFilterValue') @@ -422,6 +442,7 @@ module ClientApi VolumeName = Shapes::StringShape.new(name: 'VolumeName') VolumeNotFound = Shapes::StructureShape.new(name: 'VolumeNotFound') VolumePath = Shapes::StringShape.new(name: 'VolumePath') + VolumeStyle = Shapes::StringShape.new(name: 'VolumeStyle') VolumeType = Shapes::StringShape.new(name: 'VolumeType') Volumes = Shapes::ListShape.new(name: 'Volumes') VpcId = Shapes::StringShape.new(name: 'VpcId') @@ -450,6 +471,8 @@ module ClientApi AdministrativeAction.add_member(:failure_details, Shapes::ShapeRef.new(shape: AdministrativeActionFailureDetails, location_name: "FailureDetails")) AdministrativeAction.add_member(:target_volume_values, Shapes::ShapeRef.new(shape: Volume, location_name: "TargetVolumeValues")) AdministrativeAction.add_member(:target_snapshot_values, Shapes::ShapeRef.new(shape: Snapshot, location_name: "TargetSnapshotValues")) + AdministrativeAction.add_member(:total_transfer_bytes, Shapes::ShapeRef.new(shape: TotalTransferBytes, location_name: "TotalTransferBytes")) + AdministrativeAction.add_member(:remaining_transfer_bytes, Shapes::ShapeRef.new(shape: RemainingTransferBytes, location_name: "RemainingTransferBytes")) AdministrativeAction.struct_class = Types::AdministrativeAction AdministrativeActionFailureDetails.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) @@ -457,6 +480,12 @@ module ClientApi AdministrativeActions.member = Shapes::ShapeRef.new(shape: AdministrativeAction) + AggregateConfiguration.add_member(:aggregates, Shapes::ShapeRef.new(shape: Aggregates, location_name: "Aggregates")) + AggregateConfiguration.add_member(:total_constituents, Shapes::ShapeRef.new(shape: TotalConstituents, location_name: "TotalConstituents")) + AggregateConfiguration.struct_class = Types::AggregateConfiguration + + Aggregates.member = Shapes::ShapeRef.new(shape: Aggregate) + Alias.add_member(:name, Shapes::ShapeRef.new(shape: AlternateDNSName, location_name: "Name")) Alias.add_member(:lifecycle, Shapes::ShapeRef.new(shape: AliasLifecycle, location_name: "Lifecycle")) Alias.struct_class = Types::Alias @@ -549,6 +578,22 @@ module ClientApi CopyBackupResponse.add_member(:backup, Shapes::ShapeRef.new(shape: Backup, location_name: "Backup")) CopyBackupResponse.struct_class = Types::CopyBackupResponse + CopySnapshotAndUpdateVolumeRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestToken, location_name: "ClientRequestToken", metadata: {"idempotencyToken"=>true})) + CopySnapshotAndUpdateVolumeRequest.add_member(:volume_id, Shapes::ShapeRef.new(shape: VolumeId, required: true, location_name: "VolumeId")) + CopySnapshotAndUpdateVolumeRequest.add_member(:source_snapshot_arn, Shapes::ShapeRef.new(shape: ResourceARN, required: true, location_name: "SourceSnapshotARN")) + CopySnapshotAndUpdateVolumeRequest.add_member(:copy_strategy, Shapes::ShapeRef.new(shape: OpenZFSCopyStrategy, location_name: "CopyStrategy")) + CopySnapshotAndUpdateVolumeRequest.add_member(:options, Shapes::ShapeRef.new(shape: UpdateOpenZFSVolumeOptions, location_name: "Options")) + CopySnapshotAndUpdateVolumeRequest.struct_class = Types::CopySnapshotAndUpdateVolumeRequest + + CopySnapshotAndUpdateVolumeResponse.add_member(:volume_id, Shapes::ShapeRef.new(shape: VolumeId, location_name: "VolumeId")) + CopySnapshotAndUpdateVolumeResponse.add_member(:lifecycle, Shapes::ShapeRef.new(shape: VolumeLifecycle, location_name: "Lifecycle")) + CopySnapshotAndUpdateVolumeResponse.add_member(:administrative_actions, Shapes::ShapeRef.new(shape: AdministrativeActions, location_name: "AdministrativeActions")) + CopySnapshotAndUpdateVolumeResponse.struct_class = Types::CopySnapshotAndUpdateVolumeResponse + + CreateAggregateConfiguration.add_member(:aggregates, Shapes::ShapeRef.new(shape: Aggregates, location_name: "Aggregates")) + CreateAggregateConfiguration.add_member(:constituents_per_aggregate, Shapes::ShapeRef.new(shape: AggregateListMultiplier, location_name: "ConstituentsPerAggregate")) + CreateAggregateConfiguration.struct_class = Types::CreateAggregateConfiguration + CreateBackupRequest.add_member(:file_system_id, Shapes::ShapeRef.new(shape: FileSystemId, location_name: "FileSystemId")) CreateBackupRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestToken, location_name: "ClientRequestToken", metadata: {"idempotencyToken"=>true})) CreateBackupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "Tags")) @@ -649,8 +694,10 @@ module ClientApi CreateFileSystemOntapConfiguration.add_member(:disk_iops_configuration, Shapes::ShapeRef.new(shape: DiskIopsConfiguration, location_name: "DiskIopsConfiguration")) CreateFileSystemOntapConfiguration.add_member(:preferred_subnet_id, Shapes::ShapeRef.new(shape: SubnetId, location_name: "PreferredSubnetId")) CreateFileSystemOntapConfiguration.add_member(:route_table_ids, Shapes::ShapeRef.new(shape: RouteTableIds, location_name: "RouteTableIds")) - CreateFileSystemOntapConfiguration.add_member(:throughput_capacity, Shapes::ShapeRef.new(shape: MegabytesPerSecond, required: true, location_name: "ThroughputCapacity")) + CreateFileSystemOntapConfiguration.add_member(:throughput_capacity, Shapes::ShapeRef.new(shape: MegabytesPerSecond, location_name: "ThroughputCapacity")) CreateFileSystemOntapConfiguration.add_member(:weekly_maintenance_start_time, Shapes::ShapeRef.new(shape: WeeklyTime, location_name: "WeeklyMaintenanceStartTime")) + CreateFileSystemOntapConfiguration.add_member(:ha_pairs, Shapes::ShapeRef.new(shape: HAPairs, location_name: "HAPairs")) + CreateFileSystemOntapConfiguration.add_member(:throughput_capacity_per_ha_pair, Shapes::ShapeRef.new(shape: ThroughputCapacityPerHAPair, location_name: "ThroughputCapacityPerHAPair")) CreateFileSystemOntapConfiguration.struct_class = Types::CreateFileSystemOntapConfiguration CreateFileSystemOpenZFSConfiguration.add_member(:automatic_backup_retention_days, Shapes::ShapeRef.new(shape: AutomaticBackupRetentionDays, location_name: "AutomaticBackupRetentionDays")) @@ -701,7 +748,7 @@ module ClientApi CreateOntapVolumeConfiguration.add_member(:junction_path, Shapes::ShapeRef.new(shape: JunctionPath, location_name: "JunctionPath")) CreateOntapVolumeConfiguration.add_member(:security_style, Shapes::ShapeRef.new(shape: SecurityStyle, location_name: "SecurityStyle")) - CreateOntapVolumeConfiguration.add_member(:size_in_megabytes, Shapes::ShapeRef.new(shape: VolumeCapacity, required: true, location_name: "SizeInMegabytes")) + CreateOntapVolumeConfiguration.add_member(:size_in_megabytes, Shapes::ShapeRef.new(shape: VolumeCapacity, deprecated: true, location_name: "SizeInMegabytes", metadata: {"deprecatedMessage"=>"This property is deprecated, use SizeInBytes instead"})) CreateOntapVolumeConfiguration.add_member(:storage_efficiency_enabled, Shapes::ShapeRef.new(shape: Flag, location_name: "StorageEfficiencyEnabled")) CreateOntapVolumeConfiguration.add_member(:storage_virtual_machine_id, Shapes::ShapeRef.new(shape: StorageVirtualMachineId, required: true, location_name: "StorageVirtualMachineId")) CreateOntapVolumeConfiguration.add_member(:tiering_policy, Shapes::ShapeRef.new(shape: TieringPolicy, location_name: "TieringPolicy")) @@ -709,6 +756,9 @@ module ClientApi CreateOntapVolumeConfiguration.add_member(:snapshot_policy, Shapes::ShapeRef.new(shape: SnapshotPolicy, location_name: "SnapshotPolicy")) CreateOntapVolumeConfiguration.add_member(:copy_tags_to_backups, Shapes::ShapeRef.new(shape: Flag, location_name: "CopyTagsToBackups")) CreateOntapVolumeConfiguration.add_member(:snaplock_configuration, Shapes::ShapeRef.new(shape: CreateSnaplockConfiguration, location_name: "SnaplockConfiguration")) + CreateOntapVolumeConfiguration.add_member(:volume_style, Shapes::ShapeRef.new(shape: VolumeStyle, location_name: "VolumeStyle")) + CreateOntapVolumeConfiguration.add_member(:aggregate_configuration, Shapes::ShapeRef.new(shape: CreateAggregateConfiguration, location_name: "AggregateConfiguration")) + CreateOntapVolumeConfiguration.add_member(:size_in_bytes, Shapes::ShapeRef.new(shape: VolumeCapacityBytes, location_name: "SizeInBytes")) CreateOntapVolumeConfiguration.struct_class = Types::CreateOntapVolumeConfiguration CreateOpenZFSOriginSnapshotConfiguration.add_member(:snapshot_arn, Shapes::ShapeRef.new(shape: ResourceARN, required: true, location_name: "SnapshotARN")) @@ -1032,6 +1082,11 @@ module ClientApi DescribeFileSystemsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken")) DescribeFileSystemsResponse.struct_class = Types::DescribeFileSystemsResponse + DescribeSharedVpcConfigurationRequest.struct_class = Types::DescribeSharedVpcConfigurationRequest + + DescribeSharedVpcConfigurationResponse.add_member(:enable_fsx_route_table_updates_from_participant_accounts, Shapes::ShapeRef.new(shape: VerboseFlag, location_name: "EnableFsxRouteTableUpdatesFromParticipantAccounts")) + DescribeSharedVpcConfigurationResponse.struct_class = Types::DescribeSharedVpcConfigurationResponse + DescribeSnapshotsRequest.add_member(:snapshot_ids, Shapes::ShapeRef.new(shape: SnapshotIds, location_name: "SnapshotIds")) DescribeSnapshotsRequest.add_member(:filters, Shapes::ShapeRef.new(shape: SnapshotFilters, location_name: "Filters")) DescribeSnapshotsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults")) @@ -1312,6 +1367,8 @@ module ClientApi OntapFileSystemConfiguration.add_member(:throughput_capacity, Shapes::ShapeRef.new(shape: MegabytesPerSecond, location_name: "ThroughputCapacity")) OntapFileSystemConfiguration.add_member(:weekly_maintenance_start_time, Shapes::ShapeRef.new(shape: WeeklyTime, location_name: "WeeklyMaintenanceStartTime")) OntapFileSystemConfiguration.add_member(:fsx_admin_password, Shapes::ShapeRef.new(shape: AdminPassword, location_name: "FsxAdminPassword")) + OntapFileSystemConfiguration.add_member(:ha_pairs, Shapes::ShapeRef.new(shape: HAPairs, location_name: "HAPairs")) + OntapFileSystemConfiguration.add_member(:throughput_capacity_per_ha_pair, Shapes::ShapeRef.new(shape: ThroughputCapacityPerHAPair, location_name: "ThroughputCapacityPerHAPair")) OntapFileSystemConfiguration.struct_class = Types::OntapFileSystemConfiguration OntapVolumeConfiguration.add_member(:flex_cache_endpoint_type, Shapes::ShapeRef.new(shape: FlexCacheEndpointType, location_name: "FlexCacheEndpointType")) @@ -1327,6 +1384,9 @@ module ClientApi OntapVolumeConfiguration.add_member(:snapshot_policy, Shapes::ShapeRef.new(shape: SnapshotPolicy, location_name: "SnapshotPolicy")) OntapVolumeConfiguration.add_member(:copy_tags_to_backups, Shapes::ShapeRef.new(shape: Flag, location_name: "CopyTagsToBackups")) OntapVolumeConfiguration.add_member(:snaplock_configuration, Shapes::ShapeRef.new(shape: SnaplockConfiguration, location_name: "SnaplockConfiguration")) + OntapVolumeConfiguration.add_member(:volume_style, Shapes::ShapeRef.new(shape: VolumeStyle, location_name: "VolumeStyle")) + OntapVolumeConfiguration.add_member(:aggregate_configuration, Shapes::ShapeRef.new(shape: AggregateConfiguration, location_name: "AggregateConfiguration")) + OntapVolumeConfiguration.add_member(:size_in_bytes, Shapes::ShapeRef.new(shape: VolumeCapacityBytes, location_name: "SizeInBytes")) OntapVolumeConfiguration.struct_class = Types::OntapVolumeConfiguration OpenZFSClientConfiguration.add_member(:clients, Shapes::ShapeRef.new(shape: OpenZFSClients, required: true, location_name: "Clients")) @@ -1390,6 +1450,9 @@ module ClientApi OpenZFSVolumeConfiguration.add_member(:restore_to_snapshot, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "RestoreToSnapshot")) OpenZFSVolumeConfiguration.add_member(:delete_intermediate_snaphots, Shapes::ShapeRef.new(shape: Flag, location_name: "DeleteIntermediateSnaphots")) OpenZFSVolumeConfiguration.add_member(:delete_cloned_volumes, Shapes::ShapeRef.new(shape: Flag, location_name: "DeleteClonedVolumes")) + OpenZFSVolumeConfiguration.add_member(:delete_intermediate_data, Shapes::ShapeRef.new(shape: Flag, location_name: "DeleteIntermediateData")) + OpenZFSVolumeConfiguration.add_member(:source_snapshot_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "SourceSnapshotARN")) + OpenZFSVolumeConfiguration.add_member(:destination_snapshot, Shapes::ShapeRef.new(shape: SnapshotId, location_name: "DestinationSnapshot")) OpenZFSVolumeConfiguration.struct_class = Types::OpenZFSVolumeConfiguration ReleaseConfiguration.add_member(:duration_since_last_access, Shapes::ShapeRef.new(shape: DurationSinceLastAccess, location_name: "DurationSinceLastAccess")) @@ -1629,6 +1692,7 @@ module ClientApi UpdateFileSystemOntapConfiguration.add_member(:throughput_capacity, Shapes::ShapeRef.new(shape: MegabytesPerSecond, location_name: "ThroughputCapacity")) UpdateFileSystemOntapConfiguration.add_member(:add_route_table_ids, Shapes::ShapeRef.new(shape: RouteTableIds, location_name: "AddRouteTableIds")) UpdateFileSystemOntapConfiguration.add_member(:remove_route_table_ids, Shapes::ShapeRef.new(shape: RouteTableIds, location_name: "RemoveRouteTableIds")) + UpdateFileSystemOntapConfiguration.add_member(:throughput_capacity_per_ha_pair, Shapes::ShapeRef.new(shape: ThroughputCapacityPerHAPair, location_name: "ThroughputCapacityPerHAPair")) UpdateFileSystemOntapConfiguration.struct_class = Types::UpdateFileSystemOntapConfiguration UpdateFileSystemOpenZFSConfiguration.add_member(:automatic_backup_retention_days, Shapes::ShapeRef.new(shape: AutomaticBackupRetentionDays, location_name: "AutomaticBackupRetentionDays")) @@ -1672,6 +1736,7 @@ module ClientApi UpdateOntapVolumeConfiguration.add_member(:snapshot_policy, Shapes::ShapeRef.new(shape: SnapshotPolicy, location_name: "SnapshotPolicy")) UpdateOntapVolumeConfiguration.add_member(:copy_tags_to_backups, Shapes::ShapeRef.new(shape: Flag, location_name: "CopyTagsToBackups")) UpdateOntapVolumeConfiguration.add_member(:snaplock_configuration, Shapes::ShapeRef.new(shape: UpdateSnaplockConfiguration, location_name: "SnaplockConfiguration")) + UpdateOntapVolumeConfiguration.add_member(:size_in_bytes, Shapes::ShapeRef.new(shape: VolumeCapacityBytes, location_name: "SizeInBytes")) UpdateOntapVolumeConfiguration.struct_class = Types::UpdateOntapVolumeConfiguration UpdateOpenZFSVolumeConfiguration.add_member(:storage_capacity_reservation_gi_b, Shapes::ShapeRef.new(shape: IntegerNoMaxFromNegativeOne, location_name: "StorageCapacityReservationGiB")) @@ -1683,6 +1748,15 @@ module ClientApi UpdateOpenZFSVolumeConfiguration.add_member(:read_only, Shapes::ShapeRef.new(shape: ReadOnly, location_name: "ReadOnly")) UpdateOpenZFSVolumeConfiguration.struct_class = Types::UpdateOpenZFSVolumeConfiguration + UpdateOpenZFSVolumeOptions.member = Shapes::ShapeRef.new(shape: UpdateOpenZFSVolumeOption) + + UpdateSharedVpcConfigurationRequest.add_member(:enable_fsx_route_table_updates_from_participant_accounts, Shapes::ShapeRef.new(shape: VerboseFlag, location_name: "EnableFsxRouteTableUpdatesFromParticipantAccounts")) + UpdateSharedVpcConfigurationRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestToken, location_name: "ClientRequestToken", metadata: {"idempotencyToken"=>true})) + UpdateSharedVpcConfigurationRequest.struct_class = Types::UpdateSharedVpcConfigurationRequest + + UpdateSharedVpcConfigurationResponse.add_member(:enable_fsx_route_table_updates_from_participant_accounts, Shapes::ShapeRef.new(shape: VerboseFlag, location_name: "EnableFsxRouteTableUpdatesFromParticipantAccounts")) + UpdateSharedVpcConfigurationResponse.struct_class = Types::UpdateSharedVpcConfigurationResponse + UpdateSnaplockConfiguration.add_member(:audit_log_volume, Shapes::ShapeRef.new(shape: Flag, location_name: "AuditLogVolume")) UpdateSnaplockConfiguration.add_member(:autocommit_period, Shapes::ShapeRef.new(shape: AutocommitPeriod, location_name: "AutocommitPeriod")) UpdateSnaplockConfiguration.add_member(:privileged_delete, Shapes::ShapeRef.new(shape: PrivilegedDelete, location_name: "PrivilegedDelete")) @@ -1839,6 +1913,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: IncompatibleRegionForMultiAZ) end) + api.add_operation(:copy_snapshot_and_update_volume, Seahorse::Model::Operation.new.tap do |o| + o.name = "CopySnapshotAndUpdateVolume" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: CopySnapshotAndUpdateVolumeRequest) + o.output = Shapes::ShapeRef.new(shape: CopySnapshotAndUpdateVolumeResponse) + o.errors << Shapes::ShapeRef.new(shape: BadRequest) + o.errors << Shapes::ShapeRef.new(shape: IncompatibleParameterError) + o.errors << Shapes::ShapeRef.new(shape: InternalServerError) + o.errors << Shapes::ShapeRef.new(shape: ServiceLimitExceeded) + end) + api.add_operation(:create_backup, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateBackup" o.http_method = "POST" @@ -2190,6 +2276,16 @@ module ClientApi ) end) + api.add_operation(:describe_shared_vpc_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeSharedVpcConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: DescribeSharedVpcConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: DescribeSharedVpcConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: BadRequest) + o.errors << Shapes::ShapeRef.new(shape: InternalServerError) + end) + api.add_operation(:describe_snapshots, Seahorse::Model::Operation.new.tap do |o| o.name = "DescribeSnapshots" o.http_method = "POST" @@ -2376,6 +2472,17 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceLimitExceeded) end) + api.add_operation(:update_shared_vpc_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSharedVpcConfiguration" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: UpdateSharedVpcConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateSharedVpcConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: BadRequest) + o.errors << Shapes::ShapeRef.new(shape: IncompatibleParameterError) + o.errors << Shapes::ShapeRef.new(shape: InternalServerError) + end) + api.add_operation(:update_snapshot, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateSnapshot" o.http_method = "POST" diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/endpoints.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/endpoints.rb index c34f3eb6f5e..2281bec254b 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/endpoints.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/endpoints.rb @@ -54,6 +54,20 @@ def self.build(context) end end + class CopySnapshotAndUpdateVolume + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::FSx::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateBackup def self.build(context) unless context.config.regional_endpoint @@ -376,6 +390,20 @@ def self.build(context) end end + class DescribeSharedVpcConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::FSx::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DescribeSnapshots def self.build(context) unless context.config.regional_endpoint @@ -558,6 +586,20 @@ def self.build(context) end end + class UpdateSharedVpcConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::FSx::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UpdateSnapshot def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/plugins/endpoints.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/plugins/endpoints.rb index 574c704c758..9e3bc5f27b7 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/plugins/endpoints.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/plugins/endpoints.rb @@ -62,6 +62,8 @@ def parameters_for_operation(context) Aws::FSx::Endpoints::CancelDataRepositoryTask.build(context) when :copy_backup Aws::FSx::Endpoints::CopyBackup.build(context) + when :copy_snapshot_and_update_volume + Aws::FSx::Endpoints::CopySnapshotAndUpdateVolume.build(context) when :create_backup Aws::FSx::Endpoints::CreateBackup.build(context) when :create_data_repository_association @@ -108,6 +110,8 @@ def parameters_for_operation(context) Aws::FSx::Endpoints::DescribeFileSystemAliases.build(context) when :describe_file_systems Aws::FSx::Endpoints::DescribeFileSystems.build(context) + when :describe_shared_vpc_configuration + Aws::FSx::Endpoints::DescribeSharedVpcConfiguration.build(context) when :describe_snapshots Aws::FSx::Endpoints::DescribeSnapshots.build(context) when :describe_storage_virtual_machines @@ -134,6 +138,8 @@ def parameters_for_operation(context) Aws::FSx::Endpoints::UpdateFileCache.build(context) when :update_file_system Aws::FSx::Endpoints::UpdateFileSystem.build(context) + when :update_shared_vpc_configuration + Aws::FSx::Endpoints::UpdateSharedVpcConfiguration.build(context) when :update_snapshot Aws::FSx::Endpoints::UpdateSnapshot.build(context) when :update_storage_virtual_machine diff --git a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/types.rb b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/types.rb index e23b49f87b5..ec592b76862 100644 --- a/gems/aws-sdk-fsx/lib/aws-sdk-fsx/types.rb +++ b/gems/aws-sdk-fsx/lib/aws-sdk-fsx/types.rb @@ -70,7 +70,7 @@ class ActiveDirectoryError < Struct.new( end # Describes a specific Amazon FSx administrative action for the current - # Windows, Lustre, or OpenZFS file system. + # Windows, Lustre, OpenZFS, or ONTAP file system or volume. # # @!attribute [rw] administrative_action_type # Describes the type of administrative action, as follows: @@ -126,8 +126,8 @@ class ActiveDirectoryError < Struct.new( # `ProgressPercent` property. When `IOPS_OPTIMIZATION` has been # completed successfully, the parent `FILE_SYSTEM_UPDATE` action # status changes to `COMPLETED`. For more information, see [Managing - # provisioned SSD IOPS][7] in the *Amazon FSx for Windows File - # Server User Guide*. + # provisioned SSD IOPS][7] in the Amazon FSx for Windows File Server + # User Guide. # # * `STORAGE_TYPE_OPTIMIZATION` - After the `FILE_SYSTEM_UPDATE` task # to increase a file system's throughput capacity has been @@ -138,9 +138,9 @@ class ActiveDirectoryError < Struct.new( # been completed successfully, the parent `FILE_SYSTEM_UPDATE` # action status changes to `COMPLETED`. # - # * `VOLUME_UPDATE` - A volume update to an Amazon FSx for NetApp - # ONTAP or Amazon FSx for OpenZFS volume initiated from the Amazon - # FSx console, API (`UpdateVolume`), or CLI (`update-volume`). + # * `VOLUME_UPDATE` - A volume update to an Amazon FSx for OpenZFS + # volume initiated from the Amazon FSx console, API + # (`UpdateVolume`), or CLI (`update-volume`). # # * `VOLUME_RESTORE` - An Amazon FSx for OpenZFS volume is returned to # the state saved by the specified snapshot, initiated from an API @@ -154,6 +154,18 @@ class ActiveDirectoryError < Struct.new( # * `RELEASE_NFS_V3_LOCKS` - Tracks the release of Network File System # (NFS) V3 locks on an Amazon FSx for OpenZFS file system. # + # * `VOLUME_INITIALIZE_WITH_SNAPSHOT` - A volume is being created from + # a snapshot on a different FSx for OpenZFS file system. You can + # initiate this from the Amazon FSx console, API (`CreateVolume`), + # or CLI (`create-volume`) when using the using the `FULL_COPY` + # strategy. + # + # * `VOLUME_UPDATE_WITH_SNAPSHOT` - A volume is being updated from a + # snapshot on a different FSx for OpenZFS file system. You can + # initiate this from the Amazon FSx console, API + # (`CopySnapshotAndUpdateVolume`), or CLI + # (`copy-snapshot-and-update-volume`). + # # # # [1]: https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-throughput-capacity.html @@ -176,7 +188,7 @@ class ActiveDirectoryError < Struct.new( # @return [Time] # # @!attribute [rw] status - # Describes the status of the administrative action, as follows: + # The status of the administrative action, as follows: # # * `FAILED` - Amazon FSx failed to process the administrative action # successfully. @@ -196,9 +208,9 @@ class ActiveDirectoryError < Struct.new( # @return [String] # # @!attribute [rw] target_file_system_values - # Describes the target value for the administration action, provided - # in the `UpdateFileSystem` operation. Returned for - # `FILE_SYSTEM_UPDATE` administrative actions. + # The target value for the administration action, provided in the + # `UpdateFileSystem` operation. Returned for `FILE_SYSTEM_UPDATE` + # administrative actions. # @return [Types::FileSystem] # # @!attribute [rw] failure_details @@ -206,14 +218,23 @@ class ActiveDirectoryError < Struct.new( # @return [Types::AdministrativeActionFailureDetails] # # @!attribute [rw] target_volume_values - # Describes an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS - # volume. + # Describes an Amazon FSx volume. # @return [Types::Volume] # # @!attribute [rw] target_snapshot_values # A snapshot of an Amazon FSx for OpenZFS volume. # @return [Types::Snapshot] # + # @!attribute [rw] total_transfer_bytes + # The number of bytes that have transferred for the FSx for OpenZFS + # snapshot that you're copying. + # @return [Integer] + # + # @!attribute [rw] remaining_transfer_bytes + # The remaining bytes to transfer for the FSx for OpenZFS snapshot + # that you're copying. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/AdministrativeAction AWS API Documentation # class AdministrativeAction < Struct.new( @@ -224,7 +245,9 @@ class AdministrativeAction < Struct.new( :target_file_system_values, :failure_details, :target_volume_values, - :target_snapshot_values) + :target_snapshot_values, + :total_transfer_bytes, + :remaining_transfer_bytes) SENSITIVE = [] include Aws::Structure end @@ -244,6 +267,43 @@ class AdministrativeActionFailureDetails < Struct.new( include Aws::Structure end + # Used to specify configuration options for a volume’s storage aggregate + # or aggregates. + # + # @!attribute [rw] aggregates + # The list of aggregates that this volume resides on. Aggregates are + # storage pools which make up your primary storage tier. Each + # high-availability (HA) pair has one aggregate. The names of the + # aggregates map to the names of the aggregates in the ONTAP CLI and + # REST API. For FlexVols, there will always be a single entry. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The strings in the value of `Aggregates` are not are not formatted + # as `aggrX`, where X is a number between 1 and 6. + # + # * The value of `Aggregates` contains aggregates that are not + # present. + # + # * One or more of the aggregates supplied are too close to the volume + # limit to support adding more volumes. + # @return [Array] + # + # @!attribute [rw] total_constituents + # The total number of constituents this FlexGroup volume has. Not + # applicable for FlexVols. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/AggregateConfiguration AWS API Documentation + # + class AggregateConfiguration < Struct.new( + :aggregates, + :total_constituents) + SENSITIVE = [] + include Aws::Structure + end + # A DNS alias that is associated with the file system. You can use a DNS # alias to access a file system using user-defined DNS names, in # addition to the default DNS name that Amazon FSx assigns to the file @@ -569,8 +629,7 @@ class AutocommitPeriod < Struct.new( # @return [String] # # @!attribute [rw] volume - # Describes an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS - # volume. + # Describes an Amazon FSx volume. # @return [Types::Volume] # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/Backup AWS API Documentation @@ -884,6 +943,128 @@ class CopyBackupResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] client_request_token + # (Optional) An idempotency token for resource creation, in a string + # of up to 63 ASCII characters. This token is automatically filled on + # your behalf when you use the Command Line Interface (CLI) or an + # Amazon Web Services SDK. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @!attribute [rw] volume_id + # Specifies the ID of the volume that you are copying the snapshot to. + # @return [String] + # + # @!attribute [rw] source_snapshot_arn + # The Amazon Resource Name (ARN) for a given resource. ARNs uniquely + # identify Amazon Web Services resources. We require an ARN when you + # need to specify a resource unambiguously across all of Amazon Web + # Services. For more information, see [Amazon Resource Names + # (ARNs)][1] in the *Amazon Web Services General Reference*. + # + # + # + # [1]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + # @return [String] + # + # @!attribute [rw] copy_strategy + # Specifies the strategy to use when copying data from a snapshot to + # the volume. + # + # * `FULL_COPY` - Copies all data from the snapshot to the volume. + # + # * `INCREMENTAL_COPY` - Copies only the snapshot data that's changed + # since the previous replication. + # + # `CLONE` isn't a valid copy strategy option for the + # `CopySnapshotAndUpdateVolume` operation. + # + # + # @return [String] + # + # @!attribute [rw] options + # Confirms that you want to delete data on the destination volume that + # wasn’t there during the previous snapshot replication. + # + # Your replication will fail if you don’t include an option for a + # specific type of data and that data is on your destination. For + # example, if you don’t include `DELETE_INTERMEDIATE_SNAPSHOTS` and + # there are intermediate snapshots on the destination, you can’t copy + # the snapshot. + # + # * `DELETE_INTERMEDIATE_SNAPSHOTS` - Deletes snapshots on the + # destination volume that aren’t on the source volume. + # + # * `DELETE_CLONED_VOLUMES` - Deletes snapshot clones on the + # destination volume that aren't on the source volume. + # + # * `DELETE_INTERMEDIATE_DATA` - Overwrites snapshots on the + # destination volume that don’t match the source snapshot that + # you’re copying. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CopySnapshotAndUpdateVolumeRequest AWS API Documentation + # + class CopySnapshotAndUpdateVolumeRequest < Struct.new( + :client_request_token, + :volume_id, + :source_snapshot_arn, + :copy_strategy, + :options) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] volume_id + # The ID of the volume that you copied the snapshot to. + # @return [String] + # + # @!attribute [rw] lifecycle + # The lifecycle state of the destination volume. + # @return [String] + # + # @!attribute [rw] administrative_actions + # A list of administrative actions for the file system that are in + # process or waiting to be processed. Administrative actions describe + # changes to the Amazon FSx system. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CopySnapshotAndUpdateVolumeResponse AWS API Documentation + # + class CopySnapshotAndUpdateVolumeResponse < Struct.new( + :volume_id, + :lifecycle, + :administrative_actions) + SENSITIVE = [] + include Aws::Structure + end + + # Used to specify the configuration options for a volume's storage + # aggregate or aggregates. + # + # @!attribute [rw] aggregates + # Used to specify the names of aggregates on which the volume will be + # created. + # @return [Array] + # + # @!attribute [rw] constituents_per_aggregate + # Used to explicitly set the number of constituents within the + # FlexGroup per storage aggregate. This field is optional when + # creating a FlexGroup volume. If unspecified, the default value will + # be 8. This field cannot be provided when creating a FlexVol volume. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateAggregateConfiguration AWS API Documentation + # + class CreateAggregateConfiguration < Struct.new( + :aggregates, + :constituents_per_aggregate) + SENSITIVE = [] + include Aws::Structure + end + # The request object for the `CreateBackup` operation. # # @!attribute [rw] file_system_id @@ -1462,7 +1643,8 @@ class CreateFileCacheResponse < Struct.new( # # If used to create a file system other than OpenZFS, you must provide # a value that matches the backup's `StorageCapacity` value. If you - # provide any other value, Amazon FSx responds with a 400 Bad Request. + # provide any other value, Amazon FSx responds with with an HTTP + # status code 400 Bad Request. # @return [Integer] # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateFileSystemFromBackupRequest AWS API Documentation @@ -1801,6 +1983,9 @@ class CreateFileSystemLustreConfiguration < Struct.new( # # * `SINGLE_AZ_1` - A file system configured for Single-AZ redundancy. # + # * `SINGLE_AZ_2` - A file system configured with multiple + # high-availability (HA) pairs for Single-AZ redundancy. + # # For information about the use cases for Multi-AZ and Single-AZ # deployments, refer to [Choosing a file system deployment type][1]. # @@ -1847,7 +2032,21 @@ class CreateFileSystemLustreConfiguration < Struct.new( # # @!attribute [rw] throughput_capacity # Sets the throughput capacity for the file system that you're - # creating. Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps. + # creating in megabytes per second (MBps). For more information, see + # [Managing throughput capacity][1] in the FSx for ONTAP User Guide. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `ThroughputCapacity` and + # `ThroughputCapacityPerHAPair` are not the same value. + # + # * The value of `ThroughputCapacity` when divided by the value of + # `HAPairs` is outside of the valid range for `ThroughputCapacity`. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-throughput-capacity.html # @return [Integer] # # @!attribute [rw] weekly_maintenance_start_time @@ -1867,6 +2066,50 @@ class CreateFileSystemLustreConfiguration < Struct.new( # [1]: https://en.wikipedia.org/wiki/ISO_week_date # @return [String] # + # @!attribute [rw] ha_pairs + # Specifies how many high-availability (HA) pairs the file system will + # have. The default value is 1. The value of this property affects the + # values of `StorageCapacity`, `Iops`, and `ThroughputCapacity`. For + # more information, see [High-availability (HA) pairs][1] in the FSx + # for ONTAP user guide. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `HAPairs` is less than 1 or greater than 6. + # + # * The value of `HAPairs` is greater than 1 and the value of + # `DeploymentType` is `SINGLE_AZ_1` or `MULTI_AZ_1`. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/HA-pairs.html + # @return [Integer] + # + # @!attribute [rw] throughput_capacity_per_ha_pair + # Use to choose the throughput capacity per HA pair, rather than the + # total throughput for the file system. + # + # This field and `ThroughputCapacity` cannot be defined in the same + # API call, but one is required. + # + # This field and `ThroughputCapacity` are the same for file systems + # with one HA pair. + # + # * For `SINGLE_AZ_1` and `MULTI_AZ_1`, valid values are 128, 256, + # 512, 1024, 2048, or 4096 MBps. + # + # * For `SINGLE_AZ_2`, valid values are 3072 or 6144 MBps. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `ThroughputCapacity` and + # `ThroughputCapacityPerHAPair` are not the same value + # + # * The value of `ThroughputCapacityPerHAPair` is not a valid value. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateFileSystemOntapConfiguration AWS API Documentation # class CreateFileSystemOntapConfiguration < Struct.new( @@ -1879,7 +2122,9 @@ class CreateFileSystemOntapConfiguration < Struct.new( :preferred_subnet_id, :route_table_ids, :throughput_capacity, - :weekly_maintenance_start_time) + :weekly_maintenance_start_time, + :ha_pairs, + :throughput_capacity_per_ha_pair) SENSITIVE = [:fsx_admin_password] include Aws::Structure end @@ -2079,7 +2324,9 @@ class CreateFileSystemOpenZFSConfiguration < Struct.new( # GiB, and increments of 3600 GiB. # # **FSx for ONTAP file systems** - The amount of storage capacity that - # you can configure is from 1024 GiB up to 196,608 GiB (192 TiB). + # you can configure depends on the value of the `HAPairs` property. + # The minimum value is calculated as 1,024 * `HAPairs` and the maxium + # is calculated as 524,288 * `HAPairs`.. # # **FSx for OpenZFS file systems** - The amount of storage capacity # that you can configure is from 64 GiB up to 524,288 GiB (512 TiB). @@ -2564,6 +2811,25 @@ class CreateFileSystemWindowsConfiguration < Struct.new( # Specifies the SnapLock configuration for an FSx for ONTAP volume. # @return [Types::CreateSnaplockConfiguration] # + # @!attribute [rw] volume_style + # Use to specify the style of an ONTAP volume. For more information + # about FlexVols and FlexGroups, see [Volume types][1] in Amazon FSx + # for NetApp ONTAP User Guide. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/volume-types.html + # @return [String] + # + # @!attribute [rw] aggregate_configuration + # Use to specify configuration options for a volume’s storage + # aggregate or aggregates. + # @return [Types::CreateAggregateConfiguration] + # + # @!attribute [rw] size_in_bytes + # The configured size of the volume, in bytes. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateOntapVolumeConfiguration AWS API Documentation # class CreateOntapVolumeConfiguration < Struct.new( @@ -2576,13 +2842,16 @@ class CreateOntapVolumeConfiguration < Struct.new( :ontap_volume_type, :snapshot_policy, :copy_tags_to_backups, - :snaplock_configuration) + :snaplock_configuration, + :volume_style, + :aggregate_configuration, + :size_in_bytes) SENSITIVE = [] include Aws::Structure end - # The snapshot configuration to use when creating an OpenZFS volume from - # a snapshot. + # The snapshot configuration to use when creating an Amazon FSx for + # OpenZFS volume from a snapshot. # # @!attribute [rw] snapshot_arn # The Amazon Resource Name (ARN) for a given resource. ARNs uniquely @@ -2597,8 +2866,8 @@ class CreateOntapVolumeConfiguration < Struct.new( # @return [String] # # @!attribute [rw] copy_strategy - # The strategy used when copying data from the snapshot to the new - # volume. + # Specifies the strategy used when copying data from the snapshot to + # the new volume. # # * `CLONE` - The new volume references the data in the origin # snapshot. Cloning a snapshot is faster than copying data from the @@ -2607,6 +2876,19 @@ class CreateOntapVolumeConfiguration < Struct.new( # volume using its copied data. # # * `FULL_COPY` - Copies all data from the snapshot to the new volume. + # + # Specify this option to create the volume from a snapshot on + # another FSx for OpenZFS file system. + # + # The `INCREMENTAL_COPY` option is only for updating an existing + # volume by using a snapshot from another FSx for OpenZFS file system. + # For more information, see [CopySnapshotAndUpdateVolume][1]. + # + # + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/APIReference/API_CopySnapshotAndUpdateVolume.html # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/CreateOpenZFSOriginSnapshotConfiguration AWS API Documentation @@ -4680,6 +4962,25 @@ class DescribeFileSystemsResponse < Struct.new( include Aws::Structure end + # @api private + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeSharedVpcConfigurationRequest AWS API Documentation + # + class DescribeSharedVpcConfigurationRequest < Aws::EmptyStructure; end + + # @!attribute [rw] enable_fsx_route_table_updates_from_participant_accounts + # Indicates whether participant accounts can create FSx for ONTAP + # Multi-AZ file systems in shared subnets. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DescribeSharedVpcConfigurationResponse AWS API Documentation + # + class DescribeSharedVpcConfigurationResponse < Struct.new( + :enable_fsx_route_table_updates_from_participant_accounts) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] snapshot_ids # The IDs of the snapshots that you want to retrieve. This parameter # value overrides any filters. If any IDs aren't found, a @@ -4906,6 +5207,15 @@ class DisassociateFileSystemAliasesResponse < Struct.new( # # @!attribute [rw] iops # The total number of SSD IOPS provisioned for the file system. + # + # The minimum and maximum values for this property depend on the value + # of `HAPairs` and `StorageCapacity`. The minimum value is calculated + # as `StorageCapacity` * 3 * `HAPairs` (3 IOPS per GB of + # `StorageCapacity`). The maximum value is calculated as 200,000 * + # `HAPairs`. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) if + # the value of `Iops` is outside of the minimum or maximum values. # @return [Integer] # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DiskIopsConfiguration AWS API Documentation @@ -5487,6 +5797,10 @@ class FileCacheNotFound < Struct.new( # # @!attribute [rw] storage_capacity # The storage capacity of the file system in gibibytes (GiB). + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) if + # the value of `StorageCapacity` is outside of the minimum or maximum + # values. # @return [Integer] # # @!attribute [rw] storage_type @@ -6378,6 +6692,9 @@ class NotServiceResourceError < Struct.new( # # * `SINGLE_AZ_1` - A file system configured for Single-AZ redundancy. # + # * `SINGLE_AZ_2` - A file system configured with multiple + # high-availability (HA) pairs for Single-AZ redundancy. + # # For information about the use cases for Multi-AZ and Single-AZ # deployments, refer to [Choosing Multi-AZ or Single-AZ file system # deployment][1]. @@ -6452,6 +6769,55 @@ class NotServiceResourceError < Struct.new( # response. # @return [String] # + # @!attribute [rw] ha_pairs + # Specifies how many high-availability (HA) file server pairs the file + # system will have. The default value is 1. The value of this property + # affects the values of `StorageCapacity`, `Iops`, and + # `ThroughputCapacity`. For more information, see [High-availability + # (HA) pairs][1] in the FSx for ONTAP user guide. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `HAPairs` is less than 1 or greater than 6. + # + # * The value of `HAPairs` is greater than 1 and the value of + # `DeploymentType` is `SINGLE_AZ_1` or `MULTI_AZ_1`. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/HA-pairs.html + # @return [Integer] + # + # @!attribute [rw] throughput_capacity_per_ha_pair + # Use to choose the throughput capacity per HA pair. When the value of + # `HAPairs` is equal to 1, the value of `ThroughputCapacityPerHAPair` + # is the total throughput for the file system. + # + # This field and `ThroughputCapacity` cannot be defined in the same + # API call, but one is required. + # + # This field and `ThroughputCapacity` are the same for file systems + # with one HA pair. + # + # * For `SINGLE_AZ_1` and `MULTI_AZ_1`, valid values are 128, 256, + # 512, 1024, 2048, or 4096 MBps. + # + # * For `SINGLE_AZ_2`, valid values are 3072 or 6144 MBps. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `ThroughputCapacity` and + # `ThroughputCapacityPerHAPair` are not the same value. + # + # * The value of deployment type is `SINGLE_AZ_2` and + # `ThroughputCapacity` / `ThroughputCapacityPerHAPair` is a valid HA + # pair (a value between 2 and 6). + # + # * The value of `ThroughputCapacityPerHAPair` is not a valid value. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/OntapFileSystemConfiguration AWS API Documentation # class OntapFileSystemConfiguration < Struct.new( @@ -6465,7 +6831,9 @@ class OntapFileSystemConfiguration < Struct.new( :route_table_ids, :throughput_capacity, :weekly_maintenance_start_time, - :fsx_admin_password) + :fsx_admin_password, + :ha_pairs, + :throughput_capacity_per_ha_pair) SENSITIVE = [:fsx_admin_password] include Aws::Structure end @@ -6567,8 +6935,8 @@ class OntapFileSystemConfiguration < Struct.new( # You can also provide the name of a custom policy that you created # with the ONTAP CLI or REST API. # - # For more information, see [Snapshot policies][1] in the *Amazon FSx - # for NetApp ONTAP User Guide*. + # For more information, see [Snapshot policies][1] in the Amazon FSx + # for NetApp ONTAP User Guide. # # # @@ -6591,6 +6959,25 @@ class OntapFileSystemConfiguration < Struct.new( # volume. # @return [Types::SnaplockConfiguration] # + # @!attribute [rw] volume_style + # Use to specify the style of an ONTAP volume. For more information + # about FlexVols and FlexGroups, see [Volume types][1] in Amazon FSx + # for NetApp ONTAP User Guide. + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/volume-types.html + # @return [String] + # + # @!attribute [rw] aggregate_configuration + # This structure specifies configuration options for a volume’s + # storage aggregate or aggregates. + # @return [Types::AggregateConfiguration] + # + # @!attribute [rw] size_in_bytes + # The configured size of the volume, in bytes. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/OntapVolumeConfiguration AWS API Documentation # class OntapVolumeConfiguration < Struct.new( @@ -6606,7 +6993,10 @@ class OntapVolumeConfiguration < Struct.new( :ontap_volume_type, :snapshot_policy, :copy_tags_to_backups, - :snaplock_configuration) + :snaplock_configuration, + :volume_style, + :aggregate_configuration, + :size_in_bytes) SENSITIVE = [] include Aws::Structure end @@ -6860,8 +7250,8 @@ class OpenZFSNfsExport < Struct.new( include Aws::Structure end - # The snapshot configuration to use when creating an OpenZFS volume from - # a snapshot. + # The snapshot configuration used when creating an Amazon FSx for + # OpenZFS volume from a snapshot. # # @!attribute [rw] snapshot_arn # The Amazon Resource Name (ARN) for a given resource. ARNs uniquely @@ -6886,6 +7276,16 @@ class OpenZFSNfsExport < Struct.new( # volume using its copied data. # # * `FULL_COPY` - Copies all data from the snapshot to the new volume. + # + # The `INCREMENTAL_COPY` option is only for updating an existing + # volume by using a snapshot from another FSx for OpenZFS file system. + # For more information, see [CopySnapshotAndUpdateVolume][1]. + # + # + # + # + # + # [1]: https://docs.aws.amazon.com/fsx/latest/APIReference/API_CopySnapshotAndUpdateVolume.html # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/OpenZFSOriginSnapshotConfiguration AWS API Documentation @@ -7016,6 +7416,29 @@ class OpenZFSUserOrGroupQuota < Struct.new( # restored from snapshot. # @return [Boolean] # + # @!attribute [rw] delete_intermediate_data + # A Boolean value indicating whether snapshot data that differs + # between the current state and the specified snapshot should be + # overwritten when a volume is restored from a snapshot. + # @return [Boolean] + # + # @!attribute [rw] source_snapshot_arn + # The Amazon Resource Name (ARN) for a given resource. ARNs uniquely + # identify Amazon Web Services resources. We require an ARN when you + # need to specify a resource unambiguously across all of Amazon Web + # Services. For more information, see [Amazon Resource Names + # (ARNs)][1] in the *Amazon Web Services General Reference*. + # + # + # + # [1]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + # @return [String] + # + # @!attribute [rw] destination_snapshot + # The ID of the snapshot that's being copied or was most recently + # copied to the destination volume. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/OpenZFSVolumeConfiguration AWS API Documentation # class OpenZFSVolumeConfiguration < Struct.new( @@ -7032,7 +7455,10 @@ class OpenZFSVolumeConfiguration < Struct.new( :user_and_group_quotas, :restore_to_snapshot, :delete_intermediate_snaphots, - :delete_cloned_volumes) + :delete_cloned_volumes, + :delete_intermediate_data, + :source_snapshot_arn, + :destination_snapshot) SENSITIVE = [] include Aws::Structure end @@ -8460,10 +8886,18 @@ class UpdateFileSystemLustreConfiguration < Struct.new( # # @!attribute [rw] throughput_capacity # Enter a new value to change the amount of throughput capacity for - # the file system. Throughput capacity is measured in megabytes per - # second (MBps). Valid values are 128, 256, 512, 1024, 2048, and 4096 - # MBps. For more information, see [Managing throughput capacity][1] in - # the FSx for ONTAP User Guide. + # the file system in megabytes per second (MBps). For more + # information, see [Managing throughput capacity][1] in the FSx for + # ONTAP User Guide. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # * The value of `ThroughputCapacity` and + # `ThroughputCapacityPerHAPair` are not the same value. + # + # * The value of `ThroughputCapacity` when divided by the value of + # `HAPairs` is outside of the valid range for `ThroughputCapacity`. # # # @@ -8483,6 +8917,30 @@ class UpdateFileSystemLustreConfiguration < Struct.new( # the list of VPC route table IDs for a file system. # @return [Array] # + # @!attribute [rw] throughput_capacity_per_ha_pair + # Use to choose the throughput capacity per HA pair, rather than the + # total throughput for the file system. + # + # This field and `ThroughputCapacity` cannot be defined in the same + # API call, but one is required. + # + # This field and `ThroughputCapacity` are the same for file systems + # with one HA pair. + # + # * For `SINGLE_AZ_1` and `MULTI_AZ_1`, valid values are 128, 256, + # 512, 1024, 2048, or 4096 MBps. + # + # * For `SINGLE_AZ_2`, valid values are 3072 or 6144 MBps. + # + # Amazon FSx responds with an HTTP status code 400 (Bad Request) for + # the following conditions: + # + # The value of `ThroughputCapacity` and `ThroughputCapacityPerHAPair` + # are not the same value. + # + # The value of `ThroughputCapacityPerHAPair` is not a valid value. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateFileSystemOntapConfiguration AWS API Documentation # class UpdateFileSystemOntapConfiguration < Struct.new( @@ -8493,7 +8951,8 @@ class UpdateFileSystemOntapConfiguration < Struct.new( :disk_iops_configuration, :throughput_capacity, :add_route_table_ids, - :remove_route_table_ids) + :remove_route_table_ids, + :throughput_capacity_per_ha_pair) SENSITIVE = [:fsx_admin_password] include Aws::Structure end @@ -8870,6 +9329,10 @@ class UpdateFileSystemWindowsConfiguration < Struct.new( # an FSx for ONTAP SnapLock volume. # @return [Types::UpdateSnaplockConfiguration] # + # @!attribute [rw] size_in_bytes + # The configured size of the volume, in bytes. + # @return [Integer] + # # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateOntapVolumeConfiguration AWS API Documentation # class UpdateOntapVolumeConfiguration < Struct.new( @@ -8880,7 +9343,8 @@ class UpdateOntapVolumeConfiguration < Struct.new( :tiering_policy, :snapshot_policy, :copy_tags_to_backups, - :snaplock_configuration) + :snaplock_configuration, + :size_in_bytes) SENSITIVE = [] include Aws::Structure end @@ -8962,6 +9426,44 @@ class UpdateOpenZFSVolumeConfiguration < Struct.new( include Aws::Structure end + # @!attribute [rw] enable_fsx_route_table_updates_from_participant_accounts + # Specifies whether participant accounts can create FSx for ONTAP + # Multi-AZ file systems in shared subnets. Set to `true` to enable or + # `false` to disable. + # @return [String] + # + # @!attribute [rw] client_request_token + # (Optional) An idempotency token for resource creation, in a string + # of up to 63 ASCII characters. This token is automatically filled on + # your behalf when you use the Command Line Interface (CLI) or an + # Amazon Web Services SDK. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateSharedVpcConfigurationRequest AWS API Documentation + # + class UpdateSharedVpcConfigurationRequest < Struct.new( + :enable_fsx_route_table_updates_from_participant_accounts, + :client_request_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] enable_fsx_route_table_updates_from_participant_accounts + # Indicates whether participant accounts can create FSx for ONTAP + # Multi-AZ file systems in shared subnets. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/UpdateSharedVpcConfigurationResponse AWS API Documentation + # + class UpdateSharedVpcConfigurationResponse < Struct.new( + :enable_fsx_route_table_updates_from_participant_accounts) + SENSITIVE = [] + include Aws::Structure + end + # Updates the SnapLock configuration for an existing FSx for ONTAP # volume. # @@ -9198,8 +9700,7 @@ class UpdateVolumeResponse < Struct.new( include Aws::Structure end - # Describes an Amazon FSx for NetApp ONTAP or Amazon FSx for OpenZFS - # volume. + # Describes an Amazon FSx volume. # # @!attribute [rw] creation_time # The time that the resource was created, in seconds (since diff --git a/gems/aws-sdk-guardduty/CHANGELOG.md b/gems/aws-sdk-guardduty/CHANGELOG.md index e959bdc8301..373b767746e 100644 --- a/gems/aws-sdk-guardduty/CHANGELOG.md +++ b/gems/aws-sdk-guardduty/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.84.0 (2023-11-27) +------------------ + +* Feature - Add support for Runtime Monitoring for ECS and ECS-EC2. + 1.83.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-guardduty/VERSION b/gems/aws-sdk-guardduty/VERSION index 6b4de0a42b0..bd0f9e6c28f 100644 --- a/gems/aws-sdk-guardduty/VERSION +++ b/gems/aws-sdk-guardduty/VERSION @@ -1 +1 @@ -1.83.0 +1.84.0 diff --git a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty.rb b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty.rb index 6beabcbec64..32b7d7d9589 100644 --- a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty.rb +++ b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty.rb @@ -52,6 +52,6 @@ # @!group service module Aws::GuardDuty - GEM_VERSION = '1.83.0' + GEM_VERSION = '1.84.0' end diff --git a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client.rb b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client.rb index 340b3d841a0..04084d71dfe 100644 --- a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client.rb +++ b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client.rb @@ -563,11 +563,11 @@ def archive_findings(params = {}, options = {}) # }, # features: [ # { - # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS + # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING # status: "ENABLED", # accepts ENABLED, DISABLED # additional_configuration: [ # { - # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT + # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT, ECS_FARGATE_AGENT_MANAGEMENT # status: "ENABLED", # accepts ENABLED, DISABLED # }, # ], @@ -1565,10 +1565,10 @@ def describe_malware_scans(params = {}, options = {}) # resp.data_sources.kubernetes.audit_logs.auto_enable #=> Boolean # resp.data_sources.malware_protection.scan_ec2_instance_with_findings.ebs_volumes.auto_enable #=> Boolean # resp.features #=> Array - # resp.features[0].name #=> String, one of "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS" + # resp.features[0].name #=> String, one of "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS", "RUNTIME_MONITORING" # resp.features[0].auto_enable #=> String, one of "NEW", "NONE", "ALL" # resp.features[0].additional_configuration #=> Array - # resp.features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT" + # resp.features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT", "ECS_FARGATE_AGENT_MANAGEMENT" # resp.features[0].additional_configuration[0].auto_enable #=> String, one of "NEW", "NONE", "ALL" # resp.next_token #=> String # resp.auto_enable_organization_members #=> String, one of "NEW", "ALL", "NONE" @@ -1876,7 +1876,7 @@ def get_administrator_account(params = {}, options = {}) # filter_criteria: { # filter_criterion: [ # { - # criterion_key: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, RESOURCE_TYPE, COVERAGE_STATUS, ADDON_VERSION, MANAGEMENT_TYPE, EKS_CLUSTER_NAME + # criterion_key: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, RESOURCE_TYPE, COVERAGE_STATUS, ADDON_VERSION, MANAGEMENT_TYPE, EKS_CLUSTER_NAME, ECS_CLUSTER_NAME, AGENT_VERSION, INSTANCE_ID, CLUSTER_ARN # filter_condition: { # equals: ["String"], # not_equals: ["String"], @@ -1952,11 +1952,11 @@ def get_coverage_statistics(params = {}, options = {}) # resp.tags #=> Hash # resp.tags["TagKey"] #=> String # resp.features #=> Array - # resp.features[0].name #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS" + # resp.features[0].name #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS", "RUNTIME_MONITORING" # resp.features[0].status #=> String, one of "ENABLED", "DISABLED" # resp.features[0].updated_at #=> Time # resp.features[0].additional_configuration #=> Array - # resp.features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT" + # resp.features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT", "ECS_FARGATE_AGENT_MANAGEMENT" # resp.features[0].additional_configuration[0].status #=> String, one of "ENABLED", "DISABLED" # resp.features[0].additional_configuration[0].updated_at #=> Time # @@ -2756,11 +2756,11 @@ def get_master_account(params = {}, options = {}) # resp.member_data_source_configurations[0].data_sources.malware_protection.scan_ec2_instance_with_findings.ebs_volumes.reason #=> String # resp.member_data_source_configurations[0].data_sources.malware_protection.service_role #=> String # resp.member_data_source_configurations[0].features #=> Array - # resp.member_data_source_configurations[0].features[0].name #=> String, one of "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS" + # resp.member_data_source_configurations[0].features[0].name #=> String, one of "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS", "RUNTIME_MONITORING" # resp.member_data_source_configurations[0].features[0].status #=> String, one of "ENABLED", "DISABLED" # resp.member_data_source_configurations[0].features[0].updated_at #=> Time # resp.member_data_source_configurations[0].features[0].additional_configuration #=> Array - # resp.member_data_source_configurations[0].features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT" + # resp.member_data_source_configurations[0].features[0].additional_configuration[0].name #=> String, one of "EKS_ADDON_MANAGEMENT", "ECS_FARGATE_AGENT_MANAGEMENT" # resp.member_data_source_configurations[0].features[0].additional_configuration[0].status #=> String, one of "ENABLED", "DISABLED" # resp.member_data_source_configurations[0].features[0].additional_configuration[0].updated_at #=> Time # resp.unprocessed_accounts #=> Array @@ -2855,7 +2855,7 @@ def get_members(params = {}, options = {}) # resp.accounts[0].data_sources.kubernetes.audit_logs.free_trial_days_remaining #=> Integer # resp.accounts[0].data_sources.malware_protection.scan_ec2_instance_with_findings.free_trial_days_remaining #=> Integer # resp.accounts[0].features #=> Array - # resp.accounts[0].features[0].name #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS" + # resp.accounts[0].features[0].name #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "EKS_RUNTIME_MONITORING", "LAMBDA_NETWORK_LOGS", "FARGATE_RUNTIME_MONITORING", "EC2_RUNTIME_MONITORING" # resp.accounts[0].features[0].free_trial_days_remaining #=> Integer # resp.unprocessed_accounts #=> Array # resp.unprocessed_accounts[0].account_id #=> String @@ -2964,7 +2964,7 @@ def get_threat_intel_set(params = {}, options = {}) # account_ids: ["AccountId"], # data_sources: ["FLOW_LOGS"], # accepts FLOW_LOGS, CLOUD_TRAIL, DNS_LOGS, S3_LOGS, KUBERNETES_AUDIT_LOGS, EC2_MALWARE_SCAN # resources: ["String"], - # features: ["FLOW_LOGS"], # accepts FLOW_LOGS, CLOUD_TRAIL, DNS_LOGS, S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, LAMBDA_NETWORK_LOGS, EKS_RUNTIME_MONITORING + # features: ["FLOW_LOGS"], # accepts FLOW_LOGS, CLOUD_TRAIL, DNS_LOGS, S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, LAMBDA_NETWORK_LOGS, EKS_RUNTIME_MONITORING, FARGATE_RUNTIME_MONITORING, EC2_RUNTIME_MONITORING # }, # unit: "String", # max_results: 1, @@ -2990,7 +2990,7 @@ def get_threat_intel_set(params = {}, options = {}) # resp.usage_statistics.top_resources[0].total.amount #=> String # resp.usage_statistics.top_resources[0].total.unit #=> String # resp.usage_statistics.sum_by_feature #=> Array - # resp.usage_statistics.sum_by_feature[0].feature #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "LAMBDA_NETWORK_LOGS", "EKS_RUNTIME_MONITORING" + # resp.usage_statistics.sum_by_feature[0].feature #=> String, one of "FLOW_LOGS", "CLOUD_TRAIL", "DNS_LOGS", "S3_DATA_EVENTS", "EKS_AUDIT_LOGS", "EBS_MALWARE_PROTECTION", "RDS_LOGIN_EVENTS", "LAMBDA_NETWORK_LOGS", "EKS_RUNTIME_MONITORING", "FARGATE_RUNTIME_MONITORING", "EC2_RUNTIME_MONITORING" # resp.usage_statistics.sum_by_feature[0].total.amount #=> String # resp.usage_statistics.sum_by_feature[0].total.unit #=> String # resp.next_token #=> String @@ -3124,7 +3124,7 @@ def invite_members(params = {}, options = {}) # filter_criteria: { # filter_criterion: [ # { - # criterion_key: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, RESOURCE_TYPE, COVERAGE_STATUS, ADDON_VERSION, MANAGEMENT_TYPE, EKS_CLUSTER_NAME + # criterion_key: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, RESOURCE_TYPE, COVERAGE_STATUS, ADDON_VERSION, MANAGEMENT_TYPE, EKS_CLUSTER_NAME, ECS_CLUSTER_NAME, AGENT_VERSION, INSTANCE_ID, CLUSTER_ARN # filter_condition: { # equals: ["String"], # not_equals: ["String"], @@ -3133,7 +3133,7 @@ def invite_members(params = {}, options = {}) # ], # }, # sort_criteria: { - # attribute_name: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, COVERAGE_STATUS, ISSUE, ADDON_VERSION, UPDATED_AT, EKS_CLUSTER_NAME + # attribute_name: "ACCOUNT_ID", # accepts ACCOUNT_ID, CLUSTER_NAME, COVERAGE_STATUS, ISSUE, ADDON_VERSION, UPDATED_AT, EKS_CLUSTER_NAME, ECS_CLUSTER_NAME, INSTANCE_ID # order_by: "ASC", # accepts ASC, DESC # }, # }) @@ -3149,8 +3149,19 @@ def invite_members(params = {}, options = {}) # resp.resources[0].resource_details.eks_cluster_details.compatible_nodes #=> Integer # resp.resources[0].resource_details.eks_cluster_details.addon_details.addon_version #=> String # resp.resources[0].resource_details.eks_cluster_details.addon_details.addon_status #=> String - # resp.resources[0].resource_details.eks_cluster_details.management_type #=> String, one of "AUTO_MANAGED", "MANUAL" - # resp.resources[0].resource_details.resource_type #=> String, one of "EKS" + # resp.resources[0].resource_details.eks_cluster_details.management_type #=> String, one of "AUTO_MANAGED", "MANUAL", "DISABLED" + # resp.resources[0].resource_details.resource_type #=> String, one of "EKS", "ECS", "EC2" + # resp.resources[0].resource_details.ecs_cluster_details.cluster_name #=> String + # resp.resources[0].resource_details.ecs_cluster_details.fargate_details.issues #=> Array + # resp.resources[0].resource_details.ecs_cluster_details.fargate_details.issues[0] #=> String + # resp.resources[0].resource_details.ecs_cluster_details.fargate_details.management_type #=> String, one of "AUTO_MANAGED", "MANUAL", "DISABLED" + # resp.resources[0].resource_details.ecs_cluster_details.container_instance_details.covered_container_instances #=> Integer + # resp.resources[0].resource_details.ecs_cluster_details.container_instance_details.compatible_container_instances #=> Integer + # resp.resources[0].resource_details.ec2_instance_details.instance_id #=> String + # resp.resources[0].resource_details.ec2_instance_details.instance_type #=> String + # resp.resources[0].resource_details.ec2_instance_details.cluster_arn #=> String + # resp.resources[0].resource_details.ec2_instance_details.agent_details.version #=> String + # resp.resources[0].resource_details.ec2_instance_details.management_type #=> String, one of "AUTO_MANAGED", "MANUAL", "DISABLED" # resp.resources[0].coverage_status #=> String, one of "HEALTHY", "UNHEALTHY" # resp.resources[0].issue #=> String # resp.resources[0].updated_at #=> Time @@ -4035,11 +4046,11 @@ def untag_resource(params = {}, options = {}) # }, # features: [ # { - # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS + # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING # status: "ENABLED", # accepts ENABLED, DISABLED # additional_configuration: [ # { - # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT + # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT, ECS_FARGATE_AGENT_MANAGEMENT # status: "ENABLED", # accepts ENABLED, DISABLED # }, # ], @@ -4317,11 +4328,11 @@ def update_malware_scan_settings(params = {}, options = {}) # }, # features: [ # { - # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS + # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING # status: "ENABLED", # accepts ENABLED, DISABLED # additional_configuration: [ # { - # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT + # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT, ECS_FARGATE_AGENT_MANAGEMENT # status: "ENABLED", # accepts ENABLED, DISABLED # }, # ], @@ -4424,11 +4435,11 @@ def update_member_detectors(params = {}, options = {}) # }, # features: [ # { - # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS + # name: "S3_DATA_EVENTS", # accepts S3_DATA_EVENTS, EKS_AUDIT_LOGS, EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING # auto_enable: "NEW", # accepts NEW, NONE, ALL # additional_configuration: [ # { - # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT + # name: "EKS_ADDON_MANAGEMENT", # accepts EKS_ADDON_MANAGEMENT, ECS_FARGATE_AGENT_MANAGEMENT # auto_enable: "NEW", # accepts NEW, NONE, ALL # }, # ], @@ -4537,7 +4548,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-guardduty' - context[:gem_version] = '1.83.0' + context[:gem_version] = '1.84.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client_api.rb b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client_api.rb index ba774b12dae..6ce7b37dd85 100644 --- a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client_api.rb +++ b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/client_api.rb @@ -34,6 +34,7 @@ module ClientApi AdminStatus = Shapes::StringShape.new(name: 'AdminStatus') Administrator = Shapes::StructureShape.new(name: 'Administrator') AffectedResources = Shapes::MapShape.new(name: 'AffectedResources') + AgentDetails = Shapes::StructureShape.new(name: 'AgentDetails') Anomaly = Shapes::StructureShape.new(name: 'Anomaly') AnomalyObject = Shapes::StructureShape.new(name: 'AnomalyObject') AnomalyProfileFeatureObjects = Shapes::ListShape.new(name: 'AnomalyProfileFeatureObjects') @@ -57,11 +58,14 @@ module ClientApi Condition = Shapes::StructureShape.new(name: 'Condition') ConflictException = Shapes::StructureShape.new(name: 'ConflictException') Container = Shapes::StructureShape.new(name: 'Container') + ContainerInstanceDetails = Shapes::StructureShape.new(name: 'ContainerInstanceDetails') Containers = Shapes::ListShape.new(name: 'Containers') CountByCoverageStatus = Shapes::MapShape.new(name: 'CountByCoverageStatus') CountByResourceType = Shapes::MapShape.new(name: 'CountByResourceType') CountBySeverity = Shapes::MapShape.new(name: 'CountBySeverity') Country = Shapes::StructureShape.new(name: 'Country') + CoverageEc2InstanceDetails = Shapes::StructureShape.new(name: 'CoverageEc2InstanceDetails') + CoverageEcsClusterDetails = Shapes::StructureShape.new(name: 'CoverageEcsClusterDetails') CoverageEksClusterDetails = Shapes::StructureShape.new(name: 'CoverageEksClusterDetails') CoverageFilterCondition = Shapes::StructureShape.new(name: 'CoverageFilterCondition') CoverageFilterCriteria = Shapes::StructureShape.new(name: 'CoverageFilterCriteria') @@ -166,6 +170,7 @@ module ClientApi Eq = Shapes::ListShape.new(name: 'Eq') Equals = Shapes::ListShape.new(name: 'Equals') Evidence = Shapes::StructureShape.new(name: 'Evidence') + FargateDetails = Shapes::StructureShape.new(name: 'FargateDetails') FeatureAdditionalConfiguration = Shapes::StringShape.new(name: 'FeatureAdditionalConfiguration') FeatureStatus = Shapes::StringShape.new(name: 'FeatureStatus') Feedback = Shapes::StringShape.new(name: 'Feedback') @@ -245,6 +250,7 @@ module ClientApi IpSetIds = Shapes::ListShape.new(name: 'IpSetIds') IpSetStatus = Shapes::StringShape.new(name: 'IpSetStatus') Ipv6Addresses = Shapes::ListShape.new(name: 'Ipv6Addresses') + Issues = Shapes::ListShape.new(name: 'Issues') KubernetesApiCallAction = Shapes::StructureShape.new(name: 'KubernetesApiCallAction') KubernetesAuditLogsConfiguration = Shapes::StructureShape.new(name: 'KubernetesAuditLogsConfiguration') KubernetesAuditLogsConfigurationResult = Shapes::StructureShape.new(name: 'KubernetesAuditLogsConfigurationResult') @@ -554,6 +560,9 @@ module ClientApi AffectedResources.key = Shapes::ShapeRef.new(shape: String) AffectedResources.value = Shapes::ShapeRef.new(shape: String) + AgentDetails.add_member(:version, Shapes::ShapeRef.new(shape: String, location_name: "version")) + AgentDetails.struct_class = Types::AgentDetails + Anomaly.add_member(:profiles, Shapes::ShapeRef.new(shape: AnomalyProfiles, location_name: "profiles")) Anomaly.add_member(:unusual, Shapes::ShapeRef.new(shape: AnomalyUnusual, location_name: "unusual")) Anomaly.struct_class = Types::Anomaly @@ -649,6 +658,10 @@ module ClientApi Container.add_member(:security_context, Shapes::ShapeRef.new(shape: SecurityContext, location_name: "securityContext")) Container.struct_class = Types::Container + ContainerInstanceDetails.add_member(:covered_container_instances, Shapes::ShapeRef.new(shape: Long, location_name: "coveredContainerInstances")) + ContainerInstanceDetails.add_member(:compatible_container_instances, Shapes::ShapeRef.new(shape: Long, location_name: "compatibleContainerInstances")) + ContainerInstanceDetails.struct_class = Types::ContainerInstanceDetails + Containers.member = Shapes::ShapeRef.new(shape: Container) CountByCoverageStatus.key = Shapes::ShapeRef.new(shape: CoverageStatus) @@ -664,6 +677,18 @@ module ClientApi Country.add_member(:country_name, Shapes::ShapeRef.new(shape: String, location_name: "countryName")) Country.struct_class = Types::Country + CoverageEc2InstanceDetails.add_member(:instance_id, Shapes::ShapeRef.new(shape: String, location_name: "instanceId")) + CoverageEc2InstanceDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: String, location_name: "instanceType")) + CoverageEc2InstanceDetails.add_member(:cluster_arn, Shapes::ShapeRef.new(shape: String, location_name: "clusterArn")) + CoverageEc2InstanceDetails.add_member(:agent_details, Shapes::ShapeRef.new(shape: AgentDetails, location_name: "agentDetails")) + CoverageEc2InstanceDetails.add_member(:management_type, Shapes::ShapeRef.new(shape: ManagementType, location_name: "managementType")) + CoverageEc2InstanceDetails.struct_class = Types::CoverageEc2InstanceDetails + + CoverageEcsClusterDetails.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName")) + CoverageEcsClusterDetails.add_member(:fargate_details, Shapes::ShapeRef.new(shape: FargateDetails, location_name: "fargateDetails")) + CoverageEcsClusterDetails.add_member(:container_instance_details, Shapes::ShapeRef.new(shape: ContainerInstanceDetails, location_name: "containerInstanceDetails")) + CoverageEcsClusterDetails.struct_class = Types::CoverageEcsClusterDetails + CoverageEksClusterDetails.add_member(:cluster_name, Shapes::ShapeRef.new(shape: String, location_name: "clusterName")) CoverageEksClusterDetails.add_member(:covered_nodes, Shapes::ShapeRef.new(shape: Long, location_name: "coveredNodes")) CoverageEksClusterDetails.add_member(:compatible_nodes, Shapes::ShapeRef.new(shape: Long, location_name: "compatibleNodes")) @@ -695,6 +720,8 @@ module ClientApi CoverageResourceDetails.add_member(:eks_cluster_details, Shapes::ShapeRef.new(shape: CoverageEksClusterDetails, location_name: "eksClusterDetails")) CoverageResourceDetails.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "resourceType")) + CoverageResourceDetails.add_member(:ecs_cluster_details, Shapes::ShapeRef.new(shape: CoverageEcsClusterDetails, location_name: "ecsClusterDetails")) + CoverageResourceDetails.add_member(:ec2_instance_details, Shapes::ShapeRef.new(shape: CoverageEc2InstanceDetails, location_name: "ec2InstanceDetails")) CoverageResourceDetails.struct_class = Types::CoverageResourceDetails CoverageResources.member = Shapes::ShapeRef.new(shape: CoverageResource) @@ -1033,6 +1060,10 @@ module ClientApi Evidence.add_member(:threat_intelligence_details, Shapes::ShapeRef.new(shape: ThreatIntelligenceDetails, location_name: "threatIntelligenceDetails")) Evidence.struct_class = Types::Evidence + FargateDetails.add_member(:issues, Shapes::ShapeRef.new(shape: Issues, location_name: "issues")) + FargateDetails.add_member(:management_type, Shapes::ShapeRef.new(shape: ManagementType, location_name: "managementType")) + FargateDetails.struct_class = Types::FargateDetails + FilePaths.member = Shapes::ShapeRef.new(shape: ScanFilePath) FilterCondition.add_member(:equals_value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "equalsValue")) @@ -1286,6 +1317,8 @@ module ClientApi Ipv6Addresses.member = Shapes::ShapeRef.new(shape: String) + Issues.member = Shapes::ShapeRef.new(shape: String) + KubernetesApiCallAction.add_member(:request_uri, Shapes::ShapeRef.new(shape: String, location_name: "requestUri")) KubernetesApiCallAction.add_member(:verb, Shapes::ShapeRef.new(shape: String, location_name: "verb")) KubernetesApiCallAction.add_member(:source_ips, Shapes::ShapeRef.new(shape: SourceIps, location_name: "sourceIps")) diff --git a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/types.rb b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/types.rb index 02c0a99c1a3..c276249a500 100644 --- a/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/types.rb +++ b/gems/aws-sdk-guardduty/lib/aws-sdk-guardduty/types.rb @@ -332,6 +332,20 @@ class Administrator < Struct.new( include Aws::Structure end + # Information about the installed GuardDuty security agent. + # + # @!attribute [rw] version + # Version of the installed GuardDuty security agent. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/AgentDetails AWS API Documentation + # + class AgentDetails < Struct.new( + :version) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about the anomalies. # # @!attribute [rw] profiles @@ -753,6 +767,27 @@ class Container < Struct.new( include Aws::Structure end + # Contains information about the Amazon EC2 instance that is running the + # Amazon ECS container. + # + # @!attribute [rw] covered_container_instances + # Represents the nodes in the Amazon ECS cluster that has a `HEALTHY` + # coverage status. + # @return [Integer] + # + # @!attribute [rw] compatible_container_instances + # Represents total number of nodes in the Amazon ECS cluster. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ContainerInstanceDetails AWS API Documentation + # + class ContainerInstanceDetails < Struct.new( + :covered_container_instances, + :compatible_container_instances) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about the country where the remote IP address is # located. # @@ -773,6 +808,87 @@ class Country < Struct.new( include Aws::Structure end + # This API is also used when you use GuardDuty Runtime Monitoring for + # your Amazon EC2 instances (currently in preview release) and is + # subject to change. + # + # + # + # Contains information about the Amazon EC2 instance runtime coverage + # details. + # + # @!attribute [rw] instance_id + # The Amazon EC2 instance ID. + # @return [String] + # + # @!attribute [rw] instance_type + # The instance type of the Amazon EC2 instance. + # @return [String] + # + # @!attribute [rw] cluster_arn + # The cluster ARN of the Amazon ECS cluster running on the Amazon EC2 + # instance. + # @return [String] + # + # @!attribute [rw] agent_details + # Information about the installed security agent. + # @return [Types::AgentDetails] + # + # @!attribute [rw] management_type + # Indicates how the GuardDuty security agent is managed for this + # resource. + # + # * `AUTO_MANAGED` indicates that GuardDuty deploys and manages + # updates for this resource. + # + # * `MANUAL` indicates that you are responsible to deploy, update, and + # manage the GuardDuty security agent updates for this resource. + # + # The `DISABLED` status doesn't apply to Amazon EC2 instances and + # Amazon EKS clusters that run on Amazon EC2 instances. + # + # + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CoverageEc2InstanceDetails AWS API Documentation + # + class CoverageEc2InstanceDetails < Struct.new( + :instance_id, + :instance_type, + :cluster_arn, + :agent_details, + :management_type) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about Amazon ECS cluster runtime coverage + # details. + # + # @!attribute [rw] cluster_name + # The name of the Amazon ECS cluster. + # @return [String] + # + # @!attribute [rw] fargate_details + # Information about the Fargate details associated with the Amazon ECS + # cluster. + # @return [Types::FargateDetails] + # + # @!attribute [rw] container_instance_details + # Information about the Amazon ECS container running on Amazon EC2 + # instance. + # @return [Types::ContainerInstanceDetails] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CoverageEcsClusterDetails AWS API Documentation + # + class CoverageEcsClusterDetails < Struct.new( + :cluster_name, + :fargate_details, + :container_instance_details) + SENSITIVE = [] + include Aws::Structure + end + # Information about the EKS cluster that has a coverage status. # # @!attribute [rw] cluster_name @@ -935,11 +1051,29 @@ class CoverageResource < Struct.new( # The type of Amazon Web Services resource. # @return [String] # + # @!attribute [rw] ecs_cluster_details + # Information about the Amazon ECS cluster that is assessed for + # runtime coverage. + # @return [Types::CoverageEcsClusterDetails] + # + # @!attribute [rw] ec2_instance_details + # This API is also used when you use GuardDuty Runtime Monitoring for + # your Amazon EC2 instances (currently in preview release) and is + # subject to change. + # + # + # + # Information about the Amazon EC2 instance assessed for runtime + # coverage. + # @return [Types::CoverageEc2InstanceDetails] + # # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/CoverageResourceDetails AWS API Documentation # class CoverageResourceDetails < Struct.new( :eks_cluster_details, - :resource_type) + :resource_type, + :ecs_cluster_details, + :ec2_instance_details) SENSITIVE = [] include Aws::Structure end @@ -2664,6 +2798,37 @@ class Evidence < Struct.new( include Aws::Structure end + # Contains information about AWS Fargate details associated with an + # Amazon ECS cluster. + # + # @!attribute [rw] issues + # Runtime coverage issues identified for the resource running on AWS + # Fargate. + # @return [Array] + # + # @!attribute [rw] management_type + # Indicates how the GuardDuty security agent is managed for this + # resource. + # + # * `AUTO_MANAGED` indicates that GuardDuty deploys and manages + # updates for this resource. + # + # * `MANUAL` indicates that you are responsible to deploy, update, and + # manage the GuardDuty security agent updates for this resource. + # + # * `DISABLED` indicates that the deployment of the GuardDuty security + # agent is disabled for this resource. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/FargateDetails AWS API Documentation + # + class FargateDetails < Struct.new( + :issues, + :management_type) + SENSITIVE = [] + include Aws::Structure + end + # Contains information about the condition. # # @!attribute [rw] equals_value diff --git a/gems/aws-sdk-iotfleetwise/CHANGELOG.md b/gems/aws-sdk-iotfleetwise/CHANGELOG.md index 4f1c07469fd..e5fd95be560 100644 --- a/gems/aws-sdk-iotfleetwise/CHANGELOG.md +++ b/gems/aws-sdk-iotfleetwise/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.17.0 (2023-11-27) +------------------ + +* Feature - AWS IoT FleetWise introduces new APIs for vision system data, such as data collected from cameras, radars, and lidars. You can now model and decode complex data types. + 1.16.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-iotfleetwise/VERSION b/gems/aws-sdk-iotfleetwise/VERSION index 15b989e398f..092afa15df4 100644 --- a/gems/aws-sdk-iotfleetwise/VERSION +++ b/gems/aws-sdk-iotfleetwise/VERSION @@ -1 +1 @@ -1.16.0 +1.17.0 diff --git a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise.rb b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise.rb index 4eff53c2d3a..2ccf1321b45 100644 --- a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise.rb +++ b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise.rb @@ -53,6 +53,6 @@ # @!group service module Aws::IoTFleetWise - GEM_VERSION = '1.16.0' + GEM_VERSION = '1.17.0' end diff --git a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client.rb b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client.rb index 422c480514d..da1a2b788bb 100644 --- a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client.rb +++ b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client.rb @@ -772,7 +772,7 @@ def create_campaign(params = {}, options = {}) # signal_decoders: [ # { # fully_qualified_name: "FullyQualifiedName", # required - # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL + # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL, MESSAGE_SIGNAL, CUSTOMER_DECODED_SIGNAL # interface_id: "InterfaceId", # required # can_signal: { # message_id: 1, # required @@ -795,12 +795,41 @@ def create_campaign(params = {}, options = {}) # bit_right_shift: 1, # bit_mask_length: 1, # }, + # message_signal: { + # topic_name: "TopicName", # required + # structured_message: { # required + # primitive_message_definition: { + # ros2_primitive_message_definition: { + # primitive_type: "BOOL", # required, accepts BOOL, BYTE, CHAR, FLOAT32, FLOAT64, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, STRING, WSTRING + # offset: 1.0, + # scaling: 1.0, + # upper_bound: 1, + # }, + # }, + # structured_message_list_definition: { + # name: "StructureMessageName", # required + # member_type: { # required + # # recursive StructuredMessage + # }, + # list_type: "FIXED_CAPACITY", # required, accepts FIXED_CAPACITY, DYNAMIC_UNBOUNDED_CAPACITY, DYNAMIC_BOUNDED_CAPACITY + # capacity: 1, + # }, + # structured_message_definition: [ + # { + # field_name: "StructureMessageName", # required + # data_type: { # required + # # recursive StructuredMessage + # }, + # }, + # ], + # }, + # }, # }, # ], # network_interfaces: [ # { # interface_id: "InterfaceId", # required - # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE + # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE, VEHICLE_MIDDLEWARE, CUSTOMER_DECODED_INTERFACE # can_interface: { # name: "CanInterfaceName", # required # protocol_name: "ProtocolName", @@ -815,6 +844,10 @@ def create_campaign(params = {}, options = {}) # use_extended_ids: false, # has_transmission_ecu: false, # }, + # vehicle_middleware: { + # name: "VehicleMiddlewareName", # required + # protocol_name: "ROS_2", # required, accepts ROS_2 + # }, # }, # ], # tags: [ @@ -987,7 +1020,7 @@ def create_model_manifest(params = {}, options = {}) # }, # sensor: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -995,10 +1028,11 @@ def create_model_manifest(params = {}, options = {}) # max: 1.0, # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # actuator: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -1007,10 +1041,11 @@ def create_model_manifest(params = {}, options = {}) # assigned_value: "string", # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # attribute: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -1021,6 +1056,21 @@ def create_model_manifest(params = {}, options = {}) # deprecation_message: "message", # comment: "message", # }, + # struct: { + # fully_qualified_name: "string", # required + # description: "description", + # deprecation_message: "message", + # comment: "message", + # }, + # property: { + # fully_qualified_name: "string", # required + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY + # data_encoding: "BINARY", # accepts BINARY, TYPED + # description: "description", + # deprecation_message: "message", + # comment: "message", + # struct_fully_qualified_name: "NodePath", + # }, # }, # ], # tags: [ @@ -1446,6 +1496,7 @@ def get_campaign(params = {}, options = {}) # * {Types::GetDecoderManifestResponse#status #status} => String # * {Types::GetDecoderManifestResponse#creation_time #creation_time} => Time # * {Types::GetDecoderManifestResponse#last_modification_time #last_modification_time} => Time + # * {Types::GetDecoderManifestResponse#message #message} => String # # @example Request syntax with placeholder values # @@ -1459,9 +1510,10 @@ def get_campaign(params = {}, options = {}) # resp.arn #=> String # resp.description #=> String # resp.model_manifest_arn #=> String - # resp.status #=> String, one of "ACTIVE", "DRAFT" + # resp.status #=> String, one of "ACTIVE", "DRAFT", "INVALID", "VALIDATING" # resp.creation_time #=> Time # resp.last_modification_time #=> Time + # resp.message #=> String # # @overload get_decoder_manifest(params = {}) # @param [Hash] params ({}) @@ -1579,7 +1631,7 @@ def get_logging_options(params = {}, options = {}) # resp.arn #=> String # resp.description #=> String # resp.signal_catalog_arn #=> String - # resp.status #=> String, one of "ACTIVE", "DRAFT" + # resp.status #=> String, one of "ACTIVE", "DRAFT", "INVALID", "VALIDATING" # resp.creation_time #=> Time # resp.last_modification_time #=> Time # @@ -1668,6 +1720,8 @@ def get_register_account_status(params = {}, options = {}) # resp.node_counts.total_sensors #=> Integer # resp.node_counts.total_attributes #=> Integer # resp.node_counts.total_actuators #=> Integer + # resp.node_counts.total_structs #=> Integer + # resp.node_counts.total_properties #=> Integer # resp.creation_time #=> Time # resp.last_modification_time #=> Time # @@ -1958,7 +2012,7 @@ def list_campaigns(params = {}, options = {}) # # resp.network_interfaces #=> Array # resp.network_interfaces[0].interface_id #=> String - # resp.network_interfaces[0].type #=> String, one of "CAN_INTERFACE", "OBD_INTERFACE" + # resp.network_interfaces[0].type #=> String, one of "CAN_INTERFACE", "OBD_INTERFACE", "VEHICLE_MIDDLEWARE", "CUSTOMER_DECODED_INTERFACE" # resp.network_interfaces[0].can_interface.name #=> String # resp.network_interfaces[0].can_interface.protocol_name #=> String # resp.network_interfaces[0].can_interface.protocol_version #=> String @@ -1969,6 +2023,8 @@ def list_campaigns(params = {}, options = {}) # resp.network_interfaces[0].obd_interface.dtc_request_interval_seconds #=> Integer # resp.network_interfaces[0].obd_interface.use_extended_ids #=> Boolean # resp.network_interfaces[0].obd_interface.has_transmission_ecu #=> Boolean + # resp.network_interfaces[0].vehicle_middleware.name #=> String + # resp.network_interfaces[0].vehicle_middleware.protocol_name #=> String, one of "ROS_2" # resp.next_token #=> String # # @overload list_decoder_manifest_network_interfaces(params = {}) @@ -2020,7 +2076,7 @@ def list_decoder_manifest_network_interfaces(params = {}, options = {}) # # resp.signal_decoders #=> Array # resp.signal_decoders[0].fully_qualified_name #=> String - # resp.signal_decoders[0].type #=> String, one of "CAN_SIGNAL", "OBD_SIGNAL" + # resp.signal_decoders[0].type #=> String, one of "CAN_SIGNAL", "OBD_SIGNAL", "MESSAGE_SIGNAL", "CUSTOMER_DECODED_SIGNAL" # resp.signal_decoders[0].interface_id #=> String # resp.signal_decoders[0].can_signal.message_id #=> Integer # resp.signal_decoders[0].can_signal.is_big_endian #=> Boolean @@ -2039,6 +2095,18 @@ def list_decoder_manifest_network_interfaces(params = {}, options = {}) # resp.signal_decoders[0].obd_signal.byte_length #=> Integer # resp.signal_decoders[0].obd_signal.bit_right_shift #=> Integer # resp.signal_decoders[0].obd_signal.bit_mask_length #=> Integer + # resp.signal_decoders[0].message_signal.topic_name #=> String + # resp.signal_decoders[0].message_signal.structured_message.primitive_message_definition.ros2_primitive_message_definition.primitive_type #=> String, one of "BOOL", "BYTE", "CHAR", "FLOAT32", "FLOAT64", "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "STRING", "WSTRING" + # resp.signal_decoders[0].message_signal.structured_message.primitive_message_definition.ros2_primitive_message_definition.offset #=> Float + # resp.signal_decoders[0].message_signal.structured_message.primitive_message_definition.ros2_primitive_message_definition.scaling #=> Float + # resp.signal_decoders[0].message_signal.structured_message.primitive_message_definition.ros2_primitive_message_definition.upper_bound #=> Integer + # resp.signal_decoders[0].message_signal.structured_message.structured_message_list_definition.name #=> String + # resp.signal_decoders[0].message_signal.structured_message.structured_message_list_definition.member_type #=> Types::StructuredMessage + # resp.signal_decoders[0].message_signal.structured_message.structured_message_list_definition.list_type #=> String, one of "FIXED_CAPACITY", "DYNAMIC_UNBOUNDED_CAPACITY", "DYNAMIC_BOUNDED_CAPACITY" + # resp.signal_decoders[0].message_signal.structured_message.structured_message_list_definition.capacity #=> Integer + # resp.signal_decoders[0].message_signal.structured_message.structured_message_definition #=> Array + # resp.signal_decoders[0].message_signal.structured_message.structured_message_definition[0].field_name #=> String + # resp.signal_decoders[0].message_signal.structured_message.structured_message_definition[0].data_type #=> Types::StructuredMessage # resp.next_token #=> String # # @overload list_decoder_manifest_signals(params = {}) @@ -2093,9 +2161,10 @@ def list_decoder_manifest_signals(params = {}, options = {}) # resp.summaries[0].arn #=> String # resp.summaries[0].model_manifest_arn #=> String # resp.summaries[0].description #=> String - # resp.summaries[0].status #=> String, one of "ACTIVE", "DRAFT" + # resp.summaries[0].status #=> String, one of "ACTIVE", "DRAFT", "INVALID", "VALIDATING" # resp.summaries[0].creation_time #=> Time # resp.summaries[0].last_modification_time #=> Time + # resp.summaries[0].message #=> String # resp.next_token #=> String # # @overload list_decoder_manifests(params = {}) @@ -2254,7 +2323,7 @@ def list_fleets_for_vehicle(params = {}, options = {}) # resp.nodes[0].branch.deprecation_message #=> String # resp.nodes[0].branch.comment #=> String # resp.nodes[0].sensor.fully_qualified_name #=> String - # resp.nodes[0].sensor.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].sensor.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].sensor.description #=> String # resp.nodes[0].sensor.unit #=> String # resp.nodes[0].sensor.allowed_values #=> Array @@ -2263,8 +2332,9 @@ def list_fleets_for_vehicle(params = {}, options = {}) # resp.nodes[0].sensor.max #=> Float # resp.nodes[0].sensor.deprecation_message #=> String # resp.nodes[0].sensor.comment #=> String + # resp.nodes[0].sensor.struct_fully_qualified_name #=> String # resp.nodes[0].actuator.fully_qualified_name #=> String - # resp.nodes[0].actuator.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].actuator.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].actuator.description #=> String # resp.nodes[0].actuator.unit #=> String # resp.nodes[0].actuator.allowed_values #=> Array @@ -2274,8 +2344,9 @@ def list_fleets_for_vehicle(params = {}, options = {}) # resp.nodes[0].actuator.assigned_value #=> String # resp.nodes[0].actuator.deprecation_message #=> String # resp.nodes[0].actuator.comment #=> String + # resp.nodes[0].actuator.struct_fully_qualified_name #=> String # resp.nodes[0].attribute.fully_qualified_name #=> String - # resp.nodes[0].attribute.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].attribute.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].attribute.description #=> String # resp.nodes[0].attribute.unit #=> String # resp.nodes[0].attribute.allowed_values #=> Array @@ -2286,6 +2357,17 @@ def list_fleets_for_vehicle(params = {}, options = {}) # resp.nodes[0].attribute.default_value #=> String # resp.nodes[0].attribute.deprecation_message #=> String # resp.nodes[0].attribute.comment #=> String + # resp.nodes[0].struct.fully_qualified_name #=> String + # resp.nodes[0].struct.description #=> String + # resp.nodes[0].struct.deprecation_message #=> String + # resp.nodes[0].struct.comment #=> String + # resp.nodes[0].property.fully_qualified_name #=> String + # resp.nodes[0].property.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" + # resp.nodes[0].property.data_encoding #=> String, one of "BINARY", "TYPED" + # resp.nodes[0].property.description #=> String + # resp.nodes[0].property.deprecation_message #=> String + # resp.nodes[0].property.comment #=> String + # resp.nodes[0].property.struct_fully_qualified_name #=> String # resp.next_token #=> String # # @overload list_model_manifest_nodes(params = {}) @@ -2340,7 +2422,7 @@ def list_model_manifest_nodes(params = {}, options = {}) # resp.summaries[0].arn #=> String # resp.summaries[0].signal_catalog_arn #=> String # resp.summaries[0].description #=> String - # resp.summaries[0].status #=> String, one of "ACTIVE", "DRAFT" + # resp.summaries[0].status #=> String, one of "ACTIVE", "DRAFT", "INVALID", "VALIDATING" # resp.summaries[0].creation_time #=> Time # resp.summaries[0].last_modification_time #=> Time # resp.next_token #=> String @@ -2398,7 +2480,7 @@ def list_model_manifests(params = {}, options = {}) # resp.nodes[0].branch.deprecation_message #=> String # resp.nodes[0].branch.comment #=> String # resp.nodes[0].sensor.fully_qualified_name #=> String - # resp.nodes[0].sensor.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].sensor.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].sensor.description #=> String # resp.nodes[0].sensor.unit #=> String # resp.nodes[0].sensor.allowed_values #=> Array @@ -2407,8 +2489,9 @@ def list_model_manifests(params = {}, options = {}) # resp.nodes[0].sensor.max #=> Float # resp.nodes[0].sensor.deprecation_message #=> String # resp.nodes[0].sensor.comment #=> String + # resp.nodes[0].sensor.struct_fully_qualified_name #=> String # resp.nodes[0].actuator.fully_qualified_name #=> String - # resp.nodes[0].actuator.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].actuator.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].actuator.description #=> String # resp.nodes[0].actuator.unit #=> String # resp.nodes[0].actuator.allowed_values #=> Array @@ -2418,8 +2501,9 @@ def list_model_manifests(params = {}, options = {}) # resp.nodes[0].actuator.assigned_value #=> String # resp.nodes[0].actuator.deprecation_message #=> String # resp.nodes[0].actuator.comment #=> String + # resp.nodes[0].actuator.struct_fully_qualified_name #=> String # resp.nodes[0].attribute.fully_qualified_name #=> String - # resp.nodes[0].attribute.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN" + # resp.nodes[0].attribute.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" # resp.nodes[0].attribute.description #=> String # resp.nodes[0].attribute.unit #=> String # resp.nodes[0].attribute.allowed_values #=> Array @@ -2430,6 +2514,17 @@ def list_model_manifests(params = {}, options = {}) # resp.nodes[0].attribute.default_value #=> String # resp.nodes[0].attribute.deprecation_message #=> String # resp.nodes[0].attribute.comment #=> String + # resp.nodes[0].struct.fully_qualified_name #=> String + # resp.nodes[0].struct.description #=> String + # resp.nodes[0].struct.deprecation_message #=> String + # resp.nodes[0].struct.comment #=> String + # resp.nodes[0].property.fully_qualified_name #=> String + # resp.nodes[0].property.data_type #=> String, one of "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" + # resp.nodes[0].property.data_encoding #=> String, one of "BINARY", "TYPED" + # resp.nodes[0].property.description #=> String + # resp.nodes[0].property.deprecation_message #=> String + # resp.nodes[0].property.comment #=> String + # resp.nodes[0].property.struct_fully_qualified_name #=> String # resp.next_token #=> String # # @overload list_signal_catalog_nodes(params = {}) @@ -2654,7 +2749,7 @@ def list_vehicles_in_fleet(params = {}, options = {}) # @example Request syntax with placeholder values # # resp = client.put_encryption_configuration({ - # kms_key_id: "String", + # kms_key_id: "PutEncryptionConfigurationRequestKmsKeyIdString", # encryption_type: "KMS_BASED_ENCRYPTION", # required, accepts KMS_BASED_ENCRYPTION, FLEETWISE_DEFAULT_ENCRYPTION # }) # @@ -2712,13 +2807,30 @@ def put_logging_options(params = {}, options = {}) # [DeleteServiceLinkedRole][3] in the *Identity and Access Management # API Reference*. # - #

Registers your Amazon Web Services account, IAM, and Amazon Timestream resources so Amazon Web Services IoT FleetWise can transfer your vehicle data to the Amazon Web Services Cloud. For more information, including step-by-step procedures, see Setting up Amazon Web Services IoT FleetWise.

An Amazon Web Services account is not the same thing as a "user." An Amazon Web Services user is an identity that you create using Identity and Access Management (IAM) and takes the form of either an IAM user or an IAM role, both with credentials. A single Amazon Web Services account can, and typically does, contain many users and roles.

+ # Registers your Amazon Web Services account, IAM, and Amazon Timestream + # resources so Amazon Web Services IoT FleetWise can transfer your + # vehicle data to the Amazon Web Services Cloud. For more information, + # including step-by-step procedures, see [Setting up Amazon Web Services + # IoT FleetWise][4]. + # + # An Amazon Web Services account is **not** the same thing as a + # "user." An [Amazon Web Services user][5] is an identity that you + # create using Identity and Access Management (IAM) and takes the form + # of either an [IAM user][6] or an [IAM role, both with credentials][7]. + # A single Amazon Web Services account can, and typically does, contain + # many users and roles. + # + # # # # # [1]: https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateCampaign.html # [2]: https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_DeleteCampaign.html # [3]: https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html + # [4]: https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/setting-up.html + # [5]: https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-users + # [6]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html + # [7]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html # # @option params [Types::TimestreamResources] :timestream_resources # The registered Amazon Timestream resources that Amazon Web Services @@ -2927,7 +3039,7 @@ def update_campaign(params = {}, options = {}) # signal_decoders_to_add: [ # { # fully_qualified_name: "FullyQualifiedName", # required - # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL + # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL, MESSAGE_SIGNAL, CUSTOMER_DECODED_SIGNAL # interface_id: "InterfaceId", # required # can_signal: { # message_id: 1, # required @@ -2950,12 +3062,41 @@ def update_campaign(params = {}, options = {}) # bit_right_shift: 1, # bit_mask_length: 1, # }, + # message_signal: { + # topic_name: "TopicName", # required + # structured_message: { # required + # primitive_message_definition: { + # ros2_primitive_message_definition: { + # primitive_type: "BOOL", # required, accepts BOOL, BYTE, CHAR, FLOAT32, FLOAT64, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, STRING, WSTRING + # offset: 1.0, + # scaling: 1.0, + # upper_bound: 1, + # }, + # }, + # structured_message_list_definition: { + # name: "StructureMessageName", # required + # member_type: { # required + # # recursive StructuredMessage + # }, + # list_type: "FIXED_CAPACITY", # required, accepts FIXED_CAPACITY, DYNAMIC_UNBOUNDED_CAPACITY, DYNAMIC_BOUNDED_CAPACITY + # capacity: 1, + # }, + # structured_message_definition: [ + # { + # field_name: "StructureMessageName", # required + # data_type: { # required + # # recursive StructuredMessage + # }, + # }, + # ], + # }, + # }, # }, # ], # signal_decoders_to_update: [ # { # fully_qualified_name: "FullyQualifiedName", # required - # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL + # type: "CAN_SIGNAL", # required, accepts CAN_SIGNAL, OBD_SIGNAL, MESSAGE_SIGNAL, CUSTOMER_DECODED_SIGNAL # interface_id: "InterfaceId", # required # can_signal: { # message_id: 1, # required @@ -2978,13 +3119,42 @@ def update_campaign(params = {}, options = {}) # bit_right_shift: 1, # bit_mask_length: 1, # }, + # message_signal: { + # topic_name: "TopicName", # required + # structured_message: { # required + # primitive_message_definition: { + # ros2_primitive_message_definition: { + # primitive_type: "BOOL", # required, accepts BOOL, BYTE, CHAR, FLOAT32, FLOAT64, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, STRING, WSTRING + # offset: 1.0, + # scaling: 1.0, + # upper_bound: 1, + # }, + # }, + # structured_message_list_definition: { + # name: "StructureMessageName", # required + # member_type: { # required + # # recursive StructuredMessage + # }, + # list_type: "FIXED_CAPACITY", # required, accepts FIXED_CAPACITY, DYNAMIC_UNBOUNDED_CAPACITY, DYNAMIC_BOUNDED_CAPACITY + # capacity: 1, + # }, + # structured_message_definition: [ + # { + # field_name: "StructureMessageName", # required + # data_type: { # required + # # recursive StructuredMessage + # }, + # }, + # ], + # }, + # }, # }, # ], # signal_decoders_to_remove: ["FullyQualifiedName"], # network_interfaces_to_add: [ # { # interface_id: "InterfaceId", # required - # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE + # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE, VEHICLE_MIDDLEWARE, CUSTOMER_DECODED_INTERFACE # can_interface: { # name: "CanInterfaceName", # required # protocol_name: "ProtocolName", @@ -2999,12 +3169,16 @@ def update_campaign(params = {}, options = {}) # use_extended_ids: false, # has_transmission_ecu: false, # }, + # vehicle_middleware: { + # name: "VehicleMiddlewareName", # required + # protocol_name: "ROS_2", # required, accepts ROS_2 + # }, # }, # ], # network_interfaces_to_update: [ # { # interface_id: "InterfaceId", # required - # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE + # type: "CAN_INTERFACE", # required, accepts CAN_INTERFACE, OBD_INTERFACE, VEHICLE_MIDDLEWARE, CUSTOMER_DECODED_INTERFACE # can_interface: { # name: "CanInterfaceName", # required # protocol_name: "ProtocolName", @@ -3019,10 +3193,14 @@ def update_campaign(params = {}, options = {}) # use_extended_ids: false, # has_transmission_ecu: false, # }, + # vehicle_middleware: { + # name: "VehicleMiddlewareName", # required + # protocol_name: "ROS_2", # required, accepts ROS_2 + # }, # }, # ], # network_interfaces_to_remove: ["InterfaceId"], - # status: "ACTIVE", # accepts ACTIVE, DRAFT + # status: "ACTIVE", # accepts ACTIVE, DRAFT, INVALID, VALIDATING # }) # # @example Response structure @@ -3108,7 +3286,7 @@ def update_fleet(params = {}, options = {}) # description: "description", # nodes_to_add: ["NodePath"], # nodes_to_remove: ["NodePath"], - # status: "ACTIVE", # accepts ACTIVE, DRAFT + # status: "ACTIVE", # accepts ACTIVE, DRAFT, INVALID, VALIDATING # }) # # @example Response structure @@ -3161,7 +3339,7 @@ def update_model_manifest(params = {}, options = {}) # }, # sensor: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3169,10 +3347,11 @@ def update_model_manifest(params = {}, options = {}) # max: 1.0, # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # actuator: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3181,10 +3360,11 @@ def update_model_manifest(params = {}, options = {}) # assigned_value: "string", # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # attribute: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3195,6 +3375,21 @@ def update_model_manifest(params = {}, options = {}) # deprecation_message: "message", # comment: "message", # }, + # struct: { + # fully_qualified_name: "string", # required + # description: "description", + # deprecation_message: "message", + # comment: "message", + # }, + # property: { + # fully_qualified_name: "string", # required + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY + # data_encoding: "BINARY", # accepts BINARY, TYPED + # description: "description", + # deprecation_message: "message", + # comment: "message", + # struct_fully_qualified_name: "NodePath", + # }, # }, # ], # nodes_to_update: [ @@ -3207,7 +3402,7 @@ def update_model_manifest(params = {}, options = {}) # }, # sensor: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3215,10 +3410,11 @@ def update_model_manifest(params = {}, options = {}) # max: 1.0, # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # actuator: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3227,10 +3423,11 @@ def update_model_manifest(params = {}, options = {}) # assigned_value: "string", # deprecation_message: "message", # comment: "message", + # struct_fully_qualified_name: "NodePath", # }, # attribute: { # fully_qualified_name: "string", # required - # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY # description: "description", # unit: "string", # allowed_values: ["string"], @@ -3241,6 +3438,21 @@ def update_model_manifest(params = {}, options = {}) # deprecation_message: "message", # comment: "message", # }, + # struct: { + # fully_qualified_name: "string", # required + # description: "description", + # deprecation_message: "message", + # comment: "message", + # }, + # property: { + # fully_qualified_name: "string", # required + # data_type: "INT8", # required, accepts INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, BOOLEAN, FLOAT, DOUBLE, STRING, UNIX_TIMESTAMP, INT8_ARRAY, UINT8_ARRAY, INT16_ARRAY, UINT16_ARRAY, INT32_ARRAY, UINT32_ARRAY, INT64_ARRAY, UINT64_ARRAY, BOOLEAN_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, UNIX_TIMESTAMP_ARRAY, UNKNOWN, STRUCT, STRUCT_ARRAY + # data_encoding: "BINARY", # accepts BINARY, TYPED + # description: "description", + # deprecation_message: "message", + # comment: "message", + # struct_fully_qualified_name: "NodePath", + # }, # }, # ], # nodes_to_remove: ["NodePath"], @@ -3325,7 +3537,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-iotfleetwise' - context[:gem_version] = '1.16.0' + context[:gem_version] = '1.17.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client_api.rb b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client_api.rb index 9826ad2f7e4..5628e736c0d 100644 --- a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client_api.rb +++ b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/client_api.rb @@ -52,6 +52,8 @@ module ClientApi CreateVehicleRequestItem = Shapes::StructureShape.new(name: 'CreateVehicleRequestItem') CreateVehicleResponse = Shapes::StructureShape.new(name: 'CreateVehicleResponse') CreateVehicleResponseItem = Shapes::StructureShape.new(name: 'CreateVehicleResponseItem') + CustomProperty = Shapes::StructureShape.new(name: 'CustomProperty') + CustomStruct = Shapes::StructureShape.new(name: 'CustomStruct') DataDestinationConfig = Shapes::UnionShape.new(name: 'DataDestinationConfig') DataDestinationConfigs = Shapes::ListShape.new(name: 'DataDestinationConfigs') DataExtraDimensionNodePathList = Shapes::ListShape.new(name: 'DataExtraDimensionNodePathList') @@ -146,6 +148,7 @@ module ClientApi ListVehiclesResponse = Shapes::StructureShape.new(name: 'ListVehiclesResponse') LogType = Shapes::StringShape.new(name: 'LogType') ManifestStatus = Shapes::StringShape.new(name: 'ManifestStatus') + MessageSignal = Shapes::StructureShape.new(name: 'MessageSignal') ModelManifestSummary = Shapes::StructureShape.new(name: 'ModelManifestSummary') ModelSignalsMap = Shapes::MapShape.new(name: 'ModelSignalsMap') NetworkFileBlob = Shapes::BlobShape.new(name: 'NetworkFileBlob') @@ -158,6 +161,7 @@ module ClientApi NetworkInterfaces = Shapes::ListShape.new(name: 'NetworkInterfaces') Node = Shapes::UnionShape.new(name: 'Node') NodeCounts = Shapes::StructureShape.new(name: 'NodeCounts') + NodeDataEncoding = Shapes::StringShape.new(name: 'NodeDataEncoding') NodeDataType = Shapes::StringShape.new(name: 'NodeDataType') NodePath = Shapes::StringShape.new(name: 'NodePath') NodePaths = Shapes::ListShape.new(name: 'NodePaths') @@ -169,12 +173,18 @@ module ClientApi ObdSignal = Shapes::StructureShape.new(name: 'ObdSignal') ObdStandard = Shapes::StringShape.new(name: 'ObdStandard') Prefix = Shapes::StringShape.new(name: 'Prefix') + PrimitiveBoolean = Shapes::BooleanShape.new(name: 'PrimitiveBoolean') + PrimitiveMessageDefinition = Shapes::UnionShape.new(name: 'PrimitiveMessageDefinition') ProtocolName = Shapes::StringShape.new(name: 'ProtocolName') ProtocolVersion = Shapes::StringShape.new(name: 'ProtocolVersion') PutEncryptionConfigurationRequest = Shapes::StructureShape.new(name: 'PutEncryptionConfigurationRequest') + PutEncryptionConfigurationRequestKmsKeyIdString = Shapes::StringShape.new(name: 'PutEncryptionConfigurationRequestKmsKeyIdString') PutEncryptionConfigurationResponse = Shapes::StructureShape.new(name: 'PutEncryptionConfigurationResponse') PutLoggingOptionsRequest = Shapes::StructureShape.new(name: 'PutLoggingOptionsRequest') PutLoggingOptionsResponse = Shapes::StructureShape.new(name: 'PutLoggingOptionsResponse') + ROS2PrimitiveMessageDefinition = Shapes::StructureShape.new(name: 'ROS2PrimitiveMessageDefinition') + ROS2PrimitiveMessageDefinitionUpperBoundLong = Shapes::IntegerShape.new(name: 'ROS2PrimitiveMessageDefinitionUpperBoundLong') + ROS2PrimitiveType = Shapes::StringShape.new(name: 'ROS2PrimitiveType') RegisterAccountRequest = Shapes::StructureShape.new(name: 'RegisterAccountRequest') RegisterAccountResponse = Shapes::StructureShape.new(name: 'RegisterAccountResponse') RegistrationStatus = Shapes::StringShape.new(name: 'RegistrationStatus') @@ -193,6 +203,12 @@ module ClientApi SpoolingMode = Shapes::StringShape.new(name: 'SpoolingMode') StorageCompressionFormat = Shapes::StringShape.new(name: 'StorageCompressionFormat') String = Shapes::StringShape.new(name: 'String') + StructureMessageName = Shapes::StringShape.new(name: 'StructureMessageName') + StructuredMessage = Shapes::UnionShape.new(name: 'StructuredMessage') + StructuredMessageDefinition = Shapes::ListShape.new(name: 'StructuredMessageDefinition') + StructuredMessageFieldNameAndDataTypePair = Shapes::StructureShape.new(name: 'StructuredMessageFieldNameAndDataTypePair') + StructuredMessageListDefinition = Shapes::StructureShape.new(name: 'StructuredMessageListDefinition') + StructuredMessageListType = Shapes::StringShape.new(name: 'StructuredMessageListType') Tag = Shapes::StructureShape.new(name: 'Tag') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') @@ -208,6 +224,7 @@ module ClientApi TimestreamResources = Shapes::StructureShape.new(name: 'TimestreamResources') TimestreamTableArn = Shapes::StringShape.new(name: 'TimestreamTableArn') TimestreamTableName = Shapes::StringShape.new(name: 'TimestreamTableName') + TopicName = Shapes::StringShape.new(name: 'TopicName') TriggerMode = Shapes::StringShape.new(name: 'TriggerMode') UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') @@ -233,6 +250,9 @@ module ClientApi ValidationExceptionFieldList = Shapes::ListShape.new(name: 'ValidationExceptionFieldList') ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason') VehicleAssociationBehavior = Shapes::StringShape.new(name: 'VehicleAssociationBehavior') + VehicleMiddleware = Shapes::StructureShape.new(name: 'VehicleMiddleware') + VehicleMiddlewareName = Shapes::StringShape.new(name: 'VehicleMiddlewareName') + VehicleMiddlewareProtocol = Shapes::StringShape.new(name: 'VehicleMiddlewareProtocol') VehicleState = Shapes::StringShape.new(name: 'VehicleState') VehicleStatus = Shapes::StructureShape.new(name: 'VehicleStatus') VehicleStatusList = Shapes::ListShape.new(name: 'VehicleStatusList') @@ -241,7 +261,6 @@ module ClientApi attributeName = Shapes::StringShape.new(name: 'attributeName') attributeValue = Shapes::StringShape.new(name: 'attributeValue') attributesMap = Shapes::MapShape.new(name: 'attributesMap') - boolean = Shapes::BooleanShape.new(name: 'boolean') campaignName = Shapes::StringShape.new(name: 'campaignName') campaignSummaries = Shapes::ListShape.new(name: 'campaignSummaries') collectionPeriodMs = Shapes::IntegerShape.new(name: 'collectionPeriodMs') @@ -296,6 +315,7 @@ module ClientApi Actuator.add_member(:assigned_value, Shapes::ShapeRef.new(shape: string, deprecated: true, location_name: "assignedValue", metadata: {"deprecatedMessage"=>"assignedValue is no longer in use"})) Actuator.add_member(:deprecation_message, Shapes::ShapeRef.new(shape: message, location_name: "deprecationMessage")) Actuator.add_member(:comment, Shapes::ShapeRef.new(shape: message, location_name: "comment")) + Actuator.add_member(:struct_fully_qualified_name, Shapes::ShapeRef.new(shape: NodePath, location_name: "structFullyQualifiedName")) Actuator.struct_class = Types::Actuator AssociateVehicleFleetRequest.add_member(:vehicle_name, Shapes::ShapeRef.new(shape: vehicleName, required: true, location_name: "vehicleName")) @@ -358,8 +378,8 @@ module ClientApi CanInterface.struct_class = Types::CanInterface CanSignal.add_member(:message_id, Shapes::ShapeRef.new(shape: nonNegativeInteger, required: true, location_name: "messageId")) - CanSignal.add_member(:is_big_endian, Shapes::ShapeRef.new(shape: boolean, required: true, location_name: "isBigEndian")) - CanSignal.add_member(:is_signed, Shapes::ShapeRef.new(shape: boolean, required: true, location_name: "isSigned")) + CanSignal.add_member(:is_big_endian, Shapes::ShapeRef.new(shape: PrimitiveBoolean, required: true, location_name: "isBigEndian")) + CanSignal.add_member(:is_signed, Shapes::ShapeRef.new(shape: PrimitiveBoolean, required: true, location_name: "isSigned")) CanSignal.add_member(:start_bit, Shapes::ShapeRef.new(shape: nonNegativeInteger, required: true, location_name: "startBit")) CanSignal.add_member(:offset, Shapes::ShapeRef.new(shape: double, required: true, location_name: "offset")) CanSignal.add_member(:factor, Shapes::ShapeRef.new(shape: double, required: true, location_name: "factor")) @@ -486,6 +506,21 @@ module ClientApi CreateVehicleResponseItem.add_member(:thing_arn, Shapes::ShapeRef.new(shape: arn, location_name: "thingArn")) CreateVehicleResponseItem.struct_class = Types::CreateVehicleResponseItem + CustomProperty.add_member(:fully_qualified_name, Shapes::ShapeRef.new(shape: string, required: true, location_name: "fullyQualifiedName")) + CustomProperty.add_member(:data_type, Shapes::ShapeRef.new(shape: NodeDataType, required: true, location_name: "dataType")) + CustomProperty.add_member(:data_encoding, Shapes::ShapeRef.new(shape: NodeDataEncoding, location_name: "dataEncoding")) + CustomProperty.add_member(:description, Shapes::ShapeRef.new(shape: description, location_name: "description")) + CustomProperty.add_member(:deprecation_message, Shapes::ShapeRef.new(shape: message, location_name: "deprecationMessage")) + CustomProperty.add_member(:comment, Shapes::ShapeRef.new(shape: message, location_name: "comment")) + CustomProperty.add_member(:struct_fully_qualified_name, Shapes::ShapeRef.new(shape: NodePath, location_name: "structFullyQualifiedName")) + CustomProperty.struct_class = Types::CustomProperty + + CustomStruct.add_member(:fully_qualified_name, Shapes::ShapeRef.new(shape: string, required: true, location_name: "fullyQualifiedName")) + CustomStruct.add_member(:description, Shapes::ShapeRef.new(shape: description, location_name: "description")) + CustomStruct.add_member(:deprecation_message, Shapes::ShapeRef.new(shape: message, location_name: "deprecationMessage")) + CustomStruct.add_member(:comment, Shapes::ShapeRef.new(shape: message, location_name: "comment")) + CustomStruct.struct_class = Types::CustomStruct + DataDestinationConfig.add_member(:s3_config, Shapes::ShapeRef.new(shape: S3Config, location_name: "s3Config")) DataDestinationConfig.add_member(:timestream_config, Shapes::ShapeRef.new(shape: TimestreamConfig, location_name: "timestreamConfig")) DataDestinationConfig.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) @@ -505,6 +540,7 @@ module ClientApi DecoderManifestSummary.add_member(:status, Shapes::ShapeRef.new(shape: ManifestStatus, location_name: "status")) DecoderManifestSummary.add_member(:creation_time, Shapes::ShapeRef.new(shape: timestamp, required: true, location_name: "creationTime")) DecoderManifestSummary.add_member(:last_modification_time, Shapes::ShapeRef.new(shape: timestamp, required: true, location_name: "lastModificationTime")) + DecoderManifestSummary.add_member(:message, Shapes::ShapeRef.new(shape: message, location_name: "message")) DecoderManifestSummary.struct_class = Types::DecoderManifestSummary DecoderManifestValidationException.add_member(:invalid_signals, Shapes::ShapeRef.new(shape: InvalidSignalDecoders, location_name: "invalidSignals")) @@ -610,6 +646,7 @@ module ClientApi GetDecoderManifestResponse.add_member(:status, Shapes::ShapeRef.new(shape: ManifestStatus, location_name: "status")) GetDecoderManifestResponse.add_member(:creation_time, Shapes::ShapeRef.new(shape: timestamp, required: true, location_name: "creationTime")) GetDecoderManifestResponse.add_member(:last_modification_time, Shapes::ShapeRef.new(shape: timestamp, required: true, location_name: "lastModificationTime")) + GetDecoderManifestResponse.add_member(:message, Shapes::ShapeRef.new(shape: message, location_name: "message")) GetDecoderManifestResponse.struct_class = Types::GetDecoderManifestResponse GetEncryptionConfigurationRequest.struct_class = Types::GetEncryptionConfigurationRequest @@ -741,6 +778,7 @@ module ClientApi InvalidSignalDecoder.add_member(:name, Shapes::ShapeRef.new(shape: FullyQualifiedName, location_name: "name")) InvalidSignalDecoder.add_member(:reason, Shapes::ShapeRef.new(shape: SignalDecoderFailureReason, location_name: "reason")) + InvalidSignalDecoder.add_member(:hint, Shapes::ShapeRef.new(shape: message, location_name: "hint")) InvalidSignalDecoder.struct_class = Types::InvalidSignalDecoder InvalidSignalDecoders.member = Shapes::ShapeRef.new(shape: InvalidSignalDecoder) @@ -868,6 +906,10 @@ module ClientApi ListVehiclesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: nextToken, location_name: "nextToken")) ListVehiclesResponse.struct_class = Types::ListVehiclesResponse + MessageSignal.add_member(:topic_name, Shapes::ShapeRef.new(shape: TopicName, required: true, location_name: "topicName")) + MessageSignal.add_member(:structured_message, Shapes::ShapeRef.new(shape: StructuredMessage, required: true, location_name: "structuredMessage")) + MessageSignal.struct_class = Types::MessageSignal + ModelManifestSummary.add_member(:name, Shapes::ShapeRef.new(shape: string, location_name: "name")) ModelManifestSummary.add_member(:arn, Shapes::ShapeRef.new(shape: arn, location_name: "arn")) ModelManifestSummary.add_member(:signal_catalog_arn, Shapes::ShapeRef.new(shape: arn, location_name: "signalCatalogArn")) @@ -894,6 +936,7 @@ module ClientApi NetworkInterface.add_member(:type, Shapes::ShapeRef.new(shape: NetworkInterfaceType, required: true, location_name: "type")) NetworkInterface.add_member(:can_interface, Shapes::ShapeRef.new(shape: CanInterface, location_name: "canInterface")) NetworkInterface.add_member(:obd_interface, Shapes::ShapeRef.new(shape: ObdInterface, location_name: "obdInterface")) + NetworkInterface.add_member(:vehicle_middleware, Shapes::ShapeRef.new(shape: VehicleMiddleware, location_name: "vehicleMiddleware")) NetworkInterface.struct_class = Types::NetworkInterface NetworkInterfaces.member = Shapes::ShapeRef.new(shape: NetworkInterface) @@ -902,11 +945,15 @@ module ClientApi Node.add_member(:sensor, Shapes::ShapeRef.new(shape: Sensor, location_name: "sensor")) Node.add_member(:actuator, Shapes::ShapeRef.new(shape: Actuator, location_name: "actuator")) Node.add_member(:attribute, Shapes::ShapeRef.new(shape: Attribute, location_name: "attribute")) + Node.add_member(:struct, Shapes::ShapeRef.new(shape: CustomStruct, location_name: "struct")) + Node.add_member(:property, Shapes::ShapeRef.new(shape: CustomProperty, location_name: "property")) Node.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) Node.add_member_subclass(:branch, Types::Node::Branch) Node.add_member_subclass(:sensor, Types::Node::Sensor) Node.add_member_subclass(:actuator, Types::Node::Actuator) Node.add_member_subclass(:attribute, Types::Node::Attribute) + Node.add_member_subclass(:struct, Types::Node::Struct) + Node.add_member_subclass(:property, Types::Node::Property) Node.add_member_subclass(:unknown, Types::Node::Unknown) Node.struct_class = Types::Node @@ -915,6 +962,8 @@ module ClientApi NodeCounts.add_member(:total_sensors, Shapes::ShapeRef.new(shape: number, location_name: "totalSensors")) NodeCounts.add_member(:total_attributes, Shapes::ShapeRef.new(shape: number, location_name: "totalAttributes")) NodeCounts.add_member(:total_actuators, Shapes::ShapeRef.new(shape: number, location_name: "totalActuators")) + NodeCounts.add_member(:total_structs, Shapes::ShapeRef.new(shape: number, location_name: "totalStructs")) + NodeCounts.add_member(:total_properties, Shapes::ShapeRef.new(shape: number, location_name: "totalProperties")) NodeCounts.struct_class = Types::NodeCounts NodePaths.member = Shapes::ShapeRef.new(shape: NodePath) @@ -926,8 +975,8 @@ module ClientApi ObdInterface.add_member(:obd_standard, Shapes::ShapeRef.new(shape: ObdStandard, location_name: "obdStandard")) ObdInterface.add_member(:pid_request_interval_seconds, Shapes::ShapeRef.new(shape: nonNegativeInteger, location_name: "pidRequestIntervalSeconds")) ObdInterface.add_member(:dtc_request_interval_seconds, Shapes::ShapeRef.new(shape: nonNegativeInteger, location_name: "dtcRequestIntervalSeconds")) - ObdInterface.add_member(:use_extended_ids, Shapes::ShapeRef.new(shape: boolean, location_name: "useExtendedIds")) - ObdInterface.add_member(:has_transmission_ecu, Shapes::ShapeRef.new(shape: boolean, location_name: "hasTransmissionEcu")) + ObdInterface.add_member(:use_extended_ids, Shapes::ShapeRef.new(shape: PrimitiveBoolean, location_name: "useExtendedIds")) + ObdInterface.add_member(:has_transmission_ecu, Shapes::ShapeRef.new(shape: PrimitiveBoolean, location_name: "hasTransmissionEcu")) ObdInterface.struct_class = Types::ObdInterface ObdSignal.add_member(:pid_response_length, Shapes::ShapeRef.new(shape: positiveInteger, required: true, location_name: "pidResponseLength")) @@ -941,7 +990,13 @@ module ClientApi ObdSignal.add_member(:bit_mask_length, Shapes::ShapeRef.new(shape: ObdBitmaskLength, location_name: "bitMaskLength")) ObdSignal.struct_class = Types::ObdSignal - PutEncryptionConfigurationRequest.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: String, location_name: "kmsKeyId")) + PrimitiveMessageDefinition.add_member(:ros2_primitive_message_definition, Shapes::ShapeRef.new(shape: ROS2PrimitiveMessageDefinition, location_name: "ros2PrimitiveMessageDefinition")) + PrimitiveMessageDefinition.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + PrimitiveMessageDefinition.add_member_subclass(:ros2_primitive_message_definition, Types::PrimitiveMessageDefinition::Ros2PrimitiveMessageDefinition) + PrimitiveMessageDefinition.add_member_subclass(:unknown, Types::PrimitiveMessageDefinition::Unknown) + PrimitiveMessageDefinition.struct_class = Types::PrimitiveMessageDefinition + + PutEncryptionConfigurationRequest.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: PutEncryptionConfigurationRequestKmsKeyIdString, location_name: "kmsKeyId")) PutEncryptionConfigurationRequest.add_member(:encryption_type, Shapes::ShapeRef.new(shape: EncryptionType, required: true, location_name: "encryptionType")) PutEncryptionConfigurationRequest.struct_class = Types::PutEncryptionConfigurationRequest @@ -955,6 +1010,12 @@ module ClientApi PutLoggingOptionsResponse.struct_class = Types::PutLoggingOptionsResponse + ROS2PrimitiveMessageDefinition.add_member(:primitive_type, Shapes::ShapeRef.new(shape: ROS2PrimitiveType, required: true, location_name: "primitiveType")) + ROS2PrimitiveMessageDefinition.add_member(:offset, Shapes::ShapeRef.new(shape: double, location_name: "offset")) + ROS2PrimitiveMessageDefinition.add_member(:scaling, Shapes::ShapeRef.new(shape: double, location_name: "scaling")) + ROS2PrimitiveMessageDefinition.add_member(:upper_bound, Shapes::ShapeRef.new(shape: ROS2PrimitiveMessageDefinitionUpperBoundLong, location_name: "upperBound")) + ROS2PrimitiveMessageDefinition.struct_class = Types::ROS2PrimitiveMessageDefinition + RegisterAccountRequest.add_member(:timestream_resources, Shapes::ShapeRef.new(shape: TimestreamResources, deprecated: true, location_name: "timestreamResources", metadata: {"deprecatedMessage"=>"Amazon Timestream metadata is now passed in the CreateCampaign API."})) RegisterAccountRequest.add_member(:iam_resources, Shapes::ShapeRef.new(shape: IamResources, deprecated: true, location_name: "iamResources", metadata: {"deprecatedMessage"=>"iamResources is no longer used or needed as input"})) RegisterAccountRequest.struct_class = Types::RegisterAccountRequest @@ -986,6 +1047,7 @@ module ClientApi Sensor.add_member(:max, Shapes::ShapeRef.new(shape: double, location_name: "max")) Sensor.add_member(:deprecation_message, Shapes::ShapeRef.new(shape: message, location_name: "deprecationMessage")) Sensor.add_member(:comment, Shapes::ShapeRef.new(shape: message, location_name: "comment")) + Sensor.add_member(:struct_fully_qualified_name, Shapes::ShapeRef.new(shape: NodePath, location_name: "structFullyQualifiedName")) Sensor.struct_class = Types::Sensor SignalCatalogSummary.add_member(:name, Shapes::ShapeRef.new(shape: string, location_name: "name")) @@ -999,6 +1061,7 @@ module ClientApi SignalDecoder.add_member(:interface_id, Shapes::ShapeRef.new(shape: InterfaceId, required: true, location_name: "interfaceId")) SignalDecoder.add_member(:can_signal, Shapes::ShapeRef.new(shape: CanSignal, location_name: "canSignal")) SignalDecoder.add_member(:obd_signal, Shapes::ShapeRef.new(shape: ObdSignal, location_name: "obdSignal")) + SignalDecoder.add_member(:message_signal, Shapes::ShapeRef.new(shape: MessageSignal, location_name: "messageSignal")) SignalDecoder.struct_class = Types::SignalDecoder SignalDecoders.member = Shapes::ShapeRef.new(shape: SignalDecoder) @@ -1010,6 +1073,28 @@ module ClientApi SignalInformationList.member = Shapes::ShapeRef.new(shape: SignalInformation) + StructuredMessage.add_member(:primitive_message_definition, Shapes::ShapeRef.new(shape: PrimitiveMessageDefinition, location_name: "primitiveMessageDefinition")) + StructuredMessage.add_member(:structured_message_list_definition, Shapes::ShapeRef.new(shape: StructuredMessageListDefinition, location_name: "structuredMessageListDefinition")) + StructuredMessage.add_member(:structured_message_definition, Shapes::ShapeRef.new(shape: StructuredMessageDefinition, location_name: "structuredMessageDefinition")) + StructuredMessage.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + StructuredMessage.add_member_subclass(:primitive_message_definition, Types::StructuredMessage::PrimitiveMessageDefinition) + StructuredMessage.add_member_subclass(:structured_message_list_definition, Types::StructuredMessage::StructuredMessageListDefinition) + StructuredMessage.add_member_subclass(:structured_message_definition, Types::StructuredMessage::StructuredMessageDefinition) + StructuredMessage.add_member_subclass(:unknown, Types::StructuredMessage::Unknown) + StructuredMessage.struct_class = Types::StructuredMessage + + StructuredMessageDefinition.member = Shapes::ShapeRef.new(shape: StructuredMessageFieldNameAndDataTypePair) + + StructuredMessageFieldNameAndDataTypePair.add_member(:field_name, Shapes::ShapeRef.new(shape: StructureMessageName, required: true, location_name: "fieldName")) + StructuredMessageFieldNameAndDataTypePair.add_member(:data_type, Shapes::ShapeRef.new(shape: StructuredMessage, required: true, location_name: "dataType")) + StructuredMessageFieldNameAndDataTypePair.struct_class = Types::StructuredMessageFieldNameAndDataTypePair + + StructuredMessageListDefinition.add_member(:name, Shapes::ShapeRef.new(shape: StructureMessageName, required: true, location_name: "name")) + StructuredMessageListDefinition.add_member(:member_type, Shapes::ShapeRef.new(shape: StructuredMessage, required: true, location_name: "memberType")) + StructuredMessageListDefinition.add_member(:list_type, Shapes::ShapeRef.new(shape: StructuredMessageListType, required: true, location_name: "listType")) + StructuredMessageListDefinition.add_member(:capacity, Shapes::ShapeRef.new(shape: nonNegativeInteger, location_name: "capacity")) + StructuredMessageListDefinition.struct_class = Types::StructuredMessageListDefinition + Tag.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, required: true, location_name: "Key")) Tag.add_member(:value, Shapes::ShapeRef.new(shape: TagValue, required: true, location_name: "Value")) Tag.struct_class = Types::Tag @@ -1149,6 +1234,10 @@ module ClientApi ValidationExceptionFieldList.member = Shapes::ShapeRef.new(shape: ValidationExceptionField) + VehicleMiddleware.add_member(:name, Shapes::ShapeRef.new(shape: VehicleMiddlewareName, required: true, location_name: "name")) + VehicleMiddleware.add_member(:protocol_name, Shapes::ShapeRef.new(shape: VehicleMiddlewareProtocol, required: true, location_name: "protocolName")) + VehicleMiddleware.struct_class = Types::VehicleMiddleware + VehicleStatus.add_member(:campaign_name, Shapes::ShapeRef.new(shape: string, location_name: "campaignName")) VehicleStatus.add_member(:vehicle_name, Shapes::ShapeRef.new(shape: vehicleName, location_name: "vehicleName")) VehicleStatus.add_member(:status, Shapes::ShapeRef.new(shape: VehicleState, location_name: "status")) @@ -1224,6 +1313,7 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: AssociateVehicleFleetResponse) o.errors << Shapes::ShapeRef.new(shape: InternalServerException) o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) o.errors << Shapes::ShapeRef.new(shape: ValidationException) o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) diff --git a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/endpoint_provider.rb b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/endpoint_provider.rb index c10b8290de2..727af096515 100644 --- a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/endpoint_provider.rb +++ b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://iotfleetwise-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/types.rb b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/types.rb index 05c8bc8c18d..89bdda6368d 100644 --- a/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/types.rb +++ b/gems/aws-sdk-iotfleetwise/lib/aws-sdk-iotfleetwise/types.rb @@ -73,6 +73,13 @@ class AccessDeniedException < Struct.new( # A comment in addition to the description. # @return [String] # + # @!attribute [rw] struct_fully_qualified_name + # The fully qualified name of the struct node for the actuator if the + # data type of the actuator is `Struct` or `StructArray`. For example, + # the struct fully qualified name of an actuator might be + # `Vehicle.Door.LockStruct`. + # @return [String] + # class Actuator < Struct.new( :fully_qualified_name, :data_type, @@ -83,7 +90,8 @@ class Actuator < Struct.new( :max, :assigned_value, :deprecation_message, - :comment) + :comment, + :struct_fully_qualified_name) SENSITIVE = [] include Aws::Structure end @@ -331,7 +339,7 @@ class CampaignSummary < Struct.new( # @!attribute [rw] can_dbc_files # A list of DBC files. You can upload only one DBC file for each # network interface and specify up to five (inclusive) files in the - # list. + # list. The DBC file can be a maximum size of 200 MB. # @return [Array] # # @!attribute [rw] signals_map @@ -1015,6 +1023,85 @@ class CreateVehicleResponseItem < Struct.new( include Aws::Structure end + # Represents a member of the complex data structure. The data type of + # the property can be either primitive or another `struct`. + # + # @!attribute [rw] fully_qualified_name + # The fully qualified name of the custom property. For example, the + # fully qualified name of a custom property might be + # `ComplexDataTypes.VehicleDataTypes.SVMCamera.FPS`. + # @return [String] + # + # @!attribute [rw] data_type + # The data type for the custom property. + # @return [String] + # + # @!attribute [rw] data_encoding + # Indicates whether the property is binary data. + # @return [String] + # + # @!attribute [rw] description + # A brief description of the custom property. + # @return [String] + # + # @!attribute [rw] deprecation_message + # The deprecation message for the node or the branch that was moved or + # deleted. + # @return [String] + # + # @!attribute [rw] comment + # A comment in addition to the description. + # @return [String] + # + # @!attribute [rw] struct_fully_qualified_name + # The fully qualified name of the struct node for the custom property + # if the data type of the custom property is `Struct` or + # `StructArray`. + # @return [String] + # + class CustomProperty < Struct.new( + :fully_qualified_name, + :data_type, + :data_encoding, + :description, + :deprecation_message, + :comment, + :struct_fully_qualified_name) + SENSITIVE = [] + include Aws::Structure + end + + # The custom structure represents a complex or higher-order data + # structure. + # + # @!attribute [rw] fully_qualified_name + # The fully qualified name of the custom structure. For example, the + # fully qualified name of a custom structure might be + # `ComplexDataTypes.VehicleDataTypes.SVMCamera`. + # @return [String] + # + # @!attribute [rw] description + # A brief description of the custom structure. + # @return [String] + # + # @!attribute [rw] deprecation_message + # The deprecation message for the node or the branch that was moved or + # deleted. + # @return [String] + # + # @!attribute [rw] comment + # A comment in addition to the description. + # @return [String] + # + class CustomStruct < Struct.new( + :fully_qualified_name, + :description, + :deprecation_message, + :comment) + SENSITIVE = [] + include Aws::Structure + end + # The destination where the Amazon Web Services IoT FleetWise campaign # sends data. You can send data to be stored in Amazon S3 or Amazon # Timestream. @@ -1082,6 +1169,12 @@ class Unknown < DataDestinationConfig; end # epoch (January 1, 1970 at midnight UTC time). # @return [Time] # + # @!attribute [rw] message + # The detailed message for the decoder manifest. When a decoder + # manifest is in an `INVALID` status, the message contains detailed + # reason and help information. + # @return [String] + # class DecoderManifestSummary < Struct.new( :name, :arn, @@ -1089,7 +1182,8 @@ class DecoderManifestSummary < Struct.new( :description, :status, :creation_time, - :last_modification_time) + :last_modification_time, + :message) SENSITIVE = [] include Aws::Structure end @@ -1532,6 +1626,12 @@ class GetDecoderManifestRequest < Struct.new( # epoch (January 1, 1970 at midnight UTC time). # @return [Time] # + # @!attribute [rw] message + # The detailed message for the decoder manifest. When a decoder + # manifest is in an `INVALID` status, the message contains detailed + # reason and help information. + # @return [String] + # class GetDecoderManifestResponse < Struct.new( :name, :arn, @@ -1539,7 +1639,8 @@ class GetDecoderManifestResponse < Struct.new( :model_manifest_arn, :status, :creation_time, - :last_modification_time) + :last_modification_time, + :message) SENSITIVE = [] include Aws::Structure end @@ -1557,7 +1658,7 @@ class GetEncryptionConfigurationRequest < Aws::EmptyStructure; end # @return [String] # # @!attribute [rw] encryption_type - # The type of encryption. Set to `KMS_BASED_ENCRYPTION` to use an KMS + # The type of encryption. Set to `KMS_BASED_ENCRYPTION` to use a KMS # key that you own and manage. Set to `FLEETWISE_DEFAULT_ENCRYPTION` # to use an Amazon Web Services managed key that is owned by the # Amazon Web Services IoT FleetWise service account. @@ -2107,9 +2208,14 @@ class InvalidSignal < Struct.new( # A message about why the signal decoder isn't valid. # @return [String] # + # @!attribute [rw] hint + # The possible cause for the invalid signal decoder. + # @return [String] + # class InvalidSignalDecoder < Struct.new( :name, - :reason) + :reason, + :hint) SENSITIVE = [] include Aws::Structure end @@ -2672,6 +2778,28 @@ class ListVehiclesResponse < Struct.new( include Aws::Structure end + # The decoding information for a specific message which support higher + # order data types. + # + # @!attribute [rw] topic_name + # The topic name for the message signal. It corresponds to topics in + # ROS 2. + # @return [String] + # + # @!attribute [rw] structured_message + # The structured message for the message signal. It can be defined + # with either a `primitiveMessageDefinition`, + # `structuredMessageListDefinition`, or `structuredMessageDefinition` + # recursively. + # @return [Types::StructuredMessage] + # + class MessageSignal < Struct.new( + :topic_name, + :structured_message) + SENSITIVE = [] + include Aws::Structure + end + # Information about a vehicle model (model manifest). You can use the # API operation to return this information about multiple vehicle # models. @@ -2768,11 +2896,17 @@ class Unknown < NetworkFileDefinition; end # diagnostic (OBD) II protocol. # @return [Types::ObdInterface] # + # @!attribute [rw] vehicle_middleware + # The vehicle middleware defined as a type of network interface. + # Examples of vehicle middleware include `ROS2` and `SOME/IP`. + # @return [Types::VehicleMiddleware] + # class NetworkInterface < Struct.new( :interface_id, :type, :can_interface, - :obd_interface) + :obd_interface, + :vehicle_middleware) SENSITIVE = [] include Aws::Structure end @@ -2818,11 +2952,22 @@ class NetworkInterface < Struct.new( #
# @return [Types::Attribute] # + # @!attribute [rw] struct + # Represents a complex or higher-order data structure. + # @return [Types::CustomStruct] + # + # @!attribute [rw] property + # Represents a member of the complex data structure. The `datatype` of + # the property can be either primitive or another `struct`. + # @return [Types::CustomProperty] + # class Node < Struct.new( :branch, :sensor, :actuator, :attribute, + :struct, + :property, :unknown) SENSITIVE = [] include Aws::Structure @@ -2832,6 +2977,8 @@ class Branch < Node; end class Sensor < Node; end class Actuator < Node; end class Attribute < Node; end + class Struct < Node; end + class Property < Node; end class Unknown < Node; end end @@ -2862,12 +3009,22 @@ class Unknown < Node; end # actuators. # @return [Integer] # + # @!attribute [rw] total_structs + # The total structure for the node. + # @return [Integer] + # + # @!attribute [rw] total_properties + # The total properties for the node. + # @return [Integer] + # class NodeCounts < Struct.new( :total_nodes, :total_branches, :total_sensors, :total_attributes, - :total_actuators) + :total_actuators, + :total_structs, + :total_properties) SENSITIVE = [] include Aws::Structure end @@ -2971,6 +3128,28 @@ class ObdSignal < Struct.new( include Aws::Structure end + # Represents a primitive type node of the complex data structure. + # + # @note PrimitiveMessageDefinition is a union - when making an API calls you must set exactly one of the members. + # + # @note PrimitiveMessageDefinition is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of PrimitiveMessageDefinition corresponding to the set member. + # + # @!attribute [rw] ros2_primitive_message_definition + # Information about a `PrimitiveMessage` using a ROS 2 compliant + # primitive type message of the complex data structure. + # @return [Types::ROS2PrimitiveMessageDefinition] + # + class PrimitiveMessageDefinition < Struct.new( + :ros2_primitive_message_definition, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class Ros2PrimitiveMessageDefinition < PrimitiveMessageDefinition; end + class Unknown < PrimitiveMessageDefinition; end + end + # @!attribute [rw] kms_key_id # The ID of the KMS key that is used for encryption. # @return [String] @@ -3024,6 +3203,37 @@ class PutLoggingOptionsRequest < Struct.new( class PutLoggingOptionsResponse < Aws::EmptyStructure; end + # Represents a ROS 2 compliant primitive type message of the complex + # data structure. + # + # @!attribute [rw] primitive_type + # The primitive type (integer, floating point, boolean, etc.) for the + # ROS 2 primitive message definition. + # @return [String] + # + # @!attribute [rw] offset + # The offset used to calculate the signal value. Combined with + # scaling, the calculation is `value = raw_value * scaling + offset`. + # @return [Float] + # + # @!attribute [rw] scaling + # A multiplier used to decode the message. + # @return [Float] + # + # @!attribute [rw] upper_bound + # An optional attribute specifying the upper bound for `STRING` and + # `WSTRING`. + # @return [Integer] + # + class ROS2PrimitiveMessageDefinition < Struct.new( + :primitive_type, + :offset, + :scaling, + :upper_bound) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] timestream_resources # The registered Amazon Timestream resources that Amazon Web Services # IoT FleetWise edge agent software can transfer your vehicle data to. @@ -3202,6 +3412,13 @@ class S3Config < Struct.new( # A comment in addition to the description. # @return [String] # + # @!attribute [rw] struct_fully_qualified_name + # The fully qualified name of the struct node for a sensor if the data + # type of the actuator is `Struct` or `StructArray`. For example, the + # struct fully qualified name of a sensor might be + # `Vehicle.ADAS.CameraStruct`. + # @return [String] + # class Sensor < Struct.new( :fully_qualified_name, :data_type, @@ -3211,7 +3428,8 @@ class Sensor < Struct.new( :min, :max, :deprecation_message, - :comment) + :comment, + :struct_fully_qualified_name) SENSITIVE = [] include Aws::Structure end @@ -3275,12 +3493,18 @@ class SignalCatalogSummary < Struct.new( # II protocol. # @return [Types::ObdSignal] # + # @!attribute [rw] message_signal + # The decoding information for a specific message which supports + # higher order data types. + # @return [Types::MessageSignal] + # class SignalDecoder < Struct.new( :fully_qualified_name, :type, :interface_id, :can_signal, - :obd_signal) + :obd_signal, + :message_signal) SENSITIVE = [] include Aws::Structure end @@ -3313,6 +3537,88 @@ class SignalInformation < Struct.new( include Aws::Structure end + # The structured message for the message signal. It can be defined with + # either a `primitiveMessageDefinition`, + # `structuredMessageListDefinition`, or `structuredMessageDefinition` + # recursively. + # + # @note StructuredMessage is a union - when making an API calls you must set exactly one of the members. + # + # @note StructuredMessage is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of StructuredMessage corresponding to the set member. + # + # @!attribute [rw] primitive_message_definition + # Represents a primitive type node of the complex data structure. + # @return [Types::PrimitiveMessageDefinition] + # + # @!attribute [rw] structured_message_list_definition + # Represents a list type node of the complex data structure. + # @return [Types::StructuredMessageListDefinition] + # + # @!attribute [rw] structured_message_definition + # Represents a struct type node of the complex data structure. + # @return [Array] + # + class StructuredMessage < Struct.new( + :primitive_message_definition, + :structured_message_list_definition, + :structured_message_definition, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class PrimitiveMessageDefinition < StructuredMessage; end + class StructuredMessageListDefinition < StructuredMessage; end + class StructuredMessageDefinition < StructuredMessage; end + class Unknown < StructuredMessage; end + end + + # Represents a `StructureMessageName` to `DataType` map element. + # + # @!attribute [rw] field_name + # The field name of the structured message. It determines how a data + # value is referenced in the target language. + # @return [String] + # + # @!attribute [rw] data_type + # The data type. + # @return [Types::StructuredMessage] + # + class StructuredMessageFieldNameAndDataTypePair < Struct.new( + :field_name, + :data_type) + SENSITIVE = [] + include Aws::Structure + end + + # Represents a list type node of the complex data structure. + # + # @!attribute [rw] name + # The name of the structured message list definition. + # @return [String] + # + # @!attribute [rw] member_type + # The member type of the structured message list definition. + # @return [Types::StructuredMessage] + # + # @!attribute [rw] list_type + # The type of list of the structured message list definition. + # @return [String] + # + # @!attribute [rw] capacity + # The capacity of the structured message list definition when the list + # type is `FIXED_CAPACITY` or `DYNAMIC_BOUNDED_CAPACITY`. + # @return [Integer] + # + class StructuredMessageListDefinition < Struct.new( + :name, + :member_type, + :list_type, + :capacity) + SENSITIVE = [] + include Aws::Structure + end + # A set of key/value pairs that are used to manage the resource. # # @!attribute [rw] key @@ -3937,6 +4243,24 @@ class ValidationExceptionField < Struct.new( include Aws::Structure end + # The vehicle middleware defined as a type of network interface. + # Examples of vehicle middleware include `ROS2` and `SOME/IP`. + # + # @!attribute [rw] name + # The name of the vehicle middleware. + # @return [String] + # + # @!attribute [rw] protocol_name + # The protocol name of the vehicle middleware. + # @return [String] + # + class VehicleMiddleware < Struct.new( + :name, + :protocol_name) + SENSITIVE = [] + include Aws::Structure + end + # Information about the state of a vehicle and how it relates to the # status of a campaign. # diff --git a/gems/aws-sdk-lakeformation/CHANGELOG.md b/gems/aws-sdk-lakeformation/CHANGELOG.md index 39f3abf23f2..9a904720206 100644 --- a/gems/aws-sdk-lakeformation/CHANGELOG.md +++ b/gems/aws-sdk-lakeformation/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.44.0 (2023-11-27) +------------------ + +* Feature - This release adds four new APIs "DescribeLakeFormationIdentityCenterConfiguration", "CreateLakeFormationIdentityCenterConfiguration", "DescribeLakeFormationIdentityCenterConfiguration", and "DeleteLakeFormationIdentityCenterConfiguration", and also updates the corresponding documentation. + 1.43.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-lakeformation/VERSION b/gems/aws-sdk-lakeformation/VERSION index b978278f05f..372cf402c73 100644 --- a/gems/aws-sdk-lakeformation/VERSION +++ b/gems/aws-sdk-lakeformation/VERSION @@ -1 +1 @@ -1.43.0 +1.44.0 diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation.rb index 1ad181b4ee2..489592a46ec 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation.rb @@ -52,6 +52,6 @@ # @!group service module Aws::LakeFormation - GEM_VERSION = '1.43.0' + GEM_VERSION = '1.44.0' end diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client.rb index 9f9e0e69ef8..009e65ce8f9 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client.rb @@ -939,6 +939,54 @@ def create_lf_tag(params = {}, options = {}) req.send_request(options) end + # Creates an IAM Identity Center connection with Lake Formation to allow + # IAM Identity Center users and groups to access Data Catalog resources. + # + # @option params [String] :catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definitions, and other control + # information to manage your Lake Formation environment. + # + # @option params [String] :instance_arn + # The ARN of the IAM Identity Center instance for which the operation + # will be executed. For more information about ARNs, see Amazon Resource + # Names (ARNs) and Amazon Web Services Service Namespaces in the Amazon + # Web Services General Reference. + # + # @option params [Types::ExternalFilteringConfiguration] :external_filtering + # A list of the account IDs of Amazon Web Services accounts of + # third-party applications that are allowed to to access data managed by + # Lake Formation. + # + # @return [Types::CreateLakeFormationIdentityCenterConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateLakeFormationIdentityCenterConfigurationResponse#application_arn #application_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_lake_formation_identity_center_configuration({ + # catalog_id: "CatalogIdString", + # instance_arn: "IdentityCenterInstanceArn", + # external_filtering: { + # status: "ENABLED", # required, accepts ENABLED, DISABLED + # authorized_targets: ["ScopeTarget"], # required + # }, + # }) + # + # @example Response structure + # + # resp.application_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/CreateLakeFormationIdentityCenterConfiguration AWS API Documentation + # + # @overload create_lake_formation_identity_center_configuration(params = {}) + # @param [Hash] params ({}) + def create_lake_formation_identity_center_configuration(params = {}, options = {}) + req = build_request(:create_lake_formation_identity_center_configuration, params) + req.send_request(options) + end + # Enforce Lake Formation permissions for the given databases, tables, # and principals. # @@ -1085,6 +1133,31 @@ def delete_lf_tag(params = {}, options = {}) req.send_request(options) end + # Deletes an IAM Identity Center connection with Lake Formation. + # + # @option params [String] :catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definition, and other control + # information to manage your Lake Formation environment. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_lake_formation_identity_center_configuration({ + # catalog_id: "CatalogIdString", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DeleteLakeFormationIdentityCenterConfiguration AWS API Documentation + # + # @overload delete_lake_formation_identity_center_configuration(params = {}) + # @param [Hash] params ({}) + def delete_lake_formation_identity_center_configuration(params = {}, options = {}) + req = build_request(:delete_lake_formation_identity_center_configuration, params) + req.send_request(options) + end + # Remove the Lake Formation permissions enforcement of the given # databases, tables, and principals. # @@ -1247,6 +1320,45 @@ def deregister_resource(params = {}, options = {}) req.send_request(options) end + # Retrieves the instance ARN and application ARN for the connection. + # + # @option params [String] :catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, and other control information to + # manage your Lake Formation environment. + # + # @return [Types::DescribeLakeFormationIdentityCenterConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeLakeFormationIdentityCenterConfigurationResponse#catalog_id #catalog_id} => String + # * {Types::DescribeLakeFormationIdentityCenterConfigurationResponse#instance_arn #instance_arn} => String + # * {Types::DescribeLakeFormationIdentityCenterConfigurationResponse#application_arn #application_arn} => String + # * {Types::DescribeLakeFormationIdentityCenterConfigurationResponse#external_filtering #external_filtering} => Types::ExternalFilteringConfiguration + # + # @example Request syntax with placeholder values + # + # resp = client.describe_lake_formation_identity_center_configuration({ + # catalog_id: "CatalogIdString", + # }) + # + # @example Response structure + # + # resp.catalog_id #=> String + # resp.instance_arn #=> String + # resp.application_arn #=> String + # resp.external_filtering.status #=> String, one of "ENABLED", "DISABLED" + # resp.external_filtering.authorized_targets #=> Array + # resp.external_filtering.authorized_targets[0] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DescribeLakeFormationIdentityCenterConfiguration AWS API Documentation + # + # @overload describe_lake_formation_identity_center_configuration(params = {}) + # @param [Hash] params ({}) + def describe_lake_formation_identity_center_configuration(params = {}, options = {}) + req = build_request(:describe_lake_formation_identity_center_configuration, params) + req.send_request(options) + end + # Retrieves the current data access role for the given resource # registered in Lake Formation. # @@ -3386,6 +3498,44 @@ def update_lf_tag(params = {}, options = {}) req.send_request(options) end + # Updates the IAM Identity Center connection parameters. + # + # @option params [String] :catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definitions, and other control + # information to manage your Lake Formation environment. + # + # @option params [String] :application_status + # Allows to enable or disable the IAM Identity Center connection. + # + # @option params [Types::ExternalFilteringConfiguration] :external_filtering + # A list of the account IDs of Amazon Web Services accounts of + # third-party applications that are allowed to access data managed by + # Lake Formation. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_lake_formation_identity_center_configuration({ + # catalog_id: "CatalogIdString", + # application_status: "ENABLED", # accepts ENABLED, DISABLED + # external_filtering: { + # status: "ENABLED", # required, accepts ENABLED, DISABLED + # authorized_targets: ["ScopeTarget"], # required + # }, + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/UpdateLakeFormationIdentityCenterConfiguration AWS API Documentation + # + # @overload update_lake_formation_identity_center_configuration(params = {}) + # @param [Hash] params ({}) + def update_lake_formation_identity_center_configuration(params = {}, options = {}) + req = build_request(:update_lake_formation_identity_center_configuration, params) + req.send_request(options) + end + # Updates the data access role used for vending access to the given # (registered) resource in Lake Formation. # @@ -3536,7 +3686,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-lakeformation' - context[:gem_version] = '1.43.0' + context[:gem_version] = '1.44.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client_api.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client_api.rb index 9881d0789d9..3ff893f17a7 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client_api.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/client_api.rb @@ -20,6 +20,8 @@ module ClientApi AddObjectInput = Shapes::StructureShape.new(name: 'AddObjectInput') AllRowsWildcard = Shapes::StructureShape.new(name: 'AllRowsWildcard') AlreadyExistsException = Shapes::StructureShape.new(name: 'AlreadyExistsException') + ApplicationArn = Shapes::StringShape.new(name: 'ApplicationArn') + ApplicationStatus = Shapes::StringShape.new(name: 'ApplicationStatus') AssumeDecoratedRoleWithSAMLRequest = Shapes::StructureShape.new(name: 'AssumeDecoratedRoleWithSAMLRequest') AssumeDecoratedRoleWithSAMLResponse = Shapes::StructureShape.new(name: 'AssumeDecoratedRoleWithSAMLResponse') AuditContext = Shapes::StructureShape.new(name: 'AuditContext') @@ -50,6 +52,8 @@ module ClientApi CreateDataCellsFilterResponse = Shapes::StructureShape.new(name: 'CreateDataCellsFilterResponse') CreateLFTagRequest = Shapes::StructureShape.new(name: 'CreateLFTagRequest') CreateLFTagResponse = Shapes::StructureShape.new(name: 'CreateLFTagResponse') + CreateLakeFormationIdentityCenterConfigurationRequest = Shapes::StructureShape.new(name: 'CreateLakeFormationIdentityCenterConfigurationRequest') + CreateLakeFormationIdentityCenterConfigurationResponse = Shapes::StructureShape.new(name: 'CreateLakeFormationIdentityCenterConfigurationResponse') CreateLakeFormationOptInRequest = Shapes::StructureShape.new(name: 'CreateLakeFormationOptInRequest') CreateLakeFormationOptInResponse = Shapes::StructureShape.new(name: 'CreateLakeFormationOptInResponse') CredentialTimeoutDurationSecondInteger = Shapes::IntegerShape.new(name: 'CredentialTimeoutDurationSecondInteger') @@ -69,6 +73,8 @@ module ClientApi DeleteDataCellsFilterResponse = Shapes::StructureShape.new(name: 'DeleteDataCellsFilterResponse') DeleteLFTagRequest = Shapes::StructureShape.new(name: 'DeleteLFTagRequest') DeleteLFTagResponse = Shapes::StructureShape.new(name: 'DeleteLFTagResponse') + DeleteLakeFormationIdentityCenterConfigurationRequest = Shapes::StructureShape.new(name: 'DeleteLakeFormationIdentityCenterConfigurationRequest') + DeleteLakeFormationIdentityCenterConfigurationResponse = Shapes::StructureShape.new(name: 'DeleteLakeFormationIdentityCenterConfigurationResponse') DeleteLakeFormationOptInRequest = Shapes::StructureShape.new(name: 'DeleteLakeFormationOptInRequest') DeleteLakeFormationOptInResponse = Shapes::StructureShape.new(name: 'DeleteLakeFormationOptInResponse') DeleteObjectInput = Shapes::StructureShape.new(name: 'DeleteObjectInput') @@ -76,6 +82,8 @@ module ClientApi DeleteObjectsOnCancelResponse = Shapes::StructureShape.new(name: 'DeleteObjectsOnCancelResponse') DeregisterResourceRequest = Shapes::StructureShape.new(name: 'DeregisterResourceRequest') DeregisterResourceResponse = Shapes::StructureShape.new(name: 'DeregisterResourceResponse') + DescribeLakeFormationIdentityCenterConfigurationRequest = Shapes::StructureShape.new(name: 'DescribeLakeFormationIdentityCenterConfigurationRequest') + DescribeLakeFormationIdentityCenterConfigurationResponse = Shapes::StructureShape.new(name: 'DescribeLakeFormationIdentityCenterConfigurationResponse') DescribeResourceRequest = Shapes::StructureShape.new(name: 'DescribeResourceRequest') DescribeResourceResponse = Shapes::StructureShape.new(name: 'DescribeResourceResponse') DescribeTransactionRequest = Shapes::StructureShape.new(name: 'DescribeTransactionRequest') @@ -83,6 +91,7 @@ module ClientApi DescriptionString = Shapes::StringShape.new(name: 'DescriptionString') DetailsMap = Shapes::StructureShape.new(name: 'DetailsMap') ETagString = Shapes::StringShape.new(name: 'ETagString') + EnableStatus = Shapes::StringShape.new(name: 'EnableStatus') EntityNotFoundException = Shapes::StructureShape.new(name: 'EntityNotFoundException') ErrorDetail = Shapes::StructureShape.new(name: 'ErrorDetail') ErrorMessageString = Shapes::StringShape.new(name: 'ErrorMessageString') @@ -92,6 +101,7 @@ module ClientApi Expression = Shapes::ListShape.new(name: 'Expression') ExtendTransactionRequest = Shapes::StructureShape.new(name: 'ExtendTransactionRequest') ExtendTransactionResponse = Shapes::StructureShape.new(name: 'ExtendTransactionResponse') + ExternalFilteringConfiguration = Shapes::StructureShape.new(name: 'ExternalFilteringConfiguration') FieldNameString = Shapes::StringShape.new(name: 'FieldNameString') FilterCondition = Shapes::StructureShape.new(name: 'FilterCondition') FilterConditionList = Shapes::ListShape.new(name: 'FilterConditionList') @@ -130,6 +140,7 @@ module ClientApi IAMRoleArn = Shapes::StringShape.new(name: 'IAMRoleArn') IAMSAMLProviderArn = Shapes::StringShape.new(name: 'IAMSAMLProviderArn') Identifier = Shapes::StringShape.new(name: 'Identifier') + IdentityCenterInstanceArn = Shapes::StringShape.new(name: 'IdentityCenterInstanceArn') Integer = Shapes::IntegerShape.new(name: 'Integer') InternalServiceException = Shapes::StructureShape.new(name: 'InternalServiceException') InvalidInputException = Shapes::StructureShape.new(name: 'InvalidInputException') @@ -215,6 +226,8 @@ module ClientApi RevokePermissionsResponse = Shapes::StructureShape.new(name: 'RevokePermissionsResponse') RowFilter = Shapes::StructureShape.new(name: 'RowFilter') SAMLAssertionString = Shapes::StringShape.new(name: 'SAMLAssertionString') + ScopeTarget = Shapes::StringShape.new(name: 'ScopeTarget') + ScopeTargets = Shapes::ListShape.new(name: 'ScopeTargets') SearchDatabasesByLFTagsRequest = Shapes::StructureShape.new(name: 'SearchDatabasesByLFTagsRequest') SearchDatabasesByLFTagsResponse = Shapes::StructureShape.new(name: 'SearchDatabasesByLFTagsResponse') SearchPageSize = Shapes::IntegerShape.new(name: 'SearchPageSize') @@ -267,6 +280,8 @@ module ClientApi UpdateDataCellsFilterResponse = Shapes::StructureShape.new(name: 'UpdateDataCellsFilterResponse') UpdateLFTagRequest = Shapes::StructureShape.new(name: 'UpdateLFTagRequest') UpdateLFTagResponse = Shapes::StructureShape.new(name: 'UpdateLFTagResponse') + UpdateLakeFormationIdentityCenterConfigurationRequest = Shapes::StructureShape.new(name: 'UpdateLakeFormationIdentityCenterConfigurationRequest') + UpdateLakeFormationIdentityCenterConfigurationResponse = Shapes::StructureShape.new(name: 'UpdateLakeFormationIdentityCenterConfigurationResponse') UpdateResourceRequest = Shapes::StructureShape.new(name: 'UpdateResourceRequest') UpdateResourceResponse = Shapes::StructureShape.new(name: 'UpdateResourceResponse') UpdateTableObjectsRequest = Shapes::StructureShape.new(name: 'UpdateTableObjectsRequest') @@ -393,6 +408,14 @@ module ClientApi CreateLFTagResponse.struct_class = Types::CreateLFTagResponse + CreateLakeFormationIdentityCenterConfigurationRequest.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) + CreateLakeFormationIdentityCenterConfigurationRequest.add_member(:instance_arn, Shapes::ShapeRef.new(shape: IdentityCenterInstanceArn, location_name: "InstanceArn")) + CreateLakeFormationIdentityCenterConfigurationRequest.add_member(:external_filtering, Shapes::ShapeRef.new(shape: ExternalFilteringConfiguration, location_name: "ExternalFiltering")) + CreateLakeFormationIdentityCenterConfigurationRequest.struct_class = Types::CreateLakeFormationIdentityCenterConfigurationRequest + + CreateLakeFormationIdentityCenterConfigurationResponse.add_member(:application_arn, Shapes::ShapeRef.new(shape: ApplicationArn, location_name: "ApplicationArn")) + CreateLakeFormationIdentityCenterConfigurationResponse.struct_class = Types::CreateLakeFormationIdentityCenterConfigurationResponse + CreateLakeFormationOptInRequest.add_member(:principal, Shapes::ShapeRef.new(shape: DataLakePrincipal, required: true, location_name: "Principal")) CreateLakeFormationOptInRequest.add_member(:resource, Shapes::ShapeRef.new(shape: Resource, required: true, location_name: "Resource")) CreateLakeFormationOptInRequest.struct_class = Types::CreateLakeFormationOptInRequest @@ -458,6 +481,11 @@ module ClientApi DeleteLFTagResponse.struct_class = Types::DeleteLFTagResponse + DeleteLakeFormationIdentityCenterConfigurationRequest.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) + DeleteLakeFormationIdentityCenterConfigurationRequest.struct_class = Types::DeleteLakeFormationIdentityCenterConfigurationRequest + + DeleteLakeFormationIdentityCenterConfigurationResponse.struct_class = Types::DeleteLakeFormationIdentityCenterConfigurationResponse + DeleteLakeFormationOptInRequest.add_member(:principal, Shapes::ShapeRef.new(shape: DataLakePrincipal, required: true, location_name: "Principal")) DeleteLakeFormationOptInRequest.add_member(:resource, Shapes::ShapeRef.new(shape: Resource, required: true, location_name: "Resource")) DeleteLakeFormationOptInRequest.struct_class = Types::DeleteLakeFormationOptInRequest @@ -483,6 +511,15 @@ module ClientApi DeregisterResourceResponse.struct_class = Types::DeregisterResourceResponse + DescribeLakeFormationIdentityCenterConfigurationRequest.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) + DescribeLakeFormationIdentityCenterConfigurationRequest.struct_class = Types::DescribeLakeFormationIdentityCenterConfigurationRequest + + DescribeLakeFormationIdentityCenterConfigurationResponse.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) + DescribeLakeFormationIdentityCenterConfigurationResponse.add_member(:instance_arn, Shapes::ShapeRef.new(shape: IdentityCenterInstanceArn, location_name: "InstanceArn")) + DescribeLakeFormationIdentityCenterConfigurationResponse.add_member(:application_arn, Shapes::ShapeRef.new(shape: ApplicationArn, location_name: "ApplicationArn")) + DescribeLakeFormationIdentityCenterConfigurationResponse.add_member(:external_filtering, Shapes::ShapeRef.new(shape: ExternalFilteringConfiguration, location_name: "ExternalFiltering")) + DescribeLakeFormationIdentityCenterConfigurationResponse.struct_class = Types::DescribeLakeFormationIdentityCenterConfigurationResponse + DescribeResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArnString, required: true, location_name: "ResourceArn")) DescribeResourceRequest.struct_class = Types::DescribeResourceRequest @@ -520,6 +557,10 @@ module ClientApi ExtendTransactionResponse.struct_class = Types::ExtendTransactionResponse + ExternalFilteringConfiguration.add_member(:status, Shapes::ShapeRef.new(shape: EnableStatus, required: true, location_name: "Status")) + ExternalFilteringConfiguration.add_member(:authorized_targets, Shapes::ShapeRef.new(shape: ScopeTargets, required: true, location_name: "AuthorizedTargets")) + ExternalFilteringConfiguration.struct_class = Types::ExternalFilteringConfiguration + FilterCondition.add_member(:field, Shapes::ShapeRef.new(shape: FieldNameString, location_name: "Field")) FilterCondition.add_member(:comparison_operator, Shapes::ShapeRef.new(shape: ComparisonOperator, location_name: "ComparisonOperator")) FilterCondition.add_member(:string_value_list, Shapes::ShapeRef.new(shape: StringValueList, location_name: "StringValueList")) @@ -893,6 +934,8 @@ module ClientApi RowFilter.add_member(:all_rows_wildcard, Shapes::ShapeRef.new(shape: AllRowsWildcard, location_name: "AllRowsWildcard")) RowFilter.struct_class = Types::RowFilter + ScopeTargets.member = Shapes::ShapeRef.new(shape: ScopeTarget) + SearchDatabasesByLFTagsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "NextToken")) SearchDatabasesByLFTagsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: SearchPageSize, location_name: "MaxResults")) SearchDatabasesByLFTagsRequest.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) @@ -1017,6 +1060,13 @@ module ClientApi UpdateLFTagResponse.struct_class = Types::UpdateLFTagResponse + UpdateLakeFormationIdentityCenterConfigurationRequest.add_member(:catalog_id, Shapes::ShapeRef.new(shape: CatalogIdString, location_name: "CatalogId")) + UpdateLakeFormationIdentityCenterConfigurationRequest.add_member(:application_status, Shapes::ShapeRef.new(shape: ApplicationStatus, location_name: "ApplicationStatus")) + UpdateLakeFormationIdentityCenterConfigurationRequest.add_member(:external_filtering, Shapes::ShapeRef.new(shape: ExternalFilteringConfiguration, location_name: "ExternalFiltering")) + UpdateLakeFormationIdentityCenterConfigurationRequest.struct_class = Types::UpdateLakeFormationIdentityCenterConfigurationRequest + + UpdateLakeFormationIdentityCenterConfigurationResponse.struct_class = Types::UpdateLakeFormationIdentityCenterConfigurationResponse + UpdateResourceRequest.add_member(:role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, required: true, location_name: "RoleArn")) UpdateResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArnString, required: true, location_name: "ResourceArn")) UpdateResourceRequest.add_member(:with_federation, Shapes::ShapeRef.new(shape: NullableBoolean, location_name: "WithFederation")) @@ -1190,6 +1240,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) end) + api.add_operation(:create_lake_formation_identity_center_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateLakeFormationIdentityCenterConfiguration" + o.http_method = "POST" + o.http_request_uri = "/CreateLakeFormationIdentityCenterConfiguration" + o.input = Shapes::ShapeRef.new(shape: CreateLakeFormationIdentityCenterConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: CreateLakeFormationIdentityCenterConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: AlreadyExistsException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + o.errors << Shapes::ShapeRef.new(shape: OperationTimeoutException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + end) + api.add_operation(:create_lake_formation_opt_in, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateLakeFormationOptIn" o.http_method = "POST" @@ -1230,6 +1294,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) end) + api.add_operation(:delete_lake_formation_identity_center_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteLakeFormationIdentityCenterConfiguration" + o.http_method = "POST" + o.http_request_uri = "/DeleteLakeFormationIdentityCenterConfiguration" + o.input = Shapes::ShapeRef.new(shape: DeleteLakeFormationIdentityCenterConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteLakeFormationIdentityCenterConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: EntityNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + o.errors << Shapes::ShapeRef.new(shape: OperationTimeoutException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + end) + api.add_operation(:delete_lake_formation_opt_in, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteLakeFormationOptIn" o.http_method = "POST" @@ -1272,6 +1350,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: EntityNotFoundException) end) + api.add_operation(:describe_lake_formation_identity_center_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeLakeFormationIdentityCenterConfiguration" + o.http_method = "POST" + o.http_request_uri = "/DescribeLakeFormationIdentityCenterConfiguration" + o.input = Shapes::ShapeRef.new(shape: DescribeLakeFormationIdentityCenterConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: DescribeLakeFormationIdentityCenterConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: EntityNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + o.errors << Shapes::ShapeRef.new(shape: OperationTimeoutException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + end) + api.add_operation(:describe_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "DescribeResource" o.http_method = "POST" @@ -1777,6 +1868,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) end) + api.add_operation(:update_lake_formation_identity_center_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateLakeFormationIdentityCenterConfiguration" + o.http_method = "POST" + o.http_request_uri = "/UpdateLakeFormationIdentityCenterConfiguration" + o.input = Shapes::ShapeRef.new(shape: UpdateLakeFormationIdentityCenterConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateLakeFormationIdentityCenterConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: EntityNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + o.errors << Shapes::ShapeRef.new(shape: OperationTimeoutException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConcurrentModificationException) + end) + api.add_operation(:update_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateResource" o.http_method = "POST" diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoint_provider.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoint_provider.rb index 755f4d7eec4..223c595ef80 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoint_provider.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://lakeformation-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoints.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoints.rb index 538d26d664a..9d7155b7075 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoints.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/endpoints.rb @@ -124,6 +124,20 @@ def self.build(context) end end + class CreateLakeFormationIdentityCenterConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LakeFormation::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateLakeFormationOptIn def self.build(context) unless context.config.regional_endpoint @@ -166,6 +180,20 @@ def self.build(context) end end + class DeleteLakeFormationIdentityCenterConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LakeFormation::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteLakeFormationOptIn def self.build(context) unless context.config.regional_endpoint @@ -208,6 +236,20 @@ def self.build(context) end end + class DescribeLakeFormationIdentityCenterConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LakeFormation::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DescribeResource def self.build(context) unless context.config.regional_endpoint @@ -670,6 +712,20 @@ def self.build(context) end end + class UpdateLakeFormationIdentityCenterConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LakeFormation::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UpdateResource def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/plugins/endpoints.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/plugins/endpoints.rb index 869a3a504f9..c793f5f147e 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/plugins/endpoints.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/plugins/endpoints.rb @@ -72,18 +72,24 @@ def parameters_for_operation(context) Aws::LakeFormation::Endpoints::CreateDataCellsFilter.build(context) when :create_lf_tag Aws::LakeFormation::Endpoints::CreateLFTag.build(context) + when :create_lake_formation_identity_center_configuration + Aws::LakeFormation::Endpoints::CreateLakeFormationIdentityCenterConfiguration.build(context) when :create_lake_formation_opt_in Aws::LakeFormation::Endpoints::CreateLakeFormationOptIn.build(context) when :delete_data_cells_filter Aws::LakeFormation::Endpoints::DeleteDataCellsFilter.build(context) when :delete_lf_tag Aws::LakeFormation::Endpoints::DeleteLFTag.build(context) + when :delete_lake_formation_identity_center_configuration + Aws::LakeFormation::Endpoints::DeleteLakeFormationIdentityCenterConfiguration.build(context) when :delete_lake_formation_opt_in Aws::LakeFormation::Endpoints::DeleteLakeFormationOptIn.build(context) when :delete_objects_on_cancel Aws::LakeFormation::Endpoints::DeleteObjectsOnCancel.build(context) when :deregister_resource Aws::LakeFormation::Endpoints::DeregisterResource.build(context) + when :describe_lake_formation_identity_center_configuration + Aws::LakeFormation::Endpoints::DescribeLakeFormationIdentityCenterConfiguration.build(context) when :describe_resource Aws::LakeFormation::Endpoints::DescribeResource.build(context) when :describe_transaction @@ -150,6 +156,8 @@ def parameters_for_operation(context) Aws::LakeFormation::Endpoints::UpdateDataCellsFilter.build(context) when :update_lf_tag Aws::LakeFormation::Endpoints::UpdateLFTag.build(context) + when :update_lake_formation_identity_center_configuration + Aws::LakeFormation::Endpoints::UpdateLakeFormationIdentityCenterConfiguration.build(context) when :update_resource Aws::LakeFormation::Endpoints::UpdateResource.build(context) when :update_table_objects diff --git a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/types.rb b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/types.rb index 08fcd69075a..a6a14af0b10 100644 --- a/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/types.rb +++ b/gems/aws-sdk-lakeformation/lib/aws-sdk-lakeformation/types.rb @@ -463,6 +463,48 @@ class CreateLFTagRequest < Struct.new( # class CreateLFTagResponse < Aws::EmptyStructure; end + # @!attribute [rw] catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definitions, and other control + # information to manage your Lake Formation environment. + # @return [String] + # + # @!attribute [rw] instance_arn + # The ARN of the IAM Identity Center instance for which the operation + # will be executed. For more information about ARNs, see Amazon + # Resource Names (ARNs) and Amazon Web Services Service Namespaces in + # the Amazon Web Services General Reference. + # @return [String] + # + # @!attribute [rw] external_filtering + # A list of the account IDs of Amazon Web Services accounts of + # third-party applications that are allowed to to access data managed + # by Lake Formation. + # @return [Types::ExternalFilteringConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/CreateLakeFormationIdentityCenterConfigurationRequest AWS API Documentation + # + class CreateLakeFormationIdentityCenterConfigurationRequest < Struct.new( + :catalog_id, + :instance_arn, + :external_filtering) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of the integrated application. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/CreateLakeFormationIdentityCenterConfigurationResponse AWS API Documentation + # + class CreateLakeFormationIdentityCenterConfigurationResponse < Struct.new( + :application_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] principal # The Lake Formation principal. Supported principals are IAM users or # IAM roles. @@ -649,9 +691,9 @@ class DataLakePrincipal < Struct.new( # # @!attribute [rw] parameters # A key-value map that provides an additional configuration on your - # data lake. CrossAccountVersion is the key you can configure in the - # Parameters field. Accepted values for the CrossAccountVersion key - # are 1, 2, and 3. + # data lake. CROSS\_ACCOUNT\_VERSION is the key you can configure in + # the Parameters field. Accepted values for the CrossAccountVersion + # key are 1, 2, 3, and 4. # @return [Hash] # # @!attribute [rw] trusted_resource_owners @@ -816,6 +858,25 @@ class DeleteLFTagRequest < Struct.new( # class DeleteLFTagResponse < Aws::EmptyStructure; end + # @!attribute [rw] catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definition, and other control + # information to manage your Lake Formation environment. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DeleteLakeFormationIdentityCenterConfigurationRequest AWS API Documentation + # + class DeleteLakeFormationIdentityCenterConfigurationRequest < Struct.new( + :catalog_id) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DeleteLakeFormationIdentityCenterConfigurationResponse AWS API Documentation + # + class DeleteLakeFormationIdentityCenterConfigurationResponse < Aws::EmptyStructure; end + # @!attribute [rw] principal # The Lake Formation principal. Supported principals are IAM users or # IAM roles. @@ -919,6 +980,51 @@ class DeregisterResourceRequest < Struct.new( # class DeregisterResourceResponse < Aws::EmptyStructure; end + # @!attribute [rw] catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, and other control information to + # manage your Lake Formation environment. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DescribeLakeFormationIdentityCenterConfigurationRequest AWS API Documentation + # + class DescribeLakeFormationIdentityCenterConfigurationRequest < Struct.new( + :catalog_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, and other control information to + # manage your Lake Formation environment. + # @return [String] + # + # @!attribute [rw] instance_arn + # The Amazon Resource Name (ARN) of the connection. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of the integrated application. + # @return [String] + # + # @!attribute [rw] external_filtering + # Indicates if external filtering is enabled. + # @return [Types::ExternalFilteringConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/DescribeLakeFormationIdentityCenterConfigurationResponse AWS API Documentation + # + class DescribeLakeFormationIdentityCenterConfigurationResponse < Struct.new( + :catalog_id, + :instance_arn, + :application_arn, + :external_filtering) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The resource ARN. # @return [String] @@ -1073,6 +1179,28 @@ class ExtendTransactionRequest < Struct.new( # class ExtendTransactionResponse < Aws::EmptyStructure; end + # Configuration for enabling external data filtering for third-party + # applications to access data managed by Lake Formation . + # + # @!attribute [rw] status + # Allows to enable or disable the third-party applications that are + # allowed to access data managed by Lake Formation. + # @return [String] + # + # @!attribute [rw] authorized_targets + # List of third-party application `ARNs` integrated with Lake + # Formation. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/ExternalFilteringConfiguration AWS API Documentation + # + class ExternalFilteringConfiguration < Struct.new( + :status, + :authorized_targets) + SENSITIVE = [] + include Aws::Structure + end + # This structure describes the filtering of columns in a table based on # a filter condition. # @@ -2896,7 +3024,8 @@ class SearchTablesByLFTagsRequest < Struct.new( # @!attribute [rw] next_token # A continuation token, present if the current list segment is not the - # last. + # last. On the first run, if you include a not null (a value) token + # you can get empty pages. # @return [String] # # @!attribute [rw] table_list @@ -3336,6 +3465,37 @@ class UpdateLFTagRequest < Struct.new( # class UpdateLFTagResponse < Aws::EmptyStructure; end + # @!attribute [rw] catalog_id + # The identifier for the Data Catalog. By default, the account ID. The + # Data Catalog is the persistent metadata store. It contains database + # definitions, table definitions, view definitions, and other control + # information to manage your Lake Formation environment. + # @return [String] + # + # @!attribute [rw] application_status + # Allows to enable or disable the IAM Identity Center connection. + # @return [String] + # + # @!attribute [rw] external_filtering + # A list of the account IDs of Amazon Web Services accounts of + # third-party applications that are allowed to access data managed by + # Lake Formation. + # @return [Types::ExternalFilteringConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/UpdateLakeFormationIdentityCenterConfigurationRequest AWS API Documentation + # + class UpdateLakeFormationIdentityCenterConfigurationRequest < Struct.new( + :catalog_id, + :application_status, + :external_filtering) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/lakeformation-2017-03-31/UpdateLakeFormationIdentityCenterConfigurationResponse AWS API Documentation + # + class UpdateLakeFormationIdentityCenterConfigurationResponse < Aws::EmptyStructure; end + # @!attribute [rw] role_arn # The new role to use for the given resource registered in Lake # Formation. diff --git a/gems/aws-sdk-lexmodelsv2/CHANGELOG.md b/gems/aws-sdk-lexmodelsv2/CHANGELOG.md index ed1d6fa2a62..0fa71d426a9 100644 --- a/gems/aws-sdk-lexmodelsv2/CHANGELOG.md +++ b/gems/aws-sdk-lexmodelsv2/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.45.0 (2023-11-27) +------------------ + +* Feature - This release introduces new generative AI features in AWS Lex: Assisted Slot Resolution, Descriptive Bot Building, and Sample Utterance Generation. These features leverage large language models available through Amazon Bedrock to improve the bot builder and customer experiences. + 1.44.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-lexmodelsv2/VERSION b/gems/aws-sdk-lexmodelsv2/VERSION index 372cf402c73..50aceaa7b71 100644 --- a/gems/aws-sdk-lexmodelsv2/VERSION +++ b/gems/aws-sdk-lexmodelsv2/VERSION @@ -1 +1 @@ -1.44.0 +1.45.0 diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2.rb index 3c990e3ed73..d95f05c64a1 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2.rb @@ -53,6 +53,6 @@ # @!group service module Aws::LexModelsV2 - GEM_VERSION = '1.44.0' + GEM_VERSION = '1.45.0' end diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client.rb index 985ed967d9b..75101a14f7c 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client.rb @@ -978,6 +978,10 @@ def create_bot_alias(params = {}, options = {}) # The Amazon Polly voice ID that Amazon Lex uses for voice interaction # with the user. # + # @option params [Types::GenerativeAISettings] :generative_ai_settings + # Contains specifications about the generative AI capabilities from + # Amazon Bedrock that you can turn on for your bot. + # # @return [Types::CreateBotLocaleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateBotLocaleResponse#bot_id #bot_id} => String @@ -989,6 +993,7 @@ def create_bot_alias(params = {}, options = {}) # * {Types::CreateBotLocaleResponse#voice_settings #voice_settings} => Types::VoiceSettings # * {Types::CreateBotLocaleResponse#bot_locale_status #bot_locale_status} => String # * {Types::CreateBotLocaleResponse#creation_date_time #creation_date_time} => Time + # * {Types::CreateBotLocaleResponse#generative_ai_settings #generative_ai_settings} => Types::GenerativeAISettings # # @example Request syntax with placeholder values # @@ -1002,6 +1007,30 @@ def create_bot_alias(params = {}, options = {}) # voice_id: "VoiceId", # required # engine: "standard", # accepts standard, neural # }, + # generative_ai_settings: { + # runtime_settings: { + # slot_resolution_improvement: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # }, + # buildtime_settings: { + # descriptive_bot_builder: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # sample_utterance_generation: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # }, + # }, # }) # # @example Response structure @@ -1016,6 +1045,12 @@ def create_bot_alias(params = {}, options = {}) # resp.voice_settings.engine #=> String, one of "standard", "neural" # resp.bot_locale_status #=> String, one of "Creating", "Building", "Built", "ReadyExpressTesting", "Failed", "Deleting", "NotBuilt", "Importing", "Processing" # resp.creation_date_time #=> Time + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.enabled #=> Boolean + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.bedrock_model_specification.model_arn #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/CreateBotLocale AWS API Documentation # @@ -1026,13 +1061,12 @@ def create_bot_locale(params = {}, options = {}) req.send_request(options) end - # Creates a new version of the bot based on the `DRAFT` version. If the - # `DRAFT` version of this resource hasn't changed since you created the - # last version, Amazon Lex doesn't create a new version, it returns the - # last created version. - # - # When you create the first version of a bot, Amazon Lex sets the - # version to 1. Subsequent versions increment by 1. + # Creates an immutable version of the bot. When you create the first + # version of a bot, Amazon Lex sets the version number to 1. Subsequent + # bot versions increase in an increment of 1. The version number will + # always represent the total number of versions created of the bot, not + # the current number of versions. If a bot version is deleted, that bot + # version number will not be reused. # # @option params [required, String] :bot_id # The identifier of the bot to create the version for. @@ -2183,6 +2217,7 @@ def create_resource_policy_statement(params = {}, options = {}) # resp.value_elicitation_setting.slot_capture_setting.code_hook.post_code_hook_specification.timeout_conditional.default_branch.response.allow_interrupt #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.enable_code_hook_invocation #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.invocation_label #=> String + # resp.value_elicitation_setting.slot_resolution_setting.slot_resolution_strategy #=> String, one of "EnhancedFallback", "Default" # resp.obfuscation_setting.obfuscation_setting_type #=> String, one of "None", "DefaultObfuscation" # resp.bot_id #=> String # resp.bot_version #=> String @@ -3317,6 +3352,7 @@ def describe_bot_alias(params = {}, options = {}) # * {Types::DescribeBotLocaleResponse#last_build_submitted_date_time #last_build_submitted_date_time} => Time # * {Types::DescribeBotLocaleResponse#bot_locale_history_events #bot_locale_history_events} => Array<Types::BotLocaleHistoryEvent> # * {Types::DescribeBotLocaleResponse#recommended_actions #recommended_actions} => Array<String> + # * {Types::DescribeBotLocaleResponse#generative_ai_settings #generative_ai_settings} => Types::GenerativeAISettings # # @example Request syntax with placeholder values # @@ -3349,6 +3385,12 @@ def describe_bot_alias(params = {}, options = {}) # resp.bot_locale_history_events[0].event_date #=> Time # resp.recommended_actions #=> Array # resp.recommended_actions[0] #=> String + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.enabled #=> Boolean + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.bedrock_model_specification.model_arn #=> String # # # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage): @@ -3449,6 +3491,73 @@ def describe_bot_recommendation(params = {}, options = {}) req.send_request(options) end + # Returns information about a request to generate a bot through natural + # language description, made through the `StartBotResource` API. Use the + # `generatedBotLocaleUrl` to retrieve the Amazon S3 object containing + # the bot locale configuration. You can then modify and import this + # configuration. + # + # @option params [required, String] :bot_id + # The unique identifier of the bot for which to return the generation + # details. + # + # @option params [required, String] :bot_version + # The version of the bot for which to return the generation details. + # + # @option params [required, String] :locale_id + # The locale of the bot for which to return the generation details. + # + # @option params [required, String] :generation_id + # The unique identifier of the generation request for which to return + # the generation details. + # + # @return [Types::DescribeBotResourceGenerationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeBotResourceGenerationResponse#bot_id #bot_id} => String + # * {Types::DescribeBotResourceGenerationResponse#bot_version #bot_version} => String + # * {Types::DescribeBotResourceGenerationResponse#locale_id #locale_id} => String + # * {Types::DescribeBotResourceGenerationResponse#generation_id #generation_id} => String + # * {Types::DescribeBotResourceGenerationResponse#failure_reasons #failure_reasons} => Array<String> + # * {Types::DescribeBotResourceGenerationResponse#generation_status #generation_status} => String + # * {Types::DescribeBotResourceGenerationResponse#generation_input_prompt #generation_input_prompt} => String + # * {Types::DescribeBotResourceGenerationResponse#generated_bot_locale_url #generated_bot_locale_url} => String + # * {Types::DescribeBotResourceGenerationResponse#creation_date_time #creation_date_time} => Time + # * {Types::DescribeBotResourceGenerationResponse#model_arn #model_arn} => String + # * {Types::DescribeBotResourceGenerationResponse#last_updated_date_time #last_updated_date_time} => Time + # + # @example Request syntax with placeholder values + # + # resp = client.describe_bot_resource_generation({ + # bot_id: "Id", # required + # bot_version: "BotVersion", # required + # locale_id: "LocaleId", # required + # generation_id: "Id", # required + # }) + # + # @example Response structure + # + # resp.bot_id #=> String + # resp.bot_version #=> String + # resp.locale_id #=> String + # resp.generation_id #=> String + # resp.failure_reasons #=> Array + # resp.failure_reasons[0] #=> String + # resp.generation_status #=> String, one of "Failed", "Complete", "InProgress" + # resp.generation_input_prompt #=> String + # resp.generated_bot_locale_url #=> String + # resp.creation_date_time #=> Time + # resp.model_arn #=> String + # resp.last_updated_date_time #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/DescribeBotResourceGeneration AWS API Documentation + # + # @overload describe_bot_resource_generation(params = {}) + # @param [Hash] params ({}) + def describe_bot_resource_generation(params = {}, options = {}) + req = build_request(:describe_bot_resource_generation, params) + req.send_request(options) + end + # Provides metadata about a version of a bot. # # @option params [required, String] :bot_id @@ -4459,6 +4568,7 @@ def describe_resource_policy(params = {}, options = {}) # resp.value_elicitation_setting.slot_capture_setting.code_hook.post_code_hook_specification.timeout_conditional.default_branch.response.allow_interrupt #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.enable_code_hook_invocation #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.invocation_label #=> String + # resp.value_elicitation_setting.slot_resolution_setting.slot_resolution_strategy #=> String, one of "EnhancedFallback", "Default" # resp.obfuscation_setting.obfuscation_setting_type #=> String, one of "None", "DefaultObfuscation" # resp.bot_id #=> String # resp.bot_version #=> String @@ -4870,6 +4980,55 @@ def describe_test_set_generation(params = {}, options = {}) req.send_request(options) end + # Generates sample utterances for an intent. + # + # @option params [required, String] :intent_id + # The intent unique Id for the bot request to generate utterances. + # + # @option params [required, String] :bot_id + # The bot unique Id for the bot request to generate utterances. + # + # @option params [required, String] :bot_version + # The bot version for the bot request to generate utterances. + # + # @option params [required, String] :locale_id + # The unique locale Id for the bot request to generate utterances. + # + # @return [Types::GenerateBotElementResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GenerateBotElementResponse#bot_id #bot_id} => String + # * {Types::GenerateBotElementResponse#bot_version #bot_version} => String + # * {Types::GenerateBotElementResponse#locale_id #locale_id} => String + # * {Types::GenerateBotElementResponse#intent_id #intent_id} => String + # * {Types::GenerateBotElementResponse#sample_utterances #sample_utterances} => Array<Types::SampleUtterance> + # + # @example Request syntax with placeholder values + # + # resp = client.generate_bot_element({ + # intent_id: "Id", # required + # bot_id: "Id", # required + # bot_version: "BotVersion", # required + # locale_id: "LocaleId", # required + # }) + # + # @example Response structure + # + # resp.bot_id #=> String + # resp.bot_version #=> String + # resp.locale_id #=> String + # resp.intent_id #=> String + # resp.sample_utterances #=> Array + # resp.sample_utterances[0].utterance #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerateBotElement AWS API Documentation + # + # @overload generate_bot_element(params = {}) + # @param [Hash] params ({}) + def generate_bot_element(params = {}, options = {}) + req = build_request(:generate_bot_element, params) + req.send_request(options) + end + # The pre-signed Amazon S3 URL to download the test execution result # artifacts. # @@ -5239,6 +5398,76 @@ def list_bot_recommendations(params = {}, options = {}) req.send_request(options) end + # Lists the generation requests made for a bot locale. + # + # @option params [required, String] :bot_id + # The unique identifier of the bot whose generation requests you want to + # view. + # + # @option params [required, String] :bot_version + # The version of the bot whose generation requests you want to view. + # + # @option params [required, String] :locale_id + # The locale of the bot whose generation requests you want to view. + # + # @option params [Types::GenerationSortBy] :sort_by + # An object containing information about the attribute and the method by + # which to sort the results + # + # @option params [Integer] :max_results + # The maximum number of results to return in the response. + # + # @option params [String] :next_token + # If the total number of results is greater than the number specified in + # the `maxResults`, the response returns a token in the `nextToken` + # field. Use this token when making a request to return the next batch + # of results. + # + # @return [Types::ListBotResourceGenerationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListBotResourceGenerationsResponse#bot_id #bot_id} => String + # * {Types::ListBotResourceGenerationsResponse#bot_version #bot_version} => String + # * {Types::ListBotResourceGenerationsResponse#locale_id #locale_id} => String + # * {Types::ListBotResourceGenerationsResponse#generation_summaries #generation_summaries} => Array<Types::GenerationSummary> + # * {Types::ListBotResourceGenerationsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_bot_resource_generations({ + # bot_id: "Id", # required + # bot_version: "BotVersion", # required + # locale_id: "LocaleId", # required + # sort_by: { + # attribute: "creationStartTime", # required, accepts creationStartTime, lastUpdatedTime + # order: "Ascending", # required, accepts Ascending, Descending + # }, + # max_results: 1, + # next_token: "NextToken", + # }) + # + # @example Response structure + # + # resp.bot_id #=> String + # resp.bot_version #=> String + # resp.locale_id #=> String + # resp.generation_summaries #=> Array + # resp.generation_summaries[0].generation_id #=> String + # resp.generation_summaries[0].generation_status #=> String, one of "Failed", "Complete", "InProgress" + # resp.generation_summaries[0].creation_date_time #=> Time + # resp.generation_summaries[0].last_updated_date_time #=> Time + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/ListBotResourceGenerations AWS API Documentation + # + # @overload list_bot_resource_generations(params = {}) + # @param [Hash] params ({}) + def list_bot_resource_generations(params = {}, options = {}) + req = build_request(:list_bot_resource_generations, params) + req.send_request(options) + end + # Gets information about all of the versions of a bot. # # The `ListBotVersions` operation returns a summary of each version of a @@ -7678,6 +7907,68 @@ def start_bot_recommendation(params = {}, options = {}) req.send_request(options) end + # Starts a request for the descriptive bot builder to generate a bot + # locale configuration based on the prompt you provide it. After you + # make this call, use the `DescribeBotResourceGeneration` operation to + # check on the status of the generation and for the + # `generatedBotLocaleUrl` when the generation is complete. Use that + # value to retrieve the Amazon S3 object containing the bot locale + # configuration. You can then modify and import this configuration. + # + # @option params [required, String] :generation_input_prompt + # The prompt to generate intents and slot types for the bot locale. Your + # description should be both *detailed* and *precise* to help generate + # appropriate and sufficient intents for your bot. Include a list of + # actions to improve the intent creation process. + # + # @option params [required, String] :bot_id + # The unique identifier of the bot for which to generate intents and + # slot types. + # + # @option params [required, String] :bot_version + # The version of the bot for which to generate intents and slot types. + # + # @option params [required, String] :locale_id + # The locale of the bot for which to generate intents and slot types. + # + # @return [Types::StartBotResourceGenerationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::StartBotResourceGenerationResponse#generation_input_prompt #generation_input_prompt} => String + # * {Types::StartBotResourceGenerationResponse#generation_id #generation_id} => String + # * {Types::StartBotResourceGenerationResponse#bot_id #bot_id} => String + # * {Types::StartBotResourceGenerationResponse#bot_version #bot_version} => String + # * {Types::StartBotResourceGenerationResponse#locale_id #locale_id} => String + # * {Types::StartBotResourceGenerationResponse#generation_status #generation_status} => String + # * {Types::StartBotResourceGenerationResponse#creation_date_time #creation_date_time} => Time + # + # @example Request syntax with placeholder values + # + # resp = client.start_bot_resource_generation({ + # generation_input_prompt: "GenerationInput", # required + # bot_id: "Id", # required + # bot_version: "BotVersion", # required + # locale_id: "LocaleId", # required + # }) + # + # @example Response structure + # + # resp.generation_input_prompt #=> String + # resp.generation_id #=> String + # resp.bot_id #=> String + # resp.bot_version #=> String + # resp.locale_id #=> String + # resp.generation_status #=> String, one of "Failed", "Complete", "InProgress" + # resp.creation_date_time #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/StartBotResourceGeneration AWS API Documentation + # + # @overload start_bot_resource_generation(params = {}) + # @param [Hash] params ({}) + def start_bot_resource_generation(params = {}, options = {}) + req = build_request(:start_bot_resource_generation, params) + req.send_request(options) + end + # Starts importing a bot, bot locale, or custom vocabulary from a zip # archive that you uploaded to an S3 bucket. # @@ -8346,6 +8637,12 @@ def update_bot_alias(params = {}, options = {}) # The new Amazon Polly voice Amazon Lex should use for voice interaction # with the user. # + # @option params [Types::GenerativeAISettings] :generative_ai_settings + # Contains settings for generative AI features powered by Amazon Bedrock + # for your bot locale. Use this object to turn generative AI features on + # and off. Pricing may differ if you turn a feature on. For more + # information, see LINK. + # # @return [Types::UpdateBotLocaleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::UpdateBotLocaleResponse#bot_id #bot_id} => String @@ -8360,6 +8657,7 @@ def update_bot_alias(params = {}, options = {}) # * {Types::UpdateBotLocaleResponse#creation_date_time #creation_date_time} => Time # * {Types::UpdateBotLocaleResponse#last_updated_date_time #last_updated_date_time} => Time # * {Types::UpdateBotLocaleResponse#recommended_actions #recommended_actions} => Array<String> + # * {Types::UpdateBotLocaleResponse#generative_ai_settings #generative_ai_settings} => Types::GenerativeAISettings # # @example Request syntax with placeholder values # @@ -8373,6 +8671,30 @@ def update_bot_alias(params = {}, options = {}) # voice_id: "VoiceId", # required # engine: "standard", # accepts standard, neural # }, + # generative_ai_settings: { + # runtime_settings: { + # slot_resolution_improvement: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # }, + # buildtime_settings: { + # descriptive_bot_builder: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # sample_utterance_generation: { + # enabled: false, # required + # bedrock_model_specification: { + # model_arn: "BedrockModelArn", # required + # }, + # }, + # }, + # }, # }) # # @example Response structure @@ -8392,6 +8714,12 @@ def update_bot_alias(params = {}, options = {}) # resp.last_updated_date_time #=> Time # resp.recommended_actions #=> Array # resp.recommended_actions[0] #=> String + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.enabled #=> Boolean + # resp.generative_ai_settings.runtime_settings.slot_resolution_improvement.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.descriptive_bot_builder.bedrock_model_specification.model_arn #=> String + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.enabled #=> Boolean + # resp.generative_ai_settings.buildtime_settings.sample_utterance_generation.bedrock_model_specification.model_arn #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/UpdateBotLocale AWS API Documentation # @@ -9386,6 +9714,7 @@ def update_resource_policy(params = {}, options = {}) # resp.value_elicitation_setting.slot_capture_setting.code_hook.post_code_hook_specification.timeout_conditional.default_branch.response.allow_interrupt #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.enable_code_hook_invocation #=> Boolean # resp.value_elicitation_setting.slot_capture_setting.elicitation_code_hook.invocation_label #=> String + # resp.value_elicitation_setting.slot_resolution_setting.slot_resolution_strategy #=> String, one of "EnhancedFallback", "Default" # resp.obfuscation_setting.obfuscation_setting_type #=> String, one of "None", "DefaultObfuscation" # resp.bot_id #=> String # resp.bot_version #=> String @@ -9726,7 +10055,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-lexmodelsv2' - context[:gem_version] = '1.44.0' + context[:gem_version] = '1.45.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client_api.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client_api.rb index fa63b57ce3f..2a10fb9dcc8 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client_api.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/client_api.rb @@ -144,6 +144,8 @@ module ClientApi BatchDeleteCustomVocabularyItemResponse = Shapes::StructureShape.new(name: 'BatchDeleteCustomVocabularyItemResponse') BatchUpdateCustomVocabularyItemRequest = Shapes::StructureShape.new(name: 'BatchUpdateCustomVocabularyItemRequest') BatchUpdateCustomVocabularyItemResponse = Shapes::StructureShape.new(name: 'BatchUpdateCustomVocabularyItemResponse') + BedrockModelArn = Shapes::StringShape.new(name: 'BedrockModelArn') + BedrockModelSpecification = Shapes::StructureShape.new(name: 'BedrockModelSpecification') Boolean = Shapes::BooleanShape.new(name: 'Boolean') BotAliasHistoryEvent = Shapes::StructureShape.new(name: 'BotAliasHistoryEvent') BotAliasHistoryEventsList = Shapes::ListShape.new(name: 'BotAliasHistoryEventsList') @@ -198,6 +200,7 @@ module ClientApi BoxedBoolean = Shapes::BooleanShape.new(name: 'BoxedBoolean') BuildBotLocaleRequest = Shapes::StructureShape.new(name: 'BuildBotLocaleRequest') BuildBotLocaleResponse = Shapes::StructureShape.new(name: 'BuildBotLocaleResponse') + BuildtimeSettings = Shapes::StructureShape.new(name: 'BuildtimeSettings') BuiltInIntentSortAttribute = Shapes::StringShape.new(name: 'BuiltInIntentSortAttribute') BuiltInIntentSortBy = Shapes::StructureShape.new(name: 'BuiltInIntentSortBy') BuiltInIntentSummary = Shapes::StructureShape.new(name: 'BuiltInIntentSummary') @@ -317,6 +320,8 @@ module ClientApi DescribeBotRecommendationRequest = Shapes::StructureShape.new(name: 'DescribeBotRecommendationRequest') DescribeBotRecommendationResponse = Shapes::StructureShape.new(name: 'DescribeBotRecommendationResponse') DescribeBotRequest = Shapes::StructureShape.new(name: 'DescribeBotRequest') + DescribeBotResourceGenerationRequest = Shapes::StructureShape.new(name: 'DescribeBotResourceGenerationRequest') + DescribeBotResourceGenerationResponse = Shapes::StructureShape.new(name: 'DescribeBotResourceGenerationResponse') DescribeBotResponse = Shapes::StructureShape.new(name: 'DescribeBotResponse') DescribeBotVersionRequest = Shapes::StructureShape.new(name: 'DescribeBotVersionRequest') DescribeBotVersionResponse = Shapes::StructureShape.new(name: 'DescribeBotVersionResponse') @@ -343,6 +348,7 @@ module ClientApi DescribeTestSetRequest = Shapes::StructureShape.new(name: 'DescribeTestSetRequest') DescribeTestSetResponse = Shapes::StructureShape.new(name: 'DescribeTestSetResponse') Description = Shapes::StringShape.new(name: 'Description') + DescriptiveBotBuilderSpecification = Shapes::StructureShape.new(name: 'DescriptiveBotBuilderSpecification') DialogAction = Shapes::StructureShape.new(name: 'DialogAction') DialogActionType = Shapes::StringShape.new(name: 'DialogActionType') DialogCodeHookInvocationSetting = Shapes::StructureShape.new(name: 'DialogCodeHookInvocationSetting') @@ -351,6 +357,7 @@ module ClientApi DraftBotVersion = Shapes::StringShape.new(name: 'DraftBotVersion') Effect = Shapes::StringShape.new(name: 'Effect') ElicitationCodeHookInvocationSetting = Shapes::StructureShape.new(name: 'ElicitationCodeHookInvocationSetting') + Enabled = Shapes::BooleanShape.new(name: 'Enabled') EncryptionSetting = Shapes::StructureShape.new(name: 'EncryptionSetting') ErrorCode = Shapes::StringShape.new(name: 'ErrorCode') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') @@ -381,6 +388,15 @@ module ClientApi FulfillmentUpdateResponseFrequency = Shapes::IntegerShape.new(name: 'FulfillmentUpdateResponseFrequency') FulfillmentUpdateResponseSpecification = Shapes::StructureShape.new(name: 'FulfillmentUpdateResponseSpecification') FulfillmentUpdatesSpecification = Shapes::StructureShape.new(name: 'FulfillmentUpdatesSpecification') + GenerateBotElementRequest = Shapes::StructureShape.new(name: 'GenerateBotElementRequest') + GenerateBotElementResponse = Shapes::StructureShape.new(name: 'GenerateBotElementResponse') + GenerationInput = Shapes::StringShape.new(name: 'GenerationInput') + GenerationSortBy = Shapes::StructureShape.new(name: 'GenerationSortBy') + GenerationSortByAttribute = Shapes::StringShape.new(name: 'GenerationSortByAttribute') + GenerationStatus = Shapes::StringShape.new(name: 'GenerationStatus') + GenerationSummary = Shapes::StructureShape.new(name: 'GenerationSummary') + GenerationSummaryList = Shapes::ListShape.new(name: 'GenerationSummaryList') + GenerativeAISettings = Shapes::StructureShape.new(name: 'GenerativeAISettings') GetTestExecutionArtifactsUrlRequest = Shapes::StructureShape.new(name: 'GetTestExecutionArtifactsUrlRequest') GetTestExecutionArtifactsUrlResponse = Shapes::StructureShape.new(name: 'GetTestExecutionArtifactsUrlResponse') GrammarSlotTypeSetting = Shapes::StructureShape.new(name: 'GrammarSlotTypeSetting') @@ -445,6 +461,8 @@ module ClientApi ListBotLocalesResponse = Shapes::StructureShape.new(name: 'ListBotLocalesResponse') ListBotRecommendationsRequest = Shapes::StructureShape.new(name: 'ListBotRecommendationsRequest') ListBotRecommendationsResponse = Shapes::StructureShape.new(name: 'ListBotRecommendationsResponse') + ListBotResourceGenerationsRequest = Shapes::StructureShape.new(name: 'ListBotResourceGenerationsRequest') + ListBotResourceGenerationsResponse = Shapes::StructureShape.new(name: 'ListBotResourceGenerationsResponse') ListBotVersionsRequest = Shapes::StructureShape.new(name: 'ListBotVersionsRequest') ListBotVersionsResponse = Shapes::StructureShape.new(name: 'ListBotVersionsResponse') ListBotsRequest = Shapes::StructureShape.new(name: 'ListBotsRequest') @@ -560,6 +578,7 @@ module ClientApi RuntimeHintValue = Shapes::StructureShape.new(name: 'RuntimeHintValue') RuntimeHintValuesList = Shapes::ListShape.new(name: 'RuntimeHintValuesList') RuntimeHints = Shapes::StructureShape.new(name: 'RuntimeHints') + RuntimeSettings = Shapes::StructureShape.new(name: 'RuntimeSettings') S3BucketArn = Shapes::StringShape.new(name: 'S3BucketArn') S3BucketLogDestination = Shapes::StructureShape.new(name: 'S3BucketLogDestination') S3BucketName = Shapes::StringShape.new(name: 'S3BucketName') @@ -568,6 +587,7 @@ module ClientApi SSMLMessage = Shapes::StructureShape.new(name: 'SSMLMessage') SSMLMessageValue = Shapes::StringShape.new(name: 'SSMLMessageValue') SampleUtterance = Shapes::StructureShape.new(name: 'SampleUtterance') + SampleUtteranceGenerationSpecification = Shapes::StructureShape.new(name: 'SampleUtteranceGenerationSpecification') SampleUtterancesCount = Shapes::IntegerShape.new(name: 'SampleUtterancesCount') SampleUtterancesList = Shapes::ListShape.new(name: 'SampleUtterancesList') SampleValue = Shapes::StructureShape.new(name: 'SampleValue') @@ -597,6 +617,9 @@ module ClientApi SlotHintsSlotMap = Shapes::MapShape.new(name: 'SlotHintsSlotMap') SlotPrioritiesList = Shapes::ListShape.new(name: 'SlotPrioritiesList') SlotPriority = Shapes::StructureShape.new(name: 'SlotPriority') + SlotResolutionImprovementSpecification = Shapes::StructureShape.new(name: 'SlotResolutionImprovementSpecification') + SlotResolutionSetting = Shapes::StructureShape.new(name: 'SlotResolutionSetting') + SlotResolutionStrategy = Shapes::StringShape.new(name: 'SlotResolutionStrategy') SlotResolutionTestResultItem = Shapes::StructureShape.new(name: 'SlotResolutionTestResultItem') SlotResolutionTestResultItemCounts = Shapes::StructureShape.new(name: 'SlotResolutionTestResultItemCounts') SlotResolutionTestResultItems = Shapes::ListShape.new(name: 'SlotResolutionTestResultItems') @@ -630,6 +653,8 @@ module ClientApi Specifications = Shapes::StructureShape.new(name: 'Specifications') StartBotRecommendationRequest = Shapes::StructureShape.new(name: 'StartBotRecommendationRequest') StartBotRecommendationResponse = Shapes::StructureShape.new(name: 'StartBotRecommendationResponse') + StartBotResourceGenerationRequest = Shapes::StructureShape.new(name: 'StartBotResourceGenerationRequest') + StartBotResourceGenerationResponse = Shapes::StructureShape.new(name: 'StartBotResourceGenerationResponse') StartImportRequest = Shapes::StructureShape.new(name: 'StartImportRequest') StartImportResponse = Shapes::StructureShape.new(name: 'StartImportResponse') StartTestExecutionRequest = Shapes::StructureShape.new(name: 'StartTestExecutionRequest') @@ -1074,6 +1099,9 @@ module ClientApi BatchUpdateCustomVocabularyItemResponse.add_member(:resources, Shapes::ShapeRef.new(shape: CustomVocabularyItems, location_name: "resources")) BatchUpdateCustomVocabularyItemResponse.struct_class = Types::BatchUpdateCustomVocabularyItemResponse + BedrockModelSpecification.add_member(:model_arn, Shapes::ShapeRef.new(shape: BedrockModelArn, required: true, location_name: "modelArn")) + BedrockModelSpecification.struct_class = Types::BedrockModelSpecification + BotAliasHistoryEvent.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, location_name: "botVersion")) BotAliasHistoryEvent.add_member(:start_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "startDate")) BotAliasHistoryEvent.add_member(:end_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "endDate")) @@ -1234,6 +1262,10 @@ module ClientApi BuildBotLocaleResponse.add_member(:last_build_submitted_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastBuildSubmittedDateTime")) BuildBotLocaleResponse.struct_class = Types::BuildBotLocaleResponse + BuildtimeSettings.add_member(:descriptive_bot_builder, Shapes::ShapeRef.new(shape: DescriptiveBotBuilderSpecification, location_name: "descriptiveBotBuilder")) + BuildtimeSettings.add_member(:sample_utterance_generation, Shapes::ShapeRef.new(shape: SampleUtteranceGenerationSpecification, location_name: "sampleUtteranceGeneration")) + BuildtimeSettings.struct_class = Types::BuildtimeSettings + BuiltInIntentSortBy.add_member(:attribute, Shapes::ShapeRef.new(shape: BuiltInIntentSortAttribute, required: true, location_name: "attribute")) BuiltInIntentSortBy.add_member(:order, Shapes::ShapeRef.new(shape: SortOrder, required: true, location_name: "order")) BuiltInIntentSortBy.struct_class = Types::BuiltInIntentSortBy @@ -1371,6 +1403,7 @@ module ClientApi CreateBotLocaleRequest.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "description")) CreateBotLocaleRequest.add_member(:nlu_intent_confidence_threshold, Shapes::ShapeRef.new(shape: ConfidenceThreshold, required: true, location_name: "nluIntentConfidenceThreshold")) CreateBotLocaleRequest.add_member(:voice_settings, Shapes::ShapeRef.new(shape: VoiceSettings, location_name: "voiceSettings")) + CreateBotLocaleRequest.add_member(:generative_ai_settings, Shapes::ShapeRef.new(shape: GenerativeAISettings, location_name: "generativeAISettings")) CreateBotLocaleRequest.struct_class = Types::CreateBotLocaleRequest CreateBotLocaleResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) @@ -1382,6 +1415,7 @@ module ClientApi CreateBotLocaleResponse.add_member(:voice_settings, Shapes::ShapeRef.new(shape: VoiceSettings, location_name: "voiceSettings")) CreateBotLocaleResponse.add_member(:bot_locale_status, Shapes::ShapeRef.new(shape: BotLocaleStatus, location_name: "botLocaleStatus")) CreateBotLocaleResponse.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDateTime")) + CreateBotLocaleResponse.add_member(:generative_ai_settings, Shapes::ShapeRef.new(shape: GenerativeAISettings, location_name: "generativeAISettings")) CreateBotLocaleResponse.struct_class = Types::CreateBotLocaleResponse CreateBotRequest.add_member(:bot_name, Shapes::ShapeRef.new(shape: Name, required: true, location_name: "botName")) @@ -1757,6 +1791,7 @@ module ClientApi DescribeBotLocaleResponse.add_member(:last_build_submitted_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastBuildSubmittedDateTime")) DescribeBotLocaleResponse.add_member(:bot_locale_history_events, Shapes::ShapeRef.new(shape: BotLocaleHistoryEventsList, location_name: "botLocaleHistoryEvents")) DescribeBotLocaleResponse.add_member(:recommended_actions, Shapes::ShapeRef.new(shape: RecommendedActions, location_name: "recommendedActions")) + DescribeBotLocaleResponse.add_member(:generative_ai_settings, Shapes::ShapeRef.new(shape: GenerativeAISettings, location_name: "generativeAISettings")) DescribeBotLocaleResponse.struct_class = Types::DescribeBotLocaleResponse DescribeBotRecommendationRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) @@ -1781,6 +1816,25 @@ module ClientApi DescribeBotRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) DescribeBotRequest.struct_class = Types::DescribeBotRequest + DescribeBotResourceGenerationRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) + DescribeBotResourceGenerationRequest.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, required: true, location: "uri", location_name: "botVersion")) + DescribeBotResourceGenerationRequest.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, required: true, location: "uri", location_name: "localeId")) + DescribeBotResourceGenerationRequest.add_member(:generation_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "generationId")) + DescribeBotResourceGenerationRequest.struct_class = Types::DescribeBotResourceGenerationRequest + + DescribeBotResourceGenerationResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) + DescribeBotResourceGenerationResponse.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, location_name: "botVersion")) + DescribeBotResourceGenerationResponse.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, location_name: "localeId")) + DescribeBotResourceGenerationResponse.add_member(:generation_id, Shapes::ShapeRef.new(shape: Id, location_name: "generationId")) + DescribeBotResourceGenerationResponse.add_member(:failure_reasons, Shapes::ShapeRef.new(shape: FailureReasons, location_name: "failureReasons")) + DescribeBotResourceGenerationResponse.add_member(:generation_status, Shapes::ShapeRef.new(shape: GenerationStatus, location_name: "generationStatus")) + DescribeBotResourceGenerationResponse.add_member(:generation_input_prompt, Shapes::ShapeRef.new(shape: GenerationInput, location_name: "generationInputPrompt")) + DescribeBotResourceGenerationResponse.add_member(:generated_bot_locale_url, Shapes::ShapeRef.new(shape: PresignedS3Url, location_name: "generatedBotLocaleUrl")) + DescribeBotResourceGenerationResponse.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDateTime")) + DescribeBotResourceGenerationResponse.add_member(:model_arn, Shapes::ShapeRef.new(shape: BedrockModelArn, location_name: "modelArn")) + DescribeBotResourceGenerationResponse.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedDateTime")) + DescribeBotResourceGenerationResponse.struct_class = Types::DescribeBotResourceGenerationResponse + DescribeBotResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) DescribeBotResponse.add_member(:bot_name, Shapes::ShapeRef.new(shape: Name, location_name: "botName")) DescribeBotResponse.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "description")) @@ -1993,6 +2047,10 @@ module ClientApi DescribeTestSetResponse.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedDateTime")) DescribeTestSetResponse.struct_class = Types::DescribeTestSetResponse + DescriptiveBotBuilderSpecification.add_member(:enabled, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "enabled")) + DescriptiveBotBuilderSpecification.add_member(:bedrock_model_specification, Shapes::ShapeRef.new(shape: BedrockModelSpecification, location_name: "bedrockModelSpecification")) + DescriptiveBotBuilderSpecification.struct_class = Types::DescriptiveBotBuilderSpecification + DialogAction.add_member(:type, Shapes::ShapeRef.new(shape: DialogActionType, required: true, location_name: "type")) DialogAction.add_member(:slot_to_elicit, Shapes::ShapeRef.new(shape: Name, location_name: "slotToElicit")) DialogAction.add_member(:suppress_next_message, Shapes::ShapeRef.new(shape: BoxedBoolean, location_name: "suppressNextMessage")) @@ -2088,6 +2146,35 @@ module ClientApi FulfillmentUpdatesSpecification.add_member(:timeout_in_seconds, Shapes::ShapeRef.new(shape: FulfillmentTimeout, location_name: "timeoutInSeconds")) FulfillmentUpdatesSpecification.struct_class = Types::FulfillmentUpdatesSpecification + GenerateBotElementRequest.add_member(:intent_id, Shapes::ShapeRef.new(shape: Id, required: true, location_name: "intentId")) + GenerateBotElementRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) + GenerateBotElementRequest.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, required: true, location: "uri", location_name: "botVersion")) + GenerateBotElementRequest.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, required: true, location: "uri", location_name: "localeId")) + GenerateBotElementRequest.struct_class = Types::GenerateBotElementRequest + + GenerateBotElementResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) + GenerateBotElementResponse.add_member(:bot_version, Shapes::ShapeRef.new(shape: DraftBotVersion, location_name: "botVersion")) + GenerateBotElementResponse.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, location_name: "localeId")) + GenerateBotElementResponse.add_member(:intent_id, Shapes::ShapeRef.new(shape: Id, location_name: "intentId")) + GenerateBotElementResponse.add_member(:sample_utterances, Shapes::ShapeRef.new(shape: SampleUtterancesList, location_name: "sampleUtterances")) + GenerateBotElementResponse.struct_class = Types::GenerateBotElementResponse + + GenerationSortBy.add_member(:attribute, Shapes::ShapeRef.new(shape: GenerationSortByAttribute, required: true, location_name: "attribute")) + GenerationSortBy.add_member(:order, Shapes::ShapeRef.new(shape: SortOrder, required: true, location_name: "order")) + GenerationSortBy.struct_class = Types::GenerationSortBy + + GenerationSummary.add_member(:generation_id, Shapes::ShapeRef.new(shape: Id, location_name: "generationId")) + GenerationSummary.add_member(:generation_status, Shapes::ShapeRef.new(shape: GenerationStatus, location_name: "generationStatus")) + GenerationSummary.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDateTime")) + GenerationSummary.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedDateTime")) + GenerationSummary.struct_class = Types::GenerationSummary + + GenerationSummaryList.member = Shapes::ShapeRef.new(shape: GenerationSummary) + + GenerativeAISettings.add_member(:runtime_settings, Shapes::ShapeRef.new(shape: RuntimeSettings, location_name: "runtimeSettings")) + GenerativeAISettings.add_member(:buildtime_settings, Shapes::ShapeRef.new(shape: BuildtimeSettings, location_name: "buildtimeSettings")) + GenerativeAISettings.struct_class = Types::GenerativeAISettings + GetTestExecutionArtifactsUrlRequest.add_member(:test_execution_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "testExecutionId")) GetTestExecutionArtifactsUrlRequest.struct_class = Types::GetTestExecutionArtifactsUrlRequest @@ -2310,6 +2397,21 @@ module ClientApi ListBotRecommendationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) ListBotRecommendationsResponse.struct_class = Types::ListBotRecommendationsResponse + ListBotResourceGenerationsRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) + ListBotResourceGenerationsRequest.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, required: true, location: "uri", location_name: "botVersion")) + ListBotResourceGenerationsRequest.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, required: true, location: "uri", location_name: "localeId")) + ListBotResourceGenerationsRequest.add_member(:sort_by, Shapes::ShapeRef.new(shape: GenerationSortBy, location_name: "sortBy")) + ListBotResourceGenerationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "maxResults")) + ListBotResourceGenerationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListBotResourceGenerationsRequest.struct_class = Types::ListBotResourceGenerationsRequest + + ListBotResourceGenerationsResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) + ListBotResourceGenerationsResponse.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, location_name: "botVersion")) + ListBotResourceGenerationsResponse.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, location_name: "localeId")) + ListBotResourceGenerationsResponse.add_member(:generation_summaries, Shapes::ShapeRef.new(shape: GenerationSummaryList, location_name: "generationSummaries")) + ListBotResourceGenerationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken")) + ListBotResourceGenerationsResponse.struct_class = Types::ListBotResourceGenerationsResponse + ListBotVersionsRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) ListBotVersionsRequest.add_member(:sort_by, Shapes::ShapeRef.new(shape: BotVersionSortBy, location_name: "sortBy")) ListBotVersionsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "maxResults")) @@ -2749,6 +2851,9 @@ module ClientApi RuntimeHints.add_member(:slot_hints, Shapes::ShapeRef.new(shape: SlotHintsIntentMap, location_name: "slotHints")) RuntimeHints.struct_class = Types::RuntimeHints + RuntimeSettings.add_member(:slot_resolution_improvement, Shapes::ShapeRef.new(shape: SlotResolutionImprovementSpecification, location_name: "slotResolutionImprovement")) + RuntimeSettings.struct_class = Types::RuntimeSettings + S3BucketLogDestination.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "kmsKeyArn")) S3BucketLogDestination.add_member(:s3_bucket_arn, Shapes::ShapeRef.new(shape: S3BucketArn, required: true, location_name: "s3BucketArn")) S3BucketLogDestination.add_member(:log_prefix, Shapes::ShapeRef.new(shape: LogPrefix, required: true, location_name: "logPrefix")) @@ -2767,6 +2872,10 @@ module ClientApi SampleUtterance.add_member(:utterance, Shapes::ShapeRef.new(shape: Utterance, required: true, location_name: "utterance")) SampleUtterance.struct_class = Types::SampleUtterance + SampleUtteranceGenerationSpecification.add_member(:enabled, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "enabled")) + SampleUtteranceGenerationSpecification.add_member(:bedrock_model_specification, Shapes::ShapeRef.new(shape: BedrockModelSpecification, location_name: "bedrockModelSpecification")) + SampleUtteranceGenerationSpecification.struct_class = Types::SampleUtteranceGenerationSpecification + SampleUtterancesList.member = Shapes::ShapeRef.new(shape: SampleUtterance) SampleValue.add_member(:value, Shapes::ShapeRef.new(shape: Value, required: true, location_name: "value")) @@ -2855,6 +2964,13 @@ module ClientApi SlotPriority.add_member(:slot_id, Shapes::ShapeRef.new(shape: Id, required: true, location_name: "slotId")) SlotPriority.struct_class = Types::SlotPriority + SlotResolutionImprovementSpecification.add_member(:enabled, Shapes::ShapeRef.new(shape: Enabled, required: true, location_name: "enabled")) + SlotResolutionImprovementSpecification.add_member(:bedrock_model_specification, Shapes::ShapeRef.new(shape: BedrockModelSpecification, location_name: "bedrockModelSpecification")) + SlotResolutionImprovementSpecification.struct_class = Types::SlotResolutionImprovementSpecification + + SlotResolutionSetting.add_member(:slot_resolution_strategy, Shapes::ShapeRef.new(shape: SlotResolutionStrategy, required: true, location_name: "slotResolutionStrategy")) + SlotResolutionSetting.struct_class = Types::SlotResolutionSetting + SlotResolutionTestResultItem.add_member(:slot_name, Shapes::ShapeRef.new(shape: TestResultSlotName, required: true, location_name: "slotName")) SlotResolutionTestResultItem.add_member(:result_counts, Shapes::ShapeRef.new(shape: SlotResolutionTestResultItemCounts, required: true, location_name: "resultCounts")) SlotResolutionTestResultItem.struct_class = Types::SlotResolutionTestResultItem @@ -2920,6 +3036,7 @@ module ClientApi SlotValueElicitationSetting.add_member(:sample_utterances, Shapes::ShapeRef.new(shape: SampleUtterancesList, location_name: "sampleUtterances")) SlotValueElicitationSetting.add_member(:wait_and_continue_specification, Shapes::ShapeRef.new(shape: WaitAndContinueSpecification, location_name: "waitAndContinueSpecification")) SlotValueElicitationSetting.add_member(:slot_capture_setting, Shapes::ShapeRef.new(shape: SlotCaptureSetting, location_name: "slotCaptureSetting")) + SlotValueElicitationSetting.add_member(:slot_resolution_setting, Shapes::ShapeRef.new(shape: SlotResolutionSetting, location_name: "slotResolutionSetting")) SlotValueElicitationSetting.struct_class = Types::SlotValueElicitationSetting SlotValueOverride.add_member(:shape, Shapes::ShapeRef.new(shape: SlotShape, location_name: "shape")) @@ -2961,6 +3078,21 @@ module ClientApi StartBotRecommendationResponse.add_member(:encryption_setting, Shapes::ShapeRef.new(shape: EncryptionSetting, location_name: "encryptionSetting")) StartBotRecommendationResponse.struct_class = Types::StartBotRecommendationResponse + StartBotResourceGenerationRequest.add_member(:generation_input_prompt, Shapes::ShapeRef.new(shape: GenerationInput, required: true, location_name: "generationInputPrompt")) + StartBotResourceGenerationRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) + StartBotResourceGenerationRequest.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, required: true, location: "uri", location_name: "botVersion")) + StartBotResourceGenerationRequest.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, required: true, location: "uri", location_name: "localeId")) + StartBotResourceGenerationRequest.struct_class = Types::StartBotResourceGenerationRequest + + StartBotResourceGenerationResponse.add_member(:generation_input_prompt, Shapes::ShapeRef.new(shape: GenerationInput, location_name: "generationInputPrompt")) + StartBotResourceGenerationResponse.add_member(:generation_id, Shapes::ShapeRef.new(shape: Id, location_name: "generationId")) + StartBotResourceGenerationResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) + StartBotResourceGenerationResponse.add_member(:bot_version, Shapes::ShapeRef.new(shape: BotVersion, location_name: "botVersion")) + StartBotResourceGenerationResponse.add_member(:locale_id, Shapes::ShapeRef.new(shape: LocaleId, location_name: "localeId")) + StartBotResourceGenerationResponse.add_member(:generation_status, Shapes::ShapeRef.new(shape: GenerationStatus, location_name: "generationStatus")) + StartBotResourceGenerationResponse.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDateTime")) + StartBotResourceGenerationResponse.struct_class = Types::StartBotResourceGenerationResponse + StartImportRequest.add_member(:import_id, Shapes::ShapeRef.new(shape: Id, required: true, location_name: "importId")) StartImportRequest.add_member(:resource_specification, Shapes::ShapeRef.new(shape: ImportResourceSpecification, required: true, location_name: "resourceSpecification")) StartImportRequest.add_member(:merge_strategy, Shapes::ShapeRef.new(shape: MergeStrategy, required: true, location_name: "mergeStrategy")) @@ -3236,6 +3368,7 @@ module ClientApi UpdateBotLocaleRequest.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "description")) UpdateBotLocaleRequest.add_member(:nlu_intent_confidence_threshold, Shapes::ShapeRef.new(shape: ConfidenceThreshold, required: true, location_name: "nluIntentConfidenceThreshold")) UpdateBotLocaleRequest.add_member(:voice_settings, Shapes::ShapeRef.new(shape: VoiceSettings, location_name: "voiceSettings")) + UpdateBotLocaleRequest.add_member(:generative_ai_settings, Shapes::ShapeRef.new(shape: GenerativeAISettings, location_name: "generativeAISettings")) UpdateBotLocaleRequest.struct_class = Types::UpdateBotLocaleRequest UpdateBotLocaleResponse.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, location_name: "botId")) @@ -3250,6 +3383,7 @@ module ClientApi UpdateBotLocaleResponse.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDateTime")) UpdateBotLocaleResponse.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastUpdatedDateTime")) UpdateBotLocaleResponse.add_member(:recommended_actions, Shapes::ShapeRef.new(shape: RecommendedActions, location_name: "recommendedActions")) + UpdateBotLocaleResponse.add_member(:generative_ai_settings, Shapes::ShapeRef.new(shape: GenerativeAISettings, location_name: "generativeAISettings")) UpdateBotLocaleResponse.struct_class = Types::UpdateBotLocaleResponse UpdateBotRecommendationRequest.add_member(:bot_id, Shapes::ShapeRef.new(shape: Id, required: true, location: "uri", location_name: "botId")) @@ -4018,6 +4152,18 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:describe_bot_resource_generation, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeBotResourceGeneration" + o.http_method = "GET" + o.http_request_uri = "/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generations/{generationId}" + o.input = Shapes::ShapeRef.new(shape: DescribeBotResourceGenerationRequest) + o.output = Shapes::ShapeRef.new(shape: DescribeBotResourceGenerationResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:describe_bot_version, Seahorse::Model::Operation.new.tap do |o| o.name = "DescribeBotVersion" o.http_method = "GET" @@ -4170,6 +4316,22 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:generate_bot_element, Seahorse::Model::Operation.new.tap do |o| + o.name = "GenerateBotElement" + o.http_method = "POST" + o.http_request_uri = "/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generate" + o.input = Shapes::ShapeRef.new(shape: GenerateBotElementRequest) + o.output = Shapes::ShapeRef.new(shape: GenerateBotElementResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: PreconditionFailedException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:get_test_execution_artifacts_url, Seahorse::Model::Operation.new.tap do |o| o.name = "GetTestExecutionArtifactsUrl" o.http_method = "GET" @@ -4255,6 +4417,24 @@ module ClientApi ) end) + api.add_operation(:list_bot_resource_generations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListBotResourceGenerations" + o.http_method = "POST" + o.http_request_uri = "/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/generations" + o.input = Shapes::ShapeRef.new(shape: ListBotResourceGenerationsRequest) + o.output = Shapes::ShapeRef.new(shape: ListBotResourceGenerationsResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_bot_versions, Seahorse::Model::Operation.new.tap do |o| o.name = "ListBotVersions" o.http_method = "POST" @@ -4695,6 +4875,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:start_bot_resource_generation, Seahorse::Model::Operation.new.tap do |o| + o.name = "StartBotResourceGeneration" + o.http_method = "PUT" + o.http_request_uri = "/bots/{botId}/botversions/{botVersion}/botlocales/{localeId}/startgeneration" + o.input = Shapes::ShapeRef.new(shape: StartBotResourceGenerationRequest) + o.output = Shapes::ShapeRef.new(shape: StartBotResourceGenerationResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: PreconditionFailedException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:start_import, Seahorse::Model::Operation.new.tap do |o| o.name = "StartImport" o.http_method = "PUT" diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/endpoints.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/endpoints.rb index dcd7d4067a8..dfc6df003a4 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/endpoints.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/endpoints.rb @@ -488,6 +488,20 @@ def self.build(context) end end + class DescribeBotResourceGeneration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LexModelsV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DescribeBotVersion def self.build(context) unless context.config.regional_endpoint @@ -656,6 +670,20 @@ def self.build(context) end end + class GenerateBotElement + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LexModelsV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetTestExecutionArtifactsUrl def self.build(context) unless context.config.regional_endpoint @@ -726,6 +754,20 @@ def self.build(context) end end + class ListBotResourceGenerations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LexModelsV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListBotVersions def self.build(context) unless context.config.regional_endpoint @@ -1076,6 +1118,20 @@ def self.build(context) end end + class StartBotResourceGeneration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::LexModelsV2::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class StartImport def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/plugins/endpoints.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/plugins/endpoints.rb index 1a916509e25..d05b510f833 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/plugins/endpoints.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/plugins/endpoints.rb @@ -124,6 +124,8 @@ def parameters_for_operation(context) Aws::LexModelsV2::Endpoints::DescribeBotLocale.build(context) when :describe_bot_recommendation Aws::LexModelsV2::Endpoints::DescribeBotRecommendation.build(context) + when :describe_bot_resource_generation + Aws::LexModelsV2::Endpoints::DescribeBotResourceGeneration.build(context) when :describe_bot_version Aws::LexModelsV2::Endpoints::DescribeBotVersion.build(context) when :describe_custom_vocabulary_metadata @@ -148,6 +150,8 @@ def parameters_for_operation(context) Aws::LexModelsV2::Endpoints::DescribeTestSetDiscrepancyReport.build(context) when :describe_test_set_generation Aws::LexModelsV2::Endpoints::DescribeTestSetGeneration.build(context) + when :generate_bot_element + Aws::LexModelsV2::Endpoints::GenerateBotElement.build(context) when :get_test_execution_artifacts_url Aws::LexModelsV2::Endpoints::GetTestExecutionArtifactsUrl.build(context) when :list_aggregated_utterances @@ -158,6 +162,8 @@ def parameters_for_operation(context) Aws::LexModelsV2::Endpoints::ListBotLocales.build(context) when :list_bot_recommendations Aws::LexModelsV2::Endpoints::ListBotRecommendations.build(context) + when :list_bot_resource_generations + Aws::LexModelsV2::Endpoints::ListBotResourceGenerations.build(context) when :list_bot_versions Aws::LexModelsV2::Endpoints::ListBotVersions.build(context) when :list_bots @@ -208,6 +214,8 @@ def parameters_for_operation(context) Aws::LexModelsV2::Endpoints::SearchAssociatedTranscripts.build(context) when :start_bot_recommendation Aws::LexModelsV2::Endpoints::StartBotRecommendation.build(context) + when :start_bot_resource_generation + Aws::LexModelsV2::Endpoints::StartBotResourceGeneration.build(context) when :start_import Aws::LexModelsV2::Endpoints::StartImport.build(context) when :start_test_execution diff --git a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/types.rb b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/types.rb index 39c7e8e638d..900518e629d 100644 --- a/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/types.rb +++ b/gems/aws-sdk-lexmodelsv2/lib/aws-sdk-lexmodelsv2/types.rb @@ -1836,6 +1836,21 @@ class BatchUpdateCustomVocabularyItemResponse < Struct.new( include Aws::Structure end + # Contains information about the Amazon Bedrock model used to interpret + # the prompt used in descriptive bot building. + # + # @!attribute [rw] model_arn + # The ARN of the foundation model used in descriptive bot building. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/BedrockModelSpecification AWS API Documentation + # + class BedrockModelSpecification < Struct.new( + :model_arn) + SENSITIVE = [] + include Aws::Structure + end + # Provides a record of an event that affects a bot alias. For example, # when the version of a bot that the alias points to changes. # @@ -2603,6 +2618,27 @@ class BuildBotLocaleResponse < Struct.new( include Aws::Structure end + # Contains specifications about the Amazon Lex build time generative AI + # capabilities from Amazon Bedrock that you can turn on for your bot. + # + # @!attribute [rw] descriptive_bot_builder + # An object containing specifications for the descriptive bot building + # feature. + # @return [Types::DescriptiveBotBuilderSpecification] + # + # @!attribute [rw] sample_utterance_generation + # Contains specifications for the sample utterance generation feature. + # @return [Types::SampleUtteranceGenerationSpecification] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/BuildtimeSettings AWS API Documentation + # + class BuildtimeSettings < Struct.new( + :descriptive_bot_builder, + :sample_utterance_generation) + SENSITIVE = [] + include Aws::Structure + end + # Specifies attributes for sorting a list of built-in intents. # # @!attribute [rw] attribute @@ -3251,6 +3287,11 @@ class CreateBotAliasResponse < Struct.new( # with the user. # @return [Types::VoiceSettings] # + # @!attribute [rw] generative_ai_settings + # Contains specifications about the generative AI capabilities from + # Amazon Bedrock that you can turn on for your bot. + # @return [Types::GenerativeAISettings] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/CreateBotLocaleRequest AWS API Documentation # class CreateBotLocaleRequest < Struct.new( @@ -3259,7 +3300,8 @@ class CreateBotLocaleRequest < Struct.new( :locale_id, :description, :nlu_intent_confidence_threshold, - :voice_settings) + :voice_settings, + :generative_ai_settings) SENSITIVE = [] include Aws::Structure end @@ -3315,6 +3357,11 @@ class CreateBotLocaleRequest < Struct.new( # created. # @return [Time] # + # @!attribute [rw] generative_ai_settings + # Contains specifications about the generative AI capabilities from + # Amazon Bedrock that you can turn on for your bot. + # @return [Types::GenerativeAISettings] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/CreateBotLocaleResponse AWS API Documentation # class CreateBotLocaleResponse < Struct.new( @@ -3326,7 +3373,8 @@ class CreateBotLocaleResponse < Struct.new( :nlu_intent_confidence_threshold, :voice_settings, :bot_locale_status, - :creation_date_time) + :creation_date_time, + :generative_ai_settings) SENSITIVE = [] include Aws::Structure end @@ -5383,6 +5431,11 @@ class DescribeBotLocaleRequest < Struct.new( # `failureReasons` field. # @return [Array] # + # @!attribute [rw] generative_ai_settings + # Contains settings for Amazon Bedrock's generative AI features for + # your bot locale. + # @return [Types::GenerativeAISettings] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/DescribeBotLocaleResponse AWS API Documentation # class DescribeBotLocaleResponse < Struct.new( @@ -5401,7 +5454,8 @@ class DescribeBotLocaleResponse < Struct.new( :last_updated_date_time, :last_build_submitted_date_time, :bot_locale_history_events, - :recommended_actions) + :recommended_actions, + :generative_ai_settings) SENSITIVE = [] include Aws::Structure end @@ -5521,6 +5575,99 @@ class DescribeBotRequest < Struct.new( include Aws::Structure end + # @!attribute [rw] bot_id + # The unique identifier of the bot for which to return the generation + # details. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot for which to return the generation details. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot for which to return the generation details. + # @return [String] + # + # @!attribute [rw] generation_id + # The unique identifier of the generation request for which to return + # the generation details. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/DescribeBotResourceGenerationRequest AWS API Documentation + # + class DescribeBotResourceGenerationRequest < Struct.new( + :bot_id, + :bot_version, + :locale_id, + :generation_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] bot_id + # The unique identifier of the bot for which the generation request + # was made. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot for which the generation request was made. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot for which the generation request was made. + # @return [String] + # + # @!attribute [rw] generation_id + # The generation ID for which to return the generation details. + # @return [String] + # + # @!attribute [rw] failure_reasons + # A list of reasons why the generation of bot resources through + # natural language description failed. + # @return [Array] + # + # @!attribute [rw] generation_status + # The status of the generation request. + # @return [String] + # + # @!attribute [rw] generation_input_prompt + # The prompt used in the generation request. + # @return [String] + # + # @!attribute [rw] generated_bot_locale_url + # The Amazon S3 location of the generated bot locale configuration. + # @return [String] + # + # @!attribute [rw] creation_date_time + # The date and time at which the item was generated. + # @return [Time] + # + # @!attribute [rw] model_arn + # The ARN of the model used to generate the bot resources. + # @return [String] + # + # @!attribute [rw] last_updated_date_time + # The date and time at which the generated item was updated. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/DescribeBotResourceGenerationResponse AWS API Documentation + # + class DescribeBotResourceGenerationResponse < Struct.new( + :bot_id, + :bot_version, + :locale_id, + :generation_id, + :failure_reasons, + :generation_status, + :generation_input_prompt, + :generated_bot_locale_url, + :creation_date_time, + :model_arn, + :last_updated_date_time) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] bot_id # The unique identifier of the bot. # @return [String] @@ -6591,6 +6738,27 @@ class DescribeTestSetResponse < Struct.new( include Aws::Structure end + # Contains specifications for the descriptive bot building feature. + # + # @!attribute [rw] enabled + # Specifies whether the descriptive bot building feature is activated + # or not. + # @return [Boolean] + # + # @!attribute [rw] bedrock_model_specification + # An object containing information about the Amazon Bedrock model used + # to interpret the prompt used in descriptive bot building. + # @return [Types::BedrockModelSpecification] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/DescriptiveBotBuilderSpecification AWS API Documentation + # + class DescriptiveBotBuilderSpecification < Struct.new( + :enabled, + :bedrock_model_specification) + SENSITIVE = [] + include Aws::Structure + end + # Defines the action that the bot executes at runtime when the # conversation reaches this step. # @@ -7060,6 +7228,145 @@ class FulfillmentUpdatesSpecification < Struct.new( include Aws::Structure end + # @!attribute [rw] intent_id + # The intent unique Id for the bot request to generate utterances. + # @return [String] + # + # @!attribute [rw] bot_id + # The bot unique Id for the bot request to generate utterances. + # @return [String] + # + # @!attribute [rw] bot_version + # The bot version for the bot request to generate utterances. + # @return [String] + # + # @!attribute [rw] locale_id + # The unique locale Id for the bot request to generate utterances. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerateBotElementRequest AWS API Documentation + # + class GenerateBotElementRequest < Struct.new( + :intent_id, + :bot_id, + :bot_version, + :locale_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] bot_id + # The unique bot Id for the bot which received the response. + # @return [String] + # + # @!attribute [rw] bot_version + # The unique bot version for the bot which received the response. + # @return [String] + # + # @!attribute [rw] locale_id + # The unique locale Id for the bot which received the response. + # @return [String] + # + # @!attribute [rw] intent_id + # The unique intent Id for the bot which received the response. + # @return [String] + # + # @!attribute [rw] sample_utterances + # The sample utterances for the bot which received the response. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerateBotElementResponse AWS API Documentation + # + class GenerateBotElementResponse < Struct.new( + :bot_id, + :bot_version, + :locale_id, + :intent_id, + :sample_utterances) + SENSITIVE = [] + include Aws::Structure + end + + # Specifies the attribute and method by which to sort the generation + # request information. + # + # @!attribute [rw] attribute + # The attribute by which to sort the generation request information. + # You can sort by the following attributes. + # + # * `creationStartTime` – The time at which the generation request was + # created. + # + # * `lastUpdatedTime` – The time at which the generation request was + # last updated. + # @return [String] + # + # @!attribute [rw] order + # The order by which to sort the generation request information. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerationSortBy AWS API Documentation + # + class GenerationSortBy < Struct.new( + :attribute, + :order) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about a generation request made for the bot + # locale. + # + # @!attribute [rw] generation_id + # The unique identifier of the generation request. + # @return [String] + # + # @!attribute [rw] generation_status + # The status of the generation request. + # @return [String] + # + # @!attribute [rw] creation_date_time + # The date and time at which the generation request was made. + # @return [Time] + # + # @!attribute [rw] last_updated_date_time + # The date and time at which the generation request was last updated. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerationSummary AWS API Documentation + # + class GenerationSummary < Struct.new( + :generation_id, + :generation_status, + :creation_date_time, + :last_updated_date_time) + SENSITIVE = [] + include Aws::Structure + end + + # Contains specifications about the generative AI capabilities from + # Amazon Bedrock that you can turn on for your bot. + # + # @!attribute [rw] runtime_settings + # Contains specifications about the Amazon Lex runtime generative AI + # capabilities from Amazon Bedrock that you can turn on for your bot. + # @return [Types::RuntimeSettings] + # + # @!attribute [rw] buildtime_settings + # Contains specifications about the Amazon Lex build time generative + # AI capabilities from Amazon Bedrock that you can turn on for your + # bot. + # @return [Types::BuildtimeSettings] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/GenerativeAISettings AWS API Documentation + # + class GenerativeAISettings < Struct.new( + :runtime_settings, + :buildtime_settings) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] test_execution_id # The unique identifier of the completed test execution. # @return [String] @@ -8222,6 +8529,85 @@ class ListBotRecommendationsResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] bot_id + # The unique identifier of the bot whose generation requests you want + # to view. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot whose generation requests you want to view. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot whose generation requests you want to view. + # @return [String] + # + # @!attribute [rw] sort_by + # An object containing information about the attribute and the method + # by which to sort the results + # @return [Types::GenerationSortBy] + # + # @!attribute [rw] max_results + # The maximum number of results to return in the response. + # @return [Integer] + # + # @!attribute [rw] next_token + # If the total number of results is greater than the number specified + # in the `maxResults`, the response returns a token in the `nextToken` + # field. Use this token when making a request to return the next batch + # of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/ListBotResourceGenerationsRequest AWS API Documentation + # + class ListBotResourceGenerationsRequest < Struct.new( + :bot_id, + :bot_version, + :locale_id, + :sort_by, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] bot_id + # The unique identifier of the bot for which the generation requests + # were made. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot for which the generation requests were made. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot for which the generation requests were made. + # @return [String] + # + # @!attribute [rw] generation_summaries + # A list of objects, each containing information about a generation + # request for the bot locale. + # @return [Array] + # + # @!attribute [rw] next_token + # If the total number of results is greater than the number specified + # in the `maxResults`, the response returns a token in the `nextToken` + # field. Use this token when making a request to return the next batch + # of results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/ListBotResourceGenerationsResponse AWS API Documentation + # + class ListBotResourceGenerationsResponse < Struct.new( + :bot_id, + :bot_version, + :locale_id, + :generation_summaries, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] bot_id # The identifier of the bot to list versions for. # @return [String] @@ -10723,6 +11109,22 @@ class RuntimeHints < Struct.new( include Aws::Structure end + # Contains specifications about the Amazon Lex runtime generative AI + # capabilities from Amazon Bedrock that you can turn on for your bot. + # + # @!attribute [rw] slot_resolution_improvement + # An object containing specifications for the assisted slot resolution + # feature. + # @return [Types::SlotResolutionImprovementSpecification] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/RuntimeSettings AWS API Documentation + # + class RuntimeSettings < Struct.new( + :slot_resolution_improvement) + SENSITIVE = [] + include Aws::Structure + end + # Specifies an Amazon S3 bucket for logging audio conversations # # @!attribute [rw] kms_key_arn @@ -10825,6 +11227,26 @@ class SampleUtterance < Struct.new( include Aws::Structure end + # Contains specifications for the sample utterance generation feature. + # + # @!attribute [rw] enabled + # Specifies whether to enable sample utterance generation or not. + # @return [Boolean] + # + # @!attribute [rw] bedrock_model_specification + # Contains information about the Amazon Bedrock model used to + # interpret the prompt used in descriptive bot building. + # @return [Types::BedrockModelSpecification] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/SampleUtteranceGenerationSpecification AWS API Documentation + # + class SampleUtteranceGenerationSpecification < Struct.new( + :enabled, + :bedrock_model_specification) + SENSITIVE = [] + include Aws::Structure + end + # Defines one of the values for a slot type. # # @!attribute [rw] value @@ -11244,6 +11666,45 @@ class SlotPriority < Struct.new( include Aws::Structure end + # Contains specifications for the assisted slot resolution feature. + # + # @!attribute [rw] enabled + # Specifies whether assisted slot resolution is turned on or off. + # @return [Boolean] + # + # @!attribute [rw] bedrock_model_specification + # An object containing information about the Amazon Bedrock model used + # to assist slot resolution. + # @return [Types::BedrockModelSpecification] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/SlotResolutionImprovementSpecification AWS API Documentation + # + class SlotResolutionImprovementSpecification < Struct.new( + :enabled, + :bedrock_model_specification) + SENSITIVE = [] + include Aws::Structure + end + + # Contains information about whether assisted slot resolution is turned + # on for the slot or not. + # + # @!attribute [rw] slot_resolution_strategy + # Specifies whether assisted slot resolution is turned on for the slot + # or not. If the value is `EnhancedFallback`, assisted slot resolution + # is activated when Amazon Lex defaults to the + # `AMAZON.FallbackIntent`. If the value is `Default`, assisted slot + # resolution is turned off. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/SlotResolutionSetting AWS API Documentation + # + class SlotResolutionSetting < Struct.new( + :slot_resolution_strategy) + SENSITIVE = [] + include Aws::Structure + end + # Information about the success and failure rate of slot resolution in # the results of a test execution. # @@ -11549,6 +12010,11 @@ class SlotValue < Struct.new( # successfully entered by a user. # @return [Types::SlotCaptureSetting] # + # @!attribute [rw] slot_resolution_setting + # An object containing information about whether assisted slot + # resolution is turned on for the slot or not. + # @return [Types::SlotResolutionSetting] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/SlotValueElicitationSetting AWS API Documentation # class SlotValueElicitationSetting < Struct.new( @@ -11557,7 +12023,8 @@ class SlotValueElicitationSetting < Struct.new( :prompt_specification, :sample_utterances, :wait_and_continue_specification, - :slot_capture_setting) + :slot_capture_setting, + :slot_resolution_setting) SENSITIVE = [] include Aws::Structure end @@ -11782,6 +12249,81 @@ class StartBotRecommendationResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] generation_input_prompt + # The prompt to generate intents and slot types for the bot locale. + # Your description should be both *detailed* and *precise* to help + # generate appropriate and sufficient intents for your bot. Include a + # list of actions to improve the intent creation process. + # @return [String] + # + # @!attribute [rw] bot_id + # The unique identifier of the bot for which to generate intents and + # slot types. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot for which to generate intents and slot types. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot for which to generate intents and slot types. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/StartBotResourceGenerationRequest AWS API Documentation + # + class StartBotResourceGenerationRequest < Struct.new( + :generation_input_prompt, + :bot_id, + :bot_version, + :locale_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] generation_input_prompt + # The prompt that was used generate intents and slot types for the bot + # locale. + # @return [String] + # + # @!attribute [rw] generation_id + # The unique identifier of the generation request. + # @return [String] + # + # @!attribute [rw] bot_id + # The unique identifier of the bot for which the generation request + # was made. + # @return [String] + # + # @!attribute [rw] bot_version + # The version of the bot for which the generation request was made. + # @return [String] + # + # @!attribute [rw] locale_id + # The locale of the bot for which the generation request was made. + # @return [String] + # + # @!attribute [rw] generation_status + # The status of the generation request. + # @return [String] + # + # @!attribute [rw] creation_date_time + # The date and time at which the generation request was made. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/StartBotResourceGenerationResponse AWS API Documentation + # + class StartBotResourceGenerationResponse < Struct.new( + :generation_input_prompt, + :generation_id, + :bot_id, + :bot_version, + :locale_id, + :generation_status, + :creation_date_time) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] import_id # The unique identifier for the import. It is included in the response # from the [CreateUploadUrl][1] operation. @@ -13072,6 +13614,13 @@ class UpdateBotAliasResponse < Struct.new( # interaction with the user. # @return [Types::VoiceSettings] # + # @!attribute [rw] generative_ai_settings + # Contains settings for generative AI features powered by Amazon + # Bedrock for your bot locale. Use this object to turn generative AI + # features on and off. Pricing may differ if you turn a feature on. + # For more information, see LINK. + # @return [Types::GenerativeAISettings] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/UpdateBotLocaleRequest AWS API Documentation # class UpdateBotLocaleRequest < Struct.new( @@ -13080,7 +13629,8 @@ class UpdateBotLocaleRequest < Struct.new( :locale_id, :description, :nlu_intent_confidence_threshold, - :voice_settings) + :voice_settings, + :generative_ai_settings) SENSITIVE = [] include Aws::Structure end @@ -13139,6 +13689,11 @@ class UpdateBotLocaleRequest < Struct.new( # `failureReasons` field. # @return [Array] # + # @!attribute [rw] generative_ai_settings + # Contains settings for generative AI features powered by Amazon + # Bedrock for your bot locale. + # @return [Types::GenerativeAISettings] + # # @see http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/UpdateBotLocaleResponse AWS API Documentation # class UpdateBotLocaleResponse < Struct.new( @@ -13153,7 +13708,8 @@ class UpdateBotLocaleResponse < Struct.new( :failure_reasons, :creation_date_time, :last_updated_date_time, - :recommended_actions) + :recommended_actions, + :generative_ai_settings) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-lexruntimev2/CHANGELOG.md b/gems/aws-sdk-lexruntimev2/CHANGELOG.md index 9419593c543..f363d3fa27d 100644 --- a/gems/aws-sdk-lexruntimev2/CHANGELOG.md +++ b/gems/aws-sdk-lexruntimev2/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.28.0 (2023-11-27) +------------------ + +* Feature - This release introduces support for interpretationSource in the runtime service response. + 1.27.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-lexruntimev2/VERSION b/gems/aws-sdk-lexruntimev2/VERSION index 5db08bf2dc5..cfc730712d5 100644 --- a/gems/aws-sdk-lexruntimev2/VERSION +++ b/gems/aws-sdk-lexruntimev2/VERSION @@ -1 +1 @@ -1.27.0 +1.28.0 diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2.rb index b328e1c3b3d..376b80147eb 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2.rb @@ -54,6 +54,6 @@ # @!group service module Aws::LexRuntimeV2 - GEM_VERSION = '1.27.0' + GEM_VERSION = '1.28.0' end diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/async_client.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/async_client.rb index c47210f4c20..5fb65dab8b9 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/async_client.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/async_client.rb @@ -562,6 +562,7 @@ def initialize(*args) # event.interpretations[0].intent.slots["NonEmptyString"].sub_slots #=> Types::Slots # event.interpretations[0].intent.state #=> String, one of "Failed", "Fulfilled", "InProgress", "ReadyForFulfillment", "Waiting", "FulfillmentInProgress" # event.interpretations[0].intent.confirmation_state #=> String, one of "Confirmed", "Denied", "None" + # event.interpretations[0].interpretation_source #=> String, one of "Bedrock", "Lex" # event.session_state.dialog_action.type #=> String, one of "Close", "ConfirmIntent", "Delegate", "ElicitIntent", "ElicitSlot", "None" # event.session_state.dialog_action.slot_to_elicit #=> String # event.session_state.dialog_action.slot_elicitation_style #=> String, one of "Default", "SpellByLetter", "SpellByWord" @@ -687,7 +688,7 @@ def build_request(operation_name, params = {}) http_response: Seahorse::Client::Http::AsyncResponse.new, config: config) context[:gem_name] = 'aws-sdk-lexruntimev2' - context[:gem_version] = '1.27.0' + context[:gem_version] = '1.28.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client.rb index 885fb67702e..2e62168c2dd 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client.rb @@ -530,6 +530,7 @@ def delete_session(params = {}, options = {}) # resp.interpretations[0].intent.slots["NonEmptyString"].sub_slots #=> Types::Slots # resp.interpretations[0].intent.state #=> String, one of "Failed", "Fulfilled", "InProgress", "ReadyForFulfillment", "Waiting", "FulfillmentInProgress" # resp.interpretations[0].intent.confirmation_state #=> String, one of "Confirmed", "Denied", "None" + # resp.interpretations[0].interpretation_source #=> String, one of "Bedrock", "Lex" # resp.session_state.dialog_action.type #=> String, one of "Close", "ConfirmIntent", "Delegate", "ElicitIntent", "ElicitSlot", "None" # resp.session_state.dialog_action.slot_to_elicit #=> String # resp.session_state.dialog_action.slot_elicitation_style #=> String, one of "Default", "SpellByLetter", "SpellByWord" @@ -946,6 +947,7 @@ def put_session(params = {}, options = {}, &block) # resp.interpretations[0].intent.slots["NonEmptyString"].sub_slots #=> Types::Slots # resp.interpretations[0].intent.state #=> String, one of "Failed", "Fulfilled", "InProgress", "ReadyForFulfillment", "Waiting", "FulfillmentInProgress" # resp.interpretations[0].intent.confirmation_state #=> String, one of "Confirmed", "Denied", "None" + # resp.interpretations[0].interpretation_source #=> String, one of "Bedrock", "Lex" # resp.request_attributes #=> Hash # resp.request_attributes["NonEmptyString"] #=> String # resp.session_id #=> String @@ -1167,7 +1169,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-lexruntimev2' - context[:gem_version] = '1.27.0' + context[:gem_version] = '1.28.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client_api.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client_api.rb index 53f6fa2db11..00bd2ba920c 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client_api.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/client_api.rb @@ -62,6 +62,7 @@ module ClientApi IntentState = Shapes::StringShape.new(name: 'IntentState') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') Interpretation = Shapes::StructureShape.new(name: 'Interpretation') + InterpretationSource = Shapes::StringShape.new(name: 'InterpretationSource') Interpretations = Shapes::ListShape.new(name: 'Interpretations') LocaleId = Shapes::StringShape.new(name: 'LocaleId') Message = Shapes::StructureShape.new(name: 'Message') @@ -242,6 +243,7 @@ module ClientApi Interpretation.add_member(:nlu_confidence, Shapes::ShapeRef.new(shape: ConfidenceScore, location_name: "nluConfidence")) Interpretation.add_member(:sentiment_response, Shapes::ShapeRef.new(shape: SentimentResponse, location_name: "sentimentResponse")) Interpretation.add_member(:intent, Shapes::ShapeRef.new(shape: Intent, location_name: "intent")) + Interpretation.add_member(:interpretation_source, Shapes::ShapeRef.new(shape: InterpretationSource, location_name: "interpretationSource")) Interpretation.struct_class = Types::Interpretation Interpretations.member = Shapes::ShapeRef.new(shape: Interpretation) diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/endpoint_provider.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/endpoint_provider.rb index 5bf9da5eb32..473746bc903 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/endpoint_provider.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://runtime-v2-lex-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/types.rb b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/types.rb index a629e698ac1..b3c7cdc1bcc 100644 --- a/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/types.rb +++ b/gems/aws-sdk-lexruntimev2/lib/aws-sdk-lexruntimev2/types.rb @@ -411,22 +411,22 @@ class DependencyFailedException < Struct.new( # # @!attribute [rw] type # The next action that the bot should take in its interaction with the - # user. The possible values are: + # user. The following values are possible: # - # * `Close` - Indicates that there will not be a response from the + # * `Close` – Indicates that there will not be a response from the # user. For example, the statement "Your order has been placed" # does not require a response. # - # * `ConfirmIntent` - The next action is asking the user if the intent + # * `ConfirmIntent` – The next action is asking the user if the intent # is complete and ready to be fulfilled. This is a yes/no question # such as "Place the order?" # - # * `Delegate` - The next action is determined by Amazon Lex V2. + # * `Delegate` – The next action is determined by Amazon Lex V2. # - # * `ElicitIntent` - The next action is to elicit an intent from the + # * `ElicitIntent` – The next action is to elicit an intent from the # user. # - # * `ElicitSlot` - The next action is to elicit a slot value from the + # * `ElicitSlot` – The next action is to elicit a slot value from the # user. # @return [String] # @@ -448,7 +448,7 @@ class DependencyFailedException < Struct.new( # # # - # [1]: https://docs.aws.amazon.com/lexv2/latest/dg/using-spelling.html + # [1]: https://docs.aws.amazon.com/lexv2/latest/dg/spelling-styles.html # @return [String] # # @!attribute [rw] sub_slot_to_elicit @@ -649,12 +649,29 @@ class ImageResponseCard < Struct.new( # @return [Hash] # # @!attribute [rw] state - # Contains fulfillment information for the intent. + # Indicates the fulfillment state for the intent. The meanings of each + # value are as follows: + # + # * `Failed` – The bot failed to fulfill the intent. + # + # * `Fulfilled` – The bot has completed fulfillment of the intent. + # + # * `FulfillmentInProgress` – The bot is in the middle of fulfilling + # the intent. + # + # * `InProgress` – The bot is in the middle of eliciting the slot + # values that are necessary to fulfill the intent. + # + # * `ReadyForFulfillment` – The bot has elicited all the slot values + # for the intent and is ready to fulfill the intent. + # + # * `Waiting` – The bot is waiting for a response from the user + # (limited to streaming conversations). # @return [String] # # @!attribute [rw] confirmation_state - # Contains information about whether fulfillment of the intent has - # been confirmed. + # Indicates whether the intent has been `Confirmed`, `Denied`, or + # `None` if the confirmation stage has not yet been reached. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/Intent AWS API Documentation @@ -672,7 +689,8 @@ class Intent < Struct.new( # application and Amazon Lex V2. # # @!attribute [rw] input_mode - # Indicates whether the input to the operation was text or speech. + # Indicates whether the input to the operation was text, speech, or + # from a touch-tone keypad. # @return [String] # # @!attribute [rw] interpretations @@ -735,8 +753,9 @@ class InternalServerException < Struct.new( include Aws::Structure end - # An intent that Amazon Lex V2 determined might satisfy the user's - # utterance. The intents are ordered by the confidence score. + # An object containing information about an intent that Amazon Lex V2 + # determined might satisfy the user's utterance. The intents are + # ordered by the confidence score. # # @!attribute [rw] nlu_confidence # Determines the threshold where Amazon Lex V2 will insert the @@ -759,12 +778,17 @@ class InternalServerException < Struct.new( # intents are ordered by the confidence score. # @return [Types::Intent] # + # @!attribute [rw] interpretation_source + # Specifies the service that interpreted the input. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/Interpretation AWS API Documentation # class Interpretation < Struct.new( :nlu_confidence, :sentiment_response, - :intent) + :intent, + :interpretation_source) SENSITIVE = [] include Aws::Structure end @@ -928,17 +952,16 @@ class PutSessionRequest < Struct.new( # @return [String] # # @!attribute [rw] session_state - # Represents the current state of the dialog between the user and the - # bot. - # - # Use this to determine the progress of the conversation and what the - # next action may be. + # A base-64-encoded gzipped field that represents the current state of + # the dialog between the user and the bot. Use this to determine the + # progress of the conversation and what the next action may be. # @return [String] # # @!attribute [rw] request_attributes - # Request-specific information passed between the client application - # and Amazon Lex V2. These are the same as the `requestAttribute` - # parameter in the call to the `PutSession` operation. + # A base-64-encoded gzipped field that provides request-specific + # information passed between the client application and Amazon Lex V2. + # These are the same as the `requestAttribute` parameter in the call + # to the `PutSession` operation. # @return [String] # # @!attribute [rw] session_id @@ -1174,8 +1197,8 @@ class RecognizeUtteranceRequest < Struct.new( end # @!attribute [rw] input_mode - # Indicates whether the input mode to the operation was text or - # speech. + # Indicates whether the input mode to the operation was text, speech, + # or from a touch-tone keypad. # @return [String] # # @!attribute [rw] content_type @@ -1695,23 +1718,26 @@ class ValidationException < Struct.new( include Aws::Structure end - # The value of a slot. + # Information about the value provided for a slot and Amazon Lex V2's + # interpretation. # # @!attribute [rw] original_value - # The text of the utterance from the user that was entered for the - # slot. + # The part of the user's response to the slot elicitation that Amazon + # Lex V2 determines is relevant to the slot value. # @return [String] # # @!attribute [rw] interpreted_value - # The value that Amazon Lex V2 determines for the slot. The actual - # value depends on the setting of the value selection strategy for the - # bot. You can choose to use the value entered by the user, or you can - # have Amazon Lex V2 choose the first value in the `resolvedValues` - # list. + # The value that Amazon Lex V2 determines for the slot, given the user + # input. The actual value depends on the setting of the value + # selection strategy for the bot. You can choose to use the value + # entered by the user, or you can have Amazon Lex V2 choose the first + # value in the `resolvedValues` list. # @return [String] # # @!attribute [rw] resolved_values - # A list of additional values that have been recognized for the slot. + # A list of values that Amazon Lex V2 determines are possible + # resolutions for the user input. The first value matches the + # `interpretedValue`. # @return [Array] # # @see http://docs.aws.amazon.com/goto/WebAPI/runtime.lex.v2-2020-08-07/Value AWS API Documentation diff --git a/gems/aws-sdk-managedblockchain/CHANGELOG.md b/gems/aws-sdk-managedblockchain/CHANGELOG.md index ba3044e023f..4d700e48e87 100644 --- a/gems/aws-sdk-managedblockchain/CHANGELOG.md +++ b/gems/aws-sdk-managedblockchain/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.47.0 (2023-11-27) +------------------ + +* Feature - Add optional NetworkType property to Accessor APIs + 1.46.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-managedblockchain/VERSION b/gems/aws-sdk-managedblockchain/VERSION index 0a3db35b241..21998d3c2d9 100644 --- a/gems/aws-sdk-managedblockchain/VERSION +++ b/gems/aws-sdk-managedblockchain/VERSION @@ -1 +1 @@ -1.46.0 +1.47.0 diff --git a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain.rb b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain.rb index 98f4f9f96af..0f4fbc38b8d 100644 --- a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain.rb +++ b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain.rb @@ -52,6 +52,6 @@ # @!group service module Aws::ManagedBlockchain - GEM_VERSION = '1.46.0' + GEM_VERSION = '1.47.0' end diff --git a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client.rb b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client.rb index 55407488fd0..1100ad57d74 100644 --- a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client.rb +++ b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client.rb @@ -388,9 +388,9 @@ def initialize(*args) # @!group API Operations - # Creates a new accessor for use with Managed Blockchain Ethereum nodes. - # An accessor contains information required for token based access to - # your Ethereum nodes. + # Creates a new accessor for use with Amazon Managed Blockchain service + # that supports token based access. The accessor contains information + # required for token based access. # # @option params [required, String] :client_request_token # This is a unique, case-sensitive identifier that you provide to ensure @@ -426,10 +426,28 @@ def initialize(*args) # [1]: https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html # [2]: https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html # + # @option params [String] :network_type + # The blockchain network that the `Accessor` token is created for. + # + # We recommend using the appropriate `networkType` value for the + # blockchain network that you are creating the `Accessor` token for. You + # cannnot use the value `ETHEREUM_MAINNET_AND_GOERLI` to specify a + # `networkType` for your Accessor token. + # + # The default value of `ETHEREUM_MAINNET_AND_GOERLI` is only applied: + # + # * when the `CreateAccessor` action does not set a `networkType`. + # + # * to all existing `Accessor` tokens that were created before the + # `networkType` property was introduced. + # + # + # # @return [Types::CreateAccessorOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateAccessorOutput#accessor_id #accessor_id} => String # * {Types::CreateAccessorOutput#billing_token #billing_token} => String + # * {Types::CreateAccessorOutput#network_type #network_type} => String # # @example Request syntax with placeholder values # @@ -439,12 +457,14 @@ def initialize(*args) # tags: { # "TagKey" => "TagValue", # }, + # network_type: "ETHEREUM_GOERLI", # accepts ETHEREUM_GOERLI, ETHEREUM_MAINNET, ETHEREUM_MAINNET_AND_GOERLI, POLYGON_MAINNET, POLYGON_MUMBAI # }) # # @example Response structure # # resp.accessor_id #=> String # resp.billing_token #=> String + # resp.network_type #=> String, one of "ETHEREUM_GOERLI", "ETHEREUM_MAINNET", "ETHEREUM_MAINNET_AND_GOERLI", "POLYGON_MAINNET", "POLYGON_MUMBAI" # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateAccessor AWS API Documentation # @@ -970,6 +990,7 @@ def delete_node(params = {}, options = {}) # resp.accessor.arn #=> String # resp.accessor.tags #=> Hash # resp.accessor.tags["TagKey"] #=> String + # resp.accessor.network_type #=> String, one of "ETHEREUM_GOERLI", "ETHEREUM_MAINNET", "ETHEREUM_MAINNET_AND_GOERLI", "POLYGON_MAINNET", "POLYGON_MUMBAI" # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetAccessor AWS API Documentation # @@ -1192,6 +1213,15 @@ def get_proposal(params = {}, options = {}) # The pagination token that indicates the next set of results to # retrieve. # + # @option params [String] :network_type + # The blockchain network that the `Accessor` token is created for. + # + # Use the value `ETHEREUM_MAINNET_AND_GOERLI` for all existing + # `Accessors` tokens that were created before the `networkType` property + # was introduced. + # + # + # # @return [Types::ListAccessorsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ListAccessorsOutput#accessors #accessors} => Array<Types::AccessorSummary> @@ -1204,6 +1234,7 @@ def get_proposal(params = {}, options = {}) # resp = client.list_accessors({ # max_results: 1, # next_token: "PaginationToken", + # network_type: "ETHEREUM_GOERLI", # accepts ETHEREUM_GOERLI, ETHEREUM_MAINNET, ETHEREUM_MAINNET_AND_GOERLI, POLYGON_MAINNET, POLYGON_MUMBAI # }) # # @example Response structure @@ -1214,6 +1245,7 @@ def get_proposal(params = {}, options = {}) # resp.accessors[0].status #=> String, one of "AVAILABLE", "PENDING_DELETION", "DELETED" # resp.accessors[0].creation_date #=> Time # resp.accessors[0].arn #=> String + # resp.accessors[0].network_type #=> String, one of "ETHEREUM_GOERLI", "ETHEREUM_MAINNET", "ETHEREUM_MAINNET_AND_GOERLI", "POLYGON_MAINNET", "POLYGON_MUMBAI" # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListAccessors AWS API Documentation @@ -1886,7 +1918,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-managedblockchain' - context[:gem_version] = '1.46.0' + context[:gem_version] = '1.47.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client_api.rb b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client_api.rb index ea474051cac..d78e31bbf0f 100644 --- a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client_api.rb +++ b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/client_api.rb @@ -17,6 +17,7 @@ module ClientApi Accessor = Shapes::StructureShape.new(name: 'Accessor') AccessorBillingTokenString = Shapes::StringShape.new(name: 'AccessorBillingTokenString') AccessorListMaxResults = Shapes::IntegerShape.new(name: 'AccessorListMaxResults') + AccessorNetworkType = Shapes::StringShape.new(name: 'AccessorNetworkType') AccessorStatus = Shapes::StringShape.new(name: 'AccessorStatus') AccessorSummary = Shapes::StructureShape.new(name: 'AccessorSummary') AccessorSummaryList = Shapes::ListShape.new(name: 'AccessorSummaryList') @@ -178,6 +179,7 @@ module ClientApi Accessor.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationDate")) Accessor.add_member(:arn, Shapes::ShapeRef.new(shape: ArnString, location_name: "Arn")) Accessor.add_member(:tags, Shapes::ShapeRef.new(shape: OutputTagMap, location_name: "Tags")) + Accessor.add_member(:network_type, Shapes::ShapeRef.new(shape: AccessorNetworkType, location_name: "NetworkType")) Accessor.struct_class = Types::Accessor AccessorSummary.add_member(:id, Shapes::ShapeRef.new(shape: ResourceIdString, location_name: "Id")) @@ -185,6 +187,7 @@ module ClientApi AccessorSummary.add_member(:status, Shapes::ShapeRef.new(shape: AccessorStatus, location_name: "Status")) AccessorSummary.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationDate")) AccessorSummary.add_member(:arn, Shapes::ShapeRef.new(shape: ArnString, location_name: "Arn")) + AccessorSummary.add_member(:network_type, Shapes::ShapeRef.new(shape: AccessorNetworkType, location_name: "NetworkType")) AccessorSummary.struct_class = Types::AccessorSummary AccessorSummaryList.member = Shapes::ShapeRef.new(shape: AccessorSummary) @@ -197,10 +200,12 @@ module ClientApi CreateAccessorInput.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestTokenString, required: true, location_name: "ClientRequestToken", metadata: {"idempotencyToken"=>true})) CreateAccessorInput.add_member(:accessor_type, Shapes::ShapeRef.new(shape: AccessorType, required: true, location_name: "AccessorType")) CreateAccessorInput.add_member(:tags, Shapes::ShapeRef.new(shape: InputTagMap, location_name: "Tags")) + CreateAccessorInput.add_member(:network_type, Shapes::ShapeRef.new(shape: AccessorNetworkType, location_name: "NetworkType")) CreateAccessorInput.struct_class = Types::CreateAccessorInput CreateAccessorOutput.add_member(:accessor_id, Shapes::ShapeRef.new(shape: ResourceIdString, location_name: "AccessorId")) CreateAccessorOutput.add_member(:billing_token, Shapes::ShapeRef.new(shape: AccessorBillingTokenString, location_name: "BillingToken")) + CreateAccessorOutput.add_member(:network_type, Shapes::ShapeRef.new(shape: AccessorNetworkType, location_name: "NetworkType")) CreateAccessorOutput.struct_class = Types::CreateAccessorOutput CreateMemberInput.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestTokenString, required: true, location_name: "ClientRequestToken", metadata: {"idempotencyToken"=>true})) @@ -328,6 +333,7 @@ module ClientApi ListAccessorsInput.add_member(:max_results, Shapes::ShapeRef.new(shape: AccessorListMaxResults, location: "querystring", location_name: "maxResults")) ListAccessorsInput.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location: "querystring", location_name: "nextToken")) + ListAccessorsInput.add_member(:network_type, Shapes::ShapeRef.new(shape: AccessorNetworkType, location: "querystring", location_name: "networkType")) ListAccessorsInput.struct_class = Types::ListAccessorsInput ListAccessorsOutput.add_member(:accessors, Shapes::ShapeRef.new(shape: AccessorSummaryList, location_name: "Accessors")) diff --git a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/endpoint_provider.rb b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/endpoint_provider.rb index bf6b68b007e..26d5a1364a2 100644 --- a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/endpoint_provider.rb +++ b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://managedblockchain-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/types.rb b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/types.rb index bc83e99814f..0a5ebbc724e 100644 --- a/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/types.rb +++ b/gems/aws-sdk-managedblockchain/lib/aws-sdk-managedblockchain/types.rb @@ -38,10 +38,9 @@ class AccessDeniedException < Struct.new( # @return [String] # # @!attribute [rw] billing_token - # The billing token is a property of the accessor. Use this token to - # make Ethereum API calls to your Ethereum node. The billing token is - # used to track your accessor object for billing Ethereum API requests - # made to your Ethereum nodes. + # The billing token is a property of the Accessor. Use this token to + # when making calls to the blockchain network. The billing token is + # used to track your accessor token for billing requests. # @return [String] # # @!attribute [rw] status @@ -76,6 +75,10 @@ class AccessDeniedException < Struct.new( # [2]: https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html # @return [Hash] # + # @!attribute [rw] network_type + # The blockchain network that the Accessor token is created for. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/Accessor AWS API Documentation # class Accessor < Struct.new( @@ -85,7 +88,8 @@ class Accessor < Struct.new( :status, :creation_date, :arn, - :tags) + :tags, + :network_type) SENSITIVE = [] include Aws::Structure end @@ -122,6 +126,10 @@ class Accessor < Struct.new( # [1]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html # @return [String] # + # @!attribute [rw] network_type + # The blockchain network that the Accessor token is created for. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/AccessorSummary AWS API Documentation # class AccessorSummary < Struct.new( @@ -129,7 +137,8 @@ class AccessorSummary < Struct.new( :type, :status, :creation_date, - :arn) + :arn, + :network_type) SENSITIVE = [] include Aws::Structure end @@ -163,7 +172,7 @@ class AccessorSummary < Struct.new( # @!attribute [rw] threshold_comparator # Determines whether the vote percentage must be greater than the # `ThresholdPercentage` or must be greater than or equal to the - # `ThreholdPercentage` to be approved. + # `ThresholdPercentage` to be approved. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ApprovalThresholdPolicy AWS API Documentation @@ -214,12 +223,31 @@ class ApprovalThresholdPolicy < Struct.new( # [2]: https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html # @return [Hash] # + # @!attribute [rw] network_type + # The blockchain network that the `Accessor` token is created for. + # + # We recommend using the appropriate `networkType` value for the + # blockchain network that you are creating the `Accessor` token for. + # You cannnot use the value `ETHEREUM_MAINNET_AND_GOERLI` to specify a + # `networkType` for your Accessor token. + # + # The default value of `ETHEREUM_MAINNET_AND_GOERLI` is only applied: + # + # * when the `CreateAccessor` action does not set a `networkType`. + # + # * to all existing `Accessor` tokens that were created before the + # `networkType` property was introduced. + # + # + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateAccessorInput AWS API Documentation # class CreateAccessorInput < Struct.new( :client_request_token, :accessor_type, - :tags) + :tags, + :network_type) SENSITIVE = [] include Aws::Structure end @@ -230,16 +258,20 @@ class CreateAccessorInput < Struct.new( # # @!attribute [rw] billing_token # The billing token is a property of the Accessor. Use this token to - # make Ethereum API calls to your Ethereum node. The billing token is - # used to track your accessor object for billing Ethereum API requests - # made to your Ethereum nodes. + # when making calls to the blockchain network. The billing token is + # used to track your accessor token for billing requests. + # @return [String] + # + # @!attribute [rw] network_type + # The blockchain network that the accessor token is created for. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateAccessorOutput AWS API Documentation # class CreateAccessorOutput < Struct.new( :accessor_id, - :billing_token) + :billing_token, + :network_type) SENSITIVE = [] include Aws::Structure end @@ -875,11 +907,22 @@ class InviteAction < Struct.new( # retrieve. # @return [String] # + # @!attribute [rw] network_type + # The blockchain network that the `Accessor` token is created for. + # + # Use the value `ETHEREUM_MAINNET_AND_GOERLI` for all existing + # `Accessors` tokens that were created before the `networkType` + # property was introduced. + # + # + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListAccessorsInput AWS API Documentation # class ListAccessorsInput < Struct.new( :max_results, - :next_token) + :next_token, + :network_type) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-personalize/CHANGELOG.md b/gems/aws-sdk-personalize/CHANGELOG.md index a73450f7752..b73be8a7db9 100644 --- a/gems/aws-sdk-personalize/CHANGELOG.md +++ b/gems/aws-sdk-personalize/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.56.0 (2023-11-27) +------------------ + +* Feature - Enables metadata in recommendations, recommendations with themes, and next best action recommendations + 1.55.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-personalize/VERSION b/gems/aws-sdk-personalize/VERSION index 094d6ad00ce..3ebf789f5a8 100644 --- a/gems/aws-sdk-personalize/VERSION +++ b/gems/aws-sdk-personalize/VERSION @@ -1 +1 @@ -1.55.0 +1.56.0 diff --git a/gems/aws-sdk-personalize/lib/aws-sdk-personalize.rb b/gems/aws-sdk-personalize/lib/aws-sdk-personalize.rb index c7e80ac67ae..ed532d410ed 100644 --- a/gems/aws-sdk-personalize/lib/aws-sdk-personalize.rb +++ b/gems/aws-sdk-personalize/lib/aws-sdk-personalize.rb @@ -52,6 +52,6 @@ # @!group service module Aws::Personalize - GEM_VERSION = '1.55.0' + GEM_VERSION = '1.56.0' end diff --git a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client.rb b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client.rb index cbec5a9b3d6..5b4f02f1996 100644 --- a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client.rb +++ b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client.rb @@ -398,13 +398,35 @@ def initialize(*args) # @!group API Operations - # Creates a batch inference job. The operation can handle up to 50 - # million records and the input file must be in JSON format. For more - # information, see [Creating a batch inference job][1]. + # Generates batch recommendations based on a list of items or users + # stored in Amazon S3 and exports the recommendations to an Amazon S3 + # bucket. # + # To generate batch recommendations, specify the ARN of a solution + # version and an Amazon S3 URI for the input and output data. For user + # personalization, popular items, and personalized ranking solutions, + # the batch inference job generates a list of recommended items for each + # user ID in the input file. For related items solutions, the job + # generates a list of recommended items for each item ID in the input + # file. # + # For more information, see [Creating a batch inference job ][1]. # - # [1]: https://docs.aws.amazon.com/personalize/latest/dg/creating-batch-inference-job.html + # If you use the Similar-Items recipe, Amazon Personalize can add + # descriptive themes to batch recommendations. To generate themes, set + # the job's mode to `THEME_GENERATION` and specify the name of the + # field that contains item names in the input data. + # + # For more information about generating themes, see [Batch + # recommendations with themes from Content Generator ][2]. + # + # You can't get batch recommendations with the Trending-Now or + # Next-Best-Action recipes. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/getting-batch-recommendations.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/themed-batch-recommendations.html # # @option params [required, String] :job_name # The name of the batch inference job to create. @@ -448,6 +470,24 @@ def initialize(*args) # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/tagging-resources.html # + # @option params [String] :batch_inference_job_mode + # The mode of the batch inference job. To generate descriptive themes + # for groups of similar items, set the job mode to `THEME_GENERATION`. + # If you don't want to generate themes, use the default + # `BATCH_INFERENCE`. + # + # When you get batch recommendations with themes, you will incur + # additional costs. For more information, see [Amazon Personalize + # pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/personalize/pricing/ + # + # @option params [Types::ThemeGenerationConfig] :theme_generation_config + # For theme generation jobs, specify the name of the column in your + # Items dataset that contains each item's name. + # # @return [Types::CreateBatchInferenceJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateBatchInferenceJobResponse#batch_inference_job_arn #batch_inference_job_arn} => String @@ -483,6 +523,12 @@ def initialize(*args) # tag_value: "TagValue", # required # }, # ], + # batch_inference_job_mode: "BATCH_INFERENCE", # accepts BATCH_INFERENCE, THEME_GENERATION + # theme_generation_config: { + # fields_for_theme_generation: { # required + # item_name: "ColumnName", # required + # }, + # }, # }) # # @example Response structure @@ -695,6 +741,7 @@ def create_batch_segment_job(params = {}, options = {}) # item_exploration_config: { # "ParameterName" => "ParameterValue", # }, + # enable_metadata_with_recommendations: false, # }, # tags: [ # { @@ -721,17 +768,21 @@ def create_campaign(params = {}, options = {}) # Use [CreateDatasetImportJob][1] to import your training data to a # dataset. # - # There are three types of datasets: + # There are 5 types of datasets: # - # * Interactions + # * Item interactions # # * Items # # * Users # + # * Action interactions + # + # * Actions + # # Each dataset type has an associated schema with required field types. - # Only the `Interactions` dataset is required in order to train a model - # (also referred to as creating a solution). + # Only the `Item interactions` dataset is required in order to train a + # model (also referred to as creating a solution). # # A dataset can be in one of the following states: # @@ -782,6 +833,10 @@ def create_campaign(params = {}, options = {}) # # * Users # + # * Actions + # + # * Action\_Interactions + # # @option params [Array] :tags # A list of [tags][1] to apply to the dataset. # @@ -919,12 +974,16 @@ def create_dataset_export_job(params = {}, options = {}) # Amazon Personalize resources. A dataset group can contain at most # three datasets, one for each type of dataset: # - # * Interactions + # * Item interactions # # * Items # # * Users # + # * Actions + # + # * Action interactions + # # A dataset group can be a Domain dataset group, where you specify a # domain and use pre-configured resources like recommenders, or a Custom # dataset group, where you use custom resources, such as a solution with @@ -1049,6 +1108,12 @@ def create_dataset_group(params = {}, options = {}) # bucket, see [Giving Amazon Personalize Access to Amazon S3 # Resources][1]. # + # If you already created a recommender or deployed a custom solution + # version with a campaign, how new bulk records influence + # recommendations depends on the domain use case or recipe that you use. + # For more information, see [How new data influences real-time + # recommendations][2]. + # # By default, a dataset import job replaces any existing data in the # dataset that you imported in bulk. To add new records without # replacing existing data, specify INCREMENTAL for the import mode in @@ -1064,7 +1129,7 @@ def create_dataset_group(params = {}, options = {}) # ^ # # To get the status of the import job, call - # [DescribeDatasetImportJob][2], providing the Amazon Resource Name + # [DescribeDatasetImportJob][3], providing the Amazon Resource Name # (ARN) of the dataset import job. The dataset import is complete when # the status shows as ACTIVE. If the status shows as CREATE FAILED, the # response includes a `failureReason` key, which describes why the job @@ -1077,15 +1142,16 @@ def create_dataset_group(params = {}, options = {}) # # **Related APIs** # - # * [ListDatasetImportJobs][3] + # * [ListDatasetImportJobs][4] # - # * [DescribeDatasetImportJob][2] + # * [DescribeDatasetImportJob][3] # # # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/granting-personalize-s3-access.html - # [2]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetImportJob.html - # [3]: https://docs.aws.amazon.com/personalize/latest/dg/API_ListDatasetImportJobs.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/how-new-data-influences-recommendations.html + # [3]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetImportJob.html + # [4]: https://docs.aws.amazon.com/personalize/latest/dg/API_ListDatasetImportJobs.html # # @option params [required, String] :job_name # The name for the dataset import job. @@ -1170,8 +1236,8 @@ def create_dataset_import_job(params = {}, options = {}) # # When you create an event tracker, the response includes a tracking ID, # which you pass as a parameter when you use the [PutEvents][1] - # operation. Amazon Personalize then appends the event data to the - # Interactions dataset of the dataset group you specify in your event + # operation. Amazon Personalize then appends the event data to the Item + # interactions dataset of the dataset group you specify in your event # tracker. # # The event tracker can be in one of the following states: @@ -1497,6 +1563,7 @@ def create_metric_attribution(params = {}, options = {}) # "DatasetType" => ["ColumnName"], # }, # }, + # enable_metadata_with_recommendations: false, # }, # tags: [ # { @@ -1851,21 +1918,30 @@ def create_solution(params = {}, options = {}) # # @option params [String] :training_mode # The scope of training to be performed when creating the solution - # version. The `FULL` option trains the solution version based on the - # entirety of the input solution's training data, while the `UPDATE` - # option processes only the data that has changed in comparison to the - # input solution. Choose `UPDATE` when you want to incrementally update - # your solution version instead of creating an entirely new one. + # version. The default is `FULL`. This creates a completely new model + # based on the entirety of the training data from the datasets in your + # dataset group. + # + # If you use [User-Personalization][1], you can specify a training mode + # of `UPDATE`. This updates the model to consider new items for + # recommendations. It is not a full retraining. You should still + # complete a full retraining weekly. If you specify `UPDATE`, Amazon + # Personalize will stop automatic updates for the solution version. To + # resume updates, create a new solution with training mode set to `FULL` + # and deploy it in a campaign. For more information about automatic + # updates, see [Automatic updates][2]. # # The `UPDATE` option can only be used when you already have an active # solution version created from the input solution using the `FULL` # option and the input solution was trained with the - # [User-Personalization][1] recipe or the [HRNN-Coldstart][2] recipe. + # [User-Personalization][1] recipe or the legacy [HRNN-Coldstart][3] + # recipe. # # # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html - # [2]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/use-case-recipe-features.html#maintaining-with-automatic-updates + # [3]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html # # @option params [Array] :tags # A list of [tags][1] to apply to the solution version. @@ -1994,9 +2070,9 @@ def delete_dataset_group(params = {}, options = {}) req.send_request(options) end - # Deletes the event tracker. Does not delete the event-interactions - # dataset from the associated dataset group. For more information on - # event trackers, see [CreateEventTracker][1]. + # Deletes the event tracker. Does not delete the dataset from the + # dataset group. For more information on event trackers, see + # [CreateEventTracker][1]. # # # @@ -2240,6 +2316,8 @@ def describe_algorithm(params = {}, options = {}) # resp.batch_inference_job.batch_inference_job_config.item_exploration_config #=> Hash # resp.batch_inference_job.batch_inference_job_config.item_exploration_config["ParameterName"] #=> String # resp.batch_inference_job.role_arn #=> String + # resp.batch_inference_job.batch_inference_job_mode #=> String, one of "BATCH_INFERENCE", "THEME_GENERATION" + # resp.batch_inference_job.theme_generation_config.fields_for_theme_generation.item_name #=> String # resp.batch_inference_job.status #=> String # resp.batch_inference_job.creation_date_time #=> Time # resp.batch_inference_job.last_updated_date_time #=> Time @@ -2335,6 +2413,7 @@ def describe_batch_segment_job(params = {}, options = {}) # resp.campaign.min_provisioned_tps #=> Integer # resp.campaign.campaign_config.item_exploration_config #=> Hash # resp.campaign.campaign_config.item_exploration_config["ParameterName"] #=> String + # resp.campaign.campaign_config.enable_metadata_with_recommendations #=> Boolean # resp.campaign.status #=> String # resp.campaign.failure_reason #=> String # resp.campaign.creation_date_time #=> Time @@ -2343,6 +2422,7 @@ def describe_batch_segment_job(params = {}, options = {}) # resp.campaign.latest_campaign_update.min_provisioned_tps #=> Integer # resp.campaign.latest_campaign_update.campaign_config.item_exploration_config #=> Hash # resp.campaign.latest_campaign_update.campaign_config.item_exploration_config["ParameterName"] #=> String + # resp.campaign.latest_campaign_update.campaign_config.enable_metadata_with_recommendations #=> Boolean # resp.campaign.latest_campaign_update.status #=> String # resp.campaign.latest_campaign_update.failure_reason #=> String # resp.campaign.latest_campaign_update.creation_date_time #=> Time @@ -2392,6 +2472,7 @@ def describe_campaign(params = {}, options = {}) # resp.dataset.latest_dataset_update.failure_reason #=> String # resp.dataset.latest_dataset_update.creation_date_time #=> Time # resp.dataset.latest_dataset_update.last_updated_date_time #=> Time + # resp.dataset.tracking_id #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/DescribeDataset AWS API Documentation # @@ -2783,6 +2864,7 @@ def describe_recipe(params = {}, options = {}) # resp.recommender.recommender_config.training_data_config.excluded_dataset_columns #=> Hash # resp.recommender.recommender_config.training_data_config.excluded_dataset_columns["DatasetType"] #=> Array # resp.recommender.recommender_config.training_data_config.excluded_dataset_columns["DatasetType"][0] #=> String + # resp.recommender.recommender_config.enable_metadata_with_recommendations #=> Boolean # resp.recommender.creation_date_time #=> Time # resp.recommender.last_updated_date_time #=> Time # resp.recommender.status #=> String @@ -2793,6 +2875,7 @@ def describe_recipe(params = {}, options = {}) # resp.recommender.latest_recommender_update.recommender_config.training_data_config.excluded_dataset_columns #=> Hash # resp.recommender.latest_recommender_update.recommender_config.training_data_config.excluded_dataset_columns["DatasetType"] #=> Array # resp.recommender.latest_recommender_update.recommender_config.training_data_config.excluded_dataset_columns["DatasetType"][0] #=> String + # resp.recommender.latest_recommender_update.recommender_config.enable_metadata_with_recommendations #=> Boolean # resp.recommender.latest_recommender_update.creation_date_time #=> Time # resp.recommender.latest_recommender_update.last_updated_date_time #=> Time # resp.recommender.latest_recommender_update.status #=> String @@ -3074,6 +3157,7 @@ def get_solution_metrics(params = {}, options = {}) # resp.batch_inference_jobs[0].last_updated_date_time #=> Time # resp.batch_inference_jobs[0].failure_reason #=> String # resp.batch_inference_jobs[0].solution_version_arn #=> String + # resp.batch_inference_jobs[0].batch_inference_job_mode #=> String, one of "BATCH_INFERENCE", "THEME_GENERATION" # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/ListBatchInferenceJobs AWS API Documentation @@ -3379,8 +3463,8 @@ def list_dataset_import_jobs(params = {}, options = {}) # datasets to list. # # @option params [String] :next_token - # A token returned from the previous call to `ListDatasetImportJobs` for - # getting the next set of dataset import jobs (if they exist). + # A token returned from the previous call to `ListDatasets` for getting + # the next set of dataset import jobs (if they exist). # # @option params [Integer] :max_results # The maximum number of datasets to return. @@ -3720,6 +3804,7 @@ def list_recipes(params = {}, options = {}) # resp.recommenders[0].recommender_config.training_data_config.excluded_dataset_columns #=> Hash # resp.recommenders[0].recommender_config.training_data_config.excluded_dataset_columns["DatasetType"] #=> Array # resp.recommenders[0].recommender_config.training_data_config.excluded_dataset_columns["DatasetType"][0] #=> String + # resp.recommenders[0].recommender_config.enable_metadata_with_recommendations #=> Boolean # resp.recommenders[0].status #=> String # resp.recommenders[0].creation_date_time #=> Time # resp.recommenders[0].last_updated_date_time #=> Time @@ -4082,8 +4167,10 @@ def untag_resource(params = {}, options = {}) req.send_request(options) end - # Updates a campaign by either deploying a new solution or changing the - # value of the campaign's `minProvisionedTPS` parameter. + # Updates a campaign to deploy a retrained solution version with an + # existing campaign, change your campaign's `minProvisionedTPS`, or + # modify your campaign's configuration, such as the exploration + # configuration. # # To update a campaign, the campaign status must be ACTIVE or CREATE # FAILED. Check the campaign status using the [DescribeCampaign][1] @@ -4096,12 +4183,15 @@ def untag_resource(params = {}, options = {}) # #
# - # For more information on campaigns, see [CreateCampaign][2]. + # For more information about updating a campaign, including code + # samples, see [Updating a campaign][2]. For more information about + # campaigns, see [Creating a campaign][3]. # # # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeCampaign.html - # [2]: https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/update-campaigns.html + # [3]: https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html # # @option params [required, String] :campaign_arn # The Amazon Resource Name (ARN) of the campaign. @@ -4134,6 +4224,7 @@ def untag_resource(params = {}, options = {}) # item_exploration_config: { # "ParameterName" => "ParameterValue", # }, + # enable_metadata_with_recommendations: false, # }, # }) # @@ -4276,6 +4367,7 @@ def update_metric_attribution(params = {}, options = {}) # "DatasetType" => ["ColumnName"], # }, # }, + # enable_metadata_with_recommendations: false, # }, # }) # @@ -4305,7 +4397,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-personalize' - context[:gem_version] = '1.55.0' + context[:gem_version] = '1.56.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client_api.rb b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client_api.rb index e623535d4fe..74308331f90 100644 --- a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client_api.rb +++ b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/client_api.rb @@ -24,6 +24,7 @@ module ClientApi BatchInferenceJob = Shapes::StructureShape.new(name: 'BatchInferenceJob') BatchInferenceJobConfig = Shapes::StructureShape.new(name: 'BatchInferenceJobConfig') BatchInferenceJobInput = Shapes::StructureShape.new(name: 'BatchInferenceJobInput') + BatchInferenceJobMode = Shapes::StringShape.new(name: 'BatchInferenceJobMode') BatchInferenceJobOutput = Shapes::StructureShape.new(name: 'BatchInferenceJobOutput') BatchInferenceJobSummary = Shapes::StructureShape.new(name: 'BatchInferenceJobSummary') BatchInferenceJobs = Shapes::ListShape.new(name: 'BatchInferenceJobs') @@ -159,6 +160,7 @@ module ClientApi FeatureTransformation = Shapes::StructureShape.new(name: 'FeatureTransformation') FeatureTransformationParameters = Shapes::MapShape.new(name: 'FeatureTransformationParameters') FeaturizationParameters = Shapes::MapShape.new(name: 'FeaturizationParameters') + FieldsForThemeGeneration = Shapes::StructureShape.new(name: 'FieldsForThemeGeneration') Filter = Shapes::StructureShape.new(name: 'Filter') FilterExpression = Shapes::StringShape.new(name: 'FilterExpression') FilterSummary = Shapes::StructureShape.new(name: 'FilterSummary') @@ -277,6 +279,7 @@ module ClientApi TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse') TagValue = Shapes::StringShape.new(name: 'TagValue') Tags = Shapes::ListShape.new(name: 'Tags') + ThemeGenerationConfig = Shapes::StructureShape.new(name: 'ThemeGenerationConfig') TooManyTagKeysException = Shapes::StructureShape.new(name: 'TooManyTagKeysException') TooManyTagsException = Shapes::StructureShape.new(name: 'TooManyTagsException') TrackingId = Shapes::StringShape.new(name: 'TrackingId') @@ -333,6 +336,8 @@ module ClientApi BatchInferenceJob.add_member(:job_output, Shapes::ShapeRef.new(shape: BatchInferenceJobOutput, location_name: "jobOutput")) BatchInferenceJob.add_member(:batch_inference_job_config, Shapes::ShapeRef.new(shape: BatchInferenceJobConfig, location_name: "batchInferenceJobConfig")) BatchInferenceJob.add_member(:role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "roleArn")) + BatchInferenceJob.add_member(:batch_inference_job_mode, Shapes::ShapeRef.new(shape: BatchInferenceJobMode, location_name: "batchInferenceJobMode")) + BatchInferenceJob.add_member(:theme_generation_config, Shapes::ShapeRef.new(shape: ThemeGenerationConfig, location_name: "themeGenerationConfig")) BatchInferenceJob.add_member(:status, Shapes::ShapeRef.new(shape: Status, location_name: "status")) BatchInferenceJob.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "creationDateTime")) BatchInferenceJob.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "lastUpdatedDateTime")) @@ -354,6 +359,7 @@ module ClientApi BatchInferenceJobSummary.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "lastUpdatedDateTime")) BatchInferenceJobSummary.add_member(:failure_reason, Shapes::ShapeRef.new(shape: FailureReason, location_name: "failureReason")) BatchInferenceJobSummary.add_member(:solution_version_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "solutionVersionArn")) + BatchInferenceJobSummary.add_member(:batch_inference_job_mode, Shapes::ShapeRef.new(shape: BatchInferenceJobMode, location_name: "batchInferenceJobMode")) BatchInferenceJobSummary.struct_class = Types::BatchInferenceJobSummary BatchInferenceJobs.member = Shapes::ShapeRef.new(shape: BatchInferenceJobSummary) @@ -402,6 +408,7 @@ module ClientApi Campaign.struct_class = Types::Campaign CampaignConfig.add_member(:item_exploration_config, Shapes::ShapeRef.new(shape: HyperParameters, location_name: "itemExplorationConfig")) + CampaignConfig.add_member(:enable_metadata_with_recommendations, Shapes::ShapeRef.new(shape: Boolean, location_name: "enableMetadataWithRecommendations")) CampaignConfig.struct_class = Types::CampaignConfig CampaignSummary.add_member(:name, Shapes::ShapeRef.new(shape: Name, location_name: "name")) @@ -449,6 +456,8 @@ module ClientApi CreateBatchInferenceJobRequest.add_member(:role_arn, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "roleArn")) CreateBatchInferenceJobRequest.add_member(:batch_inference_job_config, Shapes::ShapeRef.new(shape: BatchInferenceJobConfig, location_name: "batchInferenceJobConfig")) CreateBatchInferenceJobRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + CreateBatchInferenceJobRequest.add_member(:batch_inference_job_mode, Shapes::ShapeRef.new(shape: BatchInferenceJobMode, location_name: "batchInferenceJobMode")) + CreateBatchInferenceJobRequest.add_member(:theme_generation_config, Shapes::ShapeRef.new(shape: ThemeGenerationConfig, location_name: "themeGenerationConfig")) CreateBatchInferenceJobRequest.struct_class = Types::CreateBatchInferenceJobRequest CreateBatchInferenceJobResponse.add_member(:batch_inference_job_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "batchInferenceJobArn")) @@ -600,6 +609,7 @@ module ClientApi Dataset.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "creationDateTime")) Dataset.add_member(:last_updated_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "lastUpdatedDateTime")) Dataset.add_member(:latest_dataset_update, Shapes::ShapeRef.new(shape: DatasetUpdateSummary, location_name: "latestDatasetUpdate")) + Dataset.add_member(:tracking_id, Shapes::ShapeRef.new(shape: TrackingId, location_name: "trackingId")) Dataset.struct_class = Types::Dataset DatasetExportJob.add_member(:job_name, Shapes::ShapeRef.new(shape: Name, location_name: "jobName")) @@ -898,6 +908,9 @@ module ClientApi FeaturizationParameters.key = Shapes::ShapeRef.new(shape: ParameterName) FeaturizationParameters.value = Shapes::ShapeRef.new(shape: ParameterValue) + FieldsForThemeGeneration.add_member(:item_name, Shapes::ShapeRef.new(shape: ColumnName, required: true, location_name: "itemName")) + FieldsForThemeGeneration.struct_class = Types::FieldsForThemeGeneration + Filter.add_member(:name, Shapes::ShapeRef.new(shape: Name, location_name: "name")) Filter.add_member(:filter_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "filterArn")) Filter.add_member(:creation_date_time, Shapes::ShapeRef.new(shape: Date, location_name: "creationDateTime")) @@ -1190,6 +1203,7 @@ module ClientApi RecommenderConfig.add_member(:item_exploration_config, Shapes::ShapeRef.new(shape: HyperParameters, location_name: "itemExplorationConfig")) RecommenderConfig.add_member(:min_recommendation_requests_per_second, Shapes::ShapeRef.new(shape: TransactionsPerSecond, location_name: "minRecommendationRequestsPerSecond")) RecommenderConfig.add_member(:training_data_config, Shapes::ShapeRef.new(shape: TrainingDataConfig, location_name: "trainingDataConfig")) + RecommenderConfig.add_member(:enable_metadata_with_recommendations, Shapes::ShapeRef.new(shape: Boolean, location_name: "enableMetadataWithRecommendations")) RecommenderConfig.struct_class = Types::RecommenderConfig RecommenderSummary.add_member(:name, Shapes::ShapeRef.new(shape: Name, location_name: "name")) @@ -1319,6 +1333,9 @@ module ClientApi Tags.member = Shapes::ShapeRef.new(shape: Tag) + ThemeGenerationConfig.add_member(:fields_for_theme_generation, Shapes::ShapeRef.new(shape: FieldsForThemeGeneration, required: true, location_name: "fieldsForThemeGeneration")) + ThemeGenerationConfig.struct_class = Types::ThemeGenerationConfig + TooManyTagKeysException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "message")) TooManyTagKeysException.struct_class = Types::TooManyTagKeysException diff --git a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/endpoint_provider.rb b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/endpoint_provider.rb index 30bd3f00ce8..a3a48af4ce0 100644 --- a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/endpoint_provider.rb +++ b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://personalize-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/types.rb b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/types.rb index 4aa769983dc..ddf2c18b655 100644 --- a/gems/aws-sdk-personalize/lib/aws-sdk-personalize/types.rb +++ b/gems/aws-sdk-personalize/lib/aws-sdk-personalize/types.rb @@ -187,6 +187,14 @@ class AutoMLResult < Struct.new( # requested the batch inference job. # @return [String] # + # @!attribute [rw] batch_inference_job_mode + # The job's mode. + # @return [String] + # + # @!attribute [rw] theme_generation_config + # The job's theme generation settings. + # @return [Types::ThemeGenerationConfig] + # # @!attribute [rw] status # The status of the batch inference job. The status is one of the # following values: @@ -221,6 +229,8 @@ class BatchInferenceJob < Struct.new( :job_output, :batch_inference_job_config, :role_arn, + :batch_inference_job_mode, + :theme_generation_config, :status, :creation_date_time, :last_updated_date_time) @@ -327,6 +337,10 @@ class BatchInferenceJobOutput < Struct.new( # The ARN of the solution version used by the batch inference job. # @return [String] # + # @!attribute [rw] batch_inference_job_mode + # The job's mode. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/BatchInferenceJobSummary AWS API Documentation # class BatchInferenceJobSummary < Struct.new( @@ -336,7 +350,8 @@ class BatchInferenceJobSummary < Struct.new( :creation_date_time, :last_updated_date_time, :failure_reason, - :solution_version_arn) + :solution_version_arn, + :batch_inference_job_mode) SENSITIVE = [] include Aws::Structure end @@ -611,10 +626,25 @@ class Campaign < Struct.new( # [1]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html # @return [Hash] # + # @!attribute [rw] enable_metadata_with_recommendations + # Whether metadata with recommendations is enabled for the campaign. + # If enabled, you can specify the columns from your Items dataset in + # your request for recommendations. Amazon Personalize returns this + # data for each item in the recommendation response. + # + # If you enable metadata in recommendations, you will incur additional + # costs. For more information, see [Amazon Personalize pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/personalize/pricing/ + # @return [Boolean] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/CampaignConfig AWS API Documentation # class CampaignConfig < Struct.new( - :item_exploration_config) + :item_exploration_config, + :enable_metadata_with_recommendations) SENSITIVE = [] include Aws::Structure end @@ -823,6 +853,26 @@ class ContinuousHyperParameterRange < Struct.new( # [1]: https://docs.aws.amazon.com/personalize/latest/dg/tagging-resources.html # @return [Array] # + # @!attribute [rw] batch_inference_job_mode + # The mode of the batch inference job. To generate descriptive themes + # for groups of similar items, set the job mode to `THEME_GENERATION`. + # If you don't want to generate themes, use the default + # `BATCH_INFERENCE`. + # + # When you get batch recommendations with themes, you will incur + # additional costs. For more information, see [Amazon Personalize + # pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/personalize/pricing/ + # @return [String] + # + # @!attribute [rw] theme_generation_config + # For theme generation jobs, specify the name of the column in your + # Items dataset that contains each item's name. + # @return [Types::ThemeGenerationConfig] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/CreateBatchInferenceJobRequest AWS API Documentation # class CreateBatchInferenceJobRequest < Struct.new( @@ -834,7 +884,9 @@ class CreateBatchInferenceJobRequest < Struct.new( :job_output, :role_arn, :batch_inference_job_config, - :tags) + :tags, + :batch_inference_job_mode, + :theme_generation_config) SENSITIVE = [] include Aws::Structure end @@ -1193,6 +1245,10 @@ class CreateDatasetImportJobResponse < Struct.new( # * Items # # * Users + # + # * Actions + # + # * Action\_Interactions # @return [String] # # @!attribute [rw] tags @@ -1571,22 +1627,30 @@ class CreateSolutionResponse < Struct.new( # # @!attribute [rw] training_mode # The scope of training to be performed when creating the solution - # version. The `FULL` option trains the solution version based on the - # entirety of the input solution's training data, while the `UPDATE` - # option processes only the data that has changed in comparison to the - # input solution. Choose `UPDATE` when you want to incrementally - # update your solution version instead of creating an entirely new - # one. + # version. The default is `FULL`. This creates a completely new model + # based on the entirety of the training data from the datasets in your + # dataset group. + # + # If you use [User-Personalization][1], you can specify a training + # mode of `UPDATE`. This updates the model to consider new items for + # recommendations. It is not a full retraining. You should still + # complete a full retraining weekly. If you specify `UPDATE`, Amazon + # Personalize will stop automatic updates for the solution version. To + # resume updates, create a new solution with training mode set to + # `FULL` and deploy it in a campaign. For more information about + # automatic updates, see [Automatic updates][2]. # # The `UPDATE` option can only be used when you already have an active # solution version created from the input solution using the `FULL` # option and the input solution was trained with the - # [User-Personalization][1] recipe or the [HRNN-Coldstart][2] recipe. + # [User-Personalization][1] recipe or the legacy [HRNN-Coldstart][3] + # recipe. # # # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html - # [2]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/use-case-recipe-features.html#maintaining-with-automatic-updates + # [3]: https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html # @return [String] # # @!attribute [rw] tags @@ -1661,6 +1725,10 @@ class DataSource < Struct.new( # * Items # # * Users + # + # * Actions + # + # * Action\_Interactions # @return [String] # # @!attribute [rw] schema_arn @@ -1690,6 +1758,13 @@ class DataSource < Struct.new( # Describes the latest update to the dataset. # @return [Types::DatasetUpdateSummary] # + # @!attribute [rw] tracking_id + # The ID of the event tracker for an Action interactions dataset. You + # specify the tracker's ID in the `PutActionInteractions` API + # operation. Amazon Personalize uses it to direct new data to the + # Action interactions dataset in your dataset group. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/Dataset AWS API Documentation # class Dataset < Struct.new( @@ -1701,7 +1776,8 @@ class Dataset < Struct.new( :status, :creation_date_time, :last_updated_date_time, - :latest_dataset_update) + :latest_dataset_update, + :tracking_id) SENSITIVE = [] include Aws::Structure end @@ -1860,12 +1936,13 @@ class DatasetExportJobSummary < Struct.new( include Aws::Structure end - # A dataset group is a collection of related datasets (Interactions, - # User, and Item). You create a dataset group by calling - # [CreateDatasetGroup][1]. You then create a dataset and add it to a - # dataset group by calling [CreateDataset][2]. The dataset group is used - # to create and train a solution by calling [CreateSolution][3]. A - # dataset group can contain only one of each type of dataset. + # A dataset group is a collection of related datasets (Item + # interactions, Users, Items, Actions, Action interactions). You create + # a dataset group by calling [CreateDatasetGroup][1]. You then create a + # dataset and add it to a dataset group by calling [CreateDataset][2]. + # The dataset group is used to create and train a solution by calling + # [CreateSolution][3]. A dataset group can contain only one of each type + # of dataset. # # You can specify an Key Management Service (KMS) key to encrypt the # datasets in the group. @@ -1896,8 +1973,9 @@ class DatasetExportJobSummary < Struct.new( # @return [String] # # @!attribute [rw] role_arn - # The ARN of the IAM role that has permissions to create the dataset - # group. + # The ARN of the Identity and Access Management (IAM) role that has + # permissions to access the Key Management Service (KMS) key. + # Supplying an IAM role is only valid when also specifying a KMS key. # @return [String] # # @!attribute [rw] kms_key_arn @@ -3140,6 +3218,22 @@ class FeatureTransformation < Struct.new( include Aws::Structure end + # A string to string map of the configuration details for theme + # generation. + # + # @!attribute [rw] item_name + # The name of the Items dataset column that stores the name of each + # item in the dataset. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/FieldsForThemeGeneration AWS API Documentation + # + class FieldsForThemeGeneration < Struct.new( + :item_name) + SENSITIVE = [] + include Aws::Structure + end + # Contains information on a recommendation filter, including its ARN, # status, and filter expression. # @@ -3701,8 +3795,8 @@ class ListDatasetImportJobsResponse < Struct.new( # @return [String] # # @!attribute [rw] next_token - # A token returned from the previous call to `ListDatasetImportJobs` - # for getting the next set of dataset import jobs (if they exist). + # A token returned from the previous call to `ListDatasets` for + # getting the next set of dataset import jobs (if they exist). # @return [String] # # @!attribute [rw] max_results @@ -4547,12 +4641,27 @@ class Recommender < Struct.new( # domain recommender. # @return [Types::TrainingDataConfig] # + # @!attribute [rw] enable_metadata_with_recommendations + # Whether metadata with recommendations is enabled for the + # recommender. If enabled, you can specify the columns from your Items + # dataset in your request for recommendations. Amazon Personalize + # returns this data for each item in the recommendation response. + # + # If you enable metadata in recommendations, you will incur additional + # costs. For more information, see [Amazon Personalize pricing][1]. + # + # + # + # [1]: https://aws.amazon.com/personalize/pricing/ + # @return [Boolean] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/RecommenderConfig AWS API Documentation # class RecommenderConfig < Struct.new( :item_exploration_config, :min_recommendation_requests_per_second, - :training_data_config) + :training_data_config, + :enable_metadata_with_recommendations) SENSITIVE = [] include Aws::Structure end @@ -4841,7 +4950,7 @@ class Solution < Struct.new( # @return [Types::HPOConfig] # # @!attribute [rw] algorithm_hyper_parameters - # Lists the hyperparameter names and ranges. + # Lists the algorithm hyperparameters and their values. # @return [Hash] # # @!attribute [rw] feature_transformation_parameters @@ -5233,6 +5342,22 @@ class TagResourceRequest < Struct.new( # class TagResourceResponse < Aws::EmptyStructure; end + # The configuration details for generating themes with a batch inference + # job. + # + # @!attribute [rw] fields_for_theme_generation + # Fields used to generate descriptive themes for a batch inference + # job. + # @return [Types::FieldsForThemeGeneration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-2018-05-22/ThemeGenerationConfig AWS API Documentation + # + class ThemeGenerationConfig < Struct.new( + :fields_for_theme_generation) + SENSITIVE = [] + include Aws::Structure + end + # The request contains more tag keys than can be associated with a # resource (50 tag keys per resource). # diff --git a/gems/aws-sdk-personalizeevents/CHANGELOG.md b/gems/aws-sdk-personalizeevents/CHANGELOG.md index dd0708dbdc6..b0fc502860f 100644 --- a/gems/aws-sdk-personalizeevents/CHANGELOG.md +++ b/gems/aws-sdk-personalizeevents/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.39.0 (2023-11-27) +------------------ + +* Feature - This release enables PutActions and PutActionInteractions + 1.38.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-personalizeevents/VERSION b/gems/aws-sdk-personalizeevents/VERSION index ebeef2f2d61..5edffce6d57 100644 --- a/gems/aws-sdk-personalizeevents/VERSION +++ b/gems/aws-sdk-personalizeevents/VERSION @@ -1 +1 @@ -1.38.0 +1.39.0 diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents.rb index c6b4126fec7..6e5f0bb86ee 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents.rb @@ -32,7 +32,7 @@ # structure. # # personalize_events = Aws::PersonalizeEvents::Client.new -# resp = personalize_events.put_events(params) +# resp = personalize_events.put_action_interactions(params) # # See {Client} for more information. # @@ -52,6 +52,6 @@ # @!group service module Aws::PersonalizeEvents - GEM_VERSION = '1.38.0' + GEM_VERSION = '1.39.0' end diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client.rb index f607fbad400..07269b6b730 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client.rb @@ -388,12 +388,106 @@ def initialize(*args) # @!group API Operations - # Records user interaction event data. For more information see - # [Recording Events][1]. + # Records action interaction event data. An *action interaction* event + # is an interaction between a user and an *action*. For example, a user + # taking an action, such a enrolling in a membership program or + # downloading your app. # + # For more information about recording action interactions, see + # [Recording action interaction events][1]. For more information about + # actions in an Actions dataset, see [Actions dataset][2]. # # - # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-events.html + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-action-interaction-events.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/actions-datasets.html + # + # @option params [required, String] :tracking_id + # The ID of your action interaction event tracker. When you create an + # Action interactions dataset, Amazon Personalize creates an action + # interaction event tracker for you. For more information, see [Action + # interaction event tracker ID][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/action-interaction-tracker-id.html + # + # @option params [required, Array] :action_interactions + # A list of action interaction events from the session. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.put_action_interactions({ + # tracking_id: "StringType", # required + # action_interactions: [ # required + # { + # action_id: "ActionId", # required + # user_id: "UserId", + # session_id: "StringType", # required + # timestamp: Time.now, # required + # event_type: "StringType", # required + # event_id: "StringType", + # recommendation_id: "RecommendationId", + # impression: ["ActionId"], + # properties: "ActionInteractionProperties", + # }, + # ], + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/PutActionInteractions AWS API Documentation + # + # @overload put_action_interactions(params = {}) + # @param [Hash] params ({}) + def put_action_interactions(params = {}, options = {}) + req = build_request(:put_action_interactions, params) + req.send_request(options) + end + + # Adds one or more actions to an Actions dataset. For more information + # see [Importing actions individually][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/importing-actions.html + # + # @option params [required, String] :dataset_arn + # The Amazon Resource Name (ARN) of the Actions dataset you are adding + # the action or actions to. + # + # @option params [required, Array] :actions + # A list of action data. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.put_actions({ + # dataset_arn: "Arn", # required + # actions: [ # required + # { + # action_id: "StringType", # required + # properties: "ActionProperties", + # }, + # ], + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/PutActions AWS API Documentation + # + # @overload put_actions(params = {}) + # @param [Hash] params ({}) + def put_actions(params = {}, options = {}) + req = build_request(:put_actions, params) + req.send_request(options) + end + + # Records item interaction event data. For more information see + # [Recording item interaction events][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-item-interaction-events.html # # @option params [required, String] :tracking_id # The tracking ID for the event. The ID is generated by a call to the @@ -411,11 +505,11 @@ def initialize(*args) # generates the sessionId when a user first visits your website or uses # your application. Amazon Personalize uses the sessionId to associate # events with the user before they log in. For more information, see - # [Recording Events][1]. + # [Recording item interaction events][1]. # # # - # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-events.html + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-item-interaction-events.html # # @option params [required, Array] :event_list # A list of event data from the session. @@ -455,7 +549,7 @@ def put_events(params = {}, options = {}) end # Adds one or more items to an Items dataset. For more information see - # [Importing Items Incrementally][1]. + # [Importing items individually][1]. # # # @@ -492,7 +586,7 @@ def put_items(params = {}, options = {}) end # Adds one or more users to a Users dataset. For more information see - # [Importing Users Incrementally][1]. + # [Importing users individually][1]. # # # @@ -541,7 +635,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-personalizeevents' - context[:gem_version] = '1.38.0' + context[:gem_version] = '1.39.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client_api.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client_api.rb index 246cdd90325..c5d70df5275 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client_api.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/client_api.rb @@ -13,6 +13,14 @@ module ClientApi include Seahorse::Model + Action = Shapes::StructureShape.new(name: 'Action') + ActionId = Shapes::StringShape.new(name: 'ActionId') + ActionImpression = Shapes::ListShape.new(name: 'ActionImpression') + ActionInteraction = Shapes::StructureShape.new(name: 'ActionInteraction') + ActionInteractionProperties = Shapes::StringShape.new(name: 'ActionInteractionProperties') + ActionInteractionsList = Shapes::ListShape.new(name: 'ActionInteractionsList') + ActionList = Shapes::ListShape.new(name: 'ActionList') + ActionProperties = Shapes::StringShape.new(name: 'ActionProperties') Arn = Shapes::StringShape.new(name: 'Arn') Date = Shapes::TimestampShape.new(name: 'Date') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') @@ -28,6 +36,8 @@ module ClientApi ItemList = Shapes::ListShape.new(name: 'ItemList') ItemProperties = Shapes::StringShape.new(name: 'ItemProperties') MetricAttribution = Shapes::StructureShape.new(name: 'MetricAttribution') + PutActionInteractionsRequest = Shapes::StructureShape.new(name: 'PutActionInteractionsRequest') + PutActionsRequest = Shapes::StructureShape.new(name: 'PutActionsRequest') PutEventsRequest = Shapes::StructureShape.new(name: 'PutEventsRequest') PutItemsRequest = Shapes::StructureShape.new(name: 'PutItemsRequest') PutUsersRequest = Shapes::StructureShape.new(name: 'PutUsersRequest') @@ -40,6 +50,27 @@ module ClientApi UserList = Shapes::ListShape.new(name: 'UserList') UserProperties = Shapes::StringShape.new(name: 'UserProperties') + Action.add_member(:action_id, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "actionId")) + Action.add_member(:properties, Shapes::ShapeRef.new(shape: ActionProperties, location_name: "properties", metadata: {"jsonvalue"=>true})) + Action.struct_class = Types::Action + + ActionImpression.member = Shapes::ShapeRef.new(shape: ActionId) + + ActionInteraction.add_member(:action_id, Shapes::ShapeRef.new(shape: ActionId, required: true, location_name: "actionId")) + ActionInteraction.add_member(:user_id, Shapes::ShapeRef.new(shape: UserId, location_name: "userId")) + ActionInteraction.add_member(:session_id, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "sessionId")) + ActionInteraction.add_member(:timestamp, Shapes::ShapeRef.new(shape: Date, required: true, location_name: "timestamp")) + ActionInteraction.add_member(:event_type, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "eventType")) + ActionInteraction.add_member(:event_id, Shapes::ShapeRef.new(shape: StringType, location_name: "eventId")) + ActionInteraction.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: RecommendationId, location_name: "recommendationId")) + ActionInteraction.add_member(:impression, Shapes::ShapeRef.new(shape: ActionImpression, location_name: "impression")) + ActionInteraction.add_member(:properties, Shapes::ShapeRef.new(shape: ActionInteractionProperties, location_name: "properties", metadata: {"jsonvalue"=>true})) + ActionInteraction.struct_class = Types::ActionInteraction + + ActionInteractionsList.member = Shapes::ShapeRef.new(shape: ActionInteraction) + + ActionList.member = Shapes::ShapeRef.new(shape: Action) + Event.add_member(:event_id, Shapes::ShapeRef.new(shape: StringType, location_name: "eventId")) Event.add_member(:event_type, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "eventType")) Event.add_member(:event_value, Shapes::ShapeRef.new(shape: FloatType, location_name: "eventValue")) @@ -67,6 +98,14 @@ module ClientApi MetricAttribution.add_member(:event_attribution_source, Shapes::ShapeRef.new(shape: EventAttributionSource, required: true, location_name: "eventAttributionSource")) MetricAttribution.struct_class = Types::MetricAttribution + PutActionInteractionsRequest.add_member(:tracking_id, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "trackingId")) + PutActionInteractionsRequest.add_member(:action_interactions, Shapes::ShapeRef.new(shape: ActionInteractionsList, required: true, location_name: "actionInteractions")) + PutActionInteractionsRequest.struct_class = Types::PutActionInteractionsRequest + + PutActionsRequest.add_member(:dataset_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "datasetArn")) + PutActionsRequest.add_member(:actions, Shapes::ShapeRef.new(shape: ActionList, required: true, location_name: "actions")) + PutActionsRequest.struct_class = Types::PutActionsRequest + PutEventsRequest.add_member(:tracking_id, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "trackingId")) PutEventsRequest.add_member(:user_id, Shapes::ShapeRef.new(shape: UserId, location_name: "userId")) PutEventsRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: StringType, required: true, location_name: "sessionId")) @@ -111,6 +150,28 @@ module ClientApi "uid" => "personalize-events-2018-03-22", } + api.add_operation(:put_action_interactions, Seahorse::Model::Operation.new.tap do |o| + o.name = "PutActionInteractions" + o.http_method = "POST" + o.http_request_uri = "/action-interactions" + o.input = Shapes::ShapeRef.new(shape: PutActionInteractionsRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException) + end) + + api.add_operation(:put_actions, Seahorse::Model::Operation.new.tap do |o| + o.name = "PutActions" + o.http_method = "POST" + o.http_request_uri = "/actions" + o.input = Shapes::ShapeRef.new(shape: PutActionsRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException) + end) + api.add_operation(:put_events, Seahorse::Model::Operation.new.tap do |o| o.name = "PutEvents" o.http_method = "POST" diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoint_provider.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoint_provider.rb index ff5b5ebf3c7..73b2f018660 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoint_provider.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://personalize-events-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoints.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoints.rb index 77ca159fd42..ba490763b80 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoints.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/endpoints.rb @@ -12,6 +12,34 @@ module Aws::PersonalizeEvents # @api private module Endpoints + class PutActionInteractions + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PersonalizeEvents::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class PutActions + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PersonalizeEvents::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class PutEvents def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/plugins/endpoints.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/plugins/endpoints.rb index 371629a947c..6dc9c88797f 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/plugins/endpoints.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/plugins/endpoints.rb @@ -56,6 +56,10 @@ def apply_endpoint_headers(context, headers) def parameters_for_operation(context) case context.operation_name + when :put_action_interactions + Aws::PersonalizeEvents::Endpoints::PutActionInteractions.build(context) + when :put_actions + Aws::PersonalizeEvents::Endpoints::PutActions.build(context) when :put_events Aws::PersonalizeEvents::Endpoints::PutEvents.build(context) when :put_items diff --git a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/types.rb b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/types.rb index ab44464eef7..f9ba133f619 100644 --- a/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/types.rb +++ b/gems/aws-sdk-personalizeevents/lib/aws-sdk-personalizeevents/types.rb @@ -10,31 +10,166 @@ module Aws::PersonalizeEvents module Types - # Represents user interaction event information sent using the + # Represents action metadata added to an Action dataset using the + # `PutActions` API. For more information see [Importing actions + # individually][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/importing-actions.html + # + # @!attribute [rw] action_id + # The ID associated with the action. + # @return [String] + # + # @!attribute [rw] properties + # A string map of action-specific metadata. Each element in the map + # consists of a key-value pair. For example, `\{"value": "100"\}`. + # + # The keys use camel case names that match the fields in the schema + # for the Actions dataset. In the previous example, the `value` + # matches the 'VALUE' field defined in the Actions schema. For + # categorical string data, to include multiple categories for a single + # action, separate each category with a pipe separator (`|`). For + # example, `"Deluxe|Premium"`. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/Action AWS API Documentation + # + class Action < Struct.new( + :action_id, + :properties) + SENSITIVE = [:properties] + include Aws::Structure + end + + # Represents an action interaction event sent using the + # `PutActionInteractions` API. + # + # @!attribute [rw] action_id + # The ID of the action the user interacted with. This corresponds to + # the `ACTION_ID` field of the Action interaction schema. + # @return [String] + # + # @!attribute [rw] user_id + # The ID of the user who interacted with the action. This corresponds + # to the `USER_ID` field of the Action interaction schema. + # @return [String] + # + # @!attribute [rw] session_id + # The ID associated with the user's visit. Your application generates + # a unique `sessionId` when a user first visits your website or uses + # your application. + # @return [String] + # + # @!attribute [rw] timestamp + # The timestamp for when the action interaction event occurred. + # Timestamps must be in Unix epoch time format, in seconds. + # @return [Time] + # + # @!attribute [rw] event_type + # The type of action interaction event. You can specify `Viewed`, + # `Taken`, and `Not Taken` event types. For more information about + # action interaction event type data, see [Event type data][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/action-interaction-event-type-data.html + # @return [String] + # + # @!attribute [rw] event_id + # An ID associated with the event. If an event ID is not provided, + # Amazon Personalize generates a unique ID for the event. An event ID + # is not used as an input to the model. Amazon Personalize uses the + # event ID to distinguish unique events. Any subsequent events after + # the first with the same event ID are not used in model training. + # @return [String] + # + # @!attribute [rw] recommendation_id + # The ID of the list of recommendations that contains the action the + # user interacted with. + # @return [String] + # + # @!attribute [rw] impression + # A list of action IDs that represents the sequence of actions you + # have shown the user. For example, `["actionId1", "actionId2", + # "actionId3"]`. Amazon Personalize doesn't use impressions data from + # action interaction events. Instead, record multiple events for each + # action and use the `Viewed` event type. + # @return [Array] + # + # @!attribute [rw] properties + # A string map of event-specific data that you might choose to record. + # For example, if a user takes an action, other than the action ID, + # you might also send the number of actions taken by the user. + # + # Each item in the map consists of a key-value pair. For example, + # + # `\{"numberOfActions": "12"\}` + # + # The keys use camel case names that match the fields in the Action + # interactions schema. In the above example, the `numberOfActions` + # would match the 'NUMBER\_OF\_ACTIONS' field defined in the Action + # interactions schema. + # + # The following can't be included as a keyword for properties (case + # insensitive). + # + # * userId + # + # * sessionId + # + # * eventType + # + # * timestamp + # + # * recommendationId + # + # * impression + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/ActionInteraction AWS API Documentation + # + class ActionInteraction < Struct.new( + :action_id, + :user_id, + :session_id, + :timestamp, + :event_type, + :event_id, + :recommendation_id, + :impression, + :properties) + SENSITIVE = [:action_id, :user_id, :properties] + include Aws::Structure + end + + # Represents item interaction event information sent using the # `PutEvents` API. # # @!attribute [rw] event_id # An ID associated with the event. If an event ID is not provided, # Amazon Personalize generates a unique ID for the event. An event ID # is not used as an input to the model. Amazon Personalize uses the - # event ID to distinquish unique events. Any subsequent events after + # event ID to distinguish unique events. Any subsequent events after # the first with the same event ID are not used in model training. # @return [String] # # @!attribute [rw] event_type # The type of event, such as click or download. This property - # corresponds to the `EVENT_TYPE` field of your Interactions schema - # and depends on the types of events you are tracking. + # corresponds to the `EVENT_TYPE` field of your Item interactions + # dataset's schema and depends on the types of events you are + # tracking. # @return [String] # # @!attribute [rw] event_value # The event value that corresponds to the `EVENT_VALUE` field of the - # Interactions schema. + # Item interactions schema. # @return [Float] # # @!attribute [rw] item_id - # The item ID key that corresponds to the `ITEM_ID` field of the - # Interactions schema. + # The item ID key that corresponds to the `ITEM_ID` field of the Item + # interactions dataset's schema. # @return [String] # # @!attribute [rw] properties @@ -47,10 +182,25 @@ module Types # # `\{"numberOfRatings": "12"\}` # - # The keys use camel case names that match the fields in the - # Interactions schema. In the above example, the `numberOfRatings` - # would match the 'NUMBER\_OF\_RATINGS' field defined in the - # Interactions schema. + # The keys use camel case names that match the fields in the Item + # interactions dataset's schema. In the above example, the + # `numberOfRatings` would match the 'NUMBER\_OF\_RATINGS' field + # defined in the Item interactions dataset's schema. + # + # The following can't be included as a keyword for properties (case + # insensitive). + # + # * userId + # + # * sessionId + # + # * eventType + # + # * timestamp + # + # * recommendationId + # + # * impression # @return [String] # # @!attribute [rw] sent_at @@ -127,8 +277,8 @@ class InvalidInputException < Struct.new( end # Represents item metadata added to an Items dataset using the - # `PutItems` API. For more information see [Importing Items - # Incrementally][1]. + # `PutItems` API. For more information see [Importing items + # individually][1]. # # # @@ -180,6 +330,48 @@ class MetricAttribution < Struct.new( include Aws::Structure end + # @!attribute [rw] tracking_id + # The ID of your action interaction event tracker. When you create an + # Action interactions dataset, Amazon Personalize creates an action + # interaction event tracker for you. For more information, see [Action + # interaction event tracker ID][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/action-interaction-tracker-id.html + # @return [String] + # + # @!attribute [rw] action_interactions + # A list of action interaction events from the session. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/PutActionInteractionsRequest AWS API Documentation + # + class PutActionInteractionsRequest < Struct.new( + :tracking_id, + :action_interactions) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] dataset_arn + # The Amazon Resource Name (ARN) of the Actions dataset you are adding + # the action or actions to. + # @return [String] + # + # @!attribute [rw] actions + # A list of action data. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-events-2018-03-22/PutActionsRequest AWS API Documentation + # + class PutActionsRequest < Struct.new( + :dataset_arn, + :actions) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] tracking_id # The tracking ID for the event. The ID is generated by a call to the # [CreateEventTracker][1] API. @@ -198,11 +390,11 @@ class MetricAttribution < Struct.new( # generates the sessionId when a user first visits your website or # uses your application. Amazon Personalize uses the sessionId to # associate events with the user before they log in. For more - # information, see [Recording Events][1]. + # information, see [Recording item interaction events][1]. # # # - # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-events.html + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/recording-item-interaction-events.html # @return [String] # # @!attribute [rw] event_list @@ -283,7 +475,7 @@ class ResourceNotFoundException < Struct.new( end # Represents user metadata added to a Users dataset using the `PutUsers` - # API. For more information see [Importing Users Incrementally][1]. + # API. For more information see [Importing users individually][1]. # # # diff --git a/gems/aws-sdk-personalizeruntime/CHANGELOG.md b/gems/aws-sdk-personalizeruntime/CHANGELOG.md index a789325aea3..0b5c1453033 100644 --- a/gems/aws-sdk-personalizeruntime/CHANGELOG.md +++ b/gems/aws-sdk-personalizeruntime/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.44.0 (2023-11-27) +------------------ + +* Feature - Enables metadata in recommendations and next best action recommendations + 1.43.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-personalizeruntime/VERSION b/gems/aws-sdk-personalizeruntime/VERSION index b978278f05f..372cf402c73 100644 --- a/gems/aws-sdk-personalizeruntime/VERSION +++ b/gems/aws-sdk-personalizeruntime/VERSION @@ -1 +1 @@ -1.43.0 +1.44.0 diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime.rb index bdd21a951e3..2d9727d3032 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime.rb @@ -32,7 +32,7 @@ # structure. # # personalize_runtime = Aws::PersonalizeRuntime::Client.new -# resp = personalize_runtime.get_personalized_ranking(params) +# resp = personalize_runtime.get_action_recommendations(params) # # See {Client} for more information. # @@ -52,6 +52,6 @@ # @!group service module Aws::PersonalizeRuntime - GEM_VERSION = '1.43.0' + GEM_VERSION = '1.44.0' end diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client.rb index ec3d1a0bf08..1f039fc5853 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client.rb @@ -388,6 +388,94 @@ def initialize(*args) # @!group API Operations + # Returns a list of recommended actions in sorted in descending order by + # prediction score. Use the `GetActionRecommendations` API if you have a + # custom campaign that deploys a solution version trained with a + # PERSONALIZED\_ACTIONS recipe. + # + # For more information about PERSONALIZED\_ACTIONS recipes, see + # [PERSONALIZED\_ACTIONS recipes][1]. For more information about getting + # action recommendations, see [Getting action recommendations][2]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/nexts-best-action-recipes.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/get-action-recommendations.html + # + # @option params [String] :campaign_arn + # The Amazon Resource Name (ARN) of the campaign to use for getting + # action recommendations. This campaign must deploy a solution version + # trained with a PERSONALIZED\_ACTIONS recipe. + # + # @option params [String] :user_id + # The user ID of the user to provide action recommendations for. + # + # @option params [Integer] :num_results + # The number of results to return. The default is 5. The maximum is 100. + # + # @option params [String] :filter_arn + # The ARN of the filter to apply to the returned recommendations. For + # more information, see [Filtering Recommendations][1]. + # + # When using this parameter, be sure the filter resource is `ACTIVE`. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html + # + # @option params [Hash] :filter_values + # The values to use when filtering recommendations. For each placeholder + # parameter in your filter expression, provide the parameter name (in + # matching case) as a key and the filter value(s) as the corresponding + # value. Separate multiple values for one parameter with a comma. + # + # For filter expressions that use an `INCLUDE` element to include + # actions, you must provide values for all parameters that are defined + # in the expression. For filters with expressions that use an `EXCLUDE` + # element to exclude actions, you can omit the `filter-values`. In this + # case, Amazon Personalize doesn't use that portion of the expression + # to filter recommendations. + # + # For more information, see [Filtering recommendations and user + # segments][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html + # + # @return [Types::GetActionRecommendationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetActionRecommendationsResponse#action_list #action_list} => Array<Types::PredictedAction> + # * {Types::GetActionRecommendationsResponse#recommendation_id #recommendation_id} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_action_recommendations({ + # campaign_arn: "Arn", + # user_id: "UserID", + # num_results: 1, + # filter_arn: "Arn", + # filter_values: { + # "FilterAttributeName" => "FilterAttributeValue", + # }, + # }) + # + # @example Response structure + # + # resp.action_list #=> Array + # resp.action_list[0].action_id #=> String + # resp.action_list[0].score #=> Float + # resp.recommendation_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetActionRecommendations AWS API Documentation + # + # @overload get_action_recommendations(params = {}) + # @param [Hash] params ({}) + def get_action_recommendations(params = {}, options = {}) + req = build_request(:get_action_recommendations, params) + req.send_request(options) + end + # Re-ranks a list of recommended items for the given user. The first # item in the list is deemed the most likely item to be of interest to # the user. @@ -404,7 +492,8 @@ def initialize(*args) # @option params [required, Array] :input_list # A list of items (by `itemId`) to rank. If an item was not included in # the training dataset, the item is appended to the end of the reranked - # list. The maximum is 500. + # list. If you are including metadata in recommendations, the maximum is + # 50. Otherwise, the maximum is 500. # # @option params [required, String] :user_id # The user for which you want the campaign to provide a personalized @@ -444,6 +533,20 @@ def initialize(*args) # # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html # + # @option params [Hash] :metadata_columns + # If you enabled metadata in recommendations when you created or updated + # the campaign, specify metadata columns from your Items dataset to + # include in the personalized ranking. The map key is `ITEMS` and the + # value is a list of column names from your Items dataset. The maximum + # number of columns you can provide is 10. + # + # For information about enabling metadata for a campaign, see [Enabling + # metadata in recommendations for a campaign][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/create-campaign-return-metadata.html + # # @return [Types::GetPersonalizedRankingResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::GetPersonalizedRankingResponse#personalized_ranking #personalized_ranking} => Array<Types::PredictedItem> @@ -462,6 +565,9 @@ def initialize(*args) # filter_values: { # "FilterAttributeName" => "FilterAttributeValue", # }, + # metadata_columns: { + # "DatasetType" => ["ColumnName"], + # }, # }) # # @example Response structure @@ -470,6 +576,8 @@ def initialize(*args) # resp.personalized_ranking[0].item_id #=> String # resp.personalized_ranking[0].score #=> Float # resp.personalized_ranking[0].promotion_name #=> String + # resp.personalized_ranking[0].metadata #=> Hash + # resp.personalized_ranking[0].metadata["ColumnName"] #=> String # resp.recommendation_id #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetPersonalizedRanking AWS API Documentation @@ -519,8 +627,9 @@ def get_personalized_ranking(params = {}, options = {}) # Required for `USER_PERSONALIZATION` recipe type. # # @option params [Integer] :num_results - # The number of results to return. The default is 25. The maximum is - # 500. + # The number of results to return. The default is 25. If you are + # including metadata in recommendations, the maximum is 50. Otherwise, + # the maximum is 500. # # @option params [Hash] :context # The contextual metadata to use when getting recommendations. @@ -568,6 +677,23 @@ def get_personalized_ranking(params = {}, options = {}) # defines additional business rules that apply to a configurable subset # of recommended items. # + # @option params [Hash] :metadata_columns + # If you enabled metadata in recommendations when you created or updated + # the campaign or recommender, specify the metadata columns from your + # Items dataset to include in item recommendations. The map key is + # `ITEMS` and the value is a list of column names from your Items + # dataset. The maximum number of columns you can provide is 10. + # + # For information about enabling metadata for a campaign, see [Enabling + # metadata in recommendations for a campaign][1]. For information about + # enabling metadata for a recommender, see [Enabling metadata in + # recommendations for a recommender][2]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/create-campaign-return-metadata.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/create-recommender-return-metadata.html + # # @return [Types::GetRecommendationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::GetRecommendationsResponse#item_list #item_list} => Array<Types::PredictedItem> @@ -598,6 +724,9 @@ def get_personalized_ranking(params = {}, options = {}) # }, # }, # ], + # metadata_columns: { + # "DatasetType" => ["ColumnName"], + # }, # }) # # @example Response structure @@ -606,6 +735,8 @@ def get_personalized_ranking(params = {}, options = {}) # resp.item_list[0].item_id #=> String # resp.item_list[0].score #=> Float # resp.item_list[0].promotion_name #=> String + # resp.item_list[0].metadata #=> Hash + # resp.item_list[0].metadata["ColumnName"] #=> String # resp.recommendation_id #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetRecommendations AWS API Documentation @@ -630,7 +761,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-personalizeruntime' - context[:gem_version] = '1.43.0' + context[:gem_version] = '1.44.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client_api.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client_api.rb index 8116f1598e5..02c9f2417f4 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client_api.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/client_api.rb @@ -13,14 +13,22 @@ module ClientApi include Seahorse::Model + ActionID = Shapes::StringShape.new(name: 'ActionID') + ActionList = Shapes::ListShape.new(name: 'ActionList') Arn = Shapes::StringShape.new(name: 'Arn') AttributeName = Shapes::StringShape.new(name: 'AttributeName') AttributeValue = Shapes::StringShape.new(name: 'AttributeValue') + ColumnName = Shapes::StringShape.new(name: 'ColumnName') + ColumnNamesList = Shapes::ListShape.new(name: 'ColumnNamesList') + ColumnValue = Shapes::StringShape.new(name: 'ColumnValue') Context = Shapes::MapShape.new(name: 'Context') + DatasetType = Shapes::StringShape.new(name: 'DatasetType') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') FilterAttributeName = Shapes::StringShape.new(name: 'FilterAttributeName') FilterAttributeValue = Shapes::StringShape.new(name: 'FilterAttributeValue') FilterValues = Shapes::MapShape.new(name: 'FilterValues') + GetActionRecommendationsRequest = Shapes::StructureShape.new(name: 'GetActionRecommendationsRequest') + GetActionRecommendationsResponse = Shapes::StructureShape.new(name: 'GetActionRecommendationsResponse') GetPersonalizedRankingRequest = Shapes::StructureShape.new(name: 'GetPersonalizedRankingRequest') GetPersonalizedRankingResponse = Shapes::StructureShape.new(name: 'GetPersonalizedRankingResponse') GetRecommendationsRequest = Shapes::StructureShape.new(name: 'GetRecommendationsRequest') @@ -29,9 +37,12 @@ module ClientApi InvalidInputException = Shapes::StructureShape.new(name: 'InvalidInputException') ItemID = Shapes::StringShape.new(name: 'ItemID') ItemList = Shapes::ListShape.new(name: 'ItemList') + Metadata = Shapes::MapShape.new(name: 'Metadata') + MetadataColumns = Shapes::MapShape.new(name: 'MetadataColumns') Name = Shapes::StringShape.new(name: 'Name') NumResults = Shapes::IntegerShape.new(name: 'NumResults') PercentPromotedItems = Shapes::IntegerShape.new(name: 'PercentPromotedItems') + PredictedAction = Shapes::StructureShape.new(name: 'PredictedAction') PredictedItem = Shapes::StructureShape.new(name: 'PredictedItem') Promotion = Shapes::StructureShape.new(name: 'Promotion') PromotionList = Shapes::ListShape.new(name: 'PromotionList') @@ -40,18 +51,34 @@ module ClientApi Score = Shapes::FloatShape.new(name: 'Score') UserID = Shapes::StringShape.new(name: 'UserID') + ActionList.member = Shapes::ShapeRef.new(shape: PredictedAction) + + ColumnNamesList.member = Shapes::ShapeRef.new(shape: ColumnName) + Context.key = Shapes::ShapeRef.new(shape: AttributeName) Context.value = Shapes::ShapeRef.new(shape: AttributeValue) FilterValues.key = Shapes::ShapeRef.new(shape: FilterAttributeName) FilterValues.value = Shapes::ShapeRef.new(shape: FilterAttributeValue) + GetActionRecommendationsRequest.add_member(:campaign_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "campaignArn")) + GetActionRecommendationsRequest.add_member(:user_id, Shapes::ShapeRef.new(shape: UserID, location_name: "userId")) + GetActionRecommendationsRequest.add_member(:num_results, Shapes::ShapeRef.new(shape: NumResults, location_name: "numResults")) + GetActionRecommendationsRequest.add_member(:filter_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "filterArn")) + GetActionRecommendationsRequest.add_member(:filter_values, Shapes::ShapeRef.new(shape: FilterValues, location_name: "filterValues")) + GetActionRecommendationsRequest.struct_class = Types::GetActionRecommendationsRequest + + GetActionRecommendationsResponse.add_member(:action_list, Shapes::ShapeRef.new(shape: ActionList, location_name: "actionList")) + GetActionRecommendationsResponse.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: RecommendationID, location_name: "recommendationId")) + GetActionRecommendationsResponse.struct_class = Types::GetActionRecommendationsResponse + GetPersonalizedRankingRequest.add_member(:campaign_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "campaignArn")) GetPersonalizedRankingRequest.add_member(:input_list, Shapes::ShapeRef.new(shape: InputList, required: true, location_name: "inputList")) GetPersonalizedRankingRequest.add_member(:user_id, Shapes::ShapeRef.new(shape: UserID, required: true, location_name: "userId")) GetPersonalizedRankingRequest.add_member(:context, Shapes::ShapeRef.new(shape: Context, location_name: "context")) GetPersonalizedRankingRequest.add_member(:filter_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "filterArn")) GetPersonalizedRankingRequest.add_member(:filter_values, Shapes::ShapeRef.new(shape: FilterValues, location_name: "filterValues")) + GetPersonalizedRankingRequest.add_member(:metadata_columns, Shapes::ShapeRef.new(shape: MetadataColumns, location_name: "metadataColumns")) GetPersonalizedRankingRequest.struct_class = Types::GetPersonalizedRankingRequest GetPersonalizedRankingResponse.add_member(:personalized_ranking, Shapes::ShapeRef.new(shape: ItemList, location_name: "personalizedRanking")) @@ -67,6 +94,7 @@ module ClientApi GetRecommendationsRequest.add_member(:filter_values, Shapes::ShapeRef.new(shape: FilterValues, location_name: "filterValues")) GetRecommendationsRequest.add_member(:recommender_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "recommenderArn")) GetRecommendationsRequest.add_member(:promotions, Shapes::ShapeRef.new(shape: PromotionList, location_name: "promotions")) + GetRecommendationsRequest.add_member(:metadata_columns, Shapes::ShapeRef.new(shape: MetadataColumns, location_name: "metadataColumns")) GetRecommendationsRequest.struct_class = Types::GetRecommendationsRequest GetRecommendationsResponse.add_member(:item_list, Shapes::ShapeRef.new(shape: ItemList, location_name: "itemList")) @@ -80,9 +108,20 @@ module ClientApi ItemList.member = Shapes::ShapeRef.new(shape: PredictedItem) + Metadata.key = Shapes::ShapeRef.new(shape: ColumnName) + Metadata.value = Shapes::ShapeRef.new(shape: ColumnValue) + + MetadataColumns.key = Shapes::ShapeRef.new(shape: DatasetType) + MetadataColumns.value = Shapes::ShapeRef.new(shape: ColumnNamesList) + + PredictedAction.add_member(:action_id, Shapes::ShapeRef.new(shape: ActionID, location_name: "actionId")) + PredictedAction.add_member(:score, Shapes::ShapeRef.new(shape: Score, location_name: "score")) + PredictedAction.struct_class = Types::PredictedAction + PredictedItem.add_member(:item_id, Shapes::ShapeRef.new(shape: ItemID, location_name: "itemId")) PredictedItem.add_member(:score, Shapes::ShapeRef.new(shape: Score, location_name: "score")) PredictedItem.add_member(:promotion_name, Shapes::ShapeRef.new(shape: Name, location_name: "promotionName")) + PredictedItem.add_member(:metadata, Shapes::ShapeRef.new(shape: Metadata, location_name: "metadata")) PredictedItem.struct_class = Types::PredictedItem Promotion.add_member(:name, Shapes::ShapeRef.new(shape: Name, location_name: "name")) @@ -114,6 +153,16 @@ module ClientApi "uid" => "personalize-runtime-2018-05-22", } + api.add_operation(:get_action_recommendations, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetActionRecommendations" + o.http_method = "POST" + o.http_request_uri = "/action-recommendations" + o.input = Shapes::ShapeRef.new(shape: GetActionRecommendationsRequest) + o.output = Shapes::ShapeRef.new(shape: GetActionRecommendationsResponse) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:get_personalized_ranking, Seahorse::Model::Operation.new.tap do |o| o.name = "GetPersonalizedRanking" o.http_method = "POST" diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoint_provider.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoint_provider.rb index 445718c9409..d03b831512c 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoint_provider.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://personalize-runtime-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoints.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoints.rb index aafd4e0347b..8289c4cae85 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoints.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/endpoints.rb @@ -12,6 +12,20 @@ module Aws::PersonalizeRuntime # @api private module Endpoints + class GetActionRecommendations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PersonalizeRuntime::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class GetPersonalizedRanking def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/plugins/endpoints.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/plugins/endpoints.rb index 71f06695f71..6499a2349ad 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/plugins/endpoints.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/plugins/endpoints.rb @@ -56,6 +56,8 @@ def apply_endpoint_headers(context, headers) def parameters_for_operation(context) case context.operation_name + when :get_action_recommendations + Aws::PersonalizeRuntime::Endpoints::GetActionRecommendations.build(context) when :get_personalized_ranking Aws::PersonalizeRuntime::Endpoints::GetPersonalizedRanking.build(context) when :get_recommendations diff --git a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/types.rb b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/types.rb index f2599c0f6a9..72807b982f7 100644 --- a/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/types.rb +++ b/gems/aws-sdk-personalizeruntime/lib/aws-sdk-personalizeruntime/types.rb @@ -10,6 +10,90 @@ module Aws::PersonalizeRuntime module Types + # @!attribute [rw] campaign_arn + # The Amazon Resource Name (ARN) of the campaign to use for getting + # action recommendations. This campaign must deploy a solution version + # trained with a PERSONALIZED\_ACTIONS recipe. + # @return [String] + # + # @!attribute [rw] user_id + # The user ID of the user to provide action recommendations for. + # @return [String] + # + # @!attribute [rw] num_results + # The number of results to return. The default is 5. The maximum is + # 100. + # @return [Integer] + # + # @!attribute [rw] filter_arn + # The ARN of the filter to apply to the returned recommendations. For + # more information, see [Filtering Recommendations][1]. + # + # When using this parameter, be sure the filter resource is `ACTIVE`. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html + # @return [String] + # + # @!attribute [rw] filter_values + # The values to use when filtering recommendations. For each + # placeholder parameter in your filter expression, provide the + # parameter name (in matching case) as a key and the filter value(s) + # as the corresponding value. Separate multiple values for one + # parameter with a comma. + # + # For filter expressions that use an `INCLUDE` element to include + # actions, you must provide values for all parameters that are defined + # in the expression. For filters with expressions that use an + # `EXCLUDE` element to exclude actions, you can omit the + # `filter-values`. In this case, Amazon Personalize doesn't use that + # portion of the expression to filter recommendations. + # + # For more information, see [Filtering recommendations and user + # segments][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetActionRecommendationsRequest AWS API Documentation + # + class GetActionRecommendationsRequest < Struct.new( + :campaign_arn, + :user_id, + :num_results, + :filter_arn, + :filter_values) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] action_list + # A list of action recommendations sorted in descending order by + # prediction score. There can be a maximum of 100 actions in the list. + # For information about action scores, see [How action recommendation + # scoring works][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/how-action-recommendation-scoring-works.html + # @return [Array] + # + # @!attribute [rw] recommendation_id + # The ID of the recommendation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetActionRecommendationsResponse AWS API Documentation + # + class GetActionRecommendationsResponse < Struct.new( + :action_list, + :recommendation_id) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] campaign_arn # The Amazon Resource Name (ARN) of the campaign to use for generating # the personalized ranking. @@ -18,7 +102,8 @@ module Types # @!attribute [rw] input_list # A list of items (by `itemId`) to rank. If an item was not included # in the training dataset, the item is appended to the end of the - # reranked list. The maximum is 500. + # reranked list. If you are including metadata in recommendations, the + # maximum is 50. Otherwise, the maximum is 500. # @return [Array] # # @!attribute [rw] user_id @@ -64,6 +149,21 @@ module Types # [1]: https://docs.aws.amazon.com/personalize/latest/dg/filter.html # @return [Hash] # + # @!attribute [rw] metadata_columns + # If you enabled metadata in recommendations when you created or + # updated the campaign, specify metadata columns from your Items + # dataset to include in the personalized ranking. The map key is + # `ITEMS` and the value is a list of column names from your Items + # dataset. The maximum number of columns you can provide is 10. + # + # For information about enabling metadata for a campaign, see + # [Enabling metadata in recommendations for a campaign][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/create-campaign-return-metadata.html + # @return [Hash>] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetPersonalizedRankingRequest AWS API Documentation # class GetPersonalizedRankingRequest < Struct.new( @@ -72,7 +172,8 @@ class GetPersonalizedRankingRequest < Struct.new( :user_id, :context, :filter_arn, - :filter_values) + :filter_values, + :metadata_columns) SENSITIVE = [] include Aws::Structure end @@ -113,8 +214,9 @@ class GetPersonalizedRankingResponse < Struct.new( # @return [String] # # @!attribute [rw] num_results - # The number of results to return. The default is 25. The maximum is - # 500. + # The number of results to return. The default is 25. If you are + # including metadata in recommendations, the maximum is 50. Otherwise, + # the maximum is 500. # @return [Integer] # # @!attribute [rw] context @@ -169,6 +271,24 @@ class GetPersonalizedRankingResponse < Struct.new( # subset of recommended items. # @return [Array] # + # @!attribute [rw] metadata_columns + # If you enabled metadata in recommendations when you created or + # updated the campaign or recommender, specify the metadata columns + # from your Items dataset to include in item recommendations. The map + # key is `ITEMS` and the value is a list of column names from your + # Items dataset. The maximum number of columns you can provide is 10. + # + # For information about enabling metadata for a campaign, see + # [Enabling metadata in recommendations for a campaign][1]. For + # information about enabling metadata for a recommender, see [Enabling + # metadata in recommendations for a recommender][2]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/create-campaign-return-metadata.html + # [2]: https://docs.aws.amazon.com/personalize/latest/dg/create-recommender-return-metadata.html + # @return [Hash>] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/GetRecommendationsRequest AWS API Documentation # class GetRecommendationsRequest < Struct.new( @@ -180,7 +300,8 @@ class GetRecommendationsRequest < Struct.new( :filter_arn, :filter_values, :recommender_arn, - :promotions) + :promotions, + :metadata_columns) SENSITIVE = [] include Aws::Structure end @@ -216,6 +337,32 @@ class InvalidInputException < Struct.new( include Aws::Structure end + # An object that identifies an action. + # + # The API returns a list of `PredictedAction`s. + # + # @!attribute [rw] action_id + # The ID of the recommended action. + # @return [String] + # + # @!attribute [rw] score + # The score of the recommended action. For information about action + # scores, see [How action recommendation scoring works][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/personalize/latest/dg/how-action-recommendation-scoring-works.html + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/PredictedAction AWS API Documentation + # + class PredictedAction < Struct.new( + :action_id, + :score) + SENSITIVE = [] + include Aws::Structure + end + # An object that identifies an item. # # The and APIs return a list of `PredictedItem`s. @@ -234,12 +381,17 @@ class InvalidInputException < Struct.new( # The name of the promotion that included the predicted item. # @return [String] # + # @!attribute [rw] metadata + # Metadata about the item from your Items dataset. + # @return [Hash] + # # @see http://docs.aws.amazon.com/goto/WebAPI/personalize-runtime-2018-05-22/PredictedItem AWS API Documentation # class PredictedItem < Struct.new( :item_id, :score, - :promotion_name) + :promotion_name, + :metadata) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-prometheusservice/CHANGELOG.md b/gems/aws-sdk-prometheusservice/CHANGELOG.md index c0cf28d6e9b..8f35cf27a89 100644 --- a/gems/aws-sdk-prometheusservice/CHANGELOG.md +++ b/gems/aws-sdk-prometheusservice/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.26.0 (2023-11-27) +------------------ + +* Feature - This release adds support for the Amazon Managed Service for Prometheus collector, a fully managed, agentless Prometheus metrics scraping capability. + 1.25.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-prometheusservice/VERSION b/gems/aws-sdk-prometheusservice/VERSION index ad2191947f7..5ff8c4f5d2a 100644 --- a/gems/aws-sdk-prometheusservice/VERSION +++ b/gems/aws-sdk-prometheusservice/VERSION @@ -1 +1 @@ -1.25.0 +1.26.0 diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice.rb index 9f74c8d54f9..3f3bb0f4b6d 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice.rb @@ -53,6 +53,6 @@ # @!group service module Aws::PrometheusService - GEM_VERSION = '1.25.0' + GEM_VERSION = '1.26.0' end diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client.rb index 13a6e6ec99f..c2d21461d01 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client.rb @@ -530,6 +530,81 @@ def create_rule_groups_namespace(params = {}, options = {}) req.send_request(options) end + # Create a scraper. + # + # @option params [String] :alias + # An optional user-assigned alias for this scraper. This alias is for + # user reference and does not need to be unique. + # + # @option params [required, Types::ScrapeConfiguration] :scrape_configuration + # The configuration used to create the scraper. + # + # @option params [required, Types::Source] :source + # The source that the scraper will be discovering and collecting metrics + # from. + # + # @option params [required, Types::Destination] :destination + # The destination that the scraper will be producing metrics to. + # + # @option params [String] :client_token + # Optional, unique, case-sensitive, user-provided identifier to ensure + # the idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @option params [Hash] :tags + # Optional, user-provided tags for this scraper. + # + # @return [Types::CreateScraperResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateScraperResponse#scraper_id #scraper_id} => String + # * {Types::CreateScraperResponse#arn #arn} => String + # * {Types::CreateScraperResponse#status #status} => Types::ScraperStatus + # * {Types::CreateScraperResponse#tags #tags} => Hash<String,String> + # + # @example Request syntax with placeholder values + # + # resp = client.create_scraper({ + # alias: "ScraperAlias", + # scrape_configuration: { # required + # configuration_blob: "data", + # }, + # source: { # required + # eks_configuration: { + # cluster_arn: "ClusterArn", # required + # security_group_ids: ["SecurityGroupId"], + # subnet_ids: ["SubnetId"], # required + # }, + # }, + # destination: { # required + # amp_configuration: { + # workspace_arn: "WorkspaceArn", # required + # }, + # }, + # client_token: "IdempotencyToken", + # tags: { + # "TagKey" => "TagValue", + # }, + # }) + # + # @example Response structure + # + # resp.scraper_id #=> String + # resp.arn #=> String + # resp.status.status_code #=> String, one of "CREATING", "ACTIVE", "DELETING", "CREATION_FAILED", "DELETION_FAILED" + # resp.tags #=> Hash + # resp.tags["TagKey"] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/CreateScraper AWS API Documentation + # + # @overload create_scraper(params = {}) + # @param [Hash] params ({}) + def create_scraper(params = {}, options = {}) + req = build_request(:create_scraper, params) + req.send_request(options) + end + # Creates a new AMP workspace. # # @option params [String] :alias @@ -675,6 +750,44 @@ def delete_rule_groups_namespace(params = {}, options = {}) req.send_request(options) end + # Deletes a scraper. + # + # @option params [required, String] :scraper_id + # The ID of the scraper to delete. + # + # @option params [String] :client_token + # Optional, unique, case-sensitive, user-provided identifier to ensure + # the idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # @return [Types::DeleteScraperResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DeleteScraperResponse#scraper_id #scraper_id} => String + # * {Types::DeleteScraperResponse#status #status} => Types::ScraperStatus + # + # @example Request syntax with placeholder values + # + # resp = client.delete_scraper({ + # scraper_id: "ScraperId", # required + # client_token: "IdempotencyToken", + # }) + # + # @example Response structure + # + # resp.scraper_id #=> String + # resp.status.status_code #=> String, one of "CREATING", "ACTIVE", "DELETING", "CREATION_FAILED", "DELETION_FAILED" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DeleteScraper AWS API Documentation + # + # @overload delete_scraper(params = {}) + # @param [Hash] params ({}) + def delete_scraper(params = {}, options = {}) + req = build_request(:delete_scraper, params) + req.send_request(options) + end + # Deletes an AMP workspace. # # @option params [required, String] :workspace_id @@ -810,6 +923,56 @@ def describe_rule_groups_namespace(params = {}, options = {}) req.send_request(options) end + # Describe an existing scraper. + # + # @option params [required, String] :scraper_id + # The IDs of the scraper to describe. + # + # @return [Types::DescribeScraperResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeScraperResponse#scraper #scraper} => Types::ScraperDescription + # + # @example Request syntax with placeholder values + # + # resp = client.describe_scraper({ + # scraper_id: "ScraperId", # required + # }) + # + # @example Response structure + # + # resp.scraper.alias #=> String + # resp.scraper.scraper_id #=> String + # resp.scraper.arn #=> String + # resp.scraper.role_arn #=> String + # resp.scraper.status.status_code #=> String, one of "CREATING", "ACTIVE", "DELETING", "CREATION_FAILED", "DELETION_FAILED" + # resp.scraper.created_at #=> Time + # resp.scraper.last_modified_at #=> Time + # resp.scraper.tags #=> Hash + # resp.scraper.tags["TagKey"] #=> String + # resp.scraper.status_reason #=> String + # resp.scraper.scrape_configuration.configuration_blob #=> String + # resp.scraper.source.eks_configuration.cluster_arn #=> String + # resp.scraper.source.eks_configuration.security_group_ids #=> Array + # resp.scraper.source.eks_configuration.security_group_ids[0] #=> String + # resp.scraper.source.eks_configuration.subnet_ids #=> Array + # resp.scraper.source.eks_configuration.subnet_ids[0] #=> String + # resp.scraper.destination.amp_configuration.workspace_arn #=> String + # + # + # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage): + # + # * scraper_active + # * scraper_deleted + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DescribeScraper AWS API Documentation + # + # @overload describe_scraper(params = {}) + # @param [Hash] params ({}) + def describe_scraper(params = {}, options = {}) + req = build_request(:describe_scraper, params) + req.send_request(options) + end + # Describes an existing AMP workspace. # # @option params [required, String] :workspace_id @@ -851,6 +1014,25 @@ def describe_workspace(params = {}, options = {}) req.send_request(options) end + # Gets a default configuration. + # + # @return [Types::GetDefaultScraperConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetDefaultScraperConfigurationResponse#configuration #configuration} => String + # + # @example Response structure + # + # resp.configuration #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/GetDefaultScraperConfiguration AWS API Documentation + # + # @overload get_default_scraper_configuration(params = {}) + # @param [Hash] params ({}) + def get_default_scraper_configuration(params = {}, options = {}) + req = build_request(:get_default_scraper_configuration, params) + req.send_request(options) + end + # Lists rule groups namespaces. # # @option params [required, String] :workspace_id @@ -906,6 +1088,68 @@ def list_rule_groups_namespaces(params = {}, options = {}) req.send_request(options) end + # Lists all scrapers in a customer account, including scrapers being + # created or deleted. You may provide filters to return a more specific + # list of results. + # + # @option params [Hash] :filters + # A list of scraper filters. + # + # @option params [String] :next_token + # Pagination token to request the next page in a paginated list. This + # token is obtained from the output of the previous ListScrapers + # request. + # + # @option params [Integer] :max_results + # Maximum results to return in response (default=100, maximum=1000). + # + # @return [Types::ListScrapersResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListScrapersResponse#scrapers #scrapers} => Array<Types::ScraperSummary> + # * {Types::ListScrapersResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_scrapers({ + # filters: { + # "FilterKey" => ["FilterValue"], + # }, + # next_token: "PaginationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.scrapers #=> Array + # resp.scrapers[0].alias #=> String + # resp.scrapers[0].scraper_id #=> String + # resp.scrapers[0].arn #=> String + # resp.scrapers[0].role_arn #=> String + # resp.scrapers[0].status.status_code #=> String, one of "CREATING", "ACTIVE", "DELETING", "CREATION_FAILED", "DELETION_FAILED" + # resp.scrapers[0].created_at #=> Time + # resp.scrapers[0].last_modified_at #=> Time + # resp.scrapers[0].tags #=> Hash + # resp.scrapers[0].tags["TagKey"] #=> String + # resp.scrapers[0].status_reason #=> String + # resp.scrapers[0].source.eks_configuration.cluster_arn #=> String + # resp.scrapers[0].source.eks_configuration.security_group_ids #=> Array + # resp.scrapers[0].source.eks_configuration.security_group_ids[0] #=> String + # resp.scrapers[0].source.eks_configuration.subnet_ids #=> Array + # resp.scrapers[0].source.eks_configuration.subnet_ids[0] #=> String + # resp.scrapers[0].destination.amp_configuration.workspace_arn #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ListScrapers AWS API Documentation + # + # @overload list_scrapers(params = {}) + # @param [Hash] params ({}) + def list_scrapers(params = {}, options = {}) + req = build_request(:list_scrapers, params) + req.send_request(options) + end + # Lists the tags you have assigned to the resource. # # @option params [required, String] :resource_arn @@ -1223,7 +1467,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-prometheusservice' - context[:gem_version] = '1.25.0' + context[:gem_version] = '1.26.0' Seahorse::Client::Request.new(handlers, context) end @@ -1291,6 +1535,8 @@ def build_request(operation_name, params = {}) # # | waiter_name | params | :delay | :max_attempts | # | ----------------- | --------------------------- | -------- | ------------- | + # | scraper_active | {Client#describe_scraper} | 2 | 60 | + # | scraper_deleted | {Client#describe_scraper} | 2 | 60 | # | workspace_active | {Client#describe_workspace} | 2 | 60 | # | workspace_deleted | {Client#describe_workspace} | 2 | 60 | # @@ -1343,6 +1589,8 @@ def waiter(waiter_name, options = {}) def waiters { + scraper_active: Waiters::ScraperActive, + scraper_deleted: Waiters::ScraperDeleted, workspace_active: Waiters::WorkspaceActive, workspace_deleted: Waiters::WorkspaceDeleted } diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client_api.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client_api.rb index acb95adb0cc..89a09225ea6 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client_api.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/client_api.rb @@ -18,6 +18,9 @@ module ClientApi AlertManagerDefinitionDescription = Shapes::StructureShape.new(name: 'AlertManagerDefinitionDescription') AlertManagerDefinitionStatus = Shapes::StructureShape.new(name: 'AlertManagerDefinitionStatus') AlertManagerDefinitionStatusCode = Shapes::StringShape.new(name: 'AlertManagerDefinitionStatusCode') + AmpConfiguration = Shapes::StructureShape.new(name: 'AmpConfiguration') + Blob = Shapes::BlobShape.new(name: 'Blob') + ClusterArn = Shapes::StringShape.new(name: 'ClusterArn') ConflictException = Shapes::StructureShape.new(name: 'ConflictException') CreateAlertManagerDefinitionRequest = Shapes::StructureShape.new(name: 'CreateAlertManagerDefinitionRequest') CreateAlertManagerDefinitionResponse = Shapes::StructureShape.new(name: 'CreateAlertManagerDefinitionResponse') @@ -25,11 +28,15 @@ module ClientApi CreateLoggingConfigurationResponse = Shapes::StructureShape.new(name: 'CreateLoggingConfigurationResponse') CreateRuleGroupsNamespaceRequest = Shapes::StructureShape.new(name: 'CreateRuleGroupsNamespaceRequest') CreateRuleGroupsNamespaceResponse = Shapes::StructureShape.new(name: 'CreateRuleGroupsNamespaceResponse') + CreateScraperRequest = Shapes::StructureShape.new(name: 'CreateScraperRequest') + CreateScraperResponse = Shapes::StructureShape.new(name: 'CreateScraperResponse') CreateWorkspaceRequest = Shapes::StructureShape.new(name: 'CreateWorkspaceRequest') CreateWorkspaceResponse = Shapes::StructureShape.new(name: 'CreateWorkspaceResponse') DeleteAlertManagerDefinitionRequest = Shapes::StructureShape.new(name: 'DeleteAlertManagerDefinitionRequest') DeleteLoggingConfigurationRequest = Shapes::StructureShape.new(name: 'DeleteLoggingConfigurationRequest') DeleteRuleGroupsNamespaceRequest = Shapes::StructureShape.new(name: 'DeleteRuleGroupsNamespaceRequest') + DeleteScraperRequest = Shapes::StructureShape.new(name: 'DeleteScraperRequest') + DeleteScraperResponse = Shapes::StructureShape.new(name: 'DeleteScraperResponse') DeleteWorkspaceRequest = Shapes::StructureShape.new(name: 'DeleteWorkspaceRequest') DescribeAlertManagerDefinitionRequest = Shapes::StructureShape.new(name: 'DescribeAlertManagerDefinitionRequest') DescribeAlertManagerDefinitionResponse = Shapes::StructureShape.new(name: 'DescribeAlertManagerDefinitionResponse') @@ -37,14 +44,27 @@ module ClientApi DescribeLoggingConfigurationResponse = Shapes::StructureShape.new(name: 'DescribeLoggingConfigurationResponse') DescribeRuleGroupsNamespaceRequest = Shapes::StructureShape.new(name: 'DescribeRuleGroupsNamespaceRequest') DescribeRuleGroupsNamespaceResponse = Shapes::StructureShape.new(name: 'DescribeRuleGroupsNamespaceResponse') + DescribeScraperRequest = Shapes::StructureShape.new(name: 'DescribeScraperRequest') + DescribeScraperResponse = Shapes::StructureShape.new(name: 'DescribeScraperResponse') DescribeWorkspaceRequest = Shapes::StructureShape.new(name: 'DescribeWorkspaceRequest') DescribeWorkspaceResponse = Shapes::StructureShape.new(name: 'DescribeWorkspaceResponse') + Destination = Shapes::UnionShape.new(name: 'Destination') + EksConfiguration = Shapes::StructureShape.new(name: 'EksConfiguration') + FilterKey = Shapes::StringShape.new(name: 'FilterKey') + FilterValue = Shapes::StringShape.new(name: 'FilterValue') + FilterValues = Shapes::ListShape.new(name: 'FilterValues') + GetDefaultScraperConfigurationRequest = Shapes::StructureShape.new(name: 'GetDefaultScraperConfigurationRequest') + GetDefaultScraperConfigurationResponse = Shapes::StructureShape.new(name: 'GetDefaultScraperConfigurationResponse') + IamRoleArn = Shapes::StringShape.new(name: 'IamRoleArn') IdempotencyToken = Shapes::StringShape.new(name: 'IdempotencyToken') Integer = Shapes::IntegerShape.new(name: 'Integer') InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') ListRuleGroupsNamespacesRequest = Shapes::StructureShape.new(name: 'ListRuleGroupsNamespacesRequest') ListRuleGroupsNamespacesRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListRuleGroupsNamespacesRequestMaxResultsInteger') ListRuleGroupsNamespacesResponse = Shapes::StructureShape.new(name: 'ListRuleGroupsNamespacesResponse') + ListScrapersRequest = Shapes::StructureShape.new(name: 'ListScrapersRequest') + ListScrapersRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'ListScrapersRequestMaxResultsInteger') + ListScrapersResponse = Shapes::StructureShape.new(name: 'ListScrapersResponse') ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') ListWorkspacesRequest = Shapes::StructureShape.new(name: 'ListWorkspacesRequest') @@ -68,8 +88,24 @@ module ClientApi RuleGroupsNamespaceStatusCode = Shapes::StringShape.new(name: 'RuleGroupsNamespaceStatusCode') RuleGroupsNamespaceSummary = Shapes::StructureShape.new(name: 'RuleGroupsNamespaceSummary') RuleGroupsNamespaceSummaryList = Shapes::ListShape.new(name: 'RuleGroupsNamespaceSummaryList') + ScrapeConfiguration = Shapes::UnionShape.new(name: 'ScrapeConfiguration') + ScraperAlias = Shapes::StringShape.new(name: 'ScraperAlias') + ScraperArn = Shapes::StringShape.new(name: 'ScraperArn') + ScraperDescription = Shapes::StructureShape.new(name: 'ScraperDescription') + ScraperFilters = Shapes::MapShape.new(name: 'ScraperFilters') + ScraperId = Shapes::StringShape.new(name: 'ScraperId') + ScraperStatus = Shapes::StructureShape.new(name: 'ScraperStatus') + ScraperStatusCode = Shapes::StringShape.new(name: 'ScraperStatusCode') + ScraperSummary = Shapes::StructureShape.new(name: 'ScraperSummary') + ScraperSummaryList = Shapes::ListShape.new(name: 'ScraperSummaryList') + SecurityGroupId = Shapes::StringShape.new(name: 'SecurityGroupId') + SecurityGroupIds = Shapes::ListShape.new(name: 'SecurityGroupIds') ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') + Source = Shapes::UnionShape.new(name: 'Source') + StatusReason = Shapes::StringShape.new(name: 'StatusReason') String = Shapes::StringShape.new(name: 'String') + SubnetId = Shapes::StringShape.new(name: 'SubnetId') + SubnetIds = Shapes::ListShape.new(name: 'SubnetIds') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeys = Shapes::ListShape.new(name: 'TagKeys') TagMap = Shapes::MapShape.new(name: 'TagMap') @@ -110,6 +146,9 @@ module ClientApi AlertManagerDefinitionStatus.add_member(:status_reason, Shapes::ShapeRef.new(shape: String, location_name: "statusReason")) AlertManagerDefinitionStatus.struct_class = Types::AlertManagerDefinitionStatus + AmpConfiguration.add_member(:workspace_arn, Shapes::ShapeRef.new(shape: WorkspaceArn, required: true, location_name: "workspaceArn")) + AmpConfiguration.struct_class = Types::AmpConfiguration + ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) ConflictException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) ConflictException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType")) @@ -144,6 +183,20 @@ module ClientApi CreateRuleGroupsNamespaceResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) CreateRuleGroupsNamespaceResponse.struct_class = Types::CreateRuleGroupsNamespaceResponse + CreateScraperRequest.add_member(:alias, Shapes::ShapeRef.new(shape: ScraperAlias, location_name: "alias")) + CreateScraperRequest.add_member(:scrape_configuration, Shapes::ShapeRef.new(shape: ScrapeConfiguration, required: true, location_name: "scrapeConfiguration")) + CreateScraperRequest.add_member(:source, Shapes::ShapeRef.new(shape: Source, required: true, location_name: "source")) + CreateScraperRequest.add_member(:destination, Shapes::ShapeRef.new(shape: Destination, required: true, location_name: "destination")) + CreateScraperRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + CreateScraperRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + CreateScraperRequest.struct_class = Types::CreateScraperRequest + + CreateScraperResponse.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location_name: "scraperId")) + CreateScraperResponse.add_member(:arn, Shapes::ShapeRef.new(shape: ScraperArn, required: true, location_name: "arn")) + CreateScraperResponse.add_member(:status, Shapes::ShapeRef.new(shape: ScraperStatus, required: true, location_name: "status")) + CreateScraperResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + CreateScraperResponse.struct_class = Types::CreateScraperResponse + CreateWorkspaceRequest.add_member(:alias, Shapes::ShapeRef.new(shape: WorkspaceAlias, location_name: "alias")) CreateWorkspaceRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true})) CreateWorkspaceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) @@ -168,6 +221,14 @@ module ClientApi DeleteRuleGroupsNamespaceRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true})) DeleteRuleGroupsNamespaceRequest.struct_class = Types::DeleteRuleGroupsNamespaceRequest + DeleteScraperRequest.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location: "uri", location_name: "scraperId")) + DeleteScraperRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + DeleteScraperRequest.struct_class = Types::DeleteScraperRequest + + DeleteScraperResponse.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location_name: "scraperId")) + DeleteScraperResponse.add_member(:status, Shapes::ShapeRef.new(shape: ScraperStatus, required: true, location_name: "status")) + DeleteScraperResponse.struct_class = Types::DeleteScraperResponse + DeleteWorkspaceRequest.add_member(:workspace_id, Shapes::ShapeRef.new(shape: WorkspaceId, required: true, location: "uri", location_name: "workspaceId")) DeleteWorkspaceRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: IdempotencyToken, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true})) DeleteWorkspaceRequest.struct_class = Types::DeleteWorkspaceRequest @@ -191,12 +252,36 @@ module ClientApi DescribeRuleGroupsNamespaceResponse.add_member(:rule_groups_namespace, Shapes::ShapeRef.new(shape: RuleGroupsNamespaceDescription, required: true, location_name: "ruleGroupsNamespace")) DescribeRuleGroupsNamespaceResponse.struct_class = Types::DescribeRuleGroupsNamespaceResponse + DescribeScraperRequest.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location: "uri", location_name: "scraperId")) + DescribeScraperRequest.struct_class = Types::DescribeScraperRequest + + DescribeScraperResponse.add_member(:scraper, Shapes::ShapeRef.new(shape: ScraperDescription, required: true, location_name: "scraper")) + DescribeScraperResponse.struct_class = Types::DescribeScraperResponse + DescribeWorkspaceRequest.add_member(:workspace_id, Shapes::ShapeRef.new(shape: WorkspaceId, required: true, location: "uri", location_name: "workspaceId")) DescribeWorkspaceRequest.struct_class = Types::DescribeWorkspaceRequest DescribeWorkspaceResponse.add_member(:workspace, Shapes::ShapeRef.new(shape: WorkspaceDescription, required: true, location_name: "workspace")) DescribeWorkspaceResponse.struct_class = Types::DescribeWorkspaceResponse + Destination.add_member(:amp_configuration, Shapes::ShapeRef.new(shape: AmpConfiguration, location_name: "ampConfiguration")) + Destination.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + Destination.add_member_subclass(:amp_configuration, Types::Destination::AmpConfiguration) + Destination.add_member_subclass(:unknown, Types::Destination::Unknown) + Destination.struct_class = Types::Destination + + EksConfiguration.add_member(:cluster_arn, Shapes::ShapeRef.new(shape: ClusterArn, required: true, location_name: "clusterArn")) + EksConfiguration.add_member(:security_group_ids, Shapes::ShapeRef.new(shape: SecurityGroupIds, location_name: "securityGroupIds")) + EksConfiguration.add_member(:subnet_ids, Shapes::ShapeRef.new(shape: SubnetIds, required: true, location_name: "subnetIds")) + EksConfiguration.struct_class = Types::EksConfiguration + + FilterValues.member = Shapes::ShapeRef.new(shape: FilterValue) + + GetDefaultScraperConfigurationRequest.struct_class = Types::GetDefaultScraperConfigurationRequest + + GetDefaultScraperConfigurationResponse.add_member(:configuration, Shapes::ShapeRef.new(shape: Blob, required: true, location_name: "configuration")) + GetDefaultScraperConfigurationResponse.struct_class = Types::GetDefaultScraperConfigurationResponse + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) InternalServerException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: Integer, location: "header", location_name: "Retry-After")) InternalServerException.struct_class = Types::InternalServerException @@ -211,6 +296,15 @@ module ClientApi ListRuleGroupsNamespacesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "nextToken")) ListRuleGroupsNamespacesResponse.struct_class = Types::ListRuleGroupsNamespacesResponse + ListScrapersRequest.add_member(:filters, Shapes::ShapeRef.new(shape: ScraperFilters, location: "querystring", location_name: "filters")) + ListScrapersRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location: "querystring", location_name: "nextToken")) + ListScrapersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListScrapersRequestMaxResultsInteger, location: "querystring", location_name: "maxResults")) + ListScrapersRequest.struct_class = Types::ListScrapersRequest + + ListScrapersResponse.add_member(:scrapers, Shapes::ShapeRef.new(shape: ScraperSummaryList, required: true, location_name: "scrapers")) + ListScrapersResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "nextToken")) + ListScrapersResponse.struct_class = Types::ListScrapersResponse + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest @@ -285,6 +379,49 @@ module ClientApi RuleGroupsNamespaceSummaryList.member = Shapes::ShapeRef.new(shape: RuleGroupsNamespaceSummary) + ScrapeConfiguration.add_member(:configuration_blob, Shapes::ShapeRef.new(shape: Blob, location_name: "configurationBlob")) + ScrapeConfiguration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + ScrapeConfiguration.add_member_subclass(:configuration_blob, Types::ScrapeConfiguration::ConfigurationBlob) + ScrapeConfiguration.add_member_subclass(:unknown, Types::ScrapeConfiguration::Unknown) + ScrapeConfiguration.struct_class = Types::ScrapeConfiguration + + ScraperDescription.add_member(:alias, Shapes::ShapeRef.new(shape: ScraperAlias, location_name: "alias")) + ScraperDescription.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location_name: "scraperId")) + ScraperDescription.add_member(:arn, Shapes::ShapeRef.new(shape: ScraperArn, required: true, location_name: "arn")) + ScraperDescription.add_member(:role_arn, Shapes::ShapeRef.new(shape: IamRoleArn, required: true, location_name: "roleArn")) + ScraperDescription.add_member(:status, Shapes::ShapeRef.new(shape: ScraperStatus, required: true, location_name: "status")) + ScraperDescription.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt")) + ScraperDescription.add_member(:last_modified_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "lastModifiedAt")) + ScraperDescription.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + ScraperDescription.add_member(:status_reason, Shapes::ShapeRef.new(shape: StatusReason, location_name: "statusReason")) + ScraperDescription.add_member(:scrape_configuration, Shapes::ShapeRef.new(shape: ScrapeConfiguration, required: true, location_name: "scrapeConfiguration")) + ScraperDescription.add_member(:source, Shapes::ShapeRef.new(shape: Source, required: true, location_name: "source")) + ScraperDescription.add_member(:destination, Shapes::ShapeRef.new(shape: Destination, required: true, location_name: "destination")) + ScraperDescription.struct_class = Types::ScraperDescription + + ScraperFilters.key = Shapes::ShapeRef.new(shape: FilterKey) + ScraperFilters.value = Shapes::ShapeRef.new(shape: FilterValues) + + ScraperStatus.add_member(:status_code, Shapes::ShapeRef.new(shape: ScraperStatusCode, required: true, location_name: "statusCode")) + ScraperStatus.struct_class = Types::ScraperStatus + + ScraperSummary.add_member(:alias, Shapes::ShapeRef.new(shape: ScraperAlias, location_name: "alias")) + ScraperSummary.add_member(:scraper_id, Shapes::ShapeRef.new(shape: ScraperId, required: true, location_name: "scraperId")) + ScraperSummary.add_member(:arn, Shapes::ShapeRef.new(shape: ScraperArn, required: true, location_name: "arn")) + ScraperSummary.add_member(:role_arn, Shapes::ShapeRef.new(shape: IamRoleArn, required: true, location_name: "roleArn")) + ScraperSummary.add_member(:status, Shapes::ShapeRef.new(shape: ScraperStatus, required: true, location_name: "status")) + ScraperSummary.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "createdAt")) + ScraperSummary.add_member(:last_modified_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "lastModifiedAt")) + ScraperSummary.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "tags")) + ScraperSummary.add_member(:status_reason, Shapes::ShapeRef.new(shape: StatusReason, location_name: "statusReason")) + ScraperSummary.add_member(:source, Shapes::ShapeRef.new(shape: Source, required: true, location_name: "source")) + ScraperSummary.add_member(:destination, Shapes::ShapeRef.new(shape: Destination, required: true, location_name: "destination")) + ScraperSummary.struct_class = Types::ScraperSummary + + ScraperSummaryList.member = Shapes::ShapeRef.new(shape: ScraperSummary) + + SecurityGroupIds.member = Shapes::ShapeRef.new(shape: SecurityGroupId) + ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) ServiceQuotaExceededException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) ServiceQuotaExceededException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType")) @@ -292,6 +429,14 @@ module ClientApi ServiceQuotaExceededException.add_member(:quota_code, Shapes::ShapeRef.new(shape: String, required: true, location_name: "quotaCode")) ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException + Source.add_member(:eks_configuration, Shapes::ShapeRef.new(shape: EksConfiguration, location_name: "eksConfiguration")) + Source.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + Source.add_member_subclass(:eks_configuration, Types::Source::EksConfiguration) + Source.add_member_subclass(:unknown, Types::Source::Unknown) + Source.struct_class = Types::Source + + SubnetIds.member = Shapes::ShapeRef.new(shape: SubnetId) + TagKeys.member = Shapes::ShapeRef.new(shape: TagKey) TagMap.key = Shapes::ShapeRef.new(shape: TagKey) @@ -421,6 +566,21 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) end) + api.add_operation(:create_scraper, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateScraper" + o.http_method = "POST" + o.http_request_uri = "/scrapers" + o.input = Shapes::ShapeRef.new(shape: CreateScraperRequest) + o.output = Shapes::ShapeRef.new(shape: CreateScraperResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + end) + api.add_operation(:create_workspace, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateWorkspace" o.http_method = "POST" @@ -476,6 +636,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:delete_scraper, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteScraper" + o.http_method = "DELETE" + o.http_request_uri = "/scrapers/{scraperId}" + o.input = Shapes::ShapeRef.new(shape: DeleteScraperRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteScraperResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:delete_workspace, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteWorkspace" o.http_method = "DELETE" @@ -528,6 +702,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:describe_scraper, Seahorse::Model::Operation.new.tap do |o| + o.name = "DescribeScraper" + o.http_method = "GET" + o.http_request_uri = "/scrapers/{scraperId}" + o.input = Shapes::ShapeRef.new(shape: DescribeScraperRequest) + o.output = Shapes::ShapeRef.new(shape: DescribeScraperResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:describe_workspace, Seahorse::Model::Operation.new.tap do |o| o.name = "DescribeWorkspace" o.http_method = "GET" @@ -541,6 +728,17 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalServerException) end) + api.add_operation(:get_default_scraper_configuration, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetDefaultScraperConfiguration" + o.http_method = "GET" + o.http_request_uri = "/scraperconfiguration" + o.input = Shapes::ShapeRef.new(shape: GetDefaultScraperConfigurationRequest) + o.output = Shapes::ShapeRef.new(shape: GetDefaultScraperConfigurationResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + api.add_operation(:list_rule_groups_namespaces, Seahorse::Model::Operation.new.tap do |o| o.name = "ListRuleGroupsNamespaces" o.http_method = "GET" @@ -560,6 +758,24 @@ module ClientApi ) end) + api.add_operation(:list_scrapers, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListScrapers" + o.http_method = "GET" + o.http_request_uri = "/scrapers" + o.input = Shapes::ShapeRef.new(shape: ListScrapersRequest) + o.output = Shapes::ShapeRef.new(shape: ListScrapersResponse) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "ListTagsForResource" o.http_method = "GET" diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoint_provider.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoint_provider.rb index 2af294e6c88..c85bb769475 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoint_provider.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://aps-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoints.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoints.rb index 2b929967ba4..b96d3888e77 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoints.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/endpoints.rb @@ -54,6 +54,20 @@ def self.build(context) end end + class CreateScraper + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PrometheusService::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CreateWorkspace def self.build(context) unless context.config.regional_endpoint @@ -110,6 +124,20 @@ def self.build(context) end end + class DeleteScraper + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PrometheusService::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteWorkspace def self.build(context) unless context.config.regional_endpoint @@ -166,6 +194,20 @@ def self.build(context) end end + class DescribeScraper + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PrometheusService::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DescribeWorkspace def self.build(context) unless context.config.regional_endpoint @@ -180,6 +222,20 @@ def self.build(context) end end + class GetDefaultScraperConfiguration + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PrometheusService::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListRuleGroupsNamespaces def self.build(context) unless context.config.regional_endpoint @@ -194,6 +250,20 @@ def self.build(context) end end + class ListScrapers + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::PrometheusService::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListTagsForResource def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/plugins/endpoints.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/plugins/endpoints.rb index 40070e0701e..70fb849f97d 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/plugins/endpoints.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/plugins/endpoints.rb @@ -62,6 +62,8 @@ def parameters_for_operation(context) Aws::PrometheusService::Endpoints::CreateLoggingConfiguration.build(context) when :create_rule_groups_namespace Aws::PrometheusService::Endpoints::CreateRuleGroupsNamespace.build(context) + when :create_scraper + Aws::PrometheusService::Endpoints::CreateScraper.build(context) when :create_workspace Aws::PrometheusService::Endpoints::CreateWorkspace.build(context) when :delete_alert_manager_definition @@ -70,6 +72,8 @@ def parameters_for_operation(context) Aws::PrometheusService::Endpoints::DeleteLoggingConfiguration.build(context) when :delete_rule_groups_namespace Aws::PrometheusService::Endpoints::DeleteRuleGroupsNamespace.build(context) + when :delete_scraper + Aws::PrometheusService::Endpoints::DeleteScraper.build(context) when :delete_workspace Aws::PrometheusService::Endpoints::DeleteWorkspace.build(context) when :describe_alert_manager_definition @@ -78,10 +82,16 @@ def parameters_for_operation(context) Aws::PrometheusService::Endpoints::DescribeLoggingConfiguration.build(context) when :describe_rule_groups_namespace Aws::PrometheusService::Endpoints::DescribeRuleGroupsNamespace.build(context) + when :describe_scraper + Aws::PrometheusService::Endpoints::DescribeScraper.build(context) when :describe_workspace Aws::PrometheusService::Endpoints::DescribeWorkspace.build(context) + when :get_default_scraper_configuration + Aws::PrometheusService::Endpoints::GetDefaultScraperConfiguration.build(context) when :list_rule_groups_namespaces Aws::PrometheusService::Endpoints::ListRuleGroupsNamespaces.build(context) + when :list_scrapers + Aws::PrometheusService::Endpoints::ListScrapers.build(context) when :list_tags_for_resource Aws::PrometheusService::Endpoints::ListTagsForResource.build(context) when :list_workspaces diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/types.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/types.rb index c5fa62a1253..3de024f8f17 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/types.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/types.rb @@ -72,6 +72,20 @@ class AlertManagerDefinitionStatus < Struct.new( include Aws::Structure end + # A representation of an AMP destination. + # + # @!attribute [rw] workspace_arn + # The ARN of an AMP workspace. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/AmpConfiguration AWS API Documentation + # + class AmpConfiguration < Struct.new( + :workspace_arn) + SENSITIVE = [] + include Aws::Structure + end + # Updating or deleting a resource can cause an inconsistent state. # # @!attribute [rw] message @@ -249,6 +263,80 @@ class CreateRuleGroupsNamespaceResponse < Struct.new( include Aws::Structure end + # Represents the input of a CreateScraper operation. + # + # @!attribute [rw] alias + # An optional user-assigned alias for this scraper. This alias is for + # user reference and does not need to be unique. + # @return [String] + # + # @!attribute [rw] scrape_configuration + # The configuration used to create the scraper. + # @return [Types::ScrapeConfiguration] + # + # @!attribute [rw] source + # The source that the scraper will be discovering and collecting + # metrics from. + # @return [Types::Source] + # + # @!attribute [rw] destination + # The destination that the scraper will be producing metrics to. + # @return [Types::Destination] + # + # @!attribute [rw] client_token + # Optional, unique, case-sensitive, user-provided identifier to ensure + # the idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @!attribute [rw] tags + # Optional, user-provided tags for this scraper. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/CreateScraperRequest AWS API Documentation + # + class CreateScraperRequest < Struct.new( + :alias, + :scrape_configuration, + :source, + :destination, + :client_token, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the output of a CreateScraper operation. + # + # @!attribute [rw] scraper_id + # The generated ID of the scraper that was just created. + # @return [String] + # + # @!attribute [rw] arn + # The ARN of the scraper that was just created. + # @return [String] + # + # @!attribute [rw] status + # The status of the scraper that was just created (usually CREATING). + # @return [Types::ScraperStatus] + # + # @!attribute [rw] tags + # The tags of this scraper. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/CreateScraperResponse AWS API Documentation + # + class CreateScraperResponse < Struct.new( + :scraper_id, + :arn, + :status, + :tags) + SENSITIVE = [] + include Aws::Structure + end + # Represents the input of a CreateWorkspace operation. # # @!attribute [rw] alias @@ -383,6 +471,48 @@ class DeleteRuleGroupsNamespaceRequest < Struct.new( include Aws::Structure end + # Represents the input of a DeleteScraper operation. + # + # @!attribute [rw] scraper_id + # The ID of the scraper to delete. + # @return [String] + # + # @!attribute [rw] client_token + # Optional, unique, case-sensitive, user-provided identifier to ensure + # the idempotency of the request. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DeleteScraperRequest AWS API Documentation + # + class DeleteScraperRequest < Struct.new( + :scraper_id, + :client_token) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the output of a DeleteScraper operation. + # + # @!attribute [rw] scraper_id + # The ID of the scraper that was deleted. + # @return [String] + # + # @!attribute [rw] status + # The status of the scraper that is being deleted. + # @return [Types::ScraperStatus] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DeleteScraperResponse AWS API Documentation + # + class DeleteScraperResponse < Struct.new( + :scraper_id, + :status) + SENSITIVE = [] + include Aws::Structure + end + # Represents the input of a DeleteWorkspace operation. # # @!attribute [rw] workspace_id @@ -497,6 +627,34 @@ class DescribeRuleGroupsNamespaceResponse < Struct.new( include Aws::Structure end + # Represents the input of a DescribeScraper operation. + # + # @!attribute [rw] scraper_id + # The IDs of the scraper to describe. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DescribeScraperRequest AWS API Documentation + # + class DescribeScraperRequest < Struct.new( + :scraper_id) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the output of a DescribeScraper operation. + # + # @!attribute [rw] scraper + # The properties of the selected scrapers. + # @return [Types::ScraperDescription] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/DescribeScraperResponse AWS API Documentation + # + class DescribeScraperResponse < Struct.new( + :scraper) + SENSITIVE = [] + include Aws::Structure + end + # Represents the input of a DescribeWorkspace operation. # # @!attribute [rw] workspace_id @@ -525,6 +683,76 @@ class DescribeWorkspaceResponse < Struct.new( include Aws::Structure end + # A representation of a destination that a scraper can produce metrics + # to. + # + # @note Destination is a union - when making an API calls you must set exactly one of the members. + # + # @note Destination is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of Destination corresponding to the set member. + # + # @!attribute [rw] amp_configuration + # A representation of an AMP destination. + # @return [Types::AmpConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/Destination AWS API Documentation + # + class Destination < Struct.new( + :amp_configuration, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class AmpConfiguration < Destination; end + class Unknown < Destination; end + end + + # A representation of an EKS source. + # + # @!attribute [rw] cluster_arn + # The ARN of an EKS cluster. + # @return [String] + # + # @!attribute [rw] security_group_ids + # A list of security group IDs specified for VPC configuration. + # @return [Array] + # + # @!attribute [rw] subnet_ids + # A list of subnet IDs specified for VPC configuration. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/EksConfiguration AWS API Documentation + # + class EksConfiguration < Struct.new( + :cluster_arn, + :security_group_ids, + :subnet_ids) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the input of a GetDefaultScraperConfiguration operation. + # + # @api private + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/GetDefaultScraperConfigurationRequest AWS API Documentation + # + class GetDefaultScraperConfigurationRequest < Aws::EmptyStructure; end + + # Represents the output of a GetDefaultScraperConfiguration operation. + # + # @!attribute [rw] configuration + # The default configuration. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/GetDefaultScraperConfigurationResponse AWS API Documentation + # + class GetDefaultScraperConfigurationResponse < Struct.new( + :configuration) + SENSITIVE = [] + include Aws::Structure + end + # Unexpected error during processing of request. # # @!attribute [rw] message @@ -595,6 +823,52 @@ class ListRuleGroupsNamespacesResponse < Struct.new( include Aws::Structure end + # Represents the input of a ListScrapers operation. + # + # @!attribute [rw] filters + # A list of scraper filters. + # @return [Hash>] + # + # @!attribute [rw] next_token + # Pagination token to request the next page in a paginated list. This + # token is obtained from the output of the previous ListScrapers + # request. + # @return [String] + # + # @!attribute [rw] max_results + # Maximum results to return in response (default=100, maximum=1000). + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ListScrapersRequest AWS API Documentation + # + class ListScrapersRequest < Struct.new( + :filters, + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the output of a ListScrapers operation. + # + # @!attribute [rw] scrapers + # The list of scrapers, filtered down if a set of filters was provided + # in the request. + # @return [Array] + # + # @!attribute [rw] next_token + # Pagination token to use when requesting the next page in this list. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ListScrapersResponse AWS API Documentation + # + class ListScrapersResponse < Struct.new( + :scrapers, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The ARN of the resource. # @return [String] @@ -951,6 +1225,182 @@ class RuleGroupsNamespaceSummary < Struct.new( include Aws::Structure end + # A representation of a Prometheus configuration file. + # + # @note ScrapeConfiguration is a union - when making an API calls you must set exactly one of the members. + # + # @note ScrapeConfiguration is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of ScrapeConfiguration corresponding to the set member. + # + # @!attribute [rw] configuration_blob + # Binary data representing a Prometheus configuration file. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ScrapeConfiguration AWS API Documentation + # + class ScrapeConfiguration < Struct.new( + :configuration_blob, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class ConfigurationBlob < ScrapeConfiguration; end + class Unknown < ScrapeConfiguration; end + end + + # Represents the properties of a scraper. + # + # @!attribute [rw] alias + # Alias of this scraper. + # @return [String] + # + # @!attribute [rw] scraper_id + # Unique string identifying this scraper. + # @return [String] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of this scraper. + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the IAM role that provides + # permissions for the scraper to dsicover, collect, and produce + # metrics on your behalf. + # @return [String] + # + # @!attribute [rw] status + # The status of this scraper. + # @return [Types::ScraperStatus] + # + # @!attribute [rw] created_at + # The time when the scraper was created. + # @return [Time] + # + # @!attribute [rw] last_modified_at + # The time when the scraper was last modified. + # @return [Time] + # + # @!attribute [rw] tags + # The tags of this scraper. + # @return [Hash] + # + # @!attribute [rw] status_reason + # The reason for failure if any. + # @return [String] + # + # @!attribute [rw] scrape_configuration + # The configuration used to create the scraper. + # @return [Types::ScrapeConfiguration] + # + # @!attribute [rw] source + # The source that the scraper is discovering and collecting metrics + # from. + # @return [Types::Source] + # + # @!attribute [rw] destination + # The destination that the scraper is producing metrics to. + # @return [Types::Destination] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ScraperDescription AWS API Documentation + # + class ScraperDescription < Struct.new( + :alias, + :scraper_id, + :arn, + :role_arn, + :status, + :created_at, + :last_modified_at, + :tags, + :status_reason, + :scrape_configuration, + :source, + :destination) + SENSITIVE = [] + include Aws::Structure + end + + # Represents the status of a scraper. + # + # @!attribute [rw] status_code + # Status code of this scraper. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ScraperStatus AWS API Documentation + # + class ScraperStatus < Struct.new( + :status_code) + SENSITIVE = [] + include Aws::Structure + end + + # Represents a summary of the properties of a scraper. + # + # @!attribute [rw] alias + # Alias of this scraper. + # @return [String] + # + # @!attribute [rw] scraper_id + # Unique string identifying this scraper. + # @return [String] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of this scraper. + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the IAM role that provides + # permissions for the scraper to dsicover, collect, and produce + # metrics on your behalf. + # @return [String] + # + # @!attribute [rw] status + # The status of this scraper. + # @return [Types::ScraperStatus] + # + # @!attribute [rw] created_at + # The time when the scraper was created. + # @return [Time] + # + # @!attribute [rw] last_modified_at + # The time when the scraper was last modified. + # @return [Time] + # + # @!attribute [rw] tags + # The tags of this scraper. + # @return [Hash] + # + # @!attribute [rw] status_reason + # The reason for failure if any. + # @return [String] + # + # @!attribute [rw] source + # The source that the scraper is discovering and collecting metrics + # from. + # @return [Types::Source] + # + # @!attribute [rw] destination + # The destination that the scraper is producing metrics to. + # @return [Types::Destination] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/ScraperSummary AWS API Documentation + # + class ScraperSummary < Struct.new( + :alias, + :scraper_id, + :arn, + :role_arn, + :status, + :created_at, + :last_modified_at, + :tags, + :status_reason, + :source, + :destination) + SENSITIVE = [] + include Aws::Structure + end + # Request would cause a service quota to be exceeded. # # @!attribute [rw] message @@ -985,6 +1435,30 @@ class ServiceQuotaExceededException < Struct.new( include Aws::Structure end + # A representation of a source that a scraper can discover and collect + # metrics from. + # + # @note Source is a union - when making an API calls you must set exactly one of the members. + # + # @note Source is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of Source corresponding to the set member. + # + # @!attribute [rw] eks_configuration + # A representation of an EKS source. + # @return [Types::EksConfiguration] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/amp-2020-08-01/Source AWS API Documentation + # + class Source < Struct.new( + :eks_configuration, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class EksConfiguration < Source; end + class Unknown < Source; end + end + # @!attribute [rw] resource_arn # The ARN of the resource. # @return [String] diff --git a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/waiters.rb b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/waiters.rb index c9812c3129e..7a8179f1bf4 100644 --- a/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/waiters.rb +++ b/gems/aws-sdk-prometheusservice/lib/aws-sdk-prometheusservice/waiters.rb @@ -69,11 +69,102 @@ module Aws::PrometheusService # # | waiter_name | params | :delay | :max_attempts | # | ----------------- | --------------------------- | -------- | ------------- | + # | scraper_active | {Client#describe_scraper} | 2 | 60 | + # | scraper_deleted | {Client#describe_scraper} | 2 | 60 | # | workspace_active | {Client#describe_workspace} | 2 | 60 | # | workspace_deleted | {Client#describe_workspace} | 2 | 60 | # module Waiters + # Wait until a scraper reaches ACTIVE status + class ScraperActive + + # @param [Hash] options + # @option options [required, Client] :client + # @option options [Integer] :max_attempts (60) + # @option options [Integer] :delay (2) + # @option options [Proc] :before_attempt + # @option options [Proc] :before_wait + def initialize(options) + @client = options.fetch(:client) + @waiter = Aws::Waiters::Waiter.new({ + max_attempts: 60, + delay: 2, + poller: Aws::Waiters::Poller.new( + operation_name: :describe_scraper, + acceptors: [ + { + "matcher" => "path", + "argument" => "scraper.status.status_code", + "state" => "success", + "expected" => "ACTIVE" + }, + { + "matcher" => "path", + "argument" => "scraper.status.status_code", + "state" => "failure", + "expected" => "CREATION_FAILED" + } + ] + ) + }.merge(options)) + end + + # @option (see Client#describe_scraper) + # @return (see Client#describe_scraper) + def wait(params = {}) + @waiter.wait(client: @client, params: params) + end + + # @api private + attr_reader :waiter + + end + + # Wait until a scraper reaches DELETED status + class ScraperDeleted + + # @param [Hash] options + # @option options [required, Client] :client + # @option options [Integer] :max_attempts (60) + # @option options [Integer] :delay (2) + # @option options [Proc] :before_attempt + # @option options [Proc] :before_wait + def initialize(options) + @client = options.fetch(:client) + @waiter = Aws::Waiters::Waiter.new({ + max_attempts: 60, + delay: 2, + poller: Aws::Waiters::Poller.new( + operation_name: :describe_scraper, + acceptors: [ + { + "matcher" => "error", + "state" => "success", + "expected" => "ResourceNotFoundException" + }, + { + "matcher" => "path", + "argument" => "scraper.status.status_code", + "state" => "failure", + "expected" => "DELETION_FAILED" + } + ] + ) + }.merge(options)) + end + + # @option (see Client#describe_scraper) + # @return (see Client#describe_scraper) + def wait(params = {}) + @waiter.wait(client: @client, params: params) + end + + # @api private + attr_reader :waiter + + end + # Wait until a workspace reaches ACTIVE status class WorkspaceActive diff --git a/gems/aws-sdk-quicksight/CHANGELOG.md b/gems/aws-sdk-quicksight/CHANGELOG.md index 0206f97ced6..50619c5f44d 100644 --- a/gems/aws-sdk-quicksight/CHANGELOG.md +++ b/gems/aws-sdk-quicksight/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.98.0 (2023-11-27) +------------------ + +* Feature - This release launches new APIs for trusted identity propagation setup and supports creating datasources using trusted identity propagation as authentication method for QuickSight accounts configured with IAM Identity Center. + 1.97.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-quicksight/VERSION b/gems/aws-sdk-quicksight/VERSION index acbb747ac54..783fda86436 100644 --- a/gems/aws-sdk-quicksight/VERSION +++ b/gems/aws-sdk-quicksight/VERSION @@ -1 +1 @@ -1.97.0 +1.98.0 diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight.rb index 354cd46db53..8649382d500 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight.rb @@ -52,6 +52,6 @@ # @!group service module Aws::QuickSight - GEM_VERSION = '1.97.0' + GEM_VERSION = '1.98.0' end diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client.rb index 95606c2467c..b38d43cef67 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client.rb @@ -1400,6 +1400,9 @@ def create_data_set(params = {}, options = {}) # database_groups: ["DatabaseGroup"], # auto_create_database_user: false, # }, + # identity_center_configuration: { + # enable_identity_propagation: false, + # }, # }, # s3_parameters: { # manifest_file_location: { # required @@ -1531,6 +1534,9 @@ def create_data_set(params = {}, options = {}) # database_groups: ["DatabaseGroup"], # auto_create_database_user: false, # }, + # identity_center_configuration: { + # enable_identity_propagation: false, + # }, # }, # s3_parameters: { # manifest_file_location: { # required @@ -3443,6 +3449,47 @@ def delete_iam_policy_assignment(params = {}, options = {}) req.send_request(options) end + # Deletes all access scopes and authorized targets that are associated + # with a service from the Amazon QuickSight IAM Identity Center + # application. + # + # This operation is only supported for Amazon QuickSight accounts that + # use IAM Identity Center. + # + # @option params [required, String] :aws_account_id + # The ID of the Amazon Web Services account that you want to delete an + # identity propagation configuration from. + # + # @option params [required, String] :service + # The name of the Amazon Web Services service that you want to delete + # the associated access scopes and authorized targets from. + # + # @return [Types::DeleteIdentityPropagationConfigResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DeleteIdentityPropagationConfigResponse#request_id #request_id} => String + # * {Types::DeleteIdentityPropagationConfigResponse#status #status} => Integer + # + # @example Request syntax with placeholder values + # + # resp = client.delete_identity_propagation_config({ + # aws_account_id: "AwsAccountId", # required + # service: "REDSHIFT", # required, accepts REDSHIFT + # }) + # + # @example Response structure + # + # resp.request_id #=> String + # resp.status #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIdentityPropagationConfig AWS API Documentation + # + # @overload delete_identity_propagation_config(params = {}) + # @param [Hash] params ({}) + def delete_identity_propagation_config(params = {}, options = {}) + req = build_request(:delete_identity_propagation_config, params) + req.send_request(options) + end + # Deletes a namespace and the users and groups that are associated with # the namespace. This is an asynchronous process. Assets including # dashboards, analyses, datasets and data sources are not deleted. To @@ -4571,6 +4618,7 @@ def describe_asset_bundle_export_job(params = {}, options = {}) # resp.override_parameters.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.database_groups #=> Array # resp.override_parameters.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.database_groups[0] #=> String # resp.override_parameters.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.auto_create_database_user #=> Boolean + # resp.override_parameters.data_sources[0].data_source_parameters.redshift_parameters.identity_center_configuration.enable_identity_propagation #=> Boolean # resp.override_parameters.data_sources[0].data_source_parameters.s3_parameters.manifest_file_location.bucket #=> String # resp.override_parameters.data_sources[0].data_source_parameters.s3_parameters.manifest_file_location.key #=> String # resp.override_parameters.data_sources[0].data_source_parameters.s3_parameters.role_arn #=> String @@ -5371,6 +5419,7 @@ def describe_data_set_refresh_properties(params = {}, options = {}) # resp.data_source.data_source_parameters.redshift_parameters.iam_parameters.database_groups #=> Array # resp.data_source.data_source_parameters.redshift_parameters.iam_parameters.database_groups[0] #=> String # resp.data_source.data_source_parameters.redshift_parameters.iam_parameters.auto_create_database_user #=> Boolean + # resp.data_source.data_source_parameters.redshift_parameters.identity_center_configuration.enable_identity_propagation #=> Boolean # resp.data_source.data_source_parameters.s3_parameters.manifest_file_location.bucket #=> String # resp.data_source.data_source_parameters.s3_parameters.manifest_file_location.key #=> String # resp.data_source.data_source_parameters.s3_parameters.role_arn #=> String @@ -5441,6 +5490,7 @@ def describe_data_set_refresh_properties(params = {}, options = {}) # resp.data_source.alternate_data_source_parameters[0].redshift_parameters.iam_parameters.database_groups #=> Array # resp.data_source.alternate_data_source_parameters[0].redshift_parameters.iam_parameters.database_groups[0] #=> String # resp.data_source.alternate_data_source_parameters[0].redshift_parameters.iam_parameters.auto_create_database_user #=> Boolean + # resp.data_source.alternate_data_source_parameters[0].redshift_parameters.identity_center_configuration.enable_identity_propagation #=> Boolean # resp.data_source.alternate_data_source_parameters[0].s3_parameters.manifest_file_location.bucket #=> String # resp.data_source.alternate_data_source_parameters[0].s3_parameters.manifest_file_location.key #=> String # resp.data_source.alternate_data_source_parameters[0].s3_parameters.role_arn #=> String @@ -7823,6 +7873,7 @@ def list_data_sets(params = {}, options = {}) # resp.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.database_groups #=> Array # resp.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.database_groups[0] #=> String # resp.data_sources[0].data_source_parameters.redshift_parameters.iam_parameters.auto_create_database_user #=> Boolean + # resp.data_sources[0].data_source_parameters.redshift_parameters.identity_center_configuration.enable_identity_propagation #=> Boolean # resp.data_sources[0].data_source_parameters.s3_parameters.manifest_file_location.bucket #=> String # resp.data_sources[0].data_source_parameters.s3_parameters.manifest_file_location.key #=> String # resp.data_sources[0].data_source_parameters.s3_parameters.role_arn #=> String @@ -7893,6 +7944,7 @@ def list_data_sets(params = {}, options = {}) # resp.data_sources[0].alternate_data_source_parameters[0].redshift_parameters.iam_parameters.database_groups #=> Array # resp.data_sources[0].alternate_data_source_parameters[0].redshift_parameters.iam_parameters.database_groups[0] #=> String # resp.data_sources[0].alternate_data_source_parameters[0].redshift_parameters.iam_parameters.auto_create_database_user #=> Boolean + # resp.data_sources[0].alternate_data_source_parameters[0].redshift_parameters.identity_center_configuration.enable_identity_propagation #=> Boolean # resp.data_sources[0].alternate_data_source_parameters[0].s3_parameters.manifest_file_location.bucket #=> String # resp.data_sources[0].alternate_data_source_parameters[0].s3_parameters.manifest_file_location.key #=> String # resp.data_sources[0].alternate_data_source_parameters[0].s3_parameters.role_arn #=> String @@ -8271,6 +8323,57 @@ def list_iam_policy_assignments_for_user(params = {}, options = {}) req.send_request(options) end + # Lists all services and authorized targets that the Amazon QuickSight + # IAM Identity Center application can access. + # + # This operation is only supported for Amazon QuickSight accounts that + # use IAM Identity Center. + # + # @option params [required, String] :aws_account_id + # The ID of the Amazon Web Services account that contain the identity + # propagation configurations of. + # + # @option params [Integer] :max_results + # The maximum number of results to be returned. + # + # @option params [String] :next_token + # The token for the next set of results, or null if there are no more + # results. + # + # @return [Types::ListIdentityPropagationConfigsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListIdentityPropagationConfigsResponse#services #services} => Array<Types::AuthorizedTargetsByService> + # * {Types::ListIdentityPropagationConfigsResponse#next_token #next_token} => String + # * {Types::ListIdentityPropagationConfigsResponse#status #status} => Integer + # * {Types::ListIdentityPropagationConfigsResponse#request_id #request_id} => String + # + # @example Request syntax with placeholder values + # + # resp = client.list_identity_propagation_configs({ + # aws_account_id: "AwsAccountId", # required + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.services #=> Array + # resp.services[0].service #=> String, one of "REDSHIFT" + # resp.services[0].authorized_targets #=> Array + # resp.services[0].authorized_targets[0] #=> String + # resp.next_token #=> String + # resp.status #=> Integer + # resp.request_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIdentityPropagationConfigs AWS API Documentation + # + # @overload list_identity_propagation_configs(params = {}) + # @param [Hash] params ({}) + def list_identity_propagation_configs(params = {}, options = {}) + req = build_request(:list_identity_propagation_configs, params) + req.send_request(options) + end + # Lists the history of SPICE ingestions for a dataset. # # @option params [required, String] :data_set_id @@ -10148,6 +10251,9 @@ def start_asset_bundle_export_job(params = {}, options = {}) # database_groups: ["DatabaseGroup"], # auto_create_database_user: false, # }, + # identity_center_configuration: { + # enable_identity_propagation: false, + # }, # }, # s3_parameters: { # manifest_file_location: { # required @@ -11565,6 +11671,9 @@ def update_data_set_permissions(params = {}, options = {}) # database_groups: ["DatabaseGroup"], # auto_create_database_user: false, # }, + # identity_center_configuration: { + # enable_identity_propagation: false, + # }, # }, # s3_parameters: { # manifest_file_location: { # required @@ -11696,6 +11805,9 @@ def update_data_set_permissions(params = {}, options = {}) # database_groups: ["DatabaseGroup"], # auto_create_database_user: false, # }, + # identity_center_configuration: { + # enable_identity_propagation: false, + # }, # }, # s3_parameters: { # manifest_file_location: { # required @@ -12080,6 +12192,51 @@ def update_iam_policy_assignment(params = {}, options = {}) req.send_request(options) end + # Adds or updates services and authorized targets to configure what the + # Amazon QuickSight IAM Identity Center application can access. + # + # This operation is only supported for Amazon QuickSight accounts using + # IAM Identity Center + # + # @option params [required, String] :aws_account_id + # The ID of the Amazon Web Services account that contains the identity + # propagation configuration that you want to update. + # + # @option params [required, String] :service + # The name of the Amazon Web Services service that contains the + # authorized targets that you want to add or update. + # + # @option params [Array] :authorized_targets + # Specifies a list of application ARNs that represent the authorized + # targets for a service. + # + # @return [Types::UpdateIdentityPropagationConfigResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateIdentityPropagationConfigResponse#request_id #request_id} => String + # * {Types::UpdateIdentityPropagationConfigResponse#status #status} => Integer + # + # @example Request syntax with placeholder values + # + # resp = client.update_identity_propagation_config({ + # aws_account_id: "AwsAccountId", # required + # service: "REDSHIFT", # required, accepts REDSHIFT + # authorized_targets: ["String"], + # }) + # + # @example Response structure + # + # resp.request_id #=> String + # resp.status #=> Integer + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIdentityPropagationConfig AWS API Documentation + # + # @overload update_identity_propagation_config(params = {}) + # @param [Hash] params ({}) + def update_identity_propagation_config(params = {}, options = {}) + req = build_request(:update_identity_propagation_config, params) + req.send_request(options) + end + # Updates the content and status of IP rules. To use this operation, you # must provide the entire map of rules. You can use the # `DescribeIpRestriction` operation to get the current rule map. @@ -13325,7 +13482,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-quicksight' - context[:gem_version] = '1.97.0' + context[:gem_version] = '1.98.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client_api.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client_api.rb index ddfcc7521c2..ae3cd658f8e 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client_api.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/client_api.rb @@ -167,6 +167,9 @@ module ClientApi AuthenticationMethodOption = Shapes::StringShape.new(name: 'AuthenticationMethodOption') AuthorSpecifiedAggregation = Shapes::StringShape.new(name: 'AuthorSpecifiedAggregation') AuthorSpecifiedAggregations = Shapes::ListShape.new(name: 'AuthorSpecifiedAggregations') + AuthorizedTargetsByService = Shapes::StructureShape.new(name: 'AuthorizedTargetsByService') + AuthorizedTargetsByServices = Shapes::ListShape.new(name: 'AuthorizedTargetsByServices') + AuthorizedTargetsList = Shapes::ListShape.new(name: 'AuthorizedTargetsList') AwsAccountId = Shapes::StringShape.new(name: 'AwsAccountId') AwsAndAccountId = Shapes::StringShape.new(name: 'AwsAndAccountId') AwsIotAnalyticsParameters = Shapes::StructureShape.new(name: 'AwsIotAnalyticsParameters') @@ -534,6 +537,8 @@ module ClientApi DeleteGroupResponse = Shapes::StructureShape.new(name: 'DeleteGroupResponse') DeleteIAMPolicyAssignmentRequest = Shapes::StructureShape.new(name: 'DeleteIAMPolicyAssignmentRequest') DeleteIAMPolicyAssignmentResponse = Shapes::StructureShape.new(name: 'DeleteIAMPolicyAssignmentResponse') + DeleteIdentityPropagationConfigRequest = Shapes::StructureShape.new(name: 'DeleteIdentityPropagationConfigRequest') + DeleteIdentityPropagationConfigResponse = Shapes::StructureShape.new(name: 'DeleteIdentityPropagationConfigResponse') DeleteNamespaceRequest = Shapes::StructureShape.new(name: 'DeleteNamespaceRequest') DeleteNamespaceResponse = Shapes::StructureShape.new(name: 'DeleteNamespaceResponse') DeleteRefreshScheduleRequest = Shapes::StructureShape.new(name: 'DeleteRefreshScheduleRequest') @@ -860,6 +865,7 @@ module ClientApi IAMPolicyAssignmentSummaryList = Shapes::ListShape.new(name: 'IAMPolicyAssignmentSummaryList') IPv4Address = Shapes::StringShape.new(name: 'IPv4Address') Icon = Shapes::StringShape.new(name: 'Icon') + IdentityCenterConfiguration = Shapes::StructureShape.new(name: 'IdentityCenterConfiguration') IdentityMap = Shapes::MapShape.new(name: 'IdentityMap') IdentityName = Shapes::StringShape.new(name: 'IdentityName') IdentityNameList = Shapes::ListShape.new(name: 'IdentityNameList') @@ -976,6 +982,9 @@ module ClientApi ListIAMPolicyAssignmentsForUserResponse = Shapes::StructureShape.new(name: 'ListIAMPolicyAssignmentsForUserResponse') ListIAMPolicyAssignmentsRequest = Shapes::StructureShape.new(name: 'ListIAMPolicyAssignmentsRequest') ListIAMPolicyAssignmentsResponse = Shapes::StructureShape.new(name: 'ListIAMPolicyAssignmentsResponse') + ListIdentityPropagationConfigsRequest = Shapes::StructureShape.new(name: 'ListIdentityPropagationConfigsRequest') + ListIdentityPropagationConfigsResponse = Shapes::StructureShape.new(name: 'ListIdentityPropagationConfigsResponse') + ListIdentityPropagationMaxResults = Shapes::IntegerShape.new(name: 'ListIdentityPropagationMaxResults') ListIngestionsRequest = Shapes::StructureShape.new(name: 'ListIngestionsRequest') ListIngestionsResponse = Shapes::StructureShape.new(name: 'ListIngestionsResponse') ListNamespacesRequest = Shapes::StructureShape.new(name: 'ListNamespacesRequest') @@ -1346,6 +1355,7 @@ module ClientApi SeriesItem = Shapes::StructureShape.new(name: 'SeriesItem') SeriesItemList = Shapes::ListShape.new(name: 'SeriesItemList') ServiceNowParameters = Shapes::StructureShape.new(name: 'ServiceNowParameters') + ServiceType = Shapes::StringShape.new(name: 'ServiceType') SessionLifetimeInMinutes = Shapes::IntegerShape.new(name: 'SessionLifetimeInMinutes') SessionLifetimeInMinutesInvalidException = Shapes::StructureShape.new(name: 'SessionLifetimeInMinutesInvalidException') SessionTag = Shapes::StructureShape.new(name: 'SessionTag') @@ -1671,6 +1681,8 @@ module ClientApi UpdateGroupResponse = Shapes::StructureShape.new(name: 'UpdateGroupResponse') UpdateIAMPolicyAssignmentRequest = Shapes::StructureShape.new(name: 'UpdateIAMPolicyAssignmentRequest') UpdateIAMPolicyAssignmentResponse = Shapes::StructureShape.new(name: 'UpdateIAMPolicyAssignmentResponse') + UpdateIdentityPropagationConfigRequest = Shapes::StructureShape.new(name: 'UpdateIdentityPropagationConfigRequest') + UpdateIdentityPropagationConfigResponse = Shapes::StructureShape.new(name: 'UpdateIdentityPropagationConfigResponse') UpdateIpRestrictionRequest = Shapes::StructureShape.new(name: 'UpdateIpRestrictionRequest') UpdateIpRestrictionResponse = Shapes::StructureShape.new(name: 'UpdateIpRestrictionResponse') UpdateLinkPermissionList = Shapes::ListShape.new(name: 'UpdateLinkPermissionList') @@ -2238,6 +2250,14 @@ module ClientApi AuthorSpecifiedAggregations.member = Shapes::ShapeRef.new(shape: AuthorSpecifiedAggregation) + AuthorizedTargetsByService.add_member(:service, Shapes::ShapeRef.new(shape: ServiceType, location_name: "Service")) + AuthorizedTargetsByService.add_member(:authorized_targets, Shapes::ShapeRef.new(shape: AuthorizedTargetsList, location_name: "AuthorizedTargets")) + AuthorizedTargetsByService.struct_class = Types::AuthorizedTargetsByService + + AuthorizedTargetsByServices.member = Shapes::ShapeRef.new(shape: AuthorizedTargetsByService) + + AuthorizedTargetsList.member = Shapes::ShapeRef.new(shape: String) + AwsIotAnalyticsParameters.add_member(:data_set_name, Shapes::ShapeRef.new(shape: DataSetName, required: true, location_name: "DataSetName")) AwsIotAnalyticsParameters.struct_class = Types::AwsIotAnalyticsParameters @@ -3718,6 +3738,14 @@ module ClientApi DeleteIAMPolicyAssignmentResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) DeleteIAMPolicyAssignmentResponse.struct_class = Types::DeleteIAMPolicyAssignmentResponse + DeleteIdentityPropagationConfigRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) + DeleteIdentityPropagationConfigRequest.add_member(:service, Shapes::ShapeRef.new(shape: ServiceType, required: true, location: "uri", location_name: "Service")) + DeleteIdentityPropagationConfigRequest.struct_class = Types::DeleteIdentityPropagationConfigRequest + + DeleteIdentityPropagationConfigResponse.add_member(:request_id, Shapes::ShapeRef.new(shape: String, location_name: "RequestId")) + DeleteIdentityPropagationConfigResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) + DeleteIdentityPropagationConfigResponse.struct_class = Types::DeleteIdentityPropagationConfigResponse + DeleteNamespaceRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) DeleteNamespaceRequest.add_member(:namespace, Shapes::ShapeRef.new(shape: Namespace, required: true, location: "uri", location_name: "Namespace")) DeleteNamespaceRequest.struct_class = Types::DeleteNamespaceRequest @@ -5110,6 +5138,9 @@ module ClientApi IAMPolicyAssignmentSummaryList.member = Shapes::ShapeRef.new(shape: IAMPolicyAssignmentSummary) + IdentityCenterConfiguration.add_member(:enable_identity_propagation, Shapes::ShapeRef.new(shape: Boolean, location_name: "EnableIdentityPropagation", metadata: {"box"=>true})) + IdentityCenterConfiguration.struct_class = Types::IdentityCenterConfiguration + IdentityMap.key = Shapes::ShapeRef.new(shape: String) IdentityMap.value = Shapes::ShapeRef.new(shape: IdentityNameList) @@ -5562,6 +5593,17 @@ module ClientApi ListIAMPolicyAssignmentsResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) ListIAMPolicyAssignmentsResponse.struct_class = Types::ListIAMPolicyAssignmentsResponse + ListIdentityPropagationConfigsRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) + ListIdentityPropagationConfigsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListIdentityPropagationMaxResults, location: "querystring", location_name: "max-results", metadata: {"box"=>true})) + ListIdentityPropagationConfigsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "next-token")) + ListIdentityPropagationConfigsRequest.struct_class = Types::ListIdentityPropagationConfigsRequest + + ListIdentityPropagationConfigsResponse.add_member(:services, Shapes::ShapeRef.new(shape: AuthorizedTargetsByServices, location_name: "Services")) + ListIdentityPropagationConfigsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "NextToken")) + ListIdentityPropagationConfigsResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) + ListIdentityPropagationConfigsResponse.add_member(:request_id, Shapes::ShapeRef.new(shape: String, location_name: "RequestId")) + ListIdentityPropagationConfigsResponse.struct_class = Types::ListIdentityPropagationConfigsResponse + ListIngestionsRequest.add_member(:data_set_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "DataSetId")) ListIngestionsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "next-token")) ListIngestionsRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) @@ -6395,6 +6437,7 @@ module ClientApi RedshiftParameters.add_member(:database, Shapes::ShapeRef.new(shape: Database, required: true, location_name: "Database")) RedshiftParameters.add_member(:cluster_id, Shapes::ShapeRef.new(shape: ClusterId, location_name: "ClusterId")) RedshiftParameters.add_member(:iam_parameters, Shapes::ShapeRef.new(shape: RedshiftIAMParameters, location_name: "IAMParameters")) + RedshiftParameters.add_member(:identity_center_configuration, Shapes::ShapeRef.new(shape: IdentityCenterConfiguration, location_name: "IdentityCenterConfiguration")) RedshiftParameters.struct_class = Types::RedshiftParameters ReferenceLine.add_member(:status, Shapes::ShapeRef.new(shape: WidgetStatus, location_name: "Status")) @@ -8046,6 +8089,15 @@ module ClientApi UpdateIAMPolicyAssignmentResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) UpdateIAMPolicyAssignmentResponse.struct_class = Types::UpdateIAMPolicyAssignmentResponse + UpdateIdentityPropagationConfigRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) + UpdateIdentityPropagationConfigRequest.add_member(:service, Shapes::ShapeRef.new(shape: ServiceType, required: true, location: "uri", location_name: "Service")) + UpdateIdentityPropagationConfigRequest.add_member(:authorized_targets, Shapes::ShapeRef.new(shape: AuthorizedTargetsList, location_name: "AuthorizedTargets")) + UpdateIdentityPropagationConfigRequest.struct_class = Types::UpdateIdentityPropagationConfigRequest + + UpdateIdentityPropagationConfigResponse.add_member(:request_id, Shapes::ShapeRef.new(shape: String, location_name: "RequestId")) + UpdateIdentityPropagationConfigResponse.add_member(:status, Shapes::ShapeRef.new(shape: StatusCode, location: "statusCode", location_name: "Status")) + UpdateIdentityPropagationConfigResponse.struct_class = Types::UpdateIdentityPropagationConfigResponse + UpdateIpRestrictionRequest.add_member(:aws_account_id, Shapes::ShapeRef.new(shape: AwsAccountId, required: true, location: "uri", location_name: "AwsAccountId")) UpdateIpRestrictionRequest.add_member(:ip_restriction_rule_map, Shapes::ShapeRef.new(shape: IpRestrictionRuleMap, location_name: "IpRestrictionRuleMap")) UpdateIpRestrictionRequest.add_member(:enabled, Shapes::ShapeRef.new(shape: NullableBoolean, location_name: "Enabled")) @@ -9008,6 +9060,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalFailureException) end) + api.add_operation(:delete_identity_propagation_config, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteIdentityPropagationConfig" + o.http_method = "DELETE" + o.http_request_uri = "/accounts/{AwsAccountId}/identity-propagation-config/{Service}" + o.input = Shapes::ShapeRef.new(shape: DeleteIdentityPropagationConfigRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteIdentityPropagationConfigResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterValueException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalFailureException) + end) + api.add_operation(:delete_namespace, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteNamespace" o.http_method = "DELETE" @@ -10128,6 +10193,19 @@ module ClientApi ) end) + api.add_operation(:list_identity_propagation_configs, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListIdentityPropagationConfigs" + o.http_method = "GET" + o.http_request_uri = "/accounts/{AwsAccountId}/identity-propagation-config" + o.input = Shapes::ShapeRef.new(shape: ListIdentityPropagationConfigsRequest) + o.output = Shapes::ShapeRef.new(shape: ListIdentityPropagationConfigsResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterValueException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalFailureException) + end) + api.add_operation(:list_ingestions, Seahorse::Model::Operation.new.tap do |o| o.name = "ListIngestions" o.http_method = "GET" @@ -10902,6 +10980,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InternalFailureException) end) + api.add_operation(:update_identity_propagation_config, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateIdentityPropagationConfig" + o.http_method = "POST" + o.http_request_uri = "/accounts/{AwsAccountId}/identity-propagation-config/{Service}" + o.input = Shapes::ShapeRef.new(shape: UpdateIdentityPropagationConfigRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateIdentityPropagationConfigResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterValueException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalFailureException) + end) + api.add_operation(:update_ip_restriction, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateIpRestriction" o.http_method = "POST" diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/endpoints.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/endpoints.rb index 6ad4d34a45c..8443bc14576 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/endpoints.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/endpoints.rb @@ -502,6 +502,20 @@ def self.build(context) end end + class DeleteIdentityPropagationConfig + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::QuickSight::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class DeleteNamespace def self.build(context) unless context.config.regional_endpoint @@ -1510,6 +1524,20 @@ def self.build(context) end end + class ListIdentityPropagationConfigs + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::QuickSight::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class ListIngestions def self.build(context) unless context.config.regional_endpoint @@ -2140,6 +2168,20 @@ def self.build(context) end end + class UpdateIdentityPropagationConfig + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::QuickSight::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UpdateIpRestriction def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/plugins/endpoints.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/plugins/endpoints.rb index f323dca0a34..fb1109a5bcc 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/plugins/endpoints.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/plugins/endpoints.rb @@ -126,6 +126,8 @@ def parameters_for_operation(context) Aws::QuickSight::Endpoints::DeleteGroupMembership.build(context) when :delete_iam_policy_assignment Aws::QuickSight::Endpoints::DeleteIAMPolicyAssignment.build(context) + when :delete_identity_propagation_config + Aws::QuickSight::Endpoints::DeleteIdentityPropagationConfig.build(context) when :delete_namespace Aws::QuickSight::Endpoints::DeleteNamespace.build(context) when :delete_refresh_schedule @@ -270,6 +272,8 @@ def parameters_for_operation(context) Aws::QuickSight::Endpoints::ListIAMPolicyAssignments.build(context) when :list_iam_policy_assignments_for_user Aws::QuickSight::Endpoints::ListIAMPolicyAssignmentsForUser.build(context) + when :list_identity_propagation_configs + Aws::QuickSight::Endpoints::ListIdentityPropagationConfigs.build(context) when :list_ingestions Aws::QuickSight::Endpoints::ListIngestions.build(context) when :list_namespaces @@ -360,6 +364,8 @@ def parameters_for_operation(context) Aws::QuickSight::Endpoints::UpdateGroup.build(context) when :update_iam_policy_assignment Aws::QuickSight::Endpoints::UpdateIAMPolicyAssignment.build(context) + when :update_identity_propagation_config + Aws::QuickSight::Endpoints::UpdateIdentityPropagationConfig.build(context) when :update_ip_restriction Aws::QuickSight::Endpoints::UpdateIpRestriction.build(context) when :update_public_sharing_settings diff --git a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb index 606820bc05b..d423f5ec650 100644 --- a/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb +++ b/gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb @@ -2110,6 +2110,26 @@ class AuroraPostgreSqlParameters < Struct.new( include Aws::Structure end + # The authorized targets that are associated with a service. + # + # @!attribute [rw] service + # The name of the Amazon Web Services service. + # @return [String] + # + # @!attribute [rw] authorized_targets + # Aist of authorized targets that are represented by IAM Identity + # Center application ARNs. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/AuthorizedTargetsByService AWS API Documentation + # + class AuthorizedTargetsByService < Struct.new( + :service, + :authorized_targets) + SENSITIVE = [] + include Aws::Structure + end + # The parameters for IoT Analytics. # # @!attribute [rw] data_set_name @@ -9533,6 +9553,42 @@ class DeleteIAMPolicyAssignmentResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] aws_account_id + # The ID of the Amazon Web Services account that you want to delete an + # identity propagation configuration from. + # @return [String] + # + # @!attribute [rw] service + # The name of the Amazon Web Services service that you want to delete + # the associated access scopes and authorized targets from. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIdentityPropagationConfigRequest AWS API Documentation + # + class DeleteIdentityPropagationConfigRequest < Struct.new( + :aws_account_id, + :service) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] request_id + # The Amazon Web Services request ID for this operation. + # @return [String] + # + # @!attribute [rw] status + # The HTTP status of the request. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIdentityPropagationConfigResponse AWS API Documentation + # + class DeleteIdentityPropagationConfigResponse < Struct.new( + :request_id, + :status) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] aws_account_id # The ID for the Amazon Web Services account that you want to delete # the Amazon QuickSight namespace from. @@ -16423,6 +16479,21 @@ class IAMPolicyAssignmentSummary < Struct.new( include Aws::Structure end + # The parameters for an IAM Identity Center configuration. + # + # @!attribute [rw] enable_identity_propagation + # A Boolean option that controls whether Trusted Identity Propagation + # should be used. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/IdentityCenterConfiguration AWS API Documentation + # + class IdentityCenterConfiguration < Struct.new( + :enable_identity_propagation) + SENSITIVE = [] + include Aws::Structure + end + # The identity type specified isn't supported. Supported identity types # include `IAM` and `QUICKSIGHT`. # @@ -18605,6 +18676,59 @@ class ListIAMPolicyAssignmentsResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] aws_account_id + # The ID of the Amazon Web Services account that contain the identity + # propagation configurations of. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of results to be returned. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token for the next set of results, or null if there are no more + # results. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIdentityPropagationConfigsRequest AWS API Documentation + # + class ListIdentityPropagationConfigsRequest < Struct.new( + :aws_account_id, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] services + # A list of services and their authorized targets that the Amazon + # QuickSight IAM Identity Center application can access. + # @return [Array] + # + # @!attribute [rw] next_token + # The token for the next set of results, or null if there are no more + # results. + # @return [String] + # + # @!attribute [rw] status + # The HTTP status of the request. + # @return [Integer] + # + # @!attribute [rw] request_id + # The Amazon Web Services request ID for this operation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIdentityPropagationConfigsResponse AWS API Documentation + # + class ListIdentityPropagationConfigsResponse < Struct.new( + :services, + :next_token, + :status, + :request_id) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] data_set_id # The ID of the dataset used in the ingestion. # @return [String] @@ -22596,6 +22720,14 @@ class RedshiftIAMParameters < Struct.new( # [1]: https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DataSourceCredentials.html # @return [Types::RedshiftIAMParameters] # + # @!attribute [rw] identity_center_configuration + # An optional parameter that configures IAM Identity Center + # authentication to grant Amazon QuickSight access to your cluster. + # + # This parameter can only be specified if your Amazon QuickSight + # account is configured with IAM Identity Center. + # @return [Types::IdentityCenterConfiguration] + # # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/RedshiftParameters AWS API Documentation # class RedshiftParameters < Struct.new( @@ -22603,7 +22735,8 @@ class RedshiftParameters < Struct.new( :port, :database, :cluster_id, - :iam_parameters) + :iam_parameters, + :identity_center_configuration) SENSITIVE = [] include Aws::Structure end @@ -30829,6 +30962,48 @@ class UpdateIAMPolicyAssignmentResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] aws_account_id + # The ID of the Amazon Web Services account that contains the identity + # propagation configuration that you want to update. + # @return [String] + # + # @!attribute [rw] service + # The name of the Amazon Web Services service that contains the + # authorized targets that you want to add or update. + # @return [String] + # + # @!attribute [rw] authorized_targets + # Specifies a list of application ARNs that represent the authorized + # targets for a service. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIdentityPropagationConfigRequest AWS API Documentation + # + class UpdateIdentityPropagationConfigRequest < Struct.new( + :aws_account_id, + :service, + :authorized_targets) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] request_id + # The Amazon Web Services request ID for this operation. + # @return [String] + # + # @!attribute [rw] status + # The HTTP status of the request. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIdentityPropagationConfigResponse AWS API Documentation + # + class UpdateIdentityPropagationConfigResponse < Struct.new( + :request_id, + :status) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] aws_account_id # The ID of the Amazon Web Services account that contains the IP # rules. diff --git a/gems/aws-sdk-redshift/CHANGELOG.md b/gems/aws-sdk-redshift/CHANGELOG.md index fea16dc7788..2cda6801f76 100644 --- a/gems/aws-sdk-redshift/CHANGELOG.md +++ b/gems/aws-sdk-redshift/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.106.0 (2023-11-27) +------------------ + +* Feature - This release adds support for multi-data warehouse writes through data sharing. + 1.105.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-redshift/VERSION b/gems/aws-sdk-redshift/VERSION index e38c0a0f75c..475dce1f4d1 100644 --- a/gems/aws-sdk-redshift/VERSION +++ b/gems/aws-sdk-redshift/VERSION @@ -1 +1 @@ -1.105.0 +1.106.0 diff --git a/gems/aws-sdk-redshift/lib/aws-sdk-redshift.rb b/gems/aws-sdk-redshift/lib/aws-sdk-redshift.rb index 1db58cdb8d3..a6c7519c169 100644 --- a/gems/aws-sdk-redshift/lib/aws-sdk-redshift.rb +++ b/gems/aws-sdk-redshift/lib/aws-sdk-redshift.rb @@ -53,6 +53,6 @@ # @!group service module Aws::Redshift - GEM_VERSION = '1.105.0' + GEM_VERSION = '1.106.0' end diff --git a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client.rb b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client.rb index 6053847cff0..bb7f2984408 100644 --- a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client.rb +++ b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client.rb @@ -507,6 +507,9 @@ def add_partner(params = {}, options = {}) # existing and future namespaces in the specified Amazon Web Services # Region. # + # @option params [Boolean] :allow_writes + # If set to true, allows write operations for a datashare. + # # @return [Types::DataShare] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::DataShare#data_share_arn #data_share_arn} => String @@ -522,6 +525,7 @@ def add_partner(params = {}, options = {}) # associate_entire_account: false, # consumer_arn: "String", # consumer_region: "String", + # allow_writes: false, # }) # # @example Response structure @@ -535,6 +539,8 @@ def add_partner(params = {}, options = {}) # resp.data_share_associations[0].consumer_region #=> String # resp.data_share_associations[0].created_date #=> Time # resp.data_share_associations[0].status_change_date #=> Time + # resp.data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.managed_by #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AssociateDataShareConsumer AWS API Documentation @@ -646,6 +652,9 @@ def authorize_cluster_security_group_ingress(params = {}, options = {}) # datashare. This identifier is an Amazon Web Services account ID or a # keyword, such as ADX. # + # @option params [Boolean] :allow_writes + # If set to true, allows write operations for a datashare. + # # @return [Types::DataShare] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::DataShare#data_share_arn #data_share_arn} => String @@ -659,6 +668,7 @@ def authorize_cluster_security_group_ingress(params = {}, options = {}) # resp = client.authorize_data_share({ # data_share_arn: "String", # required # consumer_identifier: "String", # required + # allow_writes: false, # }) # # @example Response structure @@ -672,6 +682,8 @@ def authorize_cluster_security_group_ingress(params = {}, options = {}) # resp.data_share_associations[0].consumer_region #=> String # resp.data_share_associations[0].created_date #=> Time # resp.data_share_associations[0].status_change_date #=> Time + # resp.data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.managed_by #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AuthorizeDataShare AWS API Documentation @@ -3005,6 +3017,8 @@ def create_usage_limit(params = {}, options = {}) # resp.data_share_associations[0].consumer_region #=> String # resp.data_share_associations[0].created_date #=> Time # resp.data_share_associations[0].status_change_date #=> Time + # resp.data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.managed_by #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DeauthorizeDataShare AWS API Documentation @@ -5035,6 +5049,8 @@ def describe_custom_domain_associations(params = {}, options = {}) # resp.data_shares[0].data_share_associations[0].consumer_region #=> String # resp.data_shares[0].data_share_associations[0].created_date #=> Time # resp.data_shares[0].data_share_associations[0].status_change_date #=> Time + # resp.data_shares[0].data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_shares[0].data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.data_shares[0].managed_by #=> String # resp.marker #=> String # @@ -5103,6 +5119,8 @@ def describe_data_shares(params = {}, options = {}) # resp.data_shares[0].data_share_associations[0].consumer_region #=> String # resp.data_shares[0].data_share_associations[0].created_date #=> Time # resp.data_shares[0].data_share_associations[0].status_change_date #=> Time + # resp.data_shares[0].data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_shares[0].data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.data_shares[0].managed_by #=> String # resp.marker #=> String # @@ -5171,6 +5189,8 @@ def describe_data_shares_for_consumer(params = {}, options = {}) # resp.data_shares[0].data_share_associations[0].consumer_region #=> String # resp.data_shares[0].data_share_associations[0].created_date #=> Time # resp.data_shares[0].data_share_associations[0].status_change_date #=> Time + # resp.data_shares[0].data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_shares[0].data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.data_shares[0].managed_by #=> String # resp.marker #=> String # @@ -7430,6 +7450,8 @@ def disable_snapshot_copy(params = {}, options = {}) # resp.data_share_associations[0].consumer_region #=> String # resp.data_share_associations[0].created_date #=> Time # resp.data_share_associations[0].status_change_date #=> Time + # resp.data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.managed_by #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DisassociateDataShareConsumer AWS API Documentation @@ -10768,6 +10790,8 @@ def reboot_cluster(params = {}, options = {}) # resp.data_share_associations[0].consumer_region #=> String # resp.data_share_associations[0].created_date #=> Time # resp.data_share_associations[0].status_change_date #=> Time + # resp.data_share_associations[0].producer_allowed_writes #=> Boolean + # resp.data_share_associations[0].consumer_accepted_writes #=> Boolean # resp.managed_by #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/RejectDataShare AWS API Documentation @@ -12261,7 +12285,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-redshift' - context[:gem_version] = '1.105.0' + context[:gem_version] = '1.106.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client_api.rb b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client_api.rb index 1a885807cc7..e5c437d8387 100644 --- a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client_api.rb +++ b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/client_api.rb @@ -633,6 +633,7 @@ module ClientApi AssociateDataShareConsumerMessage.add_member(:associate_entire_account, Shapes::ShapeRef.new(shape: BooleanOptional, location_name: "AssociateEntireAccount")) AssociateDataShareConsumerMessage.add_member(:consumer_arn, Shapes::ShapeRef.new(shape: String, location_name: "ConsumerArn")) AssociateDataShareConsumerMessage.add_member(:consumer_region, Shapes::ShapeRef.new(shape: String, location_name: "ConsumerRegion")) + AssociateDataShareConsumerMessage.add_member(:allow_writes, Shapes::ShapeRef.new(shape: BooleanOptional, location_name: "AllowWrites")) AssociateDataShareConsumerMessage.struct_class = Types::AssociateDataShareConsumerMessage AssociatedClusterList.member = Shapes::ShapeRef.new(shape: ClusterAssociatedToSchedule, location_name: "ClusterAssociatedToSchedule") @@ -682,6 +683,7 @@ module ClientApi AuthorizeDataShareMessage.add_member(:data_share_arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "DataShareArn")) AuthorizeDataShareMessage.add_member(:consumer_identifier, Shapes::ShapeRef.new(shape: String, required: true, location_name: "ConsumerIdentifier")) + AuthorizeDataShareMessage.add_member(:allow_writes, Shapes::ShapeRef.new(shape: BooleanOptional, location_name: "AllowWrites")) AuthorizeDataShareMessage.struct_class = Types::AuthorizeDataShareMessage AuthorizeEndpointAccessMessage.add_member(:cluster_identifier, Shapes::ShapeRef.new(shape: String, location_name: "ClusterIdentifier")) @@ -1199,6 +1201,8 @@ module ClientApi DataShareAssociation.add_member(:consumer_region, Shapes::ShapeRef.new(shape: String, location_name: "ConsumerRegion")) DataShareAssociation.add_member(:created_date, Shapes::ShapeRef.new(shape: TStamp, location_name: "CreatedDate")) DataShareAssociation.add_member(:status_change_date, Shapes::ShapeRef.new(shape: TStamp, location_name: "StatusChangeDate")) + DataShareAssociation.add_member(:producer_allowed_writes, Shapes::ShapeRef.new(shape: BooleanOptional, location_name: "ProducerAllowedWrites")) + DataShareAssociation.add_member(:consumer_accepted_writes, Shapes::ShapeRef.new(shape: BooleanOptional, location_name: "ConsumerAcceptedWrites")) DataShareAssociation.struct_class = Types::DataShareAssociation DataShareAssociationList.member = Shapes::ShapeRef.new(shape: DataShareAssociation) diff --git a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb index 98b4021babe..1972109c401 100644 --- a/gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb +++ b/gems/aws-sdk-redshift/lib/aws-sdk-redshift/types.rb @@ -152,13 +152,18 @@ class AquaConfiguration < Struct.new( # Region. # @return [String] # + # @!attribute [rw] allow_writes + # If set to true, allows write operations for a datashare. + # @return [Boolean] + # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AssociateDataShareConsumerMessage AWS API Documentation # class AssociateDataShareConsumerMessage < Struct.new( :data_share_arn, :associate_entire_account, :consumer_arn, - :consumer_region) + :consumer_region, + :allow_writes) SENSITIVE = [] include Aws::Structure end @@ -320,11 +325,16 @@ class AuthorizeClusterSecurityGroupIngressResult < Struct.new( # keyword, such as ADX. # @return [String] # + # @!attribute [rw] allow_writes + # If set to true, allows write operations for a datashare. + # @return [Boolean] + # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AuthorizeDataShareMessage AWS API Documentation # class AuthorizeDataShareMessage < Struct.new( :data_share_arn, - :consumer_identifier) + :consumer_identifier, + :allow_writes) SENSITIVE = [] include Aws::Structure end @@ -3281,6 +3291,16 @@ class DataShare < Struct.new( # The status change data of the datashare that is associated. # @return [Time] # + # @!attribute [rw] producer_allowed_writes + # Specifies whether write operations were allowed during data share + # authorization. + # @return [Boolean] + # + # @!attribute [rw] consumer_accepted_writes + # Specifies whether write operations were allowed during data share + # association. + # @return [Boolean] + # # @see http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DataShareAssociation AWS API Documentation # class DataShareAssociation < Struct.new( @@ -3288,7 +3308,9 @@ class DataShareAssociation < Struct.new( :status, :consumer_region, :created_date, - :status_change_date) + :status_change_date, + :producer_allowed_writes, + :consumer_accepted_writes) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-repostspace/CHANGELOG.md b/gems/aws-sdk-repostspace/CHANGELOG.md new file mode 100644 index 00000000000..01723e2d1b0 --- /dev/null +++ b/gems/aws-sdk-repostspace/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-repostspace`. + diff --git a/gems/aws-sdk-repostspace/LICENSE.txt b/gems/aws-sdk-repostspace/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-repostspace/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-repostspace/VERSION b/gems/aws-sdk-repostspace/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-repostspace/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-repostspace/aws-sdk-repostspace.gemspec b/gems/aws-sdk-repostspace/aws-sdk-repostspace.gemspec new file mode 100644 index 00000000000..656188d544a --- /dev/null +++ b/gems/aws-sdk-repostspace/aws-sdk-repostspace.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-repostspace' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - AWS re:Post Private' + spec.description = 'Official AWS Ruby gem for AWS re:Post Private. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-repostspace', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-repostspace/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-repostspace/features/env.rb b/gems/aws-sdk-repostspace/features/env.rb new file mode 100644 index 00000000000..fb6fa6bba71 --- /dev/null +++ b/gems/aws-sdk-repostspace/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-repostspace' + +Aws::Repostspace::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-repostspace/features/step_definitions.rb b/gems/aws-sdk-repostspace/features/step_definitions.rb new file mode 100644 index 00000000000..e102145bb0e --- /dev/null +++ b/gems/aws-sdk-repostspace/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@repostspace") do + @service = Aws::Repostspace::Resource.new + @client = @service.client +end + +After("@repostspace") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace.rb new file mode 100644 index 00000000000..ef2fbf92f00 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-repostspace/types' +require_relative 'aws-sdk-repostspace/client_api' +require_relative 'aws-sdk-repostspace/plugins/endpoints.rb' +require_relative 'aws-sdk-repostspace/client' +require_relative 'aws-sdk-repostspace/errors' +require_relative 'aws-sdk-repostspace/resource' +require_relative 'aws-sdk-repostspace/endpoint_parameters' +require_relative 'aws-sdk-repostspace/endpoint_provider' +require_relative 'aws-sdk-repostspace/endpoints' +require_relative 'aws-sdk-repostspace/customizations' + +# This module provides support for AWS re:Post Private. This module is available in the +# `aws-sdk-repostspace` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# repostspace = Aws::Repostspace::Client.new +# resp = repostspace.create_space(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from AWS re:Post Private are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::Repostspace::Errors::ServiceError +# # rescues all AWS re:Post Private API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::Repostspace + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client.rb new file mode 100644 index 00000000000..21434674b9f --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client.rb @@ -0,0 +1,848 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/rest_json.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:repostspace) + +module Aws::Repostspace + # An API client for Repostspace. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::Repostspace::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :repostspace + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::RestJson) + add_plugin(Aws::Repostspace::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::Repostspace::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::Repostspace::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # Creates an AWS re:Post Private private re:Post. + # + # @option params [String] :description + # A description for the private re:Post. This is used only to help you + # identify this private re:Post. + # + # @option params [required, String] :name + # The name for the private re:Post. This must be unique in your account. + # + # @option params [String] :role_arn + # The IAM role that grants permissions to the private re:Post to convert + # unanswered questions into AWS support tickets. + # + # @option params [required, String] :subdomain + # The subdomain that you use to access your AWS re:Post Private private + # re:Post. All custom subdomains must be approved by AWS before use. In + # addition to your custom subdomain, all private re:Posts are issued an + # AWS generated subdomain for immediate use. + # + # @option params [Hash] :tags + # The list of tags associated with the private re:Post. + # + # @option params [required, String] :tier + # The pricing tier for the private re:Post. + # + # @option params [String] :user_kms_key + # The AWS KMS key ARN that’s used for the AWS KMS encryption. If you + # don't provide a key, your data is encrypted by default with a key + # that AWS owns and manages for you. + # + # @return [Types::CreateSpaceOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateSpaceOutput#space_id #space_id} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_space({ + # description: "SpaceDescription", + # name: "SpaceName", # required + # role_arn: "Arn", + # subdomain: "SpaceSubdomain", # required + # tags: { + # "TagKey" => "TagValue", + # }, + # tier: "BASIC", # required, accepts BASIC, STANDARD + # user_kms_key: "KMSKey", + # }) + # + # @example Response structure + # + # resp.space_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/CreateSpace AWS API Documentation + # + # @overload create_space(params = {}) + # @param [Hash] params ({}) + def create_space(params = {}, options = {}) + req = build_request(:create_space, params) + req.send_request(options) + end + + # Deletes an AWS re:Post Private private re:Post. + # + # @option params [required, String] :space_id + # The unique ID of the private re:Post. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_space({ + # space_id: "SpaceId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/DeleteSpace AWS API Documentation + # + # @overload delete_space(params = {}) + # @param [Hash] params ({}) + def delete_space(params = {}, options = {}) + req = build_request(:delete_space, params) + req.send_request(options) + end + + # Removes the user or group from the list of administrators of the + # private re:Post. + # + # @option params [required, String] :admin_id + # The ID of the admin to remove. + # + # @option params [required, String] :space_id + # The ID of the private re:Post to remove the admin from. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.deregister_admin({ + # admin_id: "AdminId", # required + # space_id: "SpaceId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/DeregisterAdmin AWS API Documentation + # + # @overload deregister_admin(params = {}) + # @param [Hash] params ({}) + def deregister_admin(params = {}, options = {}) + req = build_request(:deregister_admin, params) + req.send_request(options) + end + + # Displays information about the AWS re:Post Private private re:Post. + # + # @option params [required, String] :space_id + # The ID of the private re:Post. + # + # @return [Types::GetSpaceOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetSpaceOutput#arn #arn} => String + # * {Types::GetSpaceOutput#client_id #client_id} => String + # * {Types::GetSpaceOutput#configuration_status #configuration_status} => String + # * {Types::GetSpaceOutput#content_size #content_size} => Integer + # * {Types::GetSpaceOutput#create_date_time #create_date_time} => Time + # * {Types::GetSpaceOutput#customer_role_arn #customer_role_arn} => String + # * {Types::GetSpaceOutput#delete_date_time #delete_date_time} => Time + # * {Types::GetSpaceOutput#description #description} => String + # * {Types::GetSpaceOutput#group_admins #group_admins} => Array<String> + # * {Types::GetSpaceOutput#name #name} => String + # * {Types::GetSpaceOutput#random_domain #random_domain} => String + # * {Types::GetSpaceOutput#space_id #space_id} => String + # * {Types::GetSpaceOutput#status #status} => String + # * {Types::GetSpaceOutput#storage_limit #storage_limit} => Integer + # * {Types::GetSpaceOutput#tier #tier} => String + # * {Types::GetSpaceOutput#user_admins #user_admins} => Array<String> + # * {Types::GetSpaceOutput#user_count #user_count} => Integer + # * {Types::GetSpaceOutput#user_kms_key #user_kms_key} => String + # * {Types::GetSpaceOutput#vanity_domain #vanity_domain} => String + # * {Types::GetSpaceOutput#vanity_domain_status #vanity_domain_status} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_space({ + # space_id: "SpaceId", # required + # }) + # + # @example Response structure + # + # resp.arn #=> String + # resp.client_id #=> String + # resp.configuration_status #=> String, one of "CONFIGURED", "UNCONFIGURED" + # resp.content_size #=> Integer + # resp.create_date_time #=> Time + # resp.customer_role_arn #=> String + # resp.delete_date_time #=> Time + # resp.description #=> String + # resp.group_admins #=> Array + # resp.group_admins[0] #=> String + # resp.name #=> String + # resp.random_domain #=> String + # resp.space_id #=> String + # resp.status #=> String + # resp.storage_limit #=> Integer + # resp.tier #=> String, one of "BASIC", "STANDARD" + # resp.user_admins #=> Array + # resp.user_admins[0] #=> String + # resp.user_count #=> Integer + # resp.user_kms_key #=> String + # resp.vanity_domain #=> String + # resp.vanity_domain_status #=> String, one of "PENDING", "APPROVED", "UNAPPROVED" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/GetSpace AWS API Documentation + # + # @overload get_space(params = {}) + # @param [Hash] params ({}) + def get_space(params = {}, options = {}) + req = build_request(:get_space, params) + req.send_request(options) + end + + # Returns a list of AWS re:Post Private private re:Posts in the account + # with some information about each private re:Post. + # + # @option params [Integer] :max_results + # The maximum number of private re:Posts to include in the results. + # + # @option params [String] :next_token + # The token for the next set of private re:Posts to return. You receive + # this token from a previous ListSpaces operation. + # + # @return [Types::ListSpacesOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListSpacesOutput#next_token #next_token} => String + # * {Types::ListSpacesOutput#spaces #spaces} => Array<Types::SpaceData> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_spaces({ + # max_results: 1, + # next_token: "String", + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.spaces #=> Array + # resp.spaces[0].arn #=> String + # resp.spaces[0].configuration_status #=> String, one of "CONFIGURED", "UNCONFIGURED" + # resp.spaces[0].content_size #=> Integer + # resp.spaces[0].create_date_time #=> Time + # resp.spaces[0].delete_date_time #=> Time + # resp.spaces[0].description #=> String + # resp.spaces[0].name #=> String + # resp.spaces[0].random_domain #=> String + # resp.spaces[0].space_id #=> String + # resp.spaces[0].status #=> String + # resp.spaces[0].storage_limit #=> Integer + # resp.spaces[0].tier #=> String, one of "BASIC", "STANDARD" + # resp.spaces[0].user_count #=> Integer + # resp.spaces[0].user_kms_key #=> String + # resp.spaces[0].vanity_domain #=> String + # resp.spaces[0].vanity_domain_status #=> String, one of "PENDING", "APPROVED", "UNAPPROVED" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListSpaces AWS API Documentation + # + # @overload list_spaces(params = {}) + # @param [Hash] params ({}) + def list_spaces(params = {}, options = {}) + req = build_request(:list_spaces, params) + req.send_request(options) + end + + # Returns the tags that are associated with the AWS re:Post Private + # resource specified by the resourceArn. The only resource that can be + # tagged is a private re:Post. + # + # @option params [required, String] :resource_arn + # The ARN of the resource that the tags are associated with. + # + # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListTagsForResourceResponse#tags #tags} => Hash<String,String> + # + # @example Request syntax with placeholder values + # + # resp = client.list_tags_for_resource({ + # resource_arn: "Arn", # required + # }) + # + # @example Response structure + # + # resp.tags #=> Hash + # resp.tags["TagKey"] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListTagsForResource AWS API Documentation + # + # @overload list_tags_for_resource(params = {}) + # @param [Hash] params ({}) + def list_tags_for_resource(params = {}, options = {}) + req = build_request(:list_tags_for_resource, params) + req.send_request(options) + end + + # Adds a user or group to the list of administrators of the private + # re:Post. + # + # @option params [required, String] :admin_id + # The ID of the administrator. + # + # @option params [required, String] :space_id + # The ID of the private re:Post. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.register_admin({ + # admin_id: "AdminId", # required + # space_id: "SpaceId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/RegisterAdmin AWS API Documentation + # + # @overload register_admin(params = {}) + # @param [Hash] params ({}) + def register_admin(params = {}, options = {}) + req = build_request(:register_admin, params) + req.send_request(options) + end + + # Sends an invitation email to selected users and groups. + # + # @option params [required, Array] :accessor_ids + # The array of identifiers for the users and groups. + # + # @option params [required, String] :body + # The body of the invite. + # + # @option params [required, String] :space_id + # The ID of the private re:Post. + # + # @option params [required, String] :title + # The title of the invite. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.send_invites({ + # accessor_ids: ["AccessorId"], # required + # body: "InviteBody", # required + # space_id: "SpaceId", # required + # title: "InviteTitle", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/SendInvites AWS API Documentation + # + # @overload send_invites(params = {}) + # @param [Hash] params ({}) + def send_invites(params = {}, options = {}) + req = build_request(:send_invites, params) + req.send_request(options) + end + + # Associates tags with an AWS re:Post Private resource. Currently, the + # only resource that can be tagged is the private re:Post. If you + # specify a new tag key for the resource, the tag is appended to the + # list of tags that are associated with the resource. If you specify a + # tag key that’s already associated with the resource, the new tag value + # that you specify replaces the previous value for that tag. + # + # @option params [required, String] :resource_arn + # The ARN of the resource that the tag is associated with. + # + # @option params [required, Hash] :tags + # The list of tag keys and values that must be associated with the + # resource. You can associate tag keys only, tags (key and values) only, + # or a combination of tag keys and tags. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.tag_resource({ + # resource_arn: "Arn", # required + # tags: { # required + # "TagKey" => "TagValue", + # }, + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/TagResource AWS API Documentation + # + # @overload tag_resource(params = {}) + # @param [Hash] params ({}) + def tag_resource(params = {}, options = {}) + req = build_request(:tag_resource, params) + req.send_request(options) + end + + # Removes the association of the tag with the AWS re:Post Private + # resource. + # + # @option params [required, String] :resource_arn + # The ARN of the resource. + # + # @option params [required, Array] :tag_keys + # The key values of the tag. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.untag_resource({ + # resource_arn: "Arn", # required + # tag_keys: ["TagKey"], # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/UntagResource AWS API Documentation + # + # @overload untag_resource(params = {}) + # @param [Hash] params ({}) + def untag_resource(params = {}, options = {}) + req = build_request(:untag_resource, params) + req.send_request(options) + end + + # Modifies an existing AWS re:Post Private private re:Post. + # + # @option params [String] :description + # A description for the private re:Post. This is used only to help you + # identify this private re:Post. + # + # @option params [String] :role_arn + # The IAM role that grants permissions to the private re:Post to convert + # unanswered questions into AWS support tickets. + # + # @option params [required, String] :space_id + # The unique ID of this private re:Post. + # + # @option params [String] :tier + # The pricing tier of this private re:Post. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_space({ + # description: "SpaceDescription", + # role_arn: "Arn", + # space_id: "SpaceId", # required + # tier: "BASIC", # accepts BASIC, STANDARD + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/UpdateSpace AWS API Documentation + # + # @overload update_space(params = {}) + # @param [Hash] params ({}) + def update_space(params = {}, options = {}) + req = build_request(:update_space, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-repostspace' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client_api.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client_api.rb new file mode 100644 index 00000000000..f933503025c --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/client_api.rb @@ -0,0 +1,405 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + # @api private + module ClientApi + + include Seahorse::Model + + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') + AccessorId = Shapes::StringShape.new(name: 'AccessorId') + AccessorIdList = Shapes::ListShape.new(name: 'AccessorIdList') + AdminId = Shapes::StringShape.new(name: 'AdminId') + Arn = Shapes::StringShape.new(name: 'Arn') + ClientId = Shapes::StringShape.new(name: 'ClientId') + ConfigurationStatus = Shapes::StringShape.new(name: 'ConfigurationStatus') + ConflictException = Shapes::StructureShape.new(name: 'ConflictException') + ContentSize = Shapes::IntegerShape.new(name: 'ContentSize') + CreateSpaceInput = Shapes::StructureShape.new(name: 'CreateSpaceInput') + CreateSpaceOutput = Shapes::StructureShape.new(name: 'CreateSpaceOutput') + DeleteSpaceInput = Shapes::StructureShape.new(name: 'DeleteSpaceInput') + DeregisterAdminInput = Shapes::StructureShape.new(name: 'DeregisterAdminInput') + GetSpaceInput = Shapes::StructureShape.new(name: 'GetSpaceInput') + GetSpaceOutput = Shapes::StructureShape.new(name: 'GetSpaceOutput') + GroupAdmins = Shapes::ListShape.new(name: 'GroupAdmins') + Integer = Shapes::IntegerShape.new(name: 'Integer') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + InviteBody = Shapes::StringShape.new(name: 'InviteBody') + InviteTitle = Shapes::StringShape.new(name: 'InviteTitle') + KMSKey = Shapes::StringShape.new(name: 'KMSKey') + ListSpacesInput = Shapes::StructureShape.new(name: 'ListSpacesInput') + ListSpacesLimit = Shapes::IntegerShape.new(name: 'ListSpacesLimit') + ListSpacesOutput = Shapes::StructureShape.new(name: 'ListSpacesOutput') + ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') + ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') + ProvisioningStatus = Shapes::StringShape.new(name: 'ProvisioningStatus') + RegisterAdminInput = Shapes::StructureShape.new(name: 'RegisterAdminInput') + ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + SendInvitesInput = Shapes::StructureShape.new(name: 'SendInvitesInput') + ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') + SpaceData = Shapes::StructureShape.new(name: 'SpaceData') + SpaceDescription = Shapes::StringShape.new(name: 'SpaceDescription') + SpaceId = Shapes::StringShape.new(name: 'SpaceId') + SpaceName = Shapes::StringShape.new(name: 'SpaceName') + SpaceSubdomain = Shapes::StringShape.new(name: 'SpaceSubdomain') + SpacesList = Shapes::ListShape.new(name: 'SpacesList') + StorageLimit = Shapes::IntegerShape.new(name: 'StorageLimit') + String = Shapes::StringShape.new(name: 'String') + SyntheticTimestamp_date_time = Shapes::TimestampShape.new(name: 'SyntheticTimestamp_date_time', timestampFormat: "iso8601") + TagKey = Shapes::StringShape.new(name: 'TagKey') + TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') + TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest') + TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse') + TagValue = Shapes::StringShape.new(name: 'TagValue') + Tags = Shapes::MapShape.new(name: 'Tags') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + TierLevel = Shapes::StringShape.new(name: 'TierLevel') + UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') + UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') + UpdateSpaceInput = Shapes::StructureShape.new(name: 'UpdateSpaceInput') + Url = Shapes::StringShape.new(name: 'Url') + UserAdmins = Shapes::ListShape.new(name: 'UserAdmins') + UserCount = Shapes::IntegerShape.new(name: 'UserCount') + ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + ValidationExceptionField = Shapes::StructureShape.new(name: 'ValidationExceptionField') + ValidationExceptionFieldList = Shapes::ListShape.new(name: 'ValidationExceptionFieldList') + ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason') + VanityDomainStatus = Shapes::StringShape.new(name: 'VanityDomainStatus') + + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + AccessDeniedException.struct_class = Types::AccessDeniedException + + AccessorIdList.member = Shapes::ShapeRef.new(shape: AccessorId) + + ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ConflictException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) + ConflictException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType")) + ConflictException.struct_class = Types::ConflictException + + CreateSpaceInput.add_member(:description, Shapes::ShapeRef.new(shape: SpaceDescription, location_name: "description")) + CreateSpaceInput.add_member(:name, Shapes::ShapeRef.new(shape: SpaceName, required: true, location_name: "name")) + CreateSpaceInput.add_member(:role_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "roleArn")) + CreateSpaceInput.add_member(:subdomain, Shapes::ShapeRef.new(shape: SpaceSubdomain, required: true, location_name: "subdomain")) + CreateSpaceInput.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + CreateSpaceInput.add_member(:tier, Shapes::ShapeRef.new(shape: TierLevel, required: true, location_name: "tier")) + CreateSpaceInput.add_member(:user_kms_key, Shapes::ShapeRef.new(shape: KMSKey, location_name: "userKMSKey")) + CreateSpaceInput.struct_class = Types::CreateSpaceInput + + CreateSpaceOutput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location_name: "spaceId")) + CreateSpaceOutput.struct_class = Types::CreateSpaceOutput + + DeleteSpaceInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + DeleteSpaceInput.struct_class = Types::DeleteSpaceInput + + DeregisterAdminInput.add_member(:admin_id, Shapes::ShapeRef.new(shape: AdminId, required: true, location: "uri", location_name: "adminId")) + DeregisterAdminInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + DeregisterAdminInput.struct_class = Types::DeregisterAdminInput + + GetSpaceInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + GetSpaceInput.struct_class = Types::GetSpaceInput + + GetSpaceOutput.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "arn")) + GetSpaceOutput.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, required: true, location_name: "clientId")) + GetSpaceOutput.add_member(:configuration_status, Shapes::ShapeRef.new(shape: ConfigurationStatus, required: true, location_name: "configurationStatus")) + GetSpaceOutput.add_member(:content_size, Shapes::ShapeRef.new(shape: ContentSize, location_name: "contentSize")) + GetSpaceOutput.add_member(:create_date_time, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, required: true, location_name: "createDateTime")) + GetSpaceOutput.add_member(:customer_role_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "customerRoleArn")) + GetSpaceOutput.add_member(:delete_date_time, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "deleteDateTime")) + GetSpaceOutput.add_member(:description, Shapes::ShapeRef.new(shape: SpaceDescription, location_name: "description")) + GetSpaceOutput.add_member(:group_admins, Shapes::ShapeRef.new(shape: GroupAdmins, location_name: "groupAdmins")) + GetSpaceOutput.add_member(:name, Shapes::ShapeRef.new(shape: SpaceName, required: true, location_name: "name")) + GetSpaceOutput.add_member(:random_domain, Shapes::ShapeRef.new(shape: Url, required: true, location_name: "randomDomain")) + GetSpaceOutput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location_name: "spaceId")) + GetSpaceOutput.add_member(:status, Shapes::ShapeRef.new(shape: ProvisioningStatus, required: true, location_name: "status")) + GetSpaceOutput.add_member(:storage_limit, Shapes::ShapeRef.new(shape: StorageLimit, required: true, location_name: "storageLimit")) + GetSpaceOutput.add_member(:tier, Shapes::ShapeRef.new(shape: TierLevel, required: true, location_name: "tier")) + GetSpaceOutput.add_member(:user_admins, Shapes::ShapeRef.new(shape: UserAdmins, location_name: "userAdmins")) + GetSpaceOutput.add_member(:user_count, Shapes::ShapeRef.new(shape: UserCount, location_name: "userCount")) + GetSpaceOutput.add_member(:user_kms_key, Shapes::ShapeRef.new(shape: KMSKey, location_name: "userKMSKey")) + GetSpaceOutput.add_member(:vanity_domain, Shapes::ShapeRef.new(shape: Url, required: true, location_name: "vanityDomain")) + GetSpaceOutput.add_member(:vanity_domain_status, Shapes::ShapeRef.new(shape: VanityDomainStatus, required: true, location_name: "vanityDomainStatus")) + GetSpaceOutput.struct_class = Types::GetSpaceOutput + + GroupAdmins.member = Shapes::ShapeRef.new(shape: AdminId) + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + InternalServerException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: Integer, location: "header", location_name: "Retry-After")) + InternalServerException.struct_class = Types::InternalServerException + + ListSpacesInput.add_member(:max_results, Shapes::ShapeRef.new(shape: ListSpacesLimit, location: "querystring", location_name: "maxResults")) + ListSpacesInput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken")) + ListSpacesInput.struct_class = Types::ListSpacesInput + + ListSpacesOutput.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken")) + ListSpacesOutput.add_member(:spaces, Shapes::ShapeRef.new(shape: SpacesList, required: true, location_name: "spaces")) + ListSpacesOutput.struct_class = Types::ListSpacesOutput + + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location: "uri", location_name: "resourceArn")) + ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest + + ListTagsForResourceResponse.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags")) + ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse + + RegisterAdminInput.add_member(:admin_id, Shapes::ShapeRef.new(shape: AdminId, required: true, location: "uri", location_name: "adminId")) + RegisterAdminInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + RegisterAdminInput.struct_class = Types::RegisterAdminInput + + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ResourceNotFoundException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) + ResourceNotFoundException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType")) + ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + + SendInvitesInput.add_member(:accessor_ids, Shapes::ShapeRef.new(shape: AccessorIdList, required: true, location_name: "accessorIds")) + SendInvitesInput.add_member(:body, Shapes::ShapeRef.new(shape: InviteBody, required: true, location_name: "body")) + SendInvitesInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + SendInvitesInput.add_member(:title, Shapes::ShapeRef.new(shape: InviteTitle, required: true, location_name: "title")) + SendInvitesInput.struct_class = Types::SendInvitesInput + + ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ServiceQuotaExceededException.add_member(:quota_code, Shapes::ShapeRef.new(shape: String, required: true, location_name: "quotaCode")) + ServiceQuotaExceededException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId")) + ServiceQuotaExceededException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType")) + ServiceQuotaExceededException.add_member(:service_code, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceCode")) + ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException + + SpaceData.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "arn")) + SpaceData.add_member(:configuration_status, Shapes::ShapeRef.new(shape: ConfigurationStatus, required: true, location_name: "configurationStatus")) + SpaceData.add_member(:content_size, Shapes::ShapeRef.new(shape: ContentSize, location_name: "contentSize")) + SpaceData.add_member(:create_date_time, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, required: true, location_name: "createDateTime")) + SpaceData.add_member(:delete_date_time, Shapes::ShapeRef.new(shape: SyntheticTimestamp_date_time, location_name: "deleteDateTime")) + SpaceData.add_member(:description, Shapes::ShapeRef.new(shape: SpaceDescription, location_name: "description")) + SpaceData.add_member(:name, Shapes::ShapeRef.new(shape: SpaceName, required: true, location_name: "name")) + SpaceData.add_member(:random_domain, Shapes::ShapeRef.new(shape: Url, required: true, location_name: "randomDomain")) + SpaceData.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location_name: "spaceId")) + SpaceData.add_member(:status, Shapes::ShapeRef.new(shape: ProvisioningStatus, required: true, location_name: "status")) + SpaceData.add_member(:storage_limit, Shapes::ShapeRef.new(shape: StorageLimit, required: true, location_name: "storageLimit")) + SpaceData.add_member(:tier, Shapes::ShapeRef.new(shape: TierLevel, required: true, location_name: "tier")) + SpaceData.add_member(:user_count, Shapes::ShapeRef.new(shape: UserCount, location_name: "userCount")) + SpaceData.add_member(:user_kms_key, Shapes::ShapeRef.new(shape: KMSKey, location_name: "userKMSKey")) + SpaceData.add_member(:vanity_domain, Shapes::ShapeRef.new(shape: Url, required: true, location_name: "vanityDomain")) + SpaceData.add_member(:vanity_domain_status, Shapes::ShapeRef.new(shape: VanityDomainStatus, required: true, location_name: "vanityDomainStatus")) + SpaceData.struct_class = Types::SpaceData + + SpacesList.member = Shapes::ShapeRef.new(shape: SpaceData) + + TagKeyList.member = Shapes::ShapeRef.new(shape: TagKey) + + TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location: "uri", location_name: "resourceArn")) + TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, required: true, location_name: "tags")) + TagResourceRequest.struct_class = Types::TagResourceRequest + + TagResourceResponse.struct_class = Types::TagResourceResponse + + Tags.key = Shapes::ShapeRef.new(shape: TagKey) + Tags.value = Shapes::ShapeRef.new(shape: TagValue) + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ThrottlingException.add_member(:quota_code, Shapes::ShapeRef.new(shape: String, location_name: "quotaCode")) + ThrottlingException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: Integer, location: "header", location_name: "Retry-After")) + ThrottlingException.add_member(:service_code, Shapes::ShapeRef.new(shape: String, location_name: "serviceCode")) + ThrottlingException.struct_class = Types::ThrottlingException + + UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location: "uri", location_name: "resourceArn")) + UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeyList, required: true, location: "querystring", location_name: "tagKeys")) + UntagResourceRequest.struct_class = Types::UntagResourceRequest + + UntagResourceResponse.struct_class = Types::UntagResourceResponse + + UpdateSpaceInput.add_member(:description, Shapes::ShapeRef.new(shape: SpaceDescription, location_name: "description")) + UpdateSpaceInput.add_member(:role_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "roleArn")) + UpdateSpaceInput.add_member(:space_id, Shapes::ShapeRef.new(shape: SpaceId, required: true, location: "uri", location_name: "spaceId")) + UpdateSpaceInput.add_member(:tier, Shapes::ShapeRef.new(shape: TierLevel, location_name: "tier")) + UpdateSpaceInput.struct_class = Types::UpdateSpaceInput + + UserAdmins.member = Shapes::ShapeRef.new(shape: AdminId) + + ValidationException.add_member(:field_list, Shapes::ShapeRef.new(shape: ValidationExceptionFieldList, location_name: "fieldList")) + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, required: true, location_name: "reason")) + ValidationException.struct_class = Types::ValidationException + + ValidationExceptionField.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message")) + ValidationExceptionField.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "name")) + ValidationExceptionField.struct_class = Types::ValidationExceptionField + + ValidationExceptionFieldList.member = Shapes::ShapeRef.new(shape: ValidationExceptionField) + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2022-05-13" + + api.metadata = { + "apiVersion" => "2022-05-13", + "endpointPrefix" => "repostspace", + "jsonVersion" => "1.1", + "protocol" => "rest-json", + "serviceFullName" => "AWS re:Post Private", + "serviceId" => "repostspace", + "signatureVersion" => "v4", + "signingName" => "repostspace", + "uid" => "repostspace-2022-05-13", + } + + api.add_operation(:create_space, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateSpace" + o.http_method = "POST" + o.http_request_uri = "/spaces" + o.input = Shapes::ShapeRef.new(shape: CreateSpaceInput) + o.output = Shapes::ShapeRef.new(shape: CreateSpaceOutput) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:delete_space, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteSpace" + o.http_method = "DELETE" + o.http_request_uri = "/spaces/{spaceId}" + o.input = Shapes::ShapeRef.new(shape: DeleteSpaceInput) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:deregister_admin, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeregisterAdmin" + o.http_method = "DELETE" + o.http_request_uri = "/spaces/{spaceId}/admins/{adminId}" + o.input = Shapes::ShapeRef.new(shape: DeregisterAdminInput) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:get_space, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetSpace" + o.http_method = "GET" + o.http_request_uri = "/spaces/{spaceId}" + o.input = Shapes::ShapeRef.new(shape: GetSpaceInput) + o.output = Shapes::ShapeRef.new(shape: GetSpaceOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:list_spaces, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListSpaces" + o.http_method = "GET" + o.http_request_uri = "/spaces" + o.input = Shapes::ShapeRef.new(shape: ListSpacesInput) + o.output = Shapes::ShapeRef.new(shape: ListSpacesOutput) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListTagsForResource" + o.http_method = "GET" + o.http_request_uri = "/tags/{resourceArn}" + o.input = Shapes::ShapeRef.new(shape: ListTagsForResourceRequest) + o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:register_admin, Seahorse::Model::Operation.new.tap do |o| + o.name = "RegisterAdmin" + o.http_method = "POST" + o.http_request_uri = "/spaces/{spaceId}/admins/{adminId}" + o.input = Shapes::ShapeRef.new(shape: RegisterAdminInput) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:send_invites, Seahorse::Model::Operation.new.tap do |o| + o.name = "SendInvites" + o.http_method = "POST" + o.http_request_uri = "/spaces/{spaceId}/invite" + o.input = Shapes::ShapeRef.new(shape: SendInvitesInput) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "TagResource" + o.http_method = "POST" + o.http_request_uri = "/tags/{resourceArn}" + o.input = Shapes::ShapeRef.new(shape: TagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: TagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "UntagResource" + o.http_method = "DELETE" + o.http_request_uri = "/tags/{resourceArn}" + o.input = Shapes::ShapeRef.new(shape: UntagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: UntagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:update_space, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSpace" + o.http_method = "PUT" + o.http_request_uri = "/spaces/{spaceId}" + o.input = Shapes::ShapeRef.new(shape: UpdateSpaceInput) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + end + + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/customizations.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_parameters.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_parameters.rb new file mode 100644 index 00000000000..e6421146783 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_parameters.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_dual_stack + # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error. + # + # @return [Boolean] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_dual_stack, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseDualStack' => :use_dual_stack, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_dual_stack] = options[:use_dual_stack] + self[:use_dual_stack] = false if self[:use_dual_stack].nil? + if self[:use_dual_stack].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack" + end + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_provider.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_provider.rb new file mode 100644 index 00000000000..f637fb47f42 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoint_provider.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_dual_stack = parameters.use_dual_stack + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + 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")) + return Aws::Endpoints::Endpoint.new(url: "https://repostspace-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://repostspace-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + return Aws::Endpoints::Endpoint.new(url: "https://repostspace.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "DualStack is enabled but this partition does not support DualStack" + end + return Aws::Endpoints::Endpoint.new(url: "https://repostspace.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoints.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoints.rb new file mode 100644 index 00000000000..6f7c344cf20 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/endpoints.rb @@ -0,0 +1,170 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::Repostspace + # @api private + module Endpoints + + class CreateSpace + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteSpace + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeregisterAdmin + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetSpace + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListSpaces + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListTagsForResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class RegisterAdmin + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class SendInvites + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class TagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UntagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateSpace + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::Repostspace::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/errors.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/errors.rb new file mode 100644 index 00000000000..4677e0733a8 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/errors.rb @@ -0,0 +1,232 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + + # When Repostspace returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::Repostspace::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all Repostspace errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::Repostspace::Errors::ServiceError + # # rescues all Repostspace API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {AccessDeniedException} + # * {ConflictException} + # * {InternalServerException} + # * {ResourceNotFoundException} + # * {ServiceQuotaExceededException} + # * {ThrottlingException} + # * {ValidationException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ConflictException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::ConflictException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + end + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def retry_after_seconds + @data[:retry_after_seconds] + end + + def retryable? + true + end + end + + class ResourceNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::ResourceNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + end + + class ServiceQuotaExceededException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::ServiceQuotaExceededException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + + # @return [String] + def service_code + @data[:service_code] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + + # @return [String] + def retry_after_seconds + @data[:retry_after_seconds] + end + + # @return [String] + def service_code + @data[:service_code] + end + + def retryable? + true + end + + def throttling? + true + end + end + + class ValidationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::Repostspace::Types::ValidationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def field_list + @data[:field_list] + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def reason + @data[:reason] + end + end + + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/plugins/endpoints.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/plugins/endpoints.rb new file mode 100644 index 00000000000..a2ef13d6941 --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/plugins/endpoints.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::Repostspace + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::Repostspace::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::Repostspace::EndpointParameters`' + ) do |cfg| + Aws::Repostspace::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :create_space + Aws::Repostspace::Endpoints::CreateSpace.build(context) + when :delete_space + Aws::Repostspace::Endpoints::DeleteSpace.build(context) + when :deregister_admin + Aws::Repostspace::Endpoints::DeregisterAdmin.build(context) + when :get_space + Aws::Repostspace::Endpoints::GetSpace.build(context) + when :list_spaces + Aws::Repostspace::Endpoints::ListSpaces.build(context) + when :list_tags_for_resource + Aws::Repostspace::Endpoints::ListTagsForResource.build(context) + when :register_admin + Aws::Repostspace::Endpoints::RegisterAdmin.build(context) + when :send_invites + Aws::Repostspace::Endpoints::SendInvites.build(context) + when :tag_resource + Aws::Repostspace::Endpoints::TagResource.build(context) + when :untag_resource + Aws::Repostspace::Endpoints::UntagResource.build(context) + when :update_space + Aws::Repostspace::Endpoints::UpdateSpace.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/resource.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/resource.rb new file mode 100644 index 00000000000..ee25cc09e7e --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/types.rb b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/types.rb new file mode 100644 index 00000000000..09238f41dcf --- /dev/null +++ b/gems/aws-sdk-repostspace/lib/aws-sdk-repostspace/types.rb @@ -0,0 +1,678 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::Repostspace + module Types + + # User does not have sufficient access to perform this action. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # Updating or deleting a resource can cause an inconsistent state. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The ID of the resource. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ConflictException AWS API Documentation + # + class ConflictException < Struct.new( + :message, + :resource_id, + :resource_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] description + # A description for the private re:Post. This is used only to help you + # identify this private re:Post. + # @return [String] + # + # @!attribute [rw] name + # The name for the private re:Post. This must be unique in your + # account. + # @return [String] + # + # @!attribute [rw] role_arn + # The IAM role that grants permissions to the private re:Post to + # convert unanswered questions into AWS support tickets. + # @return [String] + # + # @!attribute [rw] subdomain + # The subdomain that you use to access your AWS re:Post Private + # private re:Post. All custom subdomains must be approved by AWS + # before use. In addition to your custom subdomain, all private + # re:Posts are issued an AWS generated subdomain for immediate use. + # @return [String] + # + # @!attribute [rw] tags + # The list of tags associated with the private re:Post. + # @return [Hash] + # + # @!attribute [rw] tier + # The pricing tier for the private re:Post. + # @return [String] + # + # @!attribute [rw] user_kms_key + # The AWS KMS key ARN that’s used for the AWS KMS encryption. If you + # don't provide a key, your data is encrypted by default with a key + # that AWS owns and manages for you. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/CreateSpaceInput AWS API Documentation + # + class CreateSpaceInput < Struct.new( + :description, + :name, + :role_arn, + :subdomain, + :tags, + :tier, + :user_kms_key) + SENSITIVE = [:description, :name, :tags] + include Aws::Structure + end + + # @!attribute [rw] space_id + # The unique ID of the private re:Post. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/CreateSpaceOutput AWS API Documentation + # + class CreateSpaceOutput < Struct.new( + :space_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] space_id + # The unique ID of the private re:Post. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/DeleteSpaceInput AWS API Documentation + # + class DeleteSpaceInput < Struct.new( + :space_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] admin_id + # The ID of the admin to remove. + # @return [String] + # + # @!attribute [rw] space_id + # The ID of the private re:Post to remove the admin from. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/DeregisterAdminInput AWS API Documentation + # + class DeregisterAdminInput < Struct.new( + :admin_id, + :space_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] space_id + # The ID of the private re:Post. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/GetSpaceInput AWS API Documentation + # + class GetSpaceInput < Struct.new( + :space_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] arn + # The ARN of the private re:Post. + # @return [String] + # + # @!attribute [rw] client_id + # The Identity Center identifier for the Application Instance. + # @return [String] + # + # @!attribute [rw] configuration_status + # The configuration status of the private re:Post. + # @return [String] + # + # @!attribute [rw] content_size + # The content size of the private re:Post. + # @return [Integer] + # + # @!attribute [rw] create_date_time + # The date when the private re:Post was created. + # @return [Time] + # + # @!attribute [rw] customer_role_arn + # The IAM role that grants permissions to the private re:Post to + # convert unanswered questions into AWS support tickets. + # @return [String] + # + # @!attribute [rw] delete_date_time + # The date when the private re:Post was deleted. + # @return [Time] + # + # @!attribute [rw] description + # The description of the private re:Post. + # @return [String] + # + # @!attribute [rw] group_admins + # The list of groups that are administrators of the private re:Post. + # @return [Array] + # + # @!attribute [rw] name + # The name of the private re:Post. + # @return [String] + # + # @!attribute [rw] random_domain + # The AWS generated subdomain of the private re:Post + # @return [String] + # + # @!attribute [rw] space_id + # The unique ID of the private re:Post. + # @return [String] + # + # @!attribute [rw] status + # The creation or deletion status of the private re:Post. + # @return [String] + # + # @!attribute [rw] storage_limit + # The storage limit of the private re:Post. + # @return [Integer] + # + # @!attribute [rw] tier + # The pricing tier of the private re:Post. + # @return [String] + # + # @!attribute [rw] user_admins + # The list of users that are administrators of the private re:Post. + # @return [Array] + # + # @!attribute [rw] user_count + # The number of users that have onboarded to the private re:Post. + # @return [Integer] + # + # @!attribute [rw] user_kms_key + # The custom AWS KMS key ARN that’s used for the AWS KMS encryption. + # @return [String] + # + # @!attribute [rw] vanity_domain + # The custom subdomain that you use to access your private re:Post. + # All custom subdomains must be approved by AWS before use. + # @return [String] + # + # @!attribute [rw] vanity_domain_status + # The approval status of the custom subdomain. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/GetSpaceOutput AWS API Documentation + # + class GetSpaceOutput < Struct.new( + :arn, + :client_id, + :configuration_status, + :content_size, + :create_date_time, + :customer_role_arn, + :delete_date_time, + :description, + :group_admins, + :name, + :random_domain, + :space_id, + :status, + :storage_limit, + :tier, + :user_admins, + :user_count, + :user_kms_key, + :vanity_domain, + :vanity_domain_status) + SENSITIVE = [:description, :name] + include Aws::Structure + end + + # Unexpected error during processing of request. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] retry_after_seconds + # Advice to clients on when the call can be safely retried. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message, + :retry_after_seconds) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] max_results + # The maximum number of private re:Posts to include in the results. + # @return [Integer] + # + # @!attribute [rw] next_token + # The token for the next set of private re:Posts to return. You + # receive this token from a previous ListSpaces operation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListSpacesInput AWS API Documentation + # + class ListSpacesInput < Struct.new( + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # The token that you use when you request the next set of private + # re:Posts. + # @return [String] + # + # @!attribute [rw] spaces + # An array of structures that contain some information about the + # private re:Posts in the account. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListSpacesOutput AWS API Documentation + # + class ListSpacesOutput < Struct.new( + :next_token, + :spaces) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The ARN of the resource that the tags are associated with. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListTagsForResourceRequest AWS API Documentation + # + class ListTagsForResourceRequest < Struct.new( + :resource_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] tags + # The list of tags that are associated with the resource. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ListTagsForResourceResponse AWS API Documentation + # + class ListTagsForResourceResponse < Struct.new( + :tags) + SENSITIVE = [:tags] + include Aws::Structure + end + + # @!attribute [rw] admin_id + # The ID of the administrator. + # @return [String] + # + # @!attribute [rw] space_id + # The ID of the private re:Post. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/RegisterAdminInput AWS API Documentation + # + class RegisterAdminInput < Struct.new( + :admin_id, + :space_id) + SENSITIVE = [] + include Aws::Structure + end + + # Request references a resource which does not exist. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The ID of the resource. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message, + :resource_id, + :resource_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] accessor_ids + # The array of identifiers for the users and groups. + # @return [Array] + # + # @!attribute [rw] body + # The body of the invite. + # @return [String] + # + # @!attribute [rw] space_id + # The ID of the private re:Post. + # @return [String] + # + # @!attribute [rw] title + # The title of the invite. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/SendInvitesInput AWS API Documentation + # + class SendInvitesInput < Struct.new( + :accessor_ids, + :body, + :space_id, + :title) + SENSITIVE = [:body, :title] + include Aws::Structure + end + + # Request would cause a service quota to be exceeded. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] quota_code + # The code to identify the quota. + # @return [String] + # + # @!attribute [rw] resource_id + # The id of the resource. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource. + # @return [String] + # + # @!attribute [rw] service_code + # The code to identify the service. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ServiceQuotaExceededException AWS API Documentation + # + class ServiceQuotaExceededException < Struct.new( + :message, + :quota_code, + :resource_id, + :resource_type, + :service_code) + SENSITIVE = [] + include Aws::Structure + end + + # A structure that contains some information about a private re:Post in + # the account. + # + # @!attribute [rw] arn + # The ARN of the private re:Post. + # @return [String] + # + # @!attribute [rw] configuration_status + # The configuration status of the private re:Post. + # @return [String] + # + # @!attribute [rw] content_size + # The content size of the private re:Post. + # @return [Integer] + # + # @!attribute [rw] create_date_time + # The date when the private re:Post was created. + # @return [Time] + # + # @!attribute [rw] delete_date_time + # The date when the private re:Post was deleted. + # @return [Time] + # + # @!attribute [rw] description + # The description for the private re:Post. This is used only to help + # you identify this private re:Post. + # @return [String] + # + # @!attribute [rw] name + # The name for the private re:Post. + # @return [String] + # + # @!attribute [rw] random_domain + # The AWS generated subdomain of the private re:Post. + # @return [String] + # + # @!attribute [rw] space_id + # The unique ID of the private re:Post. + # @return [String] + # + # @!attribute [rw] status + # The creation/deletion status of the private re:Post. + # @return [String] + # + # @!attribute [rw] storage_limit + # The storage limit of the private re:Post. + # @return [Integer] + # + # @!attribute [rw] tier + # The pricing tier of the private re:Post. + # @return [String] + # + # @!attribute [rw] user_count + # The number of onboarded users to the private re:Post. + # @return [Integer] + # + # @!attribute [rw] user_kms_key + # The custom AWS KMS key ARN that’s used for the AWS KMS encryption. + # @return [String] + # + # @!attribute [rw] vanity_domain + # This custom subdomain that you use to access your private re:Post. + # All custom subdomains must be approved by AWS before use. + # @return [String] + # + # @!attribute [rw] vanity_domain_status + # This approval status of the custom subdomain. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/SpaceData AWS API Documentation + # + class SpaceData < Struct.new( + :arn, + :configuration_status, + :content_size, + :create_date_time, + :delete_date_time, + :description, + :name, + :random_domain, + :space_id, + :status, + :storage_limit, + :tier, + :user_count, + :user_kms_key, + :vanity_domain, + :vanity_domain_status) + SENSITIVE = [:description, :name] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The ARN of the resource that the tag is associated with. + # @return [String] + # + # @!attribute [rw] tags + # The list of tag keys and values that must be associated with the + # resource. You can associate tag keys only, tags (key and values) + # only, or a combination of tag keys and tags. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/TagResourceRequest AWS API Documentation + # + class TagResourceRequest < Struct.new( + :resource_arn, + :tags) + SENSITIVE = [:tags] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/TagResourceResponse AWS API Documentation + # + class TagResourceResponse < Aws::EmptyStructure; end + + # Request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] quota_code + # The code to identify the quota. + # @return [String] + # + # @!attribute [rw] retry_after_seconds + # Advice to clients on when the call can be safely retried. + # @return [Integer] + # + # @!attribute [rw] service_code + # The code to identify the service. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message, + :quota_code, + :retry_after_seconds, + :service_code) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The ARN of the resource. + # @return [String] + # + # @!attribute [rw] tag_keys + # The key values of the tag. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/UntagResourceRequest AWS API Documentation + # + class UntagResourceRequest < Struct.new( + :resource_arn, + :tag_keys) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/UntagResourceResponse AWS API Documentation + # + class UntagResourceResponse < Aws::EmptyStructure; end + + # @!attribute [rw] description + # A description for the private re:Post. This is used only to help you + # identify this private re:Post. + # @return [String] + # + # @!attribute [rw] role_arn + # The IAM role that grants permissions to the private re:Post to + # convert unanswered questions into AWS support tickets. + # @return [String] + # + # @!attribute [rw] space_id + # The unique ID of this private re:Post. + # @return [String] + # + # @!attribute [rw] tier + # The pricing tier of this private re:Post. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/UpdateSpaceInput AWS API Documentation + # + class UpdateSpaceInput < Struct.new( + :description, + :role_arn, + :space_id, + :tier) + SENSITIVE = [:description] + include Aws::Structure + end + + # The input fails to satisfy the constraints specified by an AWS + # service. + # + # @!attribute [rw] field_list + # The field that caused the error, if applicable. + # @return [Array] + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] reason + # The reason why the request failed validation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ValidationException AWS API Documentation + # + class ValidationException < Struct.new( + :field_list, + :message, + :reason) + SENSITIVE = [] + include Aws::Structure + end + + # Stores information about a field that’s passed inside a request that + # resulted in an exception. + # + # @!attribute [rw] message + # The name of the field. + # @return [String] + # + # @!attribute [rw] name + # Message describing why the field failed validation. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/repostspace-2022-05-13/ValidationExceptionField AWS API Documentation + # + class ValidationExceptionField < Struct.new( + :message, + :name) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-repostspace/spec/endpoint_provider_spec.rb b/gems/aws-sdk-repostspace/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..04e088734b2 --- /dev/null +++ b/gems/aws-sdk-repostspace/spec/endpoint_provider_spec.rb @@ -0,0 +1,361 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::Repostspace + describe EndpointProvider do + subject { Aws::Repostspace::EndpointProvider.new } + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace-fips.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://repostspace.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For custom endpoint with fips disabled and dualstack enabled' do + let(:expected) do + {"error"=>"Invalid Configuration: Dualstack and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-repostspace/spec/spec_helper.rb b/gems/aws-sdk-repostspace/spec/spec_helper.rb new file mode 100644 index 00000000000..2d5ba1a6c1b --- /dev/null +++ b/gems/aws-sdk-repostspace/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-repostspace' diff --git a/gems/aws-sdk-resources/CHANGELOG.md b/gems/aws-sdk-resources/CHANGELOG.md index 4b54bf7be13..58235383df9 100644 --- a/gems/aws-sdk-resources/CHANGELOG.md +++ b/gems/aws-sdk-resources/CHANGELOG.md @@ -1,6 +1,21 @@ Unreleased Changes ------------------ +3.178.0 (2023-11-27) +------------------ + +* Feature - Added a dependency on the new `aws-sdk-workspacesthinclient` gem. + +* Feature - Added a dependency on the new `aws-sdk-repostspace` gem. + +* Feature - Added a dependency on the new `aws-sdk-freetier` gem. + +* Feature - Added a dependency on the new `aws-sdk-eksauth` gem. + +* Feature - Added a dependency on the new `aws-sdk-costoptimizationhub` gem. + +* Feature - Added a dependency on the new `aws-sdk-bcmdataexports` gem. + 3.177.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-resources/VERSION b/gems/aws-sdk-resources/VERSION index 20b2e79a78e..704d5613876 100644 --- a/gems/aws-sdk-resources/VERSION +++ b/gems/aws-sdk-resources/VERSION @@ -1 +1 @@ -3.177.0 +3.178.0 diff --git a/gems/aws-sdk-resources/aws-sdk-resources.gemspec b/gems/aws-sdk-resources/aws-sdk-resources.gemspec index c98ef94090d..0985102efd8 100644 --- a/gems/aws-sdk-resources/aws-sdk-resources.gemspec +++ b/gems/aws-sdk-resources/aws-sdk-resources.gemspec @@ -46,6 +46,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-augmentedairuntime', '~> 1') spec.add_dependency('aws-sdk-autoscaling', '~> 1') spec.add_dependency('aws-sdk-autoscalingplans', '~> 1') + spec.add_dependency('aws-sdk-bcmdataexports', '~> 1') spec.add_dependency('aws-sdk-backup', '~> 1') spec.add_dependency('aws-sdk-backupgateway', '~> 1') spec.add_dependency('aws-sdk-backupstorage', '~> 1') @@ -106,6 +107,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-connectwisdomservice', '~> 1') spec.add_dependency('aws-sdk-controltower', '~> 1') spec.add_dependency('aws-sdk-costexplorer', '~> 1') + spec.add_dependency('aws-sdk-costoptimizationhub', '~> 1') spec.add_dependency('aws-sdk-costandusagereportservice', '~> 1') spec.add_dependency('aws-sdk-customerprofiles', '~> 1') spec.add_dependency('aws-sdk-dax', '~> 1') @@ -133,6 +135,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-ecs', '~> 1') spec.add_dependency('aws-sdk-efs', '~> 1') spec.add_dependency('aws-sdk-eks', '~> 1') + spec.add_dependency('aws-sdk-eksauth', '~> 1') spec.add_dependency('aws-sdk-emr', '~> 1') spec.add_dependency('aws-sdk-emrcontainers', '~> 1') spec.add_dependency('aws-sdk-emrserverless', '~> 1') @@ -154,6 +157,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-forecastqueryservice', '~> 1') spec.add_dependency('aws-sdk-forecastservice', '~> 1') spec.add_dependency('aws-sdk-frauddetector', '~> 1') + spec.add_dependency('aws-sdk-freetier', '~> 1') spec.add_dependency('aws-sdk-gamelift', '~> 1') spec.add_dependency('aws-sdk-glacier', '~> 1') spec.add_dependency('aws-sdk-globalaccelerator', '~> 1') @@ -298,6 +302,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-redshiftdataapiservice', '~> 1') spec.add_dependency('aws-sdk-redshiftserverless', '~> 1') spec.add_dependency('aws-sdk-rekognition', '~> 1') + spec.add_dependency('aws-sdk-repostspace', '~> 1') spec.add_dependency('aws-sdk-resiliencehub', '~> 1') spec.add_dependency('aws-sdk-resourceexplorer2', '~> 1') spec.add_dependency('aws-sdk-resourcegroups', '~> 1') @@ -372,6 +377,7 @@ Gem::Specification.new do |spec| spec.add_dependency('aws-sdk-workmail', '~> 1') spec.add_dependency('aws-sdk-workmailmessageflow', '~> 1') spec.add_dependency('aws-sdk-workspaces', '~> 1') + spec.add_dependency('aws-sdk-workspacesthinclient', '~> 1') spec.add_dependency('aws-sdk-workspacesweb', '~> 1') spec.add_dependency('aws-sdk-xray', '~> 1') # end service gems diff --git a/gems/aws-sdk-resources/lib/aws-sdk-resources.rb b/gems/aws-sdk-resources/lib/aws-sdk-resources.rb index 49db7ce8a64..0317d7561d6 100644 --- a/gems/aws-sdk-resources/lib/aws-sdk-resources.rb +++ b/gems/aws-sdk-resources/lib/aws-sdk-resources.rb @@ -36,6 +36,7 @@ module Aws autoload :AugmentedAIRuntime, 'aws-sdk-augmentedairuntime' autoload :AutoScaling, 'aws-sdk-autoscaling' autoload :AutoScalingPlans, 'aws-sdk-autoscalingplans' + autoload :BCMDataExports, 'aws-sdk-bcmdataexports' autoload :Backup, 'aws-sdk-backup' autoload :BackupGateway, 'aws-sdk-backupgateway' autoload :BackupStorage, 'aws-sdk-backupstorage' @@ -96,6 +97,7 @@ module Aws autoload :ConnectWisdomService, 'aws-sdk-connectwisdomservice' autoload :ControlTower, 'aws-sdk-controltower' autoload :CostExplorer, 'aws-sdk-costexplorer' + autoload :CostOptimizationHub, 'aws-sdk-costoptimizationhub' autoload :CostandUsageReportService, 'aws-sdk-costandusagereportservice' autoload :CustomerProfiles, 'aws-sdk-customerprofiles' autoload :DAX, 'aws-sdk-dax' @@ -123,6 +125,7 @@ module Aws autoload :ECS, 'aws-sdk-ecs' autoload :EFS, 'aws-sdk-efs' autoload :EKS, 'aws-sdk-eks' + autoload :EKSAuth, 'aws-sdk-eksauth' autoload :EMR, 'aws-sdk-emr' autoload :EMRContainers, 'aws-sdk-emrcontainers' autoload :EMRServerless, 'aws-sdk-emrserverless' @@ -144,6 +147,7 @@ module Aws autoload :ForecastQueryService, 'aws-sdk-forecastqueryservice' autoload :ForecastService, 'aws-sdk-forecastservice' autoload :FraudDetector, 'aws-sdk-frauddetector' + autoload :FreeTier, 'aws-sdk-freetier' autoload :GameLift, 'aws-sdk-gamelift' autoload :Glacier, 'aws-sdk-glacier' autoload :GlobalAccelerator, 'aws-sdk-globalaccelerator' @@ -288,6 +292,7 @@ module Aws autoload :RedshiftDataAPIService, 'aws-sdk-redshiftdataapiservice' autoload :RedshiftServerless, 'aws-sdk-redshiftserverless' autoload :Rekognition, 'aws-sdk-rekognition' + autoload :Repostspace, 'aws-sdk-repostspace' autoload :ResilienceHub, 'aws-sdk-resiliencehub' autoload :ResourceExplorer2, 'aws-sdk-resourceexplorer2' autoload :ResourceGroups, 'aws-sdk-resourcegroups' @@ -365,6 +370,7 @@ module Aws autoload :WorkMail, 'aws-sdk-workmail' autoload :WorkMailMessageFlow, 'aws-sdk-workmailmessageflow' autoload :WorkSpaces, 'aws-sdk-workspaces' + autoload :WorkSpacesThinClient, 'aws-sdk-workspacesthinclient' autoload :WorkSpacesWeb, 'aws-sdk-workspacesweb' autoload :XRay, 'aws-sdk-xray' # end service gems diff --git a/gems/aws-sdk-s3/CHANGELOG.md b/gems/aws-sdk-s3/CHANGELOG.md index eaf54ee3e36..98d8b3ec061 100644 --- a/gems/aws-sdk-s3/CHANGELOG.md +++ b/gems/aws-sdk-s3/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.140.0 (2023-11-27) +------------------ + +* Feature - Adding new params - Key and Prefix, to S3 API operations for supporting S3 Access Grants. Note - These updates will not change any of the existing S3 API functionality. + * Issue - Fix thread interruptions in multipart `download_file`, `file_uploader` and `stream_uploader` (#2944). 1.139.0 (2023-11-22) diff --git a/gems/aws-sdk-s3/VERSION b/gems/aws-sdk-s3/VERSION index 53d195fd9b0..c69675f250b 100644 --- a/gems/aws-sdk-s3/VERSION +++ b/gems/aws-sdk-s3/VERSION @@ -1 +1 @@ -1.139.0 +1.140.0 diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3.rb index 2deef96c92c..12df08f4e7d 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3.rb @@ -73,6 +73,6 @@ # @!group service module Aws::S3 - GEM_VERSION = '1.139.0' + GEM_VERSION = '1.140.0' end diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3/client.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3/client.rb index d343cf52795..fdf03fbea56 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3/client.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3/client.rb @@ -1714,33 +1714,33 @@ def copy_object(params = {}, options = {}) # * {Types::CreateBucketOutput#location #location} => String # # - # @example Example: To create a bucket + # @example Example: To create a bucket in a specific region # - # # The following example creates a bucket. + # # The following example creates a bucket. The request specifies an AWS region where to create the bucket. # # resp = client.create_bucket({ # bucket: "examplebucket", + # create_bucket_configuration: { + # location_constraint: "eu-west-1", + # }, # }) # # resp.to_h outputs the following: # { - # location: "/examplebucket", + # location: "http://examplebucket..s3.amazonaws.com/", # } # - # @example Example: To create a bucket in a specific region + # @example Example: To create a bucket # - # # The following example creates a bucket. The request specifies an AWS region where to create the bucket. + # # The following example creates a bucket. # # resp = client.create_bucket({ # bucket: "examplebucket", - # create_bucket_configuration: { - # location_constraint: "eu-west-1", - # }, # }) # # resp.to_h outputs the following: # { - # location: "http://examplebucket..s3.amazonaws.com/", + # location: "/examplebucket", # } # # @example Request syntax with placeholder values @@ -3309,35 +3309,35 @@ def delete_object(params = {}, options = {}) # * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String # # - # @example Example: To remove tag set from an object version + # @example Example: To remove tag set from an object # - # # The following example removes tag set associated with the specified object version. The request specifies both the - # # object key and object version. + # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the + # # operation removes tag set from the latest object version. # # resp = client.delete_object_tagging({ # bucket: "examplebucket", # key: "HappyFace.jpg", - # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", # }) # # resp.to_h outputs the following: # { - # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", + # version_id: "null", # } # - # @example Example: To remove tag set from an object + # @example Example: To remove tag set from an object version # - # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the - # # operation removes tag set from the latest object version. + # # The following example removes tag set associated with the specified object version. The request specifies both the + # # object key and object version. # # resp = client.delete_object_tagging({ # bucket: "examplebucket", # key: "HappyFace.jpg", + # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", # }) # # resp.to_h outputs the following: # { - # version_id: "null", + # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", # } # # @example Request syntax with placeholder values @@ -3498,20 +3498,22 @@ def delete_object_tagging(params = {}, options = {}) # * {Types::DeleteObjectsOutput#errors #errors} => Array<Types::Error> # # - # @example Example: To delete multiple objects from a versioned bucket + # @example Example: To delete multiple object versions from a versioned bucket # - # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the - # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker. + # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object + # # versions and returns the key and versions of deleted objects in the response. # # resp = client.delete_objects({ # bucket: "examplebucket", # delete: { # objects: [ # { - # key: "objectkey1", + # key: "HappyFace.jpg", + # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b", # }, # { - # key: "objectkey2", + # key: "HappyFace.jpg", + # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd", # }, # ], # quiet: false, @@ -3522,34 +3524,30 @@ def delete_object_tagging(params = {}, options = {}) # { # deleted: [ # { - # delete_marker: true, - # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", - # key: "objectkey1", + # key: "HappyFace.jpg", + # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd", # }, # { - # delete_marker: true, - # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", - # key: "objectkey2", + # key: "HappyFace.jpg", + # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b", # }, # ], # } # - # @example Example: To delete multiple object versions from a versioned bucket + # @example Example: To delete multiple objects from a versioned bucket # - # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object - # # versions and returns the key and versions of deleted objects in the response. + # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the + # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker. # # resp = client.delete_objects({ # bucket: "examplebucket", # delete: { # objects: [ # { - # key: "HappyFace.jpg", - # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b", + # key: "objectkey1", # }, # { - # key: "HappyFace.jpg", - # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd", + # key: "objectkey2", # }, # ], # quiet: false, @@ -3560,12 +3558,14 @@ def delete_object_tagging(params = {}, options = {}) # { # deleted: [ # { - # key: "HappyFace.jpg", - # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd", + # delete_marker: true, + # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", + # key: "objectkey1", # }, # { - # key: "HappyFace.jpg", - # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b", + # delete_marker: true, + # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", + # key: "objectkey2", # }, # ], # } @@ -5962,49 +5962,49 @@ def get_bucket_website(params = {}, options = {}) # * {Types::GetObjectOutput#object_lock_legal_hold_status #object_lock_legal_hold_status} => String # # - # @example Example: To retrieve a byte range of an object + # @example Example: To retrieve an object # - # # The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a - # # specific byte range. + # # The following example retrieves an object for an S3 bucket. # # resp = client.get_object({ # bucket: "examplebucket", - # key: "SampleFile.txt", - # range: "bytes=0-9", + # key: "HappyFace.jpg", # }) # # resp.to_h outputs the following: # { # accept_ranges: "bytes", - # content_length: 10, - # content_range: "bytes 0-9/43", - # content_type: "text/plain", - # etag: "\"0d94420ffd0bc68cd3d152506b97a9cc\"", - # last_modified: Time.parse("Thu, 09 Oct 2014 22:57:28 GMT"), + # content_length: 3191, + # content_type: "image/jpeg", + # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", + # last_modified: Time.parse("Thu, 15 Dec 2016 01:19:41 GMT"), # metadata: { # }, + # tag_count: 2, # version_id: "null", # } # - # @example Example: To retrieve an object + # @example Example: To retrieve a byte range of an object # - # # The following example retrieves an object for an S3 bucket. + # # The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a + # # specific byte range. # # resp = client.get_object({ # bucket: "examplebucket", - # key: "HappyFace.jpg", + # key: "SampleFile.txt", + # range: "bytes=0-9", # }) # # resp.to_h outputs the following: # { # accept_ranges: "bytes", - # content_length: 3191, - # content_type: "image/jpeg", - # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # last_modified: Time.parse("Thu, 15 Dec 2016 01:19:41 GMT"), + # content_length: 10, + # content_range: "bytes 0-9/43", + # content_type: "text/plain", + # etag: "\"0d94420ffd0bc68cd3d152506b97a9cc\"", + # last_modified: Time.parse("Thu, 09 Oct 2014 22:57:28 GMT"), # metadata: { # }, - # tag_count: 2, # version_id: "null", # } # @@ -6850,49 +6850,49 @@ def get_object_retention(params = {}, options = {}) # * {Types::GetObjectTaggingOutput#tag_set #tag_set} => Array<Types::Tag> # # - # @example Example: To retrieve tag set of an object + # @example Example: To retrieve tag set of a specific object version # - # # The following example retrieves tag set of an object. + # # The following example retrieves tag set of an object. The request specifies object version. # # resp = client.get_object_tagging({ # bucket: "examplebucket", - # key: "HappyFace.jpg", + # key: "exampleobject", + # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", # }) # # resp.to_h outputs the following: # { # tag_set: [ # { - # key: "Key4", - # value: "Value4", - # }, - # { - # key: "Key3", - # value: "Value3", + # key: "Key1", + # value: "Value1", # }, # ], - # version_id: "null", + # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", # } # - # @example Example: To retrieve tag set of a specific object version + # @example Example: To retrieve tag set of an object # - # # The following example retrieves tag set of an object. The request specifies object version. + # # The following example retrieves tag set of an object. # # resp = client.get_object_tagging({ # bucket: "examplebucket", - # key: "exampleobject", - # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", + # key: "HappyFace.jpg", # }) # # resp.to_h outputs the following: # { # tag_set: [ # { - # key: "Key1", - # value: "Value1", + # key: "Key4", + # value: "Value4", + # }, + # { + # key: "Key3", + # value: "Value3", # }, # ], - # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI", + # version_id: "null", # } # # @example Request syntax with placeholder values @@ -12554,96 +12554,96 @@ def put_bucket_website(params = {}, options = {}) # * {Types::PutObjectOutput#request_charged #request_charged} => String # # - # @example Example: To upload object and specify user-defined metadata + # @example Example: To upload an object and specify optional tags # - # # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning - # # enabled, S3 returns version ID in response. + # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore + # # S3 returns version ID of the newly created object. # # resp = client.put_object({ - # body: "filetoupload", + # body: "c:\\HappyFace.jpg", # bucket: "examplebucket", - # key: "exampleobject", - # metadata: { - # "metadata1" => "value1", - # "metadata2" => "value2", - # }, + # key: "HappyFace.jpg", + # tagging: "key1=value1&key2=value2", # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0", + # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a", # } # - # @example Example: To upload an object (specify optional headers) + # @example Example: To create an object. # - # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific - # # storage class and use server-side encryption. + # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response. # # resp = client.put_object({ - # body: "HappyFace.jpg", + # body: "filetoupload", # bucket: "examplebucket", - # key: "HappyFace.jpg", - # server_side_encryption: "AES256", - # storage_class: "STANDARD_IA", + # key: "objectkey", # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # server_side_encryption: "AES256", - # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp", + # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ", # } # - # @example Example: To upload an object and specify optional tags + # @example Example: To upload object and specify user-defined metadata # - # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore - # # S3 returns version ID of the newly created object. + # # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning + # # enabled, S3 returns version ID in response. # # resp = client.put_object({ - # body: "c:\\HappyFace.jpg", + # body: "filetoupload", # bucket: "examplebucket", - # key: "HappyFace.jpg", - # tagging: "key1=value1&key2=value2", + # key: "exampleobject", + # metadata: { + # "metadata1" => "value1", + # "metadata2" => "value2", + # }, # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a", + # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0", # } # - # @example Example: To create an object. + # @example Example: To upload an object # - # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response. + # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file + # # syntax. S3 returns VersionId of the newly created object. # # resp = client.put_object({ - # body: "filetoupload", + # body: "HappyFace.jpg", # bucket: "examplebucket", - # key: "objectkey", + # key: "HappyFace.jpg", # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ", + # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk", # } # - # @example Example: To upload an object + # @example Example: To upload an object and specify server-side encryption and object tags # - # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file - # # syntax. S3 returns VersionId of the newly created object. + # # The following example uploads an object. The request specifies the optional server-side encryption option. The request + # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response. # # resp = client.put_object({ - # body: "HappyFace.jpg", + # body: "filetoupload", # bucket: "examplebucket", - # key: "HappyFace.jpg", + # key: "exampleobject", + # server_side_encryption: "AES256", + # tagging: "key1=value1&key2=value2", # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", - # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk", + # server_side_encryption: "AES256", + # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt", # } # # @example Example: To upload an object and specify canned ACL. @@ -12664,24 +12664,24 @@ def put_bucket_website(params = {}, options = {}) # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr", # } # - # @example Example: To upload an object and specify server-side encryption and object tags + # @example Example: To upload an object (specify optional headers) # - # # The following example uploads an object. The request specifies the optional server-side encryption option. The request - # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response. + # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific + # # storage class and use server-side encryption. # # resp = client.put_object({ - # body: "filetoupload", + # body: "HappyFace.jpg", # bucket: "examplebucket", - # key: "exampleobject", + # key: "HappyFace.jpg", # server_side_encryption: "AES256", - # tagging: "key1=value1&key2=value2", + # storage_class: "STANDARD_IA", # }) # # resp.to_h outputs the following: # { # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"", # server_side_encryption: "AES256", - # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt", + # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp", # } # # @example Streaming a file from disk @@ -13246,15 +13246,15 @@ def put_object_legal_hold(params = {}, options = {}) # you must select one. You cannot specify `Days` and `Years` at the # same time. # - # * You can only enable Object Lock for new buckets. If you want to turn - # on Object Lock for an existing bucket, contact Amazon Web Services - # Support. + # * You can enable Object Lock for new or existing buckets. For more + # information, see [Configuring Object Lock][2]. # #
# # # # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html # # @option params [required, String] :bucket # The bucket whose Object Lock configuration you want to create or @@ -15234,45 +15234,45 @@ def upload_part(params = {}, options = {}) # * {Types::UploadPartCopyOutput#request_charged #request_charged} => String # # - # @example Example: To upload a part by copying data from an existing object as data source + # @example Example: To upload a part by copying byte range from an existing object as data source # - # # The following example uploads a part of a multipart upload by copying data from an existing object as data source. + # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as + # # data source. # # resp = client.upload_part_copy({ # bucket: "examplebucket", # copy_source: "/bucketname/sourceobjectkey", + # copy_source_range: "bytes=1-100000", # key: "examplelargeobject", - # part_number: 1, + # part_number: 2, # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--", # }) # # resp.to_h outputs the following: # { # copy_part_result: { - # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"", - # last_modified: Time.parse("2016-12-29T21:24:43.000Z"), + # etag: "\"65d16d19e65a7508a51f043180edcc36\"", + # last_modified: Time.parse("2016-12-29T21:44:28.000Z"), # }, # } # - # @example Example: To upload a part by copying byte range from an existing object as data source + # @example Example: To upload a part by copying data from an existing object as data source # - # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as - # # data source. + # # The following example uploads a part of a multipart upload by copying data from an existing object as data source. # # resp = client.upload_part_copy({ # bucket: "examplebucket", # copy_source: "/bucketname/sourceobjectkey", - # copy_source_range: "bytes=1-100000", # key: "examplelargeobject", - # part_number: 2, + # part_number: 1, # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--", # }) # # resp.to_h outputs the following: # { # copy_part_result: { - # etag: "\"65d16d19e65a7508a51f043180edcc36\"", - # last_modified: Time.parse("2016-12-29T21:44:28.000Z"), + # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"", + # last_modified: Time.parse("2016-12-29T21:24:43.000Z"), # }, # } # @@ -15721,7 +15721,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-s3' - context[:gem_version] = '1.139.0' + context[:gem_version] = '1.140.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3/client_api.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3/client_api.rb index 407988ddb53..5dee5700417 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3/client_api.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3/client_api.rb @@ -605,7 +605,7 @@ module ClientApi AbortMultipartUploadOutput.struct_class = Types::AbortMultipartUploadOutput AbortMultipartUploadRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}})) - AbortMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + AbortMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) AbortMultipartUploadRequest.add_member(:upload_id, Shapes::ShapeRef.new(shape: MultipartUploadId, required: true, location: "querystring", location_name: "uploadId")) AbortMultipartUploadRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) AbortMultipartUploadRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) @@ -734,7 +734,7 @@ module ClientApi CompleteMultipartUploadOutput.struct_class = Types::CompleteMultipartUploadOutput CompleteMultipartUploadRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}})) - CompleteMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + CompleteMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) CompleteMultipartUploadRequest.add_member(:multipart_upload, Shapes::ShapeRef.new(shape: CompletedMultipartUpload, location_name: "CompleteMultipartUpload", metadata: {"xmlNamespace"=>{"uri"=>"http://s3.amazonaws.com/doc/2006-03-01/"}})) CompleteMultipartUploadRequest.add_member(:upload_id, Shapes::ShapeRef.new(shape: MultipartUploadId, required: true, location: "querystring", location_name: "uploadId")) CompleteMultipartUploadRequest.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32")) @@ -890,7 +890,7 @@ module ClientApi CreateMultipartUploadRequest.add_member(:grant_read, Shapes::ShapeRef.new(shape: GrantRead, location: "header", location_name: "x-amz-grant-read")) CreateMultipartUploadRequest.add_member(:grant_read_acp, Shapes::ShapeRef.new(shape: GrantReadACP, location: "header", location_name: "x-amz-grant-read-acp")) CreateMultipartUploadRequest.add_member(:grant_write_acp, Shapes::ShapeRef.new(shape: GrantWriteACP, location: "header", location_name: "x-amz-grant-write-acp")) - CreateMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + CreateMultipartUploadRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) CreateMultipartUploadRequest.add_member(:metadata, Shapes::ShapeRef.new(shape: Metadata, location: "headers", location_name: "x-amz-meta-")) CreateMultipartUploadRequest.add_member(:server_side_encryption, Shapes::ShapeRef.new(shape: ServerSideEncryption, location: "header", location_name: "x-amz-server-side-encryption")) CreateMultipartUploadRequest.add_member(:storage_class, Shapes::ShapeRef.new(shape: StorageClass, location: "header", location_name: "x-amz-storage-class")) @@ -992,7 +992,7 @@ module ClientApi DeleteObjectOutput.struct_class = Types::DeleteObjectOutput DeleteObjectRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}})) - DeleteObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + DeleteObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) DeleteObjectRequest.add_member(:mfa, Shapes::ShapeRef.new(shape: MFA, location: "header", location_name: "x-amz-mfa")) DeleteObjectRequest.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "querystring", location_name: "versionId")) DeleteObjectRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) @@ -1260,7 +1260,7 @@ module ClientApi GetObjectAclOutput.struct_class = Types::GetObjectAclOutput GetObjectAclRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}})) - GetObjectAclRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + GetObjectAclRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) GetObjectAclRequest.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "querystring", location_name: "versionId")) GetObjectAclRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) GetObjectAclRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) @@ -1365,7 +1365,7 @@ module ClientApi GetObjectRequest.add_member(:if_modified_since, Shapes::ShapeRef.new(shape: IfModifiedSince, location: "header", location_name: "If-Modified-Since")) GetObjectRequest.add_member(:if_none_match, Shapes::ShapeRef.new(shape: IfNoneMatch, location: "header", location_name: "If-None-Match")) GetObjectRequest.add_member(:if_unmodified_since, Shapes::ShapeRef.new(shape: IfUnmodifiedSince, location: "header", location_name: "If-Unmodified-Since")) - GetObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + GetObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) GetObjectRequest.add_member(:range, Shapes::ShapeRef.new(shape: Range, location: "header", location_name: "Range")) GetObjectRequest.add_member(:response_cache_control, Shapes::ShapeRef.new(shape: ResponseCacheControl, location: "querystring", location_name: "response-cache-control")) GetObjectRequest.add_member(:response_content_disposition, Shapes::ShapeRef.new(shape: ResponseContentDisposition, location: "querystring", location_name: "response-content-disposition")) @@ -1489,7 +1489,7 @@ module ClientApi HeadObjectRequest.add_member(:if_modified_since, Shapes::ShapeRef.new(shape: IfModifiedSince, location: "header", location_name: "If-Modified-Since")) HeadObjectRequest.add_member(:if_none_match, Shapes::ShapeRef.new(shape: IfNoneMatch, location: "header", location_name: "If-None-Match")) HeadObjectRequest.add_member(:if_unmodified_since, Shapes::ShapeRef.new(shape: IfUnmodifiedSince, location: "header", location_name: "If-Unmodified-Since")) - HeadObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + HeadObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) HeadObjectRequest.add_member(:range, Shapes::ShapeRef.new(shape: Range, location: "header", location_name: "Range")) HeadObjectRequest.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "querystring", location_name: "versionId")) HeadObjectRequest.add_member(:sse_customer_algorithm, Shapes::ShapeRef.new(shape: SSECustomerAlgorithm, location: "header", location_name: "x-amz-server-side-encryption-customer-algorithm")) @@ -1683,7 +1683,7 @@ module ClientApi ListMultipartUploadsRequest.add_member(:encoding_type, Shapes::ShapeRef.new(shape: EncodingType, location: "querystring", location_name: "encoding-type")) ListMultipartUploadsRequest.add_member(:key_marker, Shapes::ShapeRef.new(shape: KeyMarker, location: "querystring", location_name: "key-marker")) ListMultipartUploadsRequest.add_member(:max_uploads, Shapes::ShapeRef.new(shape: MaxUploads, location: "querystring", location_name: "max-uploads")) - ListMultipartUploadsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix")) + ListMultipartUploadsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix", metadata: {"contextParam"=>{"name"=>"Prefix"}})) ListMultipartUploadsRequest.add_member(:upload_id_marker, Shapes::ShapeRef.new(shape: UploadIdMarker, location: "querystring", location_name: "upload-id-marker")) ListMultipartUploadsRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) ListMultipartUploadsRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) @@ -1710,7 +1710,7 @@ module ClientApi ListObjectVersionsRequest.add_member(:encoding_type, Shapes::ShapeRef.new(shape: EncodingType, location: "querystring", location_name: "encoding-type")) ListObjectVersionsRequest.add_member(:key_marker, Shapes::ShapeRef.new(shape: KeyMarker, location: "querystring", location_name: "key-marker")) ListObjectVersionsRequest.add_member(:max_keys, Shapes::ShapeRef.new(shape: MaxKeys, location: "querystring", location_name: "max-keys")) - ListObjectVersionsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix")) + ListObjectVersionsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix", metadata: {"contextParam"=>{"name"=>"Prefix"}})) ListObjectVersionsRequest.add_member(:version_id_marker, Shapes::ShapeRef.new(shape: VersionIdMarker, location: "querystring", location_name: "version-id-marker")) ListObjectVersionsRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) ListObjectVersionsRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) @@ -1735,7 +1735,7 @@ module ClientApi ListObjectsRequest.add_member(:encoding_type, Shapes::ShapeRef.new(shape: EncodingType, location: "querystring", location_name: "encoding-type")) ListObjectsRequest.add_member(:marker, Shapes::ShapeRef.new(shape: Marker, location: "querystring", location_name: "marker")) ListObjectsRequest.add_member(:max_keys, Shapes::ShapeRef.new(shape: MaxKeys, location: "querystring", location_name: "max-keys")) - ListObjectsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix")) + ListObjectsRequest.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix", metadata: {"contextParam"=>{"name"=>"Prefix"}})) ListObjectsRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) ListObjectsRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) ListObjectsRequest.add_member(:optional_object_attributes, Shapes::ShapeRef.new(shape: OptionalObjectAttributesList, location: "header", location_name: "x-amz-optional-object-attributes")) @@ -1760,7 +1760,7 @@ module ClientApi ListObjectsV2Request.add_member(:delimiter, Shapes::ShapeRef.new(shape: Delimiter, location: "querystring", location_name: "delimiter")) ListObjectsV2Request.add_member(:encoding_type, Shapes::ShapeRef.new(shape: EncodingType, location: "querystring", location_name: "encoding-type")) ListObjectsV2Request.add_member(:max_keys, Shapes::ShapeRef.new(shape: MaxKeys, location: "querystring", location_name: "max-keys")) - ListObjectsV2Request.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix")) + ListObjectsV2Request.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location: "querystring", location_name: "prefix", metadata: {"contextParam"=>{"name"=>"Prefix"}})) ListObjectsV2Request.add_member(:continuation_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "continuation-token")) ListObjectsV2Request.add_member(:fetch_owner, Shapes::ShapeRef.new(shape: FetchOwner, location: "querystring", location_name: "fetch-owner")) ListObjectsV2Request.add_member(:start_after, Shapes::ShapeRef.new(shape: StartAfter, location: "querystring", location_name: "start-after")) @@ -1787,7 +1787,7 @@ module ClientApi ListPartsOutput.struct_class = Types::ListPartsOutput ListPartsRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}})) - ListPartsRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + ListPartsRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) ListPartsRequest.add_member(:max_parts, Shapes::ShapeRef.new(shape: MaxParts, location: "querystring", location_name: "max-parts")) ListPartsRequest.add_member(:part_number_marker, Shapes::ShapeRef.new(shape: PartNumberMarker, location: "querystring", location_name: "part-number-marker")) ListPartsRequest.add_member(:upload_id, Shapes::ShapeRef.new(shape: MultipartUploadId, required: true, location: "querystring", location_name: "uploadId")) @@ -2184,7 +2184,7 @@ module ClientApi PutObjectAclRequest.add_member(:grant_read_acp, Shapes::ShapeRef.new(shape: GrantReadACP, location: "header", location_name: "x-amz-grant-read-acp")) PutObjectAclRequest.add_member(:grant_write, Shapes::ShapeRef.new(shape: GrantWrite, location: "header", location_name: "x-amz-grant-write")) PutObjectAclRequest.add_member(:grant_write_acp, Shapes::ShapeRef.new(shape: GrantWriteACP, location: "header", location_name: "x-amz-grant-write-acp")) - PutObjectAclRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + PutObjectAclRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) PutObjectAclRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer")) PutObjectAclRequest.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "querystring", location_name: "versionId")) PutObjectAclRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner")) @@ -2257,7 +2257,7 @@ module ClientApi PutObjectRequest.add_member(:grant_read, Shapes::ShapeRef.new(shape: GrantRead, location: "header", location_name: "x-amz-grant-read")) PutObjectRequest.add_member(:grant_read_acp, Shapes::ShapeRef.new(shape: GrantReadACP, location: "header", location_name: "x-amz-grant-read-acp")) PutObjectRequest.add_member(:grant_write_acp, Shapes::ShapeRef.new(shape: GrantWriteACP, location: "header", location_name: "x-amz-grant-write-acp")) - PutObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + PutObjectRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) PutObjectRequest.add_member(:metadata, Shapes::ShapeRef.new(shape: Metadata, location: "headers", location_name: "x-amz-meta-")) PutObjectRequest.add_member(:server_side_encryption, Shapes::ShapeRef.new(shape: ServerSideEncryption, location: "header", location_name: "x-amz-server-side-encryption")) PutObjectRequest.add_member(:storage_class, Shapes::ShapeRef.new(shape: StorageClass, location: "header", location_name: "x-amz-storage-class")) @@ -2626,7 +2626,7 @@ module ClientApi UploadPartRequest.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c")) UploadPartRequest.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1")) UploadPartRequest.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256")) - UploadPartRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key")) + UploadPartRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}})) UploadPartRequest.add_member(:part_number, Shapes::ShapeRef.new(shape: PartNumber, required: true, location: "querystring", location_name: "partNumber")) UploadPartRequest.add_member(:upload_id, Shapes::ShapeRef.new(shape: MultipartUploadId, required: true, location: "querystring", location_name: "uploadId")) UploadPartRequest.add_member(:sse_customer_algorithm, Shapes::ShapeRef.new(shape: SSECustomerAlgorithm, location: "header", location_name: "x-amz-server-side-encryption-customer-algorithm")) diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_parameters.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_parameters.rb index 46dfee8b5a0..aa55b7c9a04 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_parameters.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_parameters.rb @@ -55,6 +55,16 @@ module Aws::S3 # # @return [Boolean] # + # @!attribute key + # The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key. + # + # @return [String] + # + # @!attribute prefix + # The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix. + # + # @return [String] + # # @!attribute disable_access_points # Internal parameter to disable Access Point Buckets # @@ -80,6 +90,8 @@ module Aws::S3 :accelerate, :use_global_endpoint, :use_object_lambda_endpoint, + :key, + :prefix, :disable_access_points, :disable_multi_region_access_points, :use_arn_region, @@ -98,6 +110,8 @@ class << self 'Accelerate' => :accelerate, 'UseGlobalEndpoint' => :use_global_endpoint, 'UseObjectLambdaEndpoint' => :use_object_lambda_endpoint, + 'Key' => :key, + 'Prefix' => :prefix, 'DisableAccessPoints' => :disable_access_points, 'DisableMultiRegionAccessPoints' => :disable_multi_region_access_points, 'UseArnRegion' => :use_arn_region, @@ -134,6 +148,8 @@ def initialize(options = {}) raise ArgumentError, "Missing required EndpointParameter: :use_global_endpoint" end self[:use_object_lambda_endpoint] = options[:use_object_lambda_endpoint] + self[:key] = options[:key] + self[:prefix] = options[:prefix] self[:disable_access_points] = options[:disable_access_points] self[:disable_multi_region_access_points] = options[:disable_multi_region_access_points] self[:disable_multi_region_access_points] = false if self[:disable_multi_region_access_points].nil? diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_provider.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_provider.rb index dfc7b8703de..0614d007912 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_provider.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoint_provider.rb @@ -19,6 +19,8 @@ def resolve_endpoint(parameters) accelerate = parameters.accelerate use_global_endpoint = parameters.use_global_endpoint use_object_lambda_endpoint = parameters.use_object_lambda_endpoint + key = parameters.key + prefix = parameters.prefix disable_access_points = parameters.disable_access_points disable_multi_region_access_points = parameters.disable_multi_region_access_points use_arn_region = parameters.use_arn_region diff --git a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoints.rb b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoints.rb index 9762b0b69a2..7c58258468c 100644 --- a/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoints.rb +++ b/gems/aws-sdk-s3/lib/aws-sdk-s3/endpoints.rb @@ -27,6 +27,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -49,6 +51,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -71,6 +75,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -93,6 +99,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: true, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -115,6 +123,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -137,6 +147,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -159,6 +171,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -181,6 +195,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -203,6 +219,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -225,6 +243,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -247,6 +267,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -269,6 +291,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -291,6 +315,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -313,6 +339,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -335,6 +363,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -357,6 +387,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -379,6 +411,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -401,6 +435,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -423,6 +459,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -445,6 +483,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -467,6 +507,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -489,6 +531,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -511,6 +555,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -533,6 +579,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -555,6 +603,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -577,6 +627,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -599,6 +651,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -621,6 +675,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -643,6 +699,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -665,6 +723,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -687,6 +747,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -709,6 +771,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -731,6 +795,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -753,6 +819,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -775,6 +843,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -797,6 +867,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -819,6 +891,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -841,6 +915,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -863,6 +939,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -885,6 +963,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -907,6 +987,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -929,6 +1011,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -951,6 +1035,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -973,6 +1059,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -995,6 +1083,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1017,6 +1107,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1039,6 +1131,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1061,6 +1155,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1083,6 +1179,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1105,6 +1203,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1127,6 +1227,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1149,6 +1251,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1171,6 +1275,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1193,6 +1299,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1215,6 +1323,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1237,6 +1347,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1259,6 +1371,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1281,6 +1395,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1303,6 +1419,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1325,6 +1443,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1347,6 +1467,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: context.params[:prefix], disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1369,6 +1491,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: context.params[:prefix], disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1391,6 +1515,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: context.params[:prefix], disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1413,6 +1539,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: context.params[:prefix], disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1435,6 +1563,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1457,6 +1587,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1479,6 +1611,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1501,6 +1635,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1523,6 +1659,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1545,6 +1683,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1567,6 +1707,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1589,6 +1731,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1611,6 +1755,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1633,6 +1779,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1655,6 +1803,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1677,6 +1827,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1699,6 +1851,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1721,6 +1875,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1743,6 +1899,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1765,6 +1923,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1787,6 +1947,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1809,6 +1971,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1831,6 +1995,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1853,6 +2019,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1875,6 +2043,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1897,6 +2067,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1919,6 +2091,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1941,6 +2115,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1963,6 +2139,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -1985,6 +2163,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2007,6 +2187,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2029,6 +2211,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2051,6 +2235,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2073,6 +2259,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2095,6 +2283,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: context.params[:key], + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2117,6 +2307,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: nil, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, @@ -2139,6 +2331,8 @@ def self.build(context) accelerate: context[:use_accelerate_endpoint], use_global_endpoint: context.config.s3_us_east_1_regional_endpoint == 'legacy', use_object_lambda_endpoint: true, + key: nil, + prefix: nil, disable_access_points: nil, disable_multi_region_access_points: context.config.s3_disable_multiregion_access_points, use_arn_region: context.config.s3_use_arn_region, diff --git a/gems/aws-sdk-s3/spec/endpoint_provider_spec.rb b/gems/aws-sdk-s3/spec/endpoint_provider_spec.rb index 1492689ede4..ab0b6552413 100644 --- a/gems/aws-sdk-s3/spec/endpoint_provider_spec.rb +++ b/gems/aws-sdk-s3/spec/endpoint_provider_spec.rb @@ -1596,6 +1596,37 @@ module Aws::S3 end end + context 'virtual addressing, aws-global region with Prefix, and Key uses the global endpoint. Prefix and Key parameters should not be used in endpoint evaluation.' do + let(:expected) do + {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"s3", "signingRegion"=>"us-east-1", "disableDoubleEncoding"=>true}]}, "url"=>"https://bucket-name.s3.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"aws-global", :bucket=>"bucket-name", :use_fips=>false, :use_dual_stack=>false, :accelerate=>false, :prefix=>"prefix", :key=>"key"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + + it 'produces the correct output from the client when calling list_objects' do + client = Client.new( + region: 'aws-global', + s3_us_east_1_regional_endpoint: 'regional', + stub_responses: true + ) + expect_auth({"name"=>"sigv4", "signingName"=>"s3", "signingRegion"=>"us-east-1", "disableDoubleEncoding"=>true}) + resp = client.list_objects( + bucket: 'bucket-name', + prefix: 'prefix', + ) + expected_uri = URI.parse(expected['endpoint']['url']) + expect(resp.context.http_request.endpoint.to_s).to include(expected_uri.host) + expect(resp.context.http_request.endpoint.to_s).to include(expected_uri.scheme) + expect(resp.context.http_request.endpoint.to_s).to include(expected_uri.path) + end + end + context 'virtual addressing, aws-global region with fips uses the regional fips endpoint' do let(:expected) do {"endpoint"=>{"properties"=>{"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"s3", "signingRegion"=>"us-east-1", "disableDoubleEncoding"=>true}]}, "url"=>"https://bucket-name.s3-fips.us-east-1.amazonaws.com"}} diff --git a/gems/aws-sdk-s3control/CHANGELOG.md b/gems/aws-sdk-s3control/CHANGELOG.md index 994a03dea40..6871b61cb29 100644 --- a/gems/aws-sdk-s3control/CHANGELOG.md +++ b/gems/aws-sdk-s3control/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.73.0 (2023-11-27) +------------------ + +* Feature - Introduce Amazon S3 Access Grants, a new S3 access control feature that maps identities in directories such as Active Directory, or AWS Identity and Access Management (IAM) Principals, to datasets in S3. + 1.72.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-s3control/VERSION b/gems/aws-sdk-s3control/VERSION index 0834888f558..5e3a4256626 100644 --- a/gems/aws-sdk-s3control/VERSION +++ b/gems/aws-sdk-s3control/VERSION @@ -1 +1 @@ -1.72.0 +1.73.0 diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control.rb index a6474941328..2e8730f60b6 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control.rb @@ -32,7 +32,7 @@ # structure. # # s3_control = Aws::S3Control::Client.new -# resp = s3_control.create_access_point(params) +# resp = s3_control.associate_access_grants_identity_center(params) # # See {Client} for more information. # @@ -52,6 +52,6 @@ # @!group service module Aws::S3Control - GEM_VERSION = '1.72.0' + GEM_VERSION = '1.73.0' end diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client.rb index 1ac098492a7..8f80441818b 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client.rb @@ -400,6 +400,363 @@ def initialize(*args) # @!group API Operations + # Associate your S3 Access Grants instance with an Amazon Web Services + # IAM Identity Center instance. Use this action if you want to create + # access grants for users or groups from your corporate identity + # directory. First, you must add your corporate identity directory to + # Amazon Web Services IAM Identity Center. Then, you can associate this + # IAM Identity Center instance with your S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:AssociateAccessGrantsIdentityCenter` + # permission to use this operation. + # + # Additional Permissions + # + # : You must also have the following permissions: + # `sso:CreateApplication`, `sso:PutApplicationGrant`, and + # `sso:PutApplicationAuthenticationMethod`. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :identity_center_arn + # The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity + # Center instance that you are associating with your S3 Access Grants + # instance. An IAM Identity Center instance is your corporate identity + # directory that you added to the IAM Identity Center. You can use the + # [ListInstances][1] API operation to retrieve a list of your Identity + # Center instances and their ARNs. + # + # + # + # [1]: https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.associate_access_grants_identity_center({ + # account_id: "AccountId", + # identity_center_arn: "IdentityCenterArn", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/AssociateAccessGrantsIdentityCenter AWS API Documentation + # + # @overload associate_access_grants_identity_center(params = {}) + # @param [Hash] params ({}) + def associate_access_grants_identity_center(params = {}, options = {}) + req = build_request(:associate_access_grants_identity_center, params) + req.send_request(options) + end + + # Creates an access grant that gives a grantee access to your S3 data. + # The grantee can be an IAM user or role or a directory user, or group. + # Before you can create a grant, you must have an S3 Access Grants + # instance in the same Region as the S3 data. You can create an S3 + # Access Grants instance using the [CreateAccessGrantsInstance][1]. You + # must also have registered at least one S3 data location in your S3 + # Access Grants instance using [CreateAccessGrantsLocation][2]. + # + # Permissions + # + # : You must have the `s3:CreateAccessGrant` permission to use this + # operation. + # + # Additional Permissions + # + # : For any directory identity - `sso:DescribeInstance` and + # `sso:DescribeApplication` + # + # For directory users - `identitystore:DescribeUser` + # + # For directory groups - `identitystore:DescribeGroup` + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :access_grants_location_id + # The ID of the registered location to which you are granting access. S3 + # Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location `s3://` + # and assigns an auto-generated ID to other locations that you register. + # + # If you are passing the `default` location, you cannot create an access + # grant for the entire default location. You must also specify a bucket + # or a bucket and prefix in the `Subprefix` field. + # + # @option params [Types::AccessGrantsLocationConfiguration] :access_grants_location_configuration + # The configuration options of the grant location. The grant location is + # the S3 path to the data to which you are granting access. It contains + # the `S3SubPrefix` field. The grant scope is the result of appending + # the subprefix to the location scope of the registered location. + # + # @option params [required, Types::Grantee] :grantee + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added your corporate + # directory to Amazon Web Services IAM Identity Center and associated + # your Identity Center instance with your S3 Access Grants instance, the + # grantee can also be a corporate directory user or group. + # + # @option params [required, String] :permission + # The type of access that you are granting to your S3 data, which can be + # set to one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # + # @option params [String] :application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity + # Center application associated with your Identity Center instance. If + # an application ARN is included in the request to create an access + # grant, the grantee can only access the S3 data through this + # application. + # + # @option params [String] :s3_prefix_type + # The type of `S3SubPrefix`. The only possible value is `Object`. Pass + # this value if the access grant scope is an object. Do not pass this + # value if the access grant scope is a bucket or a bucket and a prefix. + # + # @option params [Array] :tags + # The Amazon Web Services resource tags that you are adding to the + # access grant. Each tag is a label consisting of a user-defined key and + # value. Tags can help you manage, identify, organize, search for, and + # filter resources. + # + # @return [Types::CreateAccessGrantResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateAccessGrantResult#created_at #created_at} => Time + # * {Types::CreateAccessGrantResult#access_grant_id #access_grant_id} => String + # * {Types::CreateAccessGrantResult#access_grant_arn #access_grant_arn} => String + # * {Types::CreateAccessGrantResult#grantee #grantee} => Types::Grantee + # * {Types::CreateAccessGrantResult#access_grants_location_id #access_grants_location_id} => String + # * {Types::CreateAccessGrantResult#access_grants_location_configuration #access_grants_location_configuration} => Types::AccessGrantsLocationConfiguration + # * {Types::CreateAccessGrantResult#permission #permission} => String + # * {Types::CreateAccessGrantResult#application_arn #application_arn} => String + # * {Types::CreateAccessGrantResult#grant_scope #grant_scope} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_access_grant({ + # account_id: "AccountId", + # access_grants_location_id: "AccessGrantsLocationId", # required + # access_grants_location_configuration: { + # s3_sub_prefix: "S3Prefix", + # }, + # grantee: { # required + # grantee_type: "DIRECTORY_USER", # accepts DIRECTORY_USER, DIRECTORY_GROUP, IAM + # grantee_identifier: "GranteeIdentifier", + # }, + # permission: "READ", # required, accepts READ, WRITE, READWRITE + # application_arn: "IdentityCenterApplicationArn", + # s3_prefix_type: "Object", # accepts Object + # tags: [ + # { + # key: "TagKeyString", # required + # value: "TagValueString", # required + # }, + # ], + # }) + # + # @example Response structure + # + # resp.created_at #=> Time + # resp.access_grant_id #=> String + # resp.access_grant_arn #=> String + # resp.grantee.grantee_type #=> String, one of "DIRECTORY_USER", "DIRECTORY_GROUP", "IAM" + # resp.grantee.grantee_identifier #=> String + # resp.access_grants_location_id #=> String + # resp.access_grants_location_configuration.s3_sub_prefix #=> String + # resp.permission #=> String, one of "READ", "WRITE", "READWRITE" + # resp.application_arn #=> String + # resp.grant_scope #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrant AWS API Documentation + # + # @overload create_access_grant(params = {}) + # @param [Hash] params ({}) + def create_access_grant(params = {}, options = {}) + req = build_request(:create_access_grant, params) + req.send_request(options) + end + + # Creates an S3 Access Grants instance, which serves as a logical + # grouping for access grants. You can create one S3 Access Grants + # instance per Region per account. + # + # Permissions + # + # : You must have the `s3:CreateAccessGrantsInstance` permission to use + # this operation. + # + # Additional Permissions + # + # : To associate an IAM Identity Center instance with your S3 Access + # Grants instance, you must also have the `sso:DescribeInstance`, + # `sso:CreateApplication`, `sso:PutApplicationGrant`, and + # `sso:PutApplicationAuthenticationMethod` permissions. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [String] :identity_center_arn + # If you would like to associate your S3 Access Grants instance with an + # Amazon Web Services IAM Identity Center instance, use this field to + # pass the Amazon Resource Name (ARN) of the Amazon Web Services IAM + # Identity Center instance that you are associating with your S3 Access + # Grants instance. An IAM Identity Center instance is your corporate + # identity directory that you added to the IAM Identity Center. You can + # use the [ListInstances][1] API operation to retrieve a list of your + # Identity Center instances and their ARNs. + # + # + # + # [1]: https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html + # + # @option params [Array] :tags + # The Amazon Web Services resource tags that you are adding to the S3 + # Access Grants instance. Each tag is a label consisting of a + # user-defined key and value. Tags can help you manage, identify, + # organize, search for, and filter resources. + # + # @return [Types::CreateAccessGrantsInstanceResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateAccessGrantsInstanceResult#created_at #created_at} => Time + # * {Types::CreateAccessGrantsInstanceResult#access_grants_instance_id #access_grants_instance_id} => String + # * {Types::CreateAccessGrantsInstanceResult#access_grants_instance_arn #access_grants_instance_arn} => String + # * {Types::CreateAccessGrantsInstanceResult#identity_center_arn #identity_center_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_access_grants_instance({ + # account_id: "AccountId", + # identity_center_arn: "IdentityCenterArn", + # tags: [ + # { + # key: "TagKeyString", # required + # value: "TagValueString", # required + # }, + # ], + # }) + # + # @example Response structure + # + # resp.created_at #=> Time + # resp.access_grants_instance_id #=> String + # resp.access_grants_instance_arn #=> String + # resp.identity_center_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsInstance AWS API Documentation + # + # @overload create_access_grants_instance(params = {}) + # @param [Hash] params ({}) + def create_access_grants_instance(params = {}, options = {}) + req = build_request(:create_access_grants_instance, params) + req.send_request(options) + end + + # The S3 data location that you would like to register in your S3 Access + # Grants instance. Your S3 data must be in the same Region as your S3 + # Access Grants instance. The location can be one of the following: + # + # * The default S3 location `s3://` + # + # * A bucket - `S3://` + # + # * A bucket and prefix - `S3:///` + # + # When you register a location, you must include the IAM role that has + # permission to manage the S3 location that you are registering. Give S3 + # Access Grants permission to assume this role [using a policy][1]. S3 + # Access Grants assumes this role to manage access to the location and + # to vend temporary credentials to grantees or client applications. + # + # Permissions + # + # : You must have the `s3:CreateAccessGrantsLocation` permission to use + # this operation. + # + # Additional Permissions + # + # : You must also have the following permission for the specified IAM + # role: `iam:PassRole` + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :location_scope + # The S3 path to the location that you are registering. The location + # scope can be the default S3 location `s3://`, the S3 path to a bucket + # `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. A prefix in S3 is a string of characters at + # the beginning of an object key name used to organize the objects that + # you store in your S3 buckets. For example, object key names that start + # with the `engineering/` prefix or object key names that start with the + # `marketing/campaigns/` prefix. + # + # @option params [required, String] :iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # + # @option params [Array] :tags + # The Amazon Web Services resource tags that you are adding to the S3 + # Access Grants location. Each tag is a label consisting of a + # user-defined key and value. Tags can help you manage, identify, + # organize, search for, and filter resources. + # + # @return [Types::CreateAccessGrantsLocationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateAccessGrantsLocationResult#created_at #created_at} => Time + # * {Types::CreateAccessGrantsLocationResult#access_grants_location_id #access_grants_location_id} => String + # * {Types::CreateAccessGrantsLocationResult#access_grants_location_arn #access_grants_location_arn} => String + # * {Types::CreateAccessGrantsLocationResult#location_scope #location_scope} => String + # * {Types::CreateAccessGrantsLocationResult#iam_role_arn #iam_role_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.create_access_grants_location({ + # account_id: "AccountId", + # location_scope: "S3Prefix", # required + # iam_role_arn: "IAMRoleArn", # required + # tags: [ + # { + # key: "TagKeyString", # required + # value: "TagValueString", # required + # }, + # ], + # }) + # + # @example Response structure + # + # resp.created_at #=> Time + # resp.access_grants_location_id #=> String + # resp.access_grants_location_arn #=> String + # resp.location_scope #=> String + # resp.iam_role_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsLocation AWS API Documentation + # + # @overload create_access_grants_location(params = {}) + # @param [Hash] params ({}) + def create_access_grants_location(params = {}, options = {}) + req = build_request(:create_access_grants_location, params) + req.send_request(options) + end + # Creates an access point and associates it with the specified bucket. # For more information, see [Managing Data Access with Amazon S3 Access # Points][1] in the *Amazon S3 User Guide*. @@ -1226,6 +1583,156 @@ def create_storage_lens_group(params = {}, options = {}) req.send_request(options) end + # Deletes the access grant from the S3 Access Grants instance. You + # cannot undo an access grant deletion and the grantee will no longer + # have access to the S3 data. + # + # Permissions + # + # : You must have the `s3:DeleteAccessGrant` permission to use this + # operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_access_grant({ + # account_id: "AccountId", + # access_grant_id: "AccessGrantId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrant AWS API Documentation + # + # @overload delete_access_grant(params = {}) + # @param [Hash] params ({}) + def delete_access_grant(params = {}, options = {}) + req = build_request(:delete_access_grant, params) + req.send_request(options) + end + + # Deletes your S3 Access Grants instance. You must first delete the + # access grants and locations before S3 Access Grants can delete the + # instance. See [DeleteAccessGrant][1] and + # [DeleteAccessGrantsLocation][2]. If you have associated an IAM + # Identity Center instance with your S3 Access Grants instance, you must + # first dissassociate the Identity Center instance from the S3 Access + # Grants instance before you can delete the S3 Access Grants instance. + # See [AssociateAccessGrantsIdentityCenter][3] and + # [DissociateAccessGrantsIdentityCenter][4]. + # + # Permissions + # + # : You must have the `s3:DeleteAccessGrantsInstance` permission to use + # this operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html + # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html + # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_access_grants_instance({ + # account_id: "AccountId", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsInstance AWS API Documentation + # + # @overload delete_access_grants_instance(params = {}) + # @param [Hash] params ({}) + def delete_access_grants_instance(params = {}, options = {}) + req = build_request(:delete_access_grants_instance, params) + req.send_request(options) + end + + # Deletes the resource policy of the S3 Access Grants instance. The + # resource policy is used to manage cross-account access to your S3 + # Access Grants instance. By deleting the resource policy, you delete + # any cross-account permissions to your S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:DeleteAccessGrantsInstanceResourcePolicy` + # permission to use this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_access_grants_instance_resource_policy({ + # account_id: "AccountId", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsInstanceResourcePolicy AWS API Documentation + # + # @overload delete_access_grants_instance_resource_policy(params = {}) + # @param [Hash] params ({}) + def delete_access_grants_instance_resource_policy(params = {}, options = {}) + req = build_request(:delete_access_grants_instance_resource_policy, params) + req.send_request(options) + end + + # Deregisters a location from your S3 Access Grants instance. You can + # only delete a location registration from an S3 Access Grants instance + # if there are no grants associated with this location. See [Delete a + # grant][1] for information on how to delete grants. You need to have at + # least one registered location in your S3 Access Grants instance in + # order to create access grants. + # + # Permissions + # + # : You must have the `s3:DeleteAccessGrantsLocation` permission to use + # this operation. + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :access_grants_location_id + # The ID of the registered location that you are deregistering from your + # S3 Access Grants instance. S3 Access Grants assigned this ID when you + # registered the location. S3 Access Grants assigns the ID `default` to + # the default location `s3://` and assigns an auto-generated ID to other + # locations that you register. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_access_grants_location({ + # account_id: "AccountId", + # access_grants_location_id: "AccessGrantsLocationId", # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsLocation AWS API Documentation + # + # @overload delete_access_grants_location(params = {}) + # @param [Hash] params ({}) + def delete_access_grants_location(params = {}, options = {}) + req = build_request(:delete_access_grants_location, params) + req.send_request(options) + end + # Deletes the specified access point. # # All Amazon S3 on Outposts REST API requests for this action require an @@ -2296,70 +2803,330 @@ def describe_job(params = {}, options = {}) # # * [DeleteMultiRegionAccessPoint][3] # - # * [GetMultiRegionAccessPoint][4] + # * [GetMultiRegionAccessPoint][4] + # + # * [ListMultiRegionAccessPoints][5] + # + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManagingMultiRegionAccessPoints.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html + # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteMultiRegionAccessPoint.html + # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html + # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html + # + # @option params [String] :account_id + # The Amazon Web Services account ID for the owner of the Multi-Region + # Access Point. + # + # @option params [required, String] :request_token_arn + # The request token associated with the request you want to know about. + # This request token is returned as part of the response when you make + # an asynchronous request. You provide this token to query about the + # status of the asynchronous action. + # + # @return [Types::DescribeMultiRegionAccessPointOperationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::DescribeMultiRegionAccessPointOperationResult#async_operation #async_operation} => Types::AsyncOperation + # + # @example Request syntax with placeholder values + # + # resp = client.describe_multi_region_access_point_operation({ + # account_id: "AccountId", + # request_token_arn: "AsyncRequestTokenARN", # required + # }) + # + # @example Response structure + # + # resp.async_operation.creation_time #=> Time + # resp.async_operation.operation #=> String, one of "CreateMultiRegionAccessPoint", "DeleteMultiRegionAccessPoint", "PutMultiRegionAccessPointPolicy" + # resp.async_operation.request_token_arn #=> String + # resp.async_operation.request_parameters.create_multi_region_access_point_request.name #=> String + # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.block_public_acls #=> Boolean + # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.ignore_public_acls #=> Boolean + # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.block_public_policy #=> Boolean + # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.restrict_public_buckets #=> Boolean + # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions #=> Array + # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions[0].bucket #=> String + # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions[0].bucket_account_id #=> String + # resp.async_operation.request_parameters.delete_multi_region_access_point_request.name #=> String + # resp.async_operation.request_parameters.put_multi_region_access_point_policy_request.name #=> String + # resp.async_operation.request_parameters.put_multi_region_access_point_policy_request.policy #=> String + # resp.async_operation.request_status #=> String + # resp.async_operation.response_details.multi_region_access_point_details.regions #=> Array + # resp.async_operation.response_details.multi_region_access_point_details.regions[0].name #=> String + # resp.async_operation.response_details.multi_region_access_point_details.regions[0].request_status #=> String + # resp.async_operation.response_details.error_details.code #=> String + # resp.async_operation.response_details.error_details.message #=> String + # resp.async_operation.response_details.error_details.resource #=> String + # resp.async_operation.response_details.error_details.request_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DescribeMultiRegionAccessPointOperation AWS API Documentation + # + # @overload describe_multi_region_access_point_operation(params = {}) + # @param [Hash] params ({}) + def describe_multi_region_access_point_operation(params = {}, options = {}) + req = build_request(:describe_multi_region_access_point_operation, params) + req.send_request(options) + end + + # Dissociates the Amazon Web Services IAM Identity Center instance from + # the S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:DissociateAccessGrantsIdentityCenter` + # permission to use this operation. + # + # Additional Permissions + # + # : You must have the `sso:DeleteApplication` permission to use this + # operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.dissociate_access_grants_identity_center({ + # account_id: "AccountId", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DissociateAccessGrantsIdentityCenter AWS API Documentation + # + # @overload dissociate_access_grants_identity_center(params = {}) + # @param [Hash] params ({}) + def dissociate_access_grants_identity_center(params = {}, options = {}) + req = build_request(:dissociate_access_grants_identity_center, params) + req.send_request(options) + end + + # Get the details of an access grant from your S3 Access Grants + # instance. + # + # Permissions + # + # : You must have the `s3:GetAccessGrant` permission to use this + # operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # + # @return [Types::GetAccessGrantResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetAccessGrantResult#created_at #created_at} => Time + # * {Types::GetAccessGrantResult#access_grant_id #access_grant_id} => String + # * {Types::GetAccessGrantResult#access_grant_arn #access_grant_arn} => String + # * {Types::GetAccessGrantResult#grantee #grantee} => Types::Grantee + # * {Types::GetAccessGrantResult#permission #permission} => String + # * {Types::GetAccessGrantResult#access_grants_location_id #access_grants_location_id} => String + # * {Types::GetAccessGrantResult#access_grants_location_configuration #access_grants_location_configuration} => Types::AccessGrantsLocationConfiguration + # * {Types::GetAccessGrantResult#grant_scope #grant_scope} => String + # * {Types::GetAccessGrantResult#application_arn #application_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_access_grant({ + # account_id: "AccountId", + # access_grant_id: "AccessGrantId", # required + # }) + # + # @example Response structure + # + # resp.created_at #=> Time + # resp.access_grant_id #=> String + # resp.access_grant_arn #=> String + # resp.grantee.grantee_type #=> String, one of "DIRECTORY_USER", "DIRECTORY_GROUP", "IAM" + # resp.grantee.grantee_identifier #=> String + # resp.permission #=> String, one of "READ", "WRITE", "READWRITE" + # resp.access_grants_location_id #=> String + # resp.access_grants_location_configuration.s3_sub_prefix #=> String + # resp.grant_scope #=> String + # resp.application_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrant AWS API Documentation + # + # @overload get_access_grant(params = {}) + # @param [Hash] params ({}) + def get_access_grant(params = {}, options = {}) + req = build_request(:get_access_grant, params) + req.send_request(options) + end + + # Retrieves the S3 Access Grants instance for a Region in your account. + # + # Permissions + # + # : You must have the `s3:GetAccessGrantsInstance` permission to use + # this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @return [Types::GetAccessGrantsInstanceResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetAccessGrantsInstanceResult#access_grants_instance_arn #access_grants_instance_arn} => String + # * {Types::GetAccessGrantsInstanceResult#access_grants_instance_id #access_grants_instance_id} => String + # * {Types::GetAccessGrantsInstanceResult#identity_center_arn #identity_center_arn} => String + # * {Types::GetAccessGrantsInstanceResult#created_at #created_at} => Time + # + # @example Request syntax with placeholder values + # + # resp = client.get_access_grants_instance({ + # account_id: "AccountId", + # }) + # + # @example Response structure + # + # resp.access_grants_instance_arn #=> String + # resp.access_grants_instance_id #=> String + # resp.identity_center_arn #=> String + # resp.created_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstance AWS API Documentation + # + # @overload get_access_grants_instance(params = {}) + # @param [Hash] params ({}) + def get_access_grants_instance(params = {}, options = {}) + req = build_request(:get_access_grants_instance, params) + req.send_request(options) + end + + # Retrieve the S3 Access Grants instance that contains a particular + # prefix. + # + # Permissions + # + # : You must have the `s3:GetAccessGrantsInstanceForPrefix` permission + # for the caller account to use this operation. + # + # Additional Permissions + # + # : The prefix owner account must grant you the following permissions to + # their S3 Access Grants instance: + # `s3:GetAccessGrantsInstanceForPrefix`. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :s3_prefix + # The S3 prefix of the access grants that you would like to retrieve. + # + # @return [Types::GetAccessGrantsInstanceForPrefixResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetAccessGrantsInstanceForPrefixResult#access_grants_instance_arn #access_grants_instance_arn} => String + # * {Types::GetAccessGrantsInstanceForPrefixResult#access_grants_instance_id #access_grants_instance_id} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_access_grants_instance_for_prefix({ + # account_id: "AccountId", + # s3_prefix: "S3Prefix", # required + # }) + # + # @example Response structure + # + # resp.access_grants_instance_arn #=> String + # resp.access_grants_instance_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceForPrefix AWS API Documentation + # + # @overload get_access_grants_instance_for_prefix(params = {}) + # @param [Hash] params ({}) + def get_access_grants_instance_for_prefix(params = {}, options = {}) + req = build_request(:get_access_grants_instance_for_prefix, params) + req.send_request(options) + end + + # Returns the resource policy of the S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:GetAccessGrantsInstanceResourcePolicy` + # permission to use this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @return [Types::GetAccessGrantsInstanceResourcePolicyResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetAccessGrantsInstanceResourcePolicyResult#policy #policy} => String + # * {Types::GetAccessGrantsInstanceResourcePolicyResult#organization #organization} => String + # * {Types::GetAccessGrantsInstanceResourcePolicyResult#created_at #created_at} => Time + # + # @example Request syntax with placeholder values + # + # resp = client.get_access_grants_instance_resource_policy({ + # account_id: "AccountId", + # }) + # + # @example Response structure + # + # resp.policy #=> String + # resp.organization #=> String + # resp.created_at #=> Time # - # * [ListMultiRegionAccessPoints][5] + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceResourcePolicy AWS API Documentation # + # @overload get_access_grants_instance_resource_policy(params = {}) + # @param [Hash] params ({}) + def get_access_grants_instance_resource_policy(params = {}, options = {}) + req = build_request(:get_access_grants_instance_resource_policy, params) + req.send_request(options) + end + + # Retrieves the details of a particular location registered in your S3 + # Access Grants instance. # + # Permissions # - # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManagingMultiRegionAccessPoints.html - # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html - # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteMultiRegionAccessPoint.html - # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html - # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html + # : You must have the `s3:GetAccessGrantsLocation` permission to use + # this operation. # # @option params [String] :account_id - # The Amazon Web Services account ID for the owner of the Multi-Region - # Access Point. + # The ID of the Amazon Web Services account that is making this request. # - # @option params [required, String] :request_token_arn - # The request token associated with the request you want to know about. - # This request token is returned as part of the response when you make - # an asynchronous request. You provide this token to query about the - # status of the asynchronous action. + # @option params [required, String] :access_grants_location_id + # The ID of the registered location that you are retrieving. S3 Access + # Grants assigns this ID when you register the location. S3 Access + # Grants assigns the ID `default` to the default location `s3://` and + # assigns an auto-generated ID to other locations that you register. # - # @return [Types::DescribeMultiRegionAccessPointOperationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # @return [Types::GetAccessGrantsLocationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # - # * {Types::DescribeMultiRegionAccessPointOperationResult#async_operation #async_operation} => Types::AsyncOperation + # * {Types::GetAccessGrantsLocationResult#created_at #created_at} => Time + # * {Types::GetAccessGrantsLocationResult#access_grants_location_id #access_grants_location_id} => String + # * {Types::GetAccessGrantsLocationResult#access_grants_location_arn #access_grants_location_arn} => String + # * {Types::GetAccessGrantsLocationResult#location_scope #location_scope} => String + # * {Types::GetAccessGrantsLocationResult#iam_role_arn #iam_role_arn} => String # # @example Request syntax with placeholder values # - # resp = client.describe_multi_region_access_point_operation({ + # resp = client.get_access_grants_location({ # account_id: "AccountId", - # request_token_arn: "AsyncRequestTokenARN", # required + # access_grants_location_id: "AccessGrantsLocationId", # required # }) # # @example Response structure # - # resp.async_operation.creation_time #=> Time - # resp.async_operation.operation #=> String, one of "CreateMultiRegionAccessPoint", "DeleteMultiRegionAccessPoint", "PutMultiRegionAccessPointPolicy" - # resp.async_operation.request_token_arn #=> String - # resp.async_operation.request_parameters.create_multi_region_access_point_request.name #=> String - # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.block_public_acls #=> Boolean - # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.ignore_public_acls #=> Boolean - # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.block_public_policy #=> Boolean - # resp.async_operation.request_parameters.create_multi_region_access_point_request.public_access_block.restrict_public_buckets #=> Boolean - # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions #=> Array - # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions[0].bucket #=> String - # resp.async_operation.request_parameters.create_multi_region_access_point_request.regions[0].bucket_account_id #=> String - # resp.async_operation.request_parameters.delete_multi_region_access_point_request.name #=> String - # resp.async_operation.request_parameters.put_multi_region_access_point_policy_request.name #=> String - # resp.async_operation.request_parameters.put_multi_region_access_point_policy_request.policy #=> String - # resp.async_operation.request_status #=> String - # resp.async_operation.response_details.multi_region_access_point_details.regions #=> Array - # resp.async_operation.response_details.multi_region_access_point_details.regions[0].name #=> String - # resp.async_operation.response_details.multi_region_access_point_details.regions[0].request_status #=> String - # resp.async_operation.response_details.error_details.code #=> String - # resp.async_operation.response_details.error_details.message #=> String - # resp.async_operation.response_details.error_details.resource #=> String - # resp.async_operation.response_details.error_details.request_id #=> String + # resp.created_at #=> Time + # resp.access_grants_location_id #=> String + # resp.access_grants_location_arn #=> String + # resp.location_scope #=> String + # resp.iam_role_arn #=> String # - # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DescribeMultiRegionAccessPointOperation AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsLocation AWS API Documentation # - # @overload describe_multi_region_access_point_operation(params = {}) + # @overload get_access_grants_location(params = {}) # @param [Hash] params ({}) - def describe_multi_region_access_point_operation(params = {}, options = {}) - req = build_request(:describe_multi_region_access_point_operation, params) + def get_access_grants_location(params = {}, options = {}) + req = build_request(:get_access_grants_location, params) req.send_request(options) end @@ -3346,6 +4113,102 @@ def get_bucket_versioning(params = {}, options = {}) req.send_request(options) end + # Returns a temporary access credential from S3 Access Grants to the + # grantee or client application. The [temporary credential][1] is an + # Amazon Web Services STS token that grants them access to the S3 data. + # + # Permissions + # + # : You must have the `s3:GetDataAccess` permission to use this + # operation. + # + # Additional Permissions + # + # : The IAM role that S3 Access Grants assumes must have the following + # permissions specified in the trust policy when registering the + # location: `sts:AssumeRole`, for directory users or groups + # `sts:SetContext`, and for IAM users or roles `sts:SourceIdentity`. + # + # + # + # [1]: https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :target + # The S3 URI path of the data to which you are requesting temporary + # access credentials. If the requesting account has an access grant for + # this data, S3 Access Grants vends temporary access credentials in the + # response. + # + # @option params [required, String] :permission + # The type of permission granted to your S3 data, which can be set to + # one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # + # @option params [Integer] :duration_seconds + # The session duration, in seconds, of the temporary access credential + # that S3 Access Grants vends to the grantee or client application. The + # default value is 1 hour, but the grantee can specify a range from 900 + # seconds (15 minutes) up to 43200 seconds (12 hours). If the grantee + # requests a value higher than this maximum, the operation fails. + # + # @option params [String] :privilege + # The scope of the temporary access credential that S3 Access Grants + # vends to the grantee or client application. + # + # * `Default` – The scope of the returned temporary access token is the + # scope of the grant that is closest to the target scope. + # + # * `Minimal` – The scope of the returned temporary access token is the + # same as the requested target scope as long as the requested scope is + # the same as or a subset of the grant scope. + # + # @option params [String] :target_type + # The type of `Target`. The only possible value is `Object`. Pass this + # value if the target data that you would like to access is a path to an + # object. Do not pass this value if the target data is a bucket or a + # bucket and a prefix. + # + # @return [Types::GetDataAccessResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetDataAccessResult#credentials #credentials} => Types::Credentials + # * {Types::GetDataAccessResult#matched_grant_target #matched_grant_target} => String + # + # @example Request syntax with placeholder values + # + # resp = client.get_data_access({ + # account_id: "AccountId", + # target: "S3Prefix", # required + # permission: "READ", # required, accepts READ, WRITE, READWRITE + # duration_seconds: 1, + # privilege: "Minimal", # accepts Minimal, Default + # target_type: "Object", # accepts Object + # }) + # + # @example Response structure + # + # resp.credentials.access_key_id #=> String + # resp.credentials.secret_access_key #=> String + # resp.credentials.session_token #=> String + # resp.credentials.expiration #=> Time + # resp.matched_grant_target #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetDataAccess AWS API Documentation + # + # @overload get_data_access(params = {}) + # @param [Hash] params ({}) + def get_data_access(params = {}, options = {}) + req = build_request(:get_data_access, params) + req.send_request(options) + end + # Returns the tags on an S3 Batch Operations job. To use the # `GetJobTagging` operation, you must have permission to perform the # `s3:GetJobTagging` action. For more information, see [Controlling @@ -3916,6 +4779,239 @@ def get_storage_lens_group(params = {}, options = {}) req.send_request(options) end + # Returns the list of access grants in your S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:ListAccessGrants` permission to use this + # operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [String] :next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants` request in order to + # retrieve the next page of results. + # + # @option params [Integer] :max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the `NextToken` + # to determine if there are more results. + # + # @option params [String] :grantee_type + # The type of the grantee to which access has been granted. It can be + # one of the following values: + # + # * `IAM` - An IAM user or role. + # + # * `DIRECTORY_USER` - Your corporate directory user. You can use this + # option if you have added your corporate identity directory to IAM + # Identity Center and associated the IAM Identity Center instance with + # your S3 Access Grants instance. + # + # * `DIRECTORY_GROUP` - Your corporate directory group. You can use this + # option if you have added your corporate identity directory to IAM + # Identity Center and associated the IAM Identity Center instance with + # your S3 Access Grants instance. + # + # @option params [String] :grantee_identifier + # The unique identifer of the `Grantee`. If the grantee type is `IAM`, + # the identifier is the IAM Amazon Resource Name (ARN) of the user or + # role. If the grantee type is a directory user or group, the identifier + # is 128-bit universally unique identifier (UUID) in the format + # `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`. You can obtain this UUID from + # your Amazon Web Services IAM Identity Center instance. + # + # @option params [String] :permission + # The type of permission granted to your S3 data, which can be set to + # one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # + # @option params [String] :grant_scope + # The S3 path of the data to which you are granting access. It is the + # result of appending the `Subprefix` to the location scope. + # + # @option params [String] :application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity + # Center application associated with your Identity Center instance. If + # the grant includes an application ARN, the grantee can only access the + # S3 data through this application. + # + # @return [Types::ListAccessGrantsResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListAccessGrantsResult#next_token #next_token} => String + # * {Types::ListAccessGrantsResult#access_grants_list #access_grants_list} => Array<Types::ListAccessGrantEntry> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_access_grants({ + # account_id: "AccountId", + # next_token: "ContinuationToken", + # max_results: 1, + # grantee_type: "DIRECTORY_USER", # accepts DIRECTORY_USER, DIRECTORY_GROUP, IAM + # grantee_identifier: "GranteeIdentifier", + # permission: "READ", # accepts READ, WRITE, READWRITE + # grant_scope: "S3Prefix", + # application_arn: "IdentityCenterApplicationArn", + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.access_grants_list #=> Array + # resp.access_grants_list[0].created_at #=> Time + # resp.access_grants_list[0].access_grant_id #=> String + # resp.access_grants_list[0].access_grant_arn #=> String + # resp.access_grants_list[0].grantee.grantee_type #=> String, one of "DIRECTORY_USER", "DIRECTORY_GROUP", "IAM" + # resp.access_grants_list[0].grantee.grantee_identifier #=> String + # resp.access_grants_list[0].permission #=> String, one of "READ", "WRITE", "READWRITE" + # resp.access_grants_list[0].access_grants_location_id #=> String + # resp.access_grants_list[0].access_grants_location_configuration.s3_sub_prefix #=> String + # resp.access_grants_list[0].grant_scope #=> String + # resp.access_grants_list[0].application_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrants AWS API Documentation + # + # @overload list_access_grants(params = {}) + # @param [Hash] params ({}) + def list_access_grants(params = {}, options = {}) + req = build_request(:list_access_grants, params) + req.send_request(options) + end + + # Returns a list of S3 Access Grants instances. An S3 Access Grants + # instance serves as a logical grouping for your individual access + # grants. You can only have one S3 Access Grants instance per Region per + # account. + # + # Permissions + # + # : You must have the `s3:ListAccessGrantsInstances` permission to use + # this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [String] :next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Instances` request in + # order to retrieve the next page of results. + # + # @option params [Integer] :max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the `NextToken` + # to determine if there are more results. + # + # @return [Types::ListAccessGrantsInstancesResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListAccessGrantsInstancesResult#next_token #next_token} => String + # * {Types::ListAccessGrantsInstancesResult#access_grants_instances_list #access_grants_instances_list} => Array<Types::ListAccessGrantsInstanceEntry> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_access_grants_instances({ + # account_id: "AccountId", + # next_token: "ContinuationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.access_grants_instances_list #=> Array + # resp.access_grants_instances_list[0].access_grants_instance_id #=> String + # resp.access_grants_instances_list[0].access_grants_instance_arn #=> String + # resp.access_grants_instances_list[0].created_at #=> Time + # resp.access_grants_instances_list[0].identity_center_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsInstances AWS API Documentation + # + # @overload list_access_grants_instances(params = {}) + # @param [Hash] params ({}) + def list_access_grants_instances(params = {}, options = {}) + req = build_request(:list_access_grants_instances, params) + req.send_request(options) + end + + # Returns a list of the locations registered in your S3 Access Grants + # instance. + # + # Permissions + # + # : You must have the `s3:ListAccessGrantsLocations` permission to use + # this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [String] :next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Locations` request in + # order to retrieve the next page of results. + # + # @option params [Integer] :max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the `NextToken` + # to determine if there are more results. + # + # @option params [String] :location_scope + # The S3 path to the location that you are registering. The location + # scope can be the default S3 location `s3://`, the S3 path to a bucket + # `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. A prefix in S3 is a string of characters at + # the beginning of an object key name used to organize the objects that + # you store in your S3 buckets. For example, object key names that start + # with the `engineering/` prefix or object key names that start with the + # `marketing/campaigns/` prefix. + # + # @return [Types::ListAccessGrantsLocationsResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListAccessGrantsLocationsResult#next_token #next_token} => String + # * {Types::ListAccessGrantsLocationsResult#access_grants_locations_list #access_grants_locations_list} => Array<Types::ListAccessGrantsLocationsEntry> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_access_grants_locations({ + # account_id: "AccountId", + # next_token: "ContinuationToken", + # max_results: 1, + # location_scope: "S3Prefix", + # }) + # + # @example Response structure + # + # resp.next_token #=> String + # resp.access_grants_locations_list #=> Array + # resp.access_grants_locations_list[0].created_at #=> Time + # resp.access_grants_locations_list[0].access_grants_location_id #=> String + # resp.access_grants_locations_list[0].access_grants_location_arn #=> String + # resp.access_grants_locations_list[0].location_scope #=> String + # resp.access_grants_locations_list[0].iam_role_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsLocations AWS API Documentation + # + # @overload list_access_grants_locations(params = {}) + # @param [Hash] params ({}) + def list_access_grants_locations(params = {}, options = {}) + req = build_request(:list_access_grants_locations, params) + req.send_request(options) + end + # Returns a list of the access points that are owned by the current # account that's associated with the specified bucket. You can retrieve # up to 1000 access points per call. If the specified bucket has more @@ -4425,32 +5521,43 @@ def list_storage_lens_groups(params = {}, options = {}) end # This operation allows you to list all the Amazon Web Services resource - # tags for the specified resource. + # tags for a specified resource. Each tag is a label consisting of a + # user-defined key and value. Tags can help you manage, identify, + # organize, search for, and filter resources. # - # To use this operation, you must have the permission to perform the - # `s3:ListTagsForResource` action. For more information about the - # required Storage Lens Groups permissions, see [Setting account - # permissions to use S3 Storage Lens groups][1]. + # Permissions # - # For information about S3 Tagging errors, see [List of Amazon S3 - # Tagging error codes][2]. + # : You must have the `s3:ListTagsForResource` permission to use this + # operation. # - # This operation is only supported for [S3 Storage Lens groups][3]. + # This operation is only supported for [S3 Storage Lens groups][1] and + # for [S3 Access Grants][2]. The tagged resource can be an S3 Storage + # Lens group or S3 Access Grants instance, registered location, or + # grant. # # # + # For more information about the required Storage Lens Groups + # permissions, see [Setting account permissions to use S3 Storage Lens + # groups][3]. # + # For information about S3 Tagging errors, see [List of Amazon S3 + # Tagging error codes][4]. # - # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions - # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList - # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-tagging.html + # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions + # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList # # @option params [String] :account_id # The Amazon Web Services account ID of the resource owner. # # @option params [required, String] :resource_arn # The Amazon Resource Name (ARN) of the S3 resource that you want to - # list the tags for. + # list the tags for. The tagged resource can be an S3 Storage Lens group + # or S3 Access Grants instance, registered location, or grant. # # @return [Types::ListTagsForResourceResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # @@ -4478,6 +5585,53 @@ def list_tags_for_resource(params = {}, options = {}) req.send_request(options) end + # Updates the resource policy of the S3 Access Grants instance. + # + # Permissions + # + # : You must have the `s3:PutAccessGrantsInstanceResourcePolicy` + # permission to use this operation. + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :policy + # The resource policy of the S3 Access Grants instance that you are + # updating. + # + # @option params [String] :organization + # The Organization of the resource policy of the S3 Access Grants + # instance. + # + # @return [Types::PutAccessGrantsInstanceResourcePolicyResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::PutAccessGrantsInstanceResourcePolicyResult#policy #policy} => String + # * {Types::PutAccessGrantsInstanceResourcePolicyResult#organization #organization} => String + # * {Types::PutAccessGrantsInstanceResourcePolicyResult#created_at #created_at} => Time + # + # @example Request syntax with placeholder values + # + # resp = client.put_access_grants_instance_resource_policy({ + # account_id: "AccountId", + # policy: "PolicyDocument", # required + # organization: "Organization", + # }) + # + # @example Response structure + # + # resp.policy #=> String + # resp.organization #=> String + # resp.created_at #=> Time + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/PutAccessGrantsInstanceResourcePolicy AWS API Documentation + # + # @overload put_access_grants_instance_resource_policy(params = {}) + # @param [Hash] params ({}) + def put_access_grants_instance_resource_policy(params = {}, options = {}) + req = build_request(:put_access_grants_instance_resource_policy, params) + req.send_request(options) + end + # Replaces configuration for an Object Lambda Access Point. # # The following actions are related to @@ -5798,34 +6952,44 @@ def submit_multi_region_access_point_routes(params = {}, options = {}) end # Creates a new Amazon Web Services resource tag or updates an existing - # resource tag. You can add up to 50 Amazon Web Services resource tags - # for each S3 resource. + # resource tag. Each tag is a label consisting of a user-defined key and + # value. Tags can help you manage, identify, organize, search for, and + # filter resources. You can add up to 50 Amazon Web Services resource + # tags for each S3 resource. # - # To use this operation, you must have the permission to perform the - # `s3:TagResource` action. For more information about the required - # Storage Lens Groups permissions, see [Setting account permissions to - # use S3 Storage Lens groups][1]. + # This operation is only supported for [S3 Storage Lens groups][1] and + # for [S3 Access Grants][2]. The tagged resource can be an S3 Storage + # Lens group or S3 Access Grants instance, registered location, or + # grant. # - # For information about S3 Tagging errors, see [List of Amazon S3 - # Tagging error codes][2]. + # # - # This operation is only supported for [S3 Storage Lens groups][3]. + # Permissions # - # + # : You must have the `s3:TagResource` permission to use this operation. # + # For more information about the required Storage Lens Groups + # permissions, see [Setting account permissions to use S3 Storage Lens + # groups][3]. # + # For information about S3 Tagging errors, see [List of Amazon S3 + # Tagging error codes][4]. # - # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions - # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList - # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-tagging.html + # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions + # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList # # @option params [String] :account_id # The Amazon Web Services account ID that created the S3 resource that - # you're trying to add tags to. + # you're trying to add tags to or the requester's account ID. # # @option params [required, String] :resource_arn # The Amazon Resource Name (ARN) of the S3 resource that you're trying - # to add tags to. + # to add tags to. The tagged resource can be an S3 Storage Lens group or + # S3 Access Grants instance, registered location, or grant. # # @option params [required, Array] :tags # The Amazon Web Services resource tags that you want to add to the @@ -5856,36 +7020,47 @@ def tag_resource(params = {}, options = {}) end # This operation removes the specified Amazon Web Services resource tags - # from an S3 resource. + # from an S3 resource. Each tag is a label consisting of a user-defined + # key and value. Tags can help you manage, identify, organize, search + # for, and filter resources. # - # To use this operation, you must have the permission to perform the - # `s3:UntagResource` action. For more information about the required - # Storage Lens Groups permissions, see [Setting account permissions to - # use S3 Storage Lens groups][1]. + # This operation is only supported for [S3 Storage Lens groups][1] and + # for [S3 Access Grants][2]. The tagged resource can be an S3 Storage + # Lens group or S3 Access Grants instance, registered location, or + # grant. # - # For information about S3 Tagging errors, see [List of Amazon S3 - # Tagging error codes][2]. + # # - # This operation is only supported for [S3 Storage Lens groups][3]. + # Permissions # - # + # : You must have the `s3:UntagResource` permission to use this + # operation. # + # For more information about the required Storage Lens Groups + # permissions, see [Setting account permissions to use S3 Storage Lens + # groups][3]. # + # For information about S3 Tagging errors, see [List of Amazon S3 + # Tagging error codes][4]. # - # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions - # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList - # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # + # + # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-tagging.html + # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions + # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3TaggingErrorCodeList # # @option params [String] :account_id # The Amazon Web Services account ID that owns the resource that you're # trying to remove the tags from. # # @option params [required, String] :resource_arn - # The Amazon Resource Name (ARN) of the S3 resource that you want to - # remove the resource tags from. + # The Amazon Resource Name (ARN) of the S3 resource that you're trying + # to remove the tags from. # # @option params [required, Array] :tag_keys - # The tag key pair of the S3 resource tag that you're trying to remove. + # The array of tag key-value pairs that you're trying to remove from of + # the S3 resource. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # @@ -5906,6 +7081,74 @@ def untag_resource(params = {}, options = {}) req.send_request(options) end + # Updates the IAM role of a registered location in your S3 Access Grants + # instance. + # + # Permissions + # + # : You must have the `s3:UpdateAccessGrantsLocation` permission to use + # this operation. + # + # Additional Permissions + # + # : You must also have the following permission: `iam:PassRole` + # + # @option params [String] :account_id + # The ID of the Amazon Web Services account that is making this request. + # + # @option params [required, String] :access_grants_location_id + # The ID of the registered location that you are updating. S3 Access + # Grants assigns this ID when you register the location. S3 Access + # Grants assigns the ID `default` to the default location `s3://` and + # assigns an auto-generated ID to other locations that you register. + # + # The ID of the registered location to which you are granting access. S3 + # Access Grants assigned this ID when you registered the location. S3 + # Access Grants assigns the ID `default` to the default location `s3://` + # and assigns an auto-generated ID to other locations that you register. + # + # If you are passing the `default` location, you cannot create an access + # grant for the entire default location. You must also specify a bucket + # or a bucket and prefix in the `Subprefix` field. + # + # @option params [required, String] :iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # + # @return [Types::UpdateAccessGrantsLocationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateAccessGrantsLocationResult#created_at #created_at} => Time + # * {Types::UpdateAccessGrantsLocationResult#access_grants_location_id #access_grants_location_id} => String + # * {Types::UpdateAccessGrantsLocationResult#access_grants_location_arn #access_grants_location_arn} => String + # * {Types::UpdateAccessGrantsLocationResult#location_scope #location_scope} => String + # * {Types::UpdateAccessGrantsLocationResult#iam_role_arn #iam_role_arn} => String + # + # @example Request syntax with placeholder values + # + # resp = client.update_access_grants_location({ + # account_id: "AccountId", + # access_grants_location_id: "AccessGrantsLocationId", # required + # iam_role_arn: "IAMRoleArn", # required + # }) + # + # @example Response structure + # + # resp.created_at #=> Time + # resp.access_grants_location_id #=> String + # resp.access_grants_location_arn #=> String + # resp.location_scope #=> String + # resp.iam_role_arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/UpdateAccessGrantsLocation AWS API Documentation + # + # @overload update_access_grants_location(params = {}) + # @param [Hash] params ({}) + def update_access_grants_location(params = {}, options = {}) + req = build_request(:update_access_grants_location, params) + req.send_request(options) + end + # Updates an existing S3 Batch Operations job's priority. For more # information, see [S3 Batch Operations][1] in the *Amazon S3 User # Guide*. @@ -6149,7 +7392,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-s3control' - context[:gem_version] = '1.72.0' + context[:gem_version] = '1.73.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client_api.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client_api.rb index 456409d3490..635a135b207 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client_api.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/client_api.rb @@ -15,6 +15,17 @@ module ClientApi AbortIncompleteMultipartUpload = Shapes::StructureShape.new(name: 'AbortIncompleteMultipartUpload') AccessControlTranslation = Shapes::StructureShape.new(name: 'AccessControlTranslation') + AccessGrantArn = Shapes::StringShape.new(name: 'AccessGrantArn') + AccessGrantId = Shapes::StringShape.new(name: 'AccessGrantId') + AccessGrantsInstanceArn = Shapes::StringShape.new(name: 'AccessGrantsInstanceArn') + AccessGrantsInstanceId = Shapes::StringShape.new(name: 'AccessGrantsInstanceId') + AccessGrantsInstancesList = Shapes::ListShape.new(name: 'AccessGrantsInstancesList') + AccessGrantsList = Shapes::ListShape.new(name: 'AccessGrantsList') + AccessGrantsLocationArn = Shapes::StringShape.new(name: 'AccessGrantsLocationArn') + AccessGrantsLocationConfiguration = Shapes::StructureShape.new(name: 'AccessGrantsLocationConfiguration') + AccessGrantsLocationId = Shapes::StringShape.new(name: 'AccessGrantsLocationId') + AccessGrantsLocationsList = Shapes::ListShape.new(name: 'AccessGrantsLocationsList') + AccessKeyId = Shapes::StringShape.new(name: 'AccessKeyId') AccessPoint = Shapes::StructureShape.new(name: 'AccessPoint') AccessPointList = Shapes::ListShape.new(name: 'AccessPointList') AccessPointName = Shapes::StringShape.new(name: 'AccessPointName') @@ -24,6 +35,7 @@ module ClientApi AdvancedCostOptimizationMetrics = Shapes::StructureShape.new(name: 'AdvancedCostOptimizationMetrics') AdvancedDataProtectionMetrics = Shapes::StructureShape.new(name: 'AdvancedDataProtectionMetrics') Alias = Shapes::StringShape.new(name: 'Alias') + AssociateAccessGrantsIdentityCenterRequest = Shapes::StructureShape.new(name: 'AssociateAccessGrantsIdentityCenterRequest') AsyncCreationTimestamp = Shapes::TimestampShape.new(name: 'AsyncCreationTimestamp') AsyncErrorDetails = Shapes::StructureShape.new(name: 'AsyncErrorDetails') AsyncOperation = Shapes::StructureShape.new(name: 'AsyncOperation') @@ -51,6 +63,12 @@ module ClientApi ConfirmRemoveSelfBucketAccess = Shapes::BooleanShape.new(name: 'ConfirmRemoveSelfBucketAccess') ConfirmationRequired = Shapes::BooleanShape.new(name: 'ConfirmationRequired') ContinuationToken = Shapes::StringShape.new(name: 'ContinuationToken') + CreateAccessGrantRequest = Shapes::StructureShape.new(name: 'CreateAccessGrantRequest') + CreateAccessGrantResult = Shapes::StructureShape.new(name: 'CreateAccessGrantResult') + CreateAccessGrantsInstanceRequest = Shapes::StructureShape.new(name: 'CreateAccessGrantsInstanceRequest') + CreateAccessGrantsInstanceResult = Shapes::StructureShape.new(name: 'CreateAccessGrantsInstanceResult') + CreateAccessGrantsLocationRequest = Shapes::StructureShape.new(name: 'CreateAccessGrantsLocationRequest') + CreateAccessGrantsLocationResult = Shapes::StructureShape.new(name: 'CreateAccessGrantsLocationResult') CreateAccessPointForObjectLambdaRequest = Shapes::StructureShape.new(name: 'CreateAccessPointForObjectLambdaRequest') CreateAccessPointForObjectLambdaResult = Shapes::StructureShape.new(name: 'CreateAccessPointForObjectLambdaResult') CreateAccessPointRequest = Shapes::StructureShape.new(name: 'CreateAccessPointRequest') @@ -66,9 +84,14 @@ module ClientApi CreateStorageLensGroupRequest = Shapes::StructureShape.new(name: 'CreateStorageLensGroupRequest') CreationDate = Shapes::TimestampShape.new(name: 'CreationDate') CreationTimestamp = Shapes::TimestampShape.new(name: 'CreationTimestamp') + Credentials = Shapes::StructureShape.new(name: 'Credentials') Date = Shapes::TimestampShape.new(name: 'Date') Days = Shapes::IntegerShape.new(name: 'Days') DaysAfterInitiation = Shapes::IntegerShape.new(name: 'DaysAfterInitiation') + DeleteAccessGrantRequest = Shapes::StructureShape.new(name: 'DeleteAccessGrantRequest') + DeleteAccessGrantsInstanceRequest = Shapes::StructureShape.new(name: 'DeleteAccessGrantsInstanceRequest') + DeleteAccessGrantsInstanceResourcePolicyRequest = Shapes::StructureShape.new(name: 'DeleteAccessGrantsInstanceResourcePolicyRequest') + DeleteAccessGrantsLocationRequest = Shapes::StructureShape.new(name: 'DeleteAccessGrantsLocationRequest') DeleteAccessPointForObjectLambdaRequest = Shapes::StructureShape.new(name: 'DeleteAccessPointForObjectLambdaRequest') DeleteAccessPointPolicyForObjectLambdaRequest = Shapes::StructureShape.new(name: 'DeleteAccessPointPolicyForObjectLambdaRequest') DeleteAccessPointPolicyRequest = Shapes::StructureShape.new(name: 'DeleteAccessPointPolicyRequest') @@ -96,6 +119,8 @@ module ClientApi DescribeMultiRegionAccessPointOperationResult = Shapes::StructureShape.new(name: 'DescribeMultiRegionAccessPointOperationResult') Destination = Shapes::StructureShape.new(name: 'Destination') DetailedStatusCodesMetrics = Shapes::StructureShape.new(name: 'DetailedStatusCodesMetrics') + DissociateAccessGrantsIdentityCenterRequest = Shapes::StructureShape.new(name: 'DissociateAccessGrantsIdentityCenterRequest') + DurationSeconds = Shapes::IntegerShape.new(name: 'DurationSeconds') EncryptionConfiguration = Shapes::StructureShape.new(name: 'EncryptionConfiguration') Endpoints = Shapes::MapShape.new(name: 'Endpoints') EstablishedMultiRegionAccessPointPolicy = Shapes::StructureShape.new(name: 'EstablishedMultiRegionAccessPointPolicy') @@ -103,12 +128,23 @@ module ClientApi Exclude = Shapes::StructureShape.new(name: 'Exclude') ExistingObjectReplication = Shapes::StructureShape.new(name: 'ExistingObjectReplication') ExistingObjectReplicationStatus = Shapes::StringShape.new(name: 'ExistingObjectReplicationStatus') + Expiration = Shapes::TimestampShape.new(name: 'Expiration') ExpirationStatus = Shapes::StringShape.new(name: 'ExpirationStatus') ExpiredObjectDeleteMarker = Shapes::BooleanShape.new(name: 'ExpiredObjectDeleteMarker') Format = Shapes::StringShape.new(name: 'Format') FunctionArnString = Shapes::StringShape.new(name: 'FunctionArnString') GeneratedManifestEncryption = Shapes::StructureShape.new(name: 'GeneratedManifestEncryption') GeneratedManifestFormat = Shapes::StringShape.new(name: 'GeneratedManifestFormat') + GetAccessGrantRequest = Shapes::StructureShape.new(name: 'GetAccessGrantRequest') + GetAccessGrantResult = Shapes::StructureShape.new(name: 'GetAccessGrantResult') + GetAccessGrantsInstanceForPrefixRequest = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceForPrefixRequest') + GetAccessGrantsInstanceForPrefixResult = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceForPrefixResult') + GetAccessGrantsInstanceRequest = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceRequest') + GetAccessGrantsInstanceResourcePolicyRequest = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceResourcePolicyRequest') + GetAccessGrantsInstanceResourcePolicyResult = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceResourcePolicyResult') + GetAccessGrantsInstanceResult = Shapes::StructureShape.new(name: 'GetAccessGrantsInstanceResult') + GetAccessGrantsLocationRequest = Shapes::StructureShape.new(name: 'GetAccessGrantsLocationRequest') + GetAccessGrantsLocationResult = Shapes::StructureShape.new(name: 'GetAccessGrantsLocationResult') GetAccessPointConfigurationForObjectLambdaRequest = Shapes::StructureShape.new(name: 'GetAccessPointConfigurationForObjectLambdaRequest') GetAccessPointConfigurationForObjectLambdaResult = Shapes::StructureShape.new(name: 'GetAccessPointConfigurationForObjectLambdaResult') GetAccessPointForObjectLambdaRequest = Shapes::StructureShape.new(name: 'GetAccessPointForObjectLambdaRequest') @@ -135,6 +171,8 @@ module ClientApi GetBucketTaggingResult = Shapes::StructureShape.new(name: 'GetBucketTaggingResult') GetBucketVersioningRequest = Shapes::StructureShape.new(name: 'GetBucketVersioningRequest') GetBucketVersioningResult = Shapes::StructureShape.new(name: 'GetBucketVersioningResult') + GetDataAccessRequest = Shapes::StructureShape.new(name: 'GetDataAccessRequest') + GetDataAccessResult = Shapes::StructureShape.new(name: 'GetDataAccessResult') GetJobTaggingRequest = Shapes::StructureShape.new(name: 'GetJobTaggingRequest') GetJobTaggingResult = Shapes::StructureShape.new(name: 'GetJobTaggingResult') GetMultiRegionAccessPointPolicyRequest = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointPolicyRequest') @@ -158,9 +196,14 @@ module ClientApi GrantReadACP = Shapes::StringShape.new(name: 'GrantReadACP') GrantWrite = Shapes::StringShape.new(name: 'GrantWrite') GrantWriteACP = Shapes::StringShape.new(name: 'GrantWriteACP') + Grantee = Shapes::StructureShape.new(name: 'Grantee') + GranteeIdentifier = Shapes::StringShape.new(name: 'GranteeIdentifier') + GranteeType = Shapes::StringShape.new(name: 'GranteeType') IAMRoleArn = Shapes::StringShape.new(name: 'IAMRoleArn') ID = Shapes::StringShape.new(name: 'ID') IdempotencyException = Shapes::StructureShape.new(name: 'IdempotencyException') + IdentityCenterApplicationArn = Shapes::StringShape.new(name: 'IdentityCenterApplicationArn') + IdentityCenterArn = Shapes::StringShape.new(name: 'IdentityCenterArn') Include = Shapes::StructureShape.new(name: 'Include') InternalServiceException = Shapes::StructureShape.new(name: 'InternalServiceException') InvalidNextTokenException = Shapes::StructureShape.new(name: 'InvalidNextTokenException') @@ -210,6 +253,15 @@ module ClientApi LifecycleRuleAndOperator = Shapes::StructureShape.new(name: 'LifecycleRuleAndOperator') LifecycleRuleFilter = Shapes::StructureShape.new(name: 'LifecycleRuleFilter') LifecycleRules = Shapes::ListShape.new(name: 'LifecycleRules') + ListAccessGrantEntry = Shapes::StructureShape.new(name: 'ListAccessGrantEntry') + ListAccessGrantsInstanceEntry = Shapes::StructureShape.new(name: 'ListAccessGrantsInstanceEntry') + ListAccessGrantsInstancesRequest = Shapes::StructureShape.new(name: 'ListAccessGrantsInstancesRequest') + ListAccessGrantsInstancesResult = Shapes::StructureShape.new(name: 'ListAccessGrantsInstancesResult') + ListAccessGrantsLocationsEntry = Shapes::StructureShape.new(name: 'ListAccessGrantsLocationsEntry') + ListAccessGrantsLocationsRequest = Shapes::StructureShape.new(name: 'ListAccessGrantsLocationsRequest') + ListAccessGrantsLocationsResult = Shapes::StructureShape.new(name: 'ListAccessGrantsLocationsResult') + ListAccessGrantsRequest = Shapes::StructureShape.new(name: 'ListAccessGrantsRequest') + ListAccessGrantsResult = Shapes::StructureShape.new(name: 'ListAccessGrantsResult') ListAccessPointsForObjectLambdaRequest = Shapes::StructureShape.new(name: 'ListAccessPointsForObjectLambdaRequest') ListAccessPointsForObjectLambdaResult = Shapes::StructureShape.new(name: 'ListAccessPointsForObjectLambdaResult') ListAccessPointsRequest = Shapes::StructureShape.new(name: 'ListAccessPointsRequest') @@ -293,17 +345,23 @@ module ClientApi ObjectSizeLessThanBytes = Shapes::IntegerShape.new(name: 'ObjectSizeLessThanBytes') ObjectSizeValue = Shapes::IntegerShape.new(name: 'ObjectSizeValue') OperationName = Shapes::StringShape.new(name: 'OperationName') + Organization = Shapes::StringShape.new(name: 'Organization') OutputSchemaVersion = Shapes::StringShape.new(name: 'OutputSchemaVersion') OwnerOverride = Shapes::StringShape.new(name: 'OwnerOverride') + Permission = Shapes::StringShape.new(name: 'Permission') Policy = Shapes::StringShape.new(name: 'Policy') + PolicyDocument = Shapes::StringShape.new(name: 'PolicyDocument') PolicyStatus = Shapes::StructureShape.new(name: 'PolicyStatus') Prefix = Shapes::StringShape.new(name: 'Prefix') PrefixLevel = Shapes::StructureShape.new(name: 'PrefixLevel') PrefixLevelStorageMetrics = Shapes::StructureShape.new(name: 'PrefixLevelStorageMetrics') Priority = Shapes::IntegerShape.new(name: 'Priority') + Privilege = Shapes::StringShape.new(name: 'Privilege') ProposedMultiRegionAccessPointPolicy = Shapes::StructureShape.new(name: 'ProposedMultiRegionAccessPointPolicy') PublicAccessBlockConfiguration = Shapes::StructureShape.new(name: 'PublicAccessBlockConfiguration') PublicAccessBlockEnabled = Shapes::BooleanShape.new(name: 'PublicAccessBlockEnabled') + PutAccessGrantsInstanceResourcePolicyRequest = Shapes::StructureShape.new(name: 'PutAccessGrantsInstanceResourcePolicyRequest') + PutAccessGrantsInstanceResourcePolicyResult = Shapes::StructureShape.new(name: 'PutAccessGrantsInstanceResourcePolicyResult') PutAccessPointConfigurationForObjectLambdaRequest = Shapes::StructureShape.new(name: 'PutAccessPointConfigurationForObjectLambdaRequest') PutAccessPointPolicyForObjectLambdaRequest = Shapes::StructureShape.new(name: 'PutAccessPointPolicyForObjectLambdaRequest') PutAccessPointPolicyRequest = Shapes::StructureShape.new(name: 'PutAccessPointPolicyRequest') @@ -379,6 +437,8 @@ module ClientApi S3ObjectOwner = Shapes::StructureShape.new(name: 'S3ObjectOwner') S3ObjectVersionId = Shapes::StringShape.new(name: 'S3ObjectVersionId') S3Permission = Shapes::StringShape.new(name: 'S3Permission') + S3Prefix = Shapes::StringShape.new(name: 'S3Prefix') + S3PrefixType = Shapes::StringShape.new(name: 'S3PrefixType') S3RegionalBucketArn = Shapes::StringShape.new(name: 'S3RegionalBucketArn') S3ReplicateObjectOperation = Shapes::StructureShape.new(name: 'S3ReplicateObjectOperation') S3ResourceArn = Shapes::StringShape.new(name: 'S3ResourceArn') @@ -397,7 +457,9 @@ module ClientApi SSEKMSKeyId = Shapes::StringShape.new(name: 'SSEKMSKeyId') SSES3 = Shapes::StructureShape.new(name: 'SSES3') SSES3Encryption = Shapes::StructureShape.new(name: 'SSES3Encryption') + SecretAccessKey = Shapes::StringShape.new(name: 'SecretAccessKey') SelectionCriteria = Shapes::StructureShape.new(name: 'SelectionCriteria') + SessionToken = Shapes::StringShape.new(name: 'SessionToken') Setting = Shapes::BooleanShape.new(name: 'Setting') SourceSelectionCriteria = Shapes::StructureShape.new(name: 'SourceSelectionCriteria') SseKmsEncryptedObjects = Shapes::StructureShape.new(name: 'SseKmsEncryptedObjects') @@ -447,6 +509,8 @@ module ClientApi TransitionStorageClass = Shapes::StringShape.new(name: 'TransitionStorageClass') UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') UntagResourceResult = Shapes::StructureShape.new(name: 'UntagResourceResult') + UpdateAccessGrantsLocationRequest = Shapes::StructureShape.new(name: 'UpdateAccessGrantsLocationRequest') + UpdateAccessGrantsLocationResult = Shapes::StructureShape.new(name: 'UpdateAccessGrantsLocationResult') UpdateJobPriorityRequest = Shapes::StructureShape.new(name: 'UpdateJobPriorityRequest') UpdateJobPriorityResult = Shapes::StructureShape.new(name: 'UpdateJobPriorityResult') UpdateJobStatusRequest = Shapes::StructureShape.new(name: 'UpdateJobStatusRequest') @@ -462,6 +526,15 @@ module ClientApi AccessControlTranslation.add_member(:owner, Shapes::ShapeRef.new(shape: OwnerOverride, required: true, location_name: "Owner")) AccessControlTranslation.struct_class = Types::AccessControlTranslation + AccessGrantsInstancesList.member = Shapes::ShapeRef.new(shape: ListAccessGrantsInstanceEntry, location_name: "AccessGrantsInstance") + + AccessGrantsList.member = Shapes::ShapeRef.new(shape: ListAccessGrantEntry, location_name: "AccessGrant") + + AccessGrantsLocationConfiguration.add_member(:s3_sub_prefix, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "S3SubPrefix")) + AccessGrantsLocationConfiguration.struct_class = Types::AccessGrantsLocationConfiguration + + AccessGrantsLocationsList.member = Shapes::ShapeRef.new(shape: ListAccessGrantsLocationsEntry, location_name: "AccessGrantsLocation") + AccessPoint.add_member(:name, Shapes::ShapeRef.new(shape: AccessPointName, required: true, location_name: "Name")) AccessPoint.add_member(:network_origin, Shapes::ShapeRef.new(shape: NetworkOrigin, required: true, location_name: "NetworkOrigin")) AccessPoint.add_member(:vpc_configuration, Shapes::ShapeRef.new(shape: VpcConfiguration, location_name: "VpcConfiguration")) @@ -490,6 +563,10 @@ module ClientApi AdvancedDataProtectionMetrics.add_member(:is_enabled, Shapes::ShapeRef.new(shape: IsEnabled, location_name: "IsEnabled")) AdvancedDataProtectionMetrics.struct_class = Types::AdvancedDataProtectionMetrics + AssociateAccessGrantsIdentityCenterRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + AssociateAccessGrantsIdentityCenterRequest.add_member(:identity_center_arn, Shapes::ShapeRef.new(shape: IdentityCenterArn, required: true, location_name: "IdentityCenterArn")) + AssociateAccessGrantsIdentityCenterRequest.struct_class = Types::AssociateAccessGrantsIdentityCenterRequest + AsyncErrorDetails.add_member(:code, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Code")) AsyncErrorDetails.add_member(:message, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Message")) AsyncErrorDetails.add_member(:resource, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Resource")) @@ -536,6 +613,51 @@ module ClientApi CloudWatchMetrics.add_member(:is_enabled, Shapes::ShapeRef.new(shape: IsEnabled, required: true, location_name: "IsEnabled")) CloudWatchMetrics.struct_class = Types::CloudWatchMetrics + CreateAccessGrantRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + CreateAccessGrantRequest.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, required: true, location_name: "AccessGrantsLocationId")) + CreateAccessGrantRequest.add_member(:access_grants_location_configuration, Shapes::ShapeRef.new(shape: AccessGrantsLocationConfiguration, location_name: "AccessGrantsLocationConfiguration")) + CreateAccessGrantRequest.add_member(:grantee, Shapes::ShapeRef.new(shape: Grantee, required: true, location_name: "Grantee")) + CreateAccessGrantRequest.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, required: true, location_name: "Permission")) + CreateAccessGrantRequest.add_member(:application_arn, Shapes::ShapeRef.new(shape: IdentityCenterApplicationArn, location_name: "ApplicationArn")) + CreateAccessGrantRequest.add_member(:s3_prefix_type, Shapes::ShapeRef.new(shape: S3PrefixType, location_name: "S3PrefixType")) + CreateAccessGrantRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateAccessGrantRequest.struct_class = Types::CreateAccessGrantRequest + + CreateAccessGrantResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + CreateAccessGrantResult.add_member(:access_grant_id, Shapes::ShapeRef.new(shape: AccessGrantId, location_name: "AccessGrantId")) + CreateAccessGrantResult.add_member(:access_grant_arn, Shapes::ShapeRef.new(shape: AccessGrantArn, location_name: "AccessGrantArn")) + CreateAccessGrantResult.add_member(:grantee, Shapes::ShapeRef.new(shape: Grantee, location_name: "Grantee")) + CreateAccessGrantResult.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + CreateAccessGrantResult.add_member(:access_grants_location_configuration, Shapes::ShapeRef.new(shape: AccessGrantsLocationConfiguration, location_name: "AccessGrantsLocationConfiguration")) + CreateAccessGrantResult.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, location_name: "Permission")) + CreateAccessGrantResult.add_member(:application_arn, Shapes::ShapeRef.new(shape: IdentityCenterApplicationArn, location_name: "ApplicationArn")) + CreateAccessGrantResult.add_member(:grant_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "GrantScope")) + CreateAccessGrantResult.struct_class = Types::CreateAccessGrantResult + + CreateAccessGrantsInstanceRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + CreateAccessGrantsInstanceRequest.add_member(:identity_center_arn, Shapes::ShapeRef.new(shape: IdentityCenterArn, location_name: "IdentityCenterArn")) + CreateAccessGrantsInstanceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateAccessGrantsInstanceRequest.struct_class = Types::CreateAccessGrantsInstanceRequest + + CreateAccessGrantsInstanceResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + CreateAccessGrantsInstanceResult.add_member(:access_grants_instance_id, Shapes::ShapeRef.new(shape: AccessGrantsInstanceId, location_name: "AccessGrantsInstanceId")) + CreateAccessGrantsInstanceResult.add_member(:access_grants_instance_arn, Shapes::ShapeRef.new(shape: AccessGrantsInstanceArn, location_name: "AccessGrantsInstanceArn")) + CreateAccessGrantsInstanceResult.add_member(:identity_center_arn, Shapes::ShapeRef.new(shape: IdentityCenterArn, location_name: "IdentityCenterArn")) + CreateAccessGrantsInstanceResult.struct_class = Types::CreateAccessGrantsInstanceResult + + CreateAccessGrantsLocationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + CreateAccessGrantsLocationRequest.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, required: true, location_name: "LocationScope")) + CreateAccessGrantsLocationRequest.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, required: true, location_name: "IAMRoleArn")) + CreateAccessGrantsLocationRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + CreateAccessGrantsLocationRequest.struct_class = Types::CreateAccessGrantsLocationRequest + + CreateAccessGrantsLocationResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + CreateAccessGrantsLocationResult.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + CreateAccessGrantsLocationResult.add_member(:access_grants_location_arn, Shapes::ShapeRef.new(shape: AccessGrantsLocationArn, location_name: "AccessGrantsLocationArn")) + CreateAccessGrantsLocationResult.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "LocationScope")) + CreateAccessGrantsLocationResult.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, location_name: "IAMRoleArn")) + CreateAccessGrantsLocationResult.struct_class = Types::CreateAccessGrantsLocationResult + CreateAccessPointForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) CreateAccessPointForObjectLambdaRequest.add_member(:name, Shapes::ShapeRef.new(shape: ObjectLambdaAccessPointName, required: true, location: "uri", location_name: "name")) CreateAccessPointForObjectLambdaRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: ObjectLambdaConfiguration, required: true, location_name: "Configuration")) @@ -612,6 +734,26 @@ module ClientApi CreateStorageLensGroupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) CreateStorageLensGroupRequest.struct_class = Types::CreateStorageLensGroupRequest + Credentials.add_member(:access_key_id, Shapes::ShapeRef.new(shape: AccessKeyId, location_name: "AccessKeyId")) + Credentials.add_member(:secret_access_key, Shapes::ShapeRef.new(shape: SecretAccessKey, location_name: "SecretAccessKey")) + Credentials.add_member(:session_token, Shapes::ShapeRef.new(shape: SessionToken, location_name: "SessionToken")) + Credentials.add_member(:expiration, Shapes::ShapeRef.new(shape: Expiration, location_name: "Expiration")) + Credentials.struct_class = Types::Credentials + + DeleteAccessGrantRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + DeleteAccessGrantRequest.add_member(:access_grant_id, Shapes::ShapeRef.new(shape: AccessGrantId, required: true, location: "uri", location_name: "id")) + DeleteAccessGrantRequest.struct_class = Types::DeleteAccessGrantRequest + + DeleteAccessGrantsInstanceRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + DeleteAccessGrantsInstanceRequest.struct_class = Types::DeleteAccessGrantsInstanceRequest + + DeleteAccessGrantsInstanceResourcePolicyRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + DeleteAccessGrantsInstanceResourcePolicyRequest.struct_class = Types::DeleteAccessGrantsInstanceResourcePolicyRequest + + DeleteAccessGrantsLocationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + DeleteAccessGrantsLocationRequest.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, required: true, location: "uri", location_name: "id")) + DeleteAccessGrantsLocationRequest.struct_class = Types::DeleteAccessGrantsLocationRequest + DeleteAccessPointForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) DeleteAccessPointForObjectLambdaRequest.add_member(:name, Shapes::ShapeRef.new(shape: ObjectLambdaAccessPointName, required: true, location: "uri", location_name: "name")) DeleteAccessPointForObjectLambdaRequest.struct_class = Types::DeleteAccessPointForObjectLambdaRequest @@ -711,6 +853,9 @@ module ClientApi DetailedStatusCodesMetrics.add_member(:is_enabled, Shapes::ShapeRef.new(shape: IsEnabled, location_name: "IsEnabled")) DetailedStatusCodesMetrics.struct_class = Types::DetailedStatusCodesMetrics + DissociateAccessGrantsIdentityCenterRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + DissociateAccessGrantsIdentityCenterRequest.struct_class = Types::DissociateAccessGrantsIdentityCenterRequest + EncryptionConfiguration.add_member(:replica_kms_key_id, Shapes::ShapeRef.new(shape: ReplicaKmsKeyID, location_name: "ReplicaKmsKeyID", metadata: {"box"=>true})) EncryptionConfiguration.struct_class = Types::EncryptionConfiguration @@ -731,6 +876,57 @@ module ClientApi GeneratedManifestEncryption.add_member(:ssekms, Shapes::ShapeRef.new(shape: SSEKMSEncryption, location_name: "SSE-KMS")) GeneratedManifestEncryption.struct_class = Types::GeneratedManifestEncryption + GetAccessGrantRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetAccessGrantRequest.add_member(:access_grant_id, Shapes::ShapeRef.new(shape: AccessGrantId, required: true, location: "uri", location_name: "id")) + GetAccessGrantRequest.struct_class = Types::GetAccessGrantRequest + + GetAccessGrantResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + GetAccessGrantResult.add_member(:access_grant_id, Shapes::ShapeRef.new(shape: AccessGrantId, location_name: "AccessGrantId")) + GetAccessGrantResult.add_member(:access_grant_arn, Shapes::ShapeRef.new(shape: AccessGrantArn, location_name: "AccessGrantArn")) + GetAccessGrantResult.add_member(:grantee, Shapes::ShapeRef.new(shape: Grantee, location_name: "Grantee")) + GetAccessGrantResult.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, location_name: "Permission")) + GetAccessGrantResult.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + GetAccessGrantResult.add_member(:access_grants_location_configuration, Shapes::ShapeRef.new(shape: AccessGrantsLocationConfiguration, location_name: "AccessGrantsLocationConfiguration")) + GetAccessGrantResult.add_member(:grant_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "GrantScope")) + GetAccessGrantResult.add_member(:application_arn, Shapes::ShapeRef.new(shape: IdentityCenterApplicationArn, location_name: "ApplicationArn")) + GetAccessGrantResult.struct_class = Types::GetAccessGrantResult + + GetAccessGrantsInstanceForPrefixRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetAccessGrantsInstanceForPrefixRequest.add_member(:s3_prefix, Shapes::ShapeRef.new(shape: S3Prefix, required: true, location: "querystring", location_name: "s3prefix")) + GetAccessGrantsInstanceForPrefixRequest.struct_class = Types::GetAccessGrantsInstanceForPrefixRequest + + GetAccessGrantsInstanceForPrefixResult.add_member(:access_grants_instance_arn, Shapes::ShapeRef.new(shape: AccessGrantsInstanceArn, location_name: "AccessGrantsInstanceArn")) + GetAccessGrantsInstanceForPrefixResult.add_member(:access_grants_instance_id, Shapes::ShapeRef.new(shape: AccessGrantsInstanceId, location_name: "AccessGrantsInstanceId")) + GetAccessGrantsInstanceForPrefixResult.struct_class = Types::GetAccessGrantsInstanceForPrefixResult + + GetAccessGrantsInstanceRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetAccessGrantsInstanceRequest.struct_class = Types::GetAccessGrantsInstanceRequest + + GetAccessGrantsInstanceResourcePolicyRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetAccessGrantsInstanceResourcePolicyRequest.struct_class = Types::GetAccessGrantsInstanceResourcePolicyRequest + + GetAccessGrantsInstanceResourcePolicyResult.add_member(:policy, Shapes::ShapeRef.new(shape: PolicyDocument, location_name: "Policy")) + GetAccessGrantsInstanceResourcePolicyResult.add_member(:organization, Shapes::ShapeRef.new(shape: Organization, location_name: "Organization")) + GetAccessGrantsInstanceResourcePolicyResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + GetAccessGrantsInstanceResourcePolicyResult.struct_class = Types::GetAccessGrantsInstanceResourcePolicyResult + + GetAccessGrantsInstanceResult.add_member(:access_grants_instance_arn, Shapes::ShapeRef.new(shape: AccessGrantsInstanceArn, location_name: "AccessGrantsInstanceArn")) + GetAccessGrantsInstanceResult.add_member(:access_grants_instance_id, Shapes::ShapeRef.new(shape: AccessGrantsInstanceId, location_name: "AccessGrantsInstanceId")) + GetAccessGrantsInstanceResult.add_member(:identity_center_arn, Shapes::ShapeRef.new(shape: IdentityCenterArn, location_name: "IdentityCenterArn")) + GetAccessGrantsInstanceResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + GetAccessGrantsInstanceResult.struct_class = Types::GetAccessGrantsInstanceResult + + GetAccessGrantsLocationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetAccessGrantsLocationRequest.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, required: true, location: "uri", location_name: "id")) + GetAccessGrantsLocationRequest.struct_class = Types::GetAccessGrantsLocationRequest + + GetAccessGrantsLocationResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + GetAccessGrantsLocationResult.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + GetAccessGrantsLocationResult.add_member(:access_grants_location_arn, Shapes::ShapeRef.new(shape: AccessGrantsLocationArn, location_name: "AccessGrantsLocationArn")) + GetAccessGrantsLocationResult.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "LocationScope")) + GetAccessGrantsLocationResult.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, location_name: "IAMRoleArn")) + GetAccessGrantsLocationResult.struct_class = Types::GetAccessGrantsLocationResult + GetAccessPointConfigurationForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) GetAccessPointConfigurationForObjectLambdaRequest.add_member(:name, Shapes::ShapeRef.new(shape: ObjectLambdaAccessPointName, required: true, location: "uri", location_name: "name")) GetAccessPointConfigurationForObjectLambdaRequest.struct_class = Types::GetAccessPointConfigurationForObjectLambdaRequest @@ -837,6 +1033,18 @@ module ClientApi GetBucketVersioningResult.add_member(:mfa_delete, Shapes::ShapeRef.new(shape: MFADeleteStatus, location_name: "MfaDelete")) GetBucketVersioningResult.struct_class = Types::GetBucketVersioningResult + GetDataAccessRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + GetDataAccessRequest.add_member(:target, Shapes::ShapeRef.new(shape: S3Prefix, required: true, location: "querystring", location_name: "target")) + GetDataAccessRequest.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, required: true, location: "querystring", location_name: "permission")) + GetDataAccessRequest.add_member(:duration_seconds, Shapes::ShapeRef.new(shape: DurationSeconds, location: "querystring", location_name: "durationSeconds")) + GetDataAccessRequest.add_member(:privilege, Shapes::ShapeRef.new(shape: Privilege, location: "querystring", location_name: "privilege")) + GetDataAccessRequest.add_member(:target_type, Shapes::ShapeRef.new(shape: S3PrefixType, location: "querystring", location_name: "targetType")) + GetDataAccessRequest.struct_class = Types::GetDataAccessRequest + + GetDataAccessResult.add_member(:credentials, Shapes::ShapeRef.new(shape: Credentials, location_name: "Credentials")) + GetDataAccessResult.add_member(:matched_grant_target, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "MatchedGrantTarget")) + GetDataAccessResult.struct_class = Types::GetDataAccessResult + GetJobTaggingRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) GetJobTaggingRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "id")) GetJobTaggingRequest.struct_class = Types::GetJobTaggingRequest @@ -906,6 +1114,10 @@ module ClientApi GetStorageLensGroupResult[:payload] = :storage_lens_group GetStorageLensGroupResult[:payload_member] = GetStorageLensGroupResult.member(:storage_lens_group) + Grantee.add_member(:grantee_type, Shapes::ShapeRef.new(shape: GranteeType, location_name: "GranteeType")) + Grantee.add_member(:grantee_identifier, Shapes::ShapeRef.new(shape: GranteeIdentifier, location_name: "GranteeIdentifier")) + Grantee.struct_class = Types::Grantee + IdempotencyException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "Message")) IdempotencyException.struct_class = Types::IdempotencyException @@ -1065,6 +1277,63 @@ module ClientApi LifecycleRules.member = Shapes::ShapeRef.new(shape: LifecycleRule, location_name: "Rule") + ListAccessGrantEntry.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + ListAccessGrantEntry.add_member(:access_grant_id, Shapes::ShapeRef.new(shape: AccessGrantId, location_name: "AccessGrantId")) + ListAccessGrantEntry.add_member(:access_grant_arn, Shapes::ShapeRef.new(shape: AccessGrantArn, location_name: "AccessGrantArn")) + ListAccessGrantEntry.add_member(:grantee, Shapes::ShapeRef.new(shape: Grantee, location_name: "Grantee")) + ListAccessGrantEntry.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, location_name: "Permission")) + ListAccessGrantEntry.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + ListAccessGrantEntry.add_member(:access_grants_location_configuration, Shapes::ShapeRef.new(shape: AccessGrantsLocationConfiguration, location_name: "AccessGrantsLocationConfiguration")) + ListAccessGrantEntry.add_member(:grant_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "GrantScope")) + ListAccessGrantEntry.add_member(:application_arn, Shapes::ShapeRef.new(shape: IdentityCenterApplicationArn, location_name: "ApplicationArn")) + ListAccessGrantEntry.struct_class = Types::ListAccessGrantEntry + + ListAccessGrantsInstanceEntry.add_member(:access_grants_instance_id, Shapes::ShapeRef.new(shape: AccessGrantsInstanceId, location_name: "AccessGrantsInstanceId")) + ListAccessGrantsInstanceEntry.add_member(:access_grants_instance_arn, Shapes::ShapeRef.new(shape: AccessGrantsInstanceArn, location_name: "AccessGrantsInstanceArn")) + ListAccessGrantsInstanceEntry.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + ListAccessGrantsInstanceEntry.add_member(:identity_center_arn, Shapes::ShapeRef.new(shape: IdentityCenterArn, location_name: "IdentityCenterArn")) + ListAccessGrantsInstanceEntry.struct_class = Types::ListAccessGrantsInstanceEntry + + ListAccessGrantsInstancesRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + ListAccessGrantsInstancesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location: "querystring", location_name: "nextToken")) + ListAccessGrantsInstancesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListAccessGrantsInstancesRequest.struct_class = Types::ListAccessGrantsInstancesRequest + + ListAccessGrantsInstancesResult.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location_name: "NextToken")) + ListAccessGrantsInstancesResult.add_member(:access_grants_instances_list, Shapes::ShapeRef.new(shape: AccessGrantsInstancesList, location_name: "AccessGrantsInstancesList")) + ListAccessGrantsInstancesResult.struct_class = Types::ListAccessGrantsInstancesResult + + ListAccessGrantsLocationsEntry.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + ListAccessGrantsLocationsEntry.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + ListAccessGrantsLocationsEntry.add_member(:access_grants_location_arn, Shapes::ShapeRef.new(shape: AccessGrantsLocationArn, location_name: "AccessGrantsLocationArn")) + ListAccessGrantsLocationsEntry.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "LocationScope")) + ListAccessGrantsLocationsEntry.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, location_name: "IAMRoleArn")) + ListAccessGrantsLocationsEntry.struct_class = Types::ListAccessGrantsLocationsEntry + + ListAccessGrantsLocationsRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + ListAccessGrantsLocationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location: "querystring", location_name: "nextToken")) + ListAccessGrantsLocationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListAccessGrantsLocationsRequest.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, location: "querystring", location_name: "locationscope")) + ListAccessGrantsLocationsRequest.struct_class = Types::ListAccessGrantsLocationsRequest + + ListAccessGrantsLocationsResult.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location_name: "NextToken")) + ListAccessGrantsLocationsResult.add_member(:access_grants_locations_list, Shapes::ShapeRef.new(shape: AccessGrantsLocationsList, location_name: "AccessGrantsLocationsList")) + ListAccessGrantsLocationsResult.struct_class = Types::ListAccessGrantsLocationsResult + + ListAccessGrantsRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + ListAccessGrantsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location: "querystring", location_name: "nextToken")) + ListAccessGrantsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListAccessGrantsRequest.add_member(:grantee_type, Shapes::ShapeRef.new(shape: GranteeType, location: "querystring", location_name: "granteetype")) + ListAccessGrantsRequest.add_member(:grantee_identifier, Shapes::ShapeRef.new(shape: GranteeIdentifier, location: "querystring", location_name: "granteeidentifier")) + ListAccessGrantsRequest.add_member(:permission, Shapes::ShapeRef.new(shape: Permission, location: "querystring", location_name: "permission")) + ListAccessGrantsRequest.add_member(:grant_scope, Shapes::ShapeRef.new(shape: S3Prefix, location: "querystring", location_name: "grantscope")) + ListAccessGrantsRequest.add_member(:application_arn, Shapes::ShapeRef.new(shape: IdentityCenterApplicationArn, location: "querystring", location_name: "application_arn")) + ListAccessGrantsRequest.struct_class = Types::ListAccessGrantsRequest + + ListAccessGrantsResult.add_member(:next_token, Shapes::ShapeRef.new(shape: ContinuationToken, location_name: "NextToken")) + ListAccessGrantsResult.add_member(:access_grants_list, Shapes::ShapeRef.new(shape: AccessGrantsList, location_name: "AccessGrantsList")) + ListAccessGrantsResult.struct_class = Types::ListAccessGrantsResult + ListAccessPointsForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) ListAccessPointsForObjectLambdaRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NonEmptyMaxLength1024String, location: "querystring", location_name: "nextToken")) ListAccessPointsForObjectLambdaRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) @@ -1263,6 +1532,16 @@ module ClientApi PublicAccessBlockConfiguration.add_member(:restrict_public_buckets, Shapes::ShapeRef.new(shape: Setting, location_name: "RestrictPublicBuckets")) PublicAccessBlockConfiguration.struct_class = Types::PublicAccessBlockConfiguration + PutAccessGrantsInstanceResourcePolicyRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + PutAccessGrantsInstanceResourcePolicyRequest.add_member(:policy, Shapes::ShapeRef.new(shape: PolicyDocument, required: true, location_name: "Policy")) + PutAccessGrantsInstanceResourcePolicyRequest.add_member(:organization, Shapes::ShapeRef.new(shape: Organization, location_name: "Organization")) + PutAccessGrantsInstanceResourcePolicyRequest.struct_class = Types::PutAccessGrantsInstanceResourcePolicyRequest + + PutAccessGrantsInstanceResourcePolicyResult.add_member(:policy, Shapes::ShapeRef.new(shape: PolicyDocument, location_name: "Policy")) + PutAccessGrantsInstanceResourcePolicyResult.add_member(:organization, Shapes::ShapeRef.new(shape: Organization, location_name: "Organization")) + PutAccessGrantsInstanceResourcePolicyResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + PutAccessGrantsInstanceResourcePolicyResult.struct_class = Types::PutAccessGrantsInstanceResourcePolicyResult + PutAccessPointConfigurationForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) PutAccessPointConfigurationForObjectLambdaRequest.add_member(:name, Shapes::ShapeRef.new(shape: ObjectLambdaAccessPointName, required: true, location: "uri", location_name: "name")) PutAccessPointConfigurationForObjectLambdaRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: ObjectLambdaConfiguration, required: true, location_name: "Configuration")) @@ -1674,6 +1953,18 @@ module ClientApi UntagResourceResult.struct_class = Types::UntagResourceResult + UpdateAccessGrantsLocationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) + UpdateAccessGrantsLocationRequest.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, required: true, location: "uri", location_name: "id")) + UpdateAccessGrantsLocationRequest.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, required: true, location_name: "IAMRoleArn")) + UpdateAccessGrantsLocationRequest.struct_class = Types::UpdateAccessGrantsLocationRequest + + UpdateAccessGrantsLocationResult.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt")) + UpdateAccessGrantsLocationResult.add_member(:access_grants_location_id, Shapes::ShapeRef.new(shape: AccessGrantsLocationId, location_name: "AccessGrantsLocationId")) + UpdateAccessGrantsLocationResult.add_member(:access_grants_location_arn, Shapes::ShapeRef.new(shape: AccessGrantsLocationArn, location_name: "AccessGrantsLocationArn")) + UpdateAccessGrantsLocationResult.add_member(:location_scope, Shapes::ShapeRef.new(shape: S3Prefix, location_name: "LocationScope")) + UpdateAccessGrantsLocationResult.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, location_name: "IAMRoleArn")) + UpdateAccessGrantsLocationResult.struct_class = Types::UpdateAccessGrantsLocationResult + UpdateJobPriorityRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-account-id", metadata: {"contextParam"=>{"name"=>"AccountId"}})) UpdateJobPriorityRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "id")) UpdateJobPriorityRequest.add_member(:priority, Shapes::ShapeRef.new(shape: JobPriority, required: true, location: "querystring", location_name: "priority")) @@ -1723,6 +2014,70 @@ module ClientApi "uid" => "s3control-2018-08-20", } + api.add_operation(:associate_access_grants_identity_center, Seahorse::Model::Operation.new.tap do |o| + o.name = "AssociateAccessGrantsIdentityCenter" + o.http_method = "POST" + o.http_request_uri = "/v20180820/accessgrantsinstance/identitycenter" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: AssociateAccessGrantsIdentityCenterRequest, + location_name: "AssociateAccessGrantsIdentityCenterRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + + api.add_operation(:create_access_grant, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateAccessGrant" + o.http_method = "POST" + o.http_request_uri = "/v20180820/accessgrantsinstance/grant" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: CreateAccessGrantRequest, + location_name: "CreateAccessGrantRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: CreateAccessGrantResult) + end) + + api.add_operation(:create_access_grants_instance, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateAccessGrantsInstance" + o.http_method = "POST" + o.http_request_uri = "/v20180820/accessgrantsinstance" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: CreateAccessGrantsInstanceRequest, + location_name: "CreateAccessGrantsInstanceRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: CreateAccessGrantsInstanceResult) + end) + + api.add_operation(:create_access_grants_location, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateAccessGrantsLocation" + o.http_method = "POST" + o.http_request_uri = "/v20180820/accessgrantsinstance/location" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: CreateAccessGrantsLocationRequest, + location_name: "CreateAccessGrantsLocationRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: CreateAccessGrantsLocationResult) + end) + api.add_operation(:create_access_point, Seahorse::Model::Operation.new.tap do |o| o.name = "CreateAccessPoint" o.http_method = "PUT" @@ -1814,6 +2169,50 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) end) + api.add_operation(:delete_access_grant, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteAccessGrant" + o.http_method = "DELETE" + o.http_request_uri = "/v20180820/accessgrantsinstance/grant/{id}" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: DeleteAccessGrantRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + + api.add_operation(:delete_access_grants_instance, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteAccessGrantsInstance" + o.http_method = "DELETE" + o.http_request_uri = "/v20180820/accessgrantsinstance" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: DeleteAccessGrantsInstanceRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + + api.add_operation(:delete_access_grants_instance_resource_policy, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteAccessGrantsInstanceResourcePolicy" + o.http_method = "DELETE" + o.http_request_uri = "/v20180820/accessgrantsinstance/resourcepolicy" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: DeleteAccessGrantsInstanceResourcePolicyRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + + api.add_operation(:delete_access_grants_location, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteAccessGrantsLocation" + o.http_method = "DELETE" + o.http_request_uri = "/v20180820/accessgrantsinstance/location/{id}" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: DeleteAccessGrantsLocationRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + api.add_operation(:delete_access_point, Seahorse::Model::Operation.new.tap do |o| o.name = "DeleteAccessPoint" o.http_method = "DELETE" @@ -1998,6 +2397,72 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: DescribeMultiRegionAccessPointOperationResult) end) + api.add_operation(:dissociate_access_grants_identity_center, Seahorse::Model::Operation.new.tap do |o| + o.name = "DissociateAccessGrantsIdentityCenter" + o.http_method = "DELETE" + o.http_request_uri = "/v20180820/accessgrantsinstance/identitycenter" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: DissociateAccessGrantsIdentityCenterRequest) + o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure)) + end) + + api.add_operation(:get_access_grant, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetAccessGrant" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/grant/{id}" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetAccessGrantRequest) + o.output = Shapes::ShapeRef.new(shape: GetAccessGrantResult) + end) + + api.add_operation(:get_access_grants_instance, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetAccessGrantsInstance" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceRequest) + o.output = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceResult) + end) + + api.add_operation(:get_access_grants_instance_for_prefix, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetAccessGrantsInstanceForPrefix" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/prefix" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceForPrefixRequest) + o.output = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceForPrefixResult) + end) + + api.add_operation(:get_access_grants_instance_resource_policy, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetAccessGrantsInstanceResourcePolicy" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/resourcepolicy" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceResourcePolicyRequest) + o.output = Shapes::ShapeRef.new(shape: GetAccessGrantsInstanceResourcePolicyResult) + end) + + api.add_operation(:get_access_grants_location, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetAccessGrantsLocation" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/location/{id}" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetAccessGrantsLocationRequest) + o.output = Shapes::ShapeRef.new(shape: GetAccessGrantsLocationResult) + end) + api.add_operation(:get_access_point, Seahorse::Model::Operation.new.tap do |o| o.name = "GetAccessPoint" o.http_method = "GET" @@ -2128,6 +2593,17 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: GetBucketVersioningResult) end) + api.add_operation(:get_data_access, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetDataAccess" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/dataaccess" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: GetDataAccessRequest) + o.output = Shapes::ShapeRef.new(shape: GetDataAccessResult) + end) + api.add_operation(:get_job_tagging, Seahorse::Model::Operation.new.tap do |o| o.name = "GetJobTagging" o.http_method = "GET" @@ -2226,6 +2702,57 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: GetStorageLensGroupResult) end) + api.add_operation(:list_access_grants, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListAccessGrants" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/grants" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: ListAccessGrantsRequest) + o.output = Shapes::ShapeRef.new(shape: ListAccessGrantsResult) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_access_grants_instances, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListAccessGrantsInstances" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstances" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: ListAccessGrantsInstancesRequest) + o.output = Shapes::ShapeRef.new(shape: ListAccessGrantsInstancesResult) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_access_grants_locations, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListAccessGrantsLocations" + o.http_method = "GET" + o.http_request_uri = "/v20180820/accessgrantsinstance/locations" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: ListAccessGrantsLocationsRequest) + o.output = Shapes::ShapeRef.new(shape: ListAccessGrantsLocationsResult) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:list_access_points, Seahorse::Model::Operation.new.tap do |o| o.name = "ListAccessPoints" o.http_method = "GET" @@ -2350,6 +2877,22 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResult) end) + api.add_operation(:put_access_grants_instance_resource_policy, Seahorse::Model::Operation.new.tap do |o| + o.name = "PutAccessGrantsInstanceResourcePolicy" + o.http_method = "PUT" + o.http_request_uri = "/v20180820/accessgrantsinstance/resourcepolicy" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: PutAccessGrantsInstanceResourcePolicyRequest, + location_name: "PutAccessGrantsInstanceResourcePolicyRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: PutAccessGrantsInstanceResourcePolicyResult) + end) + api.add_operation(:put_access_point_configuration_for_object_lambda, Seahorse::Model::Operation.new.tap do |o| o.name = "PutAccessPointConfigurationForObjectLambda" o.http_method = "PUT" @@ -2571,6 +3114,22 @@ module ClientApi o.output = Shapes::ShapeRef.new(shape: UntagResourceResult) end) + api.add_operation(:update_access_grants_location, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateAccessGrantsLocation" + o.http_method = "PUT" + o.http_request_uri = "/v20180820/accessgrantsinstance/location/{id}" + o.http_checksum_required = true + o.endpoint_pattern = { + } + o.input = Shapes::ShapeRef.new(shape: UpdateAccessGrantsLocationRequest, + location_name: "UpdateAccessGrantsLocationRequest", + metadata: { + "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"} + } + ) + o.output = Shapes::ShapeRef.new(shape: UpdateAccessGrantsLocationResult) + end) + api.add_operation(:update_job_priority, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateJobPriority" o.http_method = "POST" diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/endpoints.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/endpoints.rb index dee3c5df111..37621cc0e35 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/endpoints.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/endpoints.rb @@ -12,6 +12,86 @@ module Aws::S3Control # @api private module Endpoints + class AssociateAccessGrantsIdentityCenter + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class CreateAccessGrant + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class CreateAccessGrantsInstance + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class CreateAccessGrantsLocation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class CreateAccessPoint def self.build(context) unless context.config.regional_endpoint @@ -132,6 +212,86 @@ def self.build(context) end end + class DeleteAccessGrant + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class DeleteAccessGrantsInstance + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class DeleteAccessGrantsInstanceResourcePolicy + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class DeleteAccessGrantsLocation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class DeleteAccessPoint def self.build(context) unless context.config.regional_endpoint @@ -472,6 +632,126 @@ def self.build(context) end end + class DissociateAccessGrantsIdentityCenter + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class GetAccessGrant + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class GetAccessGrantsInstance + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class GetAccessGrantsInstanceForPrefix + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class GetAccessGrantsInstanceResourcePolicy + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class GetAccessGrantsLocation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class GetAccessPoint def self.build(context) unless context.config.regional_endpoint @@ -732,6 +1012,26 @@ def self.build(context) end end + class GetDataAccess + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class GetJobTagging def self.build(context) unless context.config.regional_endpoint @@ -912,6 +1212,66 @@ def self.build(context) end end + class ListAccessGrants + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class ListAccessGrantsInstances + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + + class ListAccessGrantsLocations + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class ListAccessPoints def self.build(context) unless context.config.regional_endpoint @@ -1072,6 +1432,26 @@ def self.build(context) end end + class PutAccessGrantsInstanceResourcePolicy + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class PutAccessPointConfigurationForObjectLambda def self.build(context) unless context.config.regional_endpoint @@ -1392,6 +1772,26 @@ def self.build(context) end end + class UpdateAccessGrantsLocation + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::S3Control::EndpointParameters.new( + region: context.config.region, + use_fips: context.config.use_fips_endpoint, + use_dual_stack: context[:use_dualstack_endpoint], + endpoint: endpoint, + account_id: context.params[:account_id], + requires_account_id: true, + outpost_id: nil, + bucket: nil, + access_point_name: nil, + use_arn_region: context.config.s3_use_arn_region, + ) + end + end + class UpdateJobPriority def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/plugins/endpoints.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/plugins/endpoints.rb index 67b674a3581..6287c4a69b0 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/plugins/endpoints.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/plugins/endpoints.rb @@ -56,6 +56,14 @@ def apply_endpoint_headers(context, headers) def parameters_for_operation(context) case context.operation_name + when :associate_access_grants_identity_center + Aws::S3Control::Endpoints::AssociateAccessGrantsIdentityCenter.build(context) + when :create_access_grant + Aws::S3Control::Endpoints::CreateAccessGrant.build(context) + when :create_access_grants_instance + Aws::S3Control::Endpoints::CreateAccessGrantsInstance.build(context) + when :create_access_grants_location + Aws::S3Control::Endpoints::CreateAccessGrantsLocation.build(context) when :create_access_point Aws::S3Control::Endpoints::CreateAccessPoint.build(context) when :create_access_point_for_object_lambda @@ -68,6 +76,14 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::CreateMultiRegionAccessPoint.build(context) when :create_storage_lens_group Aws::S3Control::Endpoints::CreateStorageLensGroup.build(context) + when :delete_access_grant + Aws::S3Control::Endpoints::DeleteAccessGrant.build(context) + when :delete_access_grants_instance + Aws::S3Control::Endpoints::DeleteAccessGrantsInstance.build(context) + when :delete_access_grants_instance_resource_policy + Aws::S3Control::Endpoints::DeleteAccessGrantsInstanceResourcePolicy.build(context) + when :delete_access_grants_location + Aws::S3Control::Endpoints::DeleteAccessGrantsLocation.build(context) when :delete_access_point Aws::S3Control::Endpoints::DeleteAccessPoint.build(context) when :delete_access_point_for_object_lambda @@ -102,6 +118,18 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::DescribeJob.build(context) when :describe_multi_region_access_point_operation Aws::S3Control::Endpoints::DescribeMultiRegionAccessPointOperation.build(context) + when :dissociate_access_grants_identity_center + Aws::S3Control::Endpoints::DissociateAccessGrantsIdentityCenter.build(context) + when :get_access_grant + Aws::S3Control::Endpoints::GetAccessGrant.build(context) + when :get_access_grants_instance + Aws::S3Control::Endpoints::GetAccessGrantsInstance.build(context) + when :get_access_grants_instance_for_prefix + Aws::S3Control::Endpoints::GetAccessGrantsInstanceForPrefix.build(context) + when :get_access_grants_instance_resource_policy + Aws::S3Control::Endpoints::GetAccessGrantsInstanceResourcePolicy.build(context) + when :get_access_grants_location + Aws::S3Control::Endpoints::GetAccessGrantsLocation.build(context) when :get_access_point Aws::S3Control::Endpoints::GetAccessPoint.build(context) when :get_access_point_configuration_for_object_lambda @@ -128,6 +156,8 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::GetBucketTagging.build(context) when :get_bucket_versioning Aws::S3Control::Endpoints::GetBucketVersioning.build(context) + when :get_data_access + Aws::S3Control::Endpoints::GetDataAccess.build(context) when :get_job_tagging Aws::S3Control::Endpoints::GetJobTagging.build(context) when :get_multi_region_access_point @@ -146,6 +176,12 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::GetStorageLensConfigurationTagging.build(context) when :get_storage_lens_group Aws::S3Control::Endpoints::GetStorageLensGroup.build(context) + when :list_access_grants + Aws::S3Control::Endpoints::ListAccessGrants.build(context) + when :list_access_grants_instances + Aws::S3Control::Endpoints::ListAccessGrantsInstances.build(context) + when :list_access_grants_locations + Aws::S3Control::Endpoints::ListAccessGrantsLocations.build(context) when :list_access_points Aws::S3Control::Endpoints::ListAccessPoints.build(context) when :list_access_points_for_object_lambda @@ -162,6 +198,8 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::ListStorageLensGroups.build(context) when :list_tags_for_resource Aws::S3Control::Endpoints::ListTagsForResource.build(context) + when :put_access_grants_instance_resource_policy + Aws::S3Control::Endpoints::PutAccessGrantsInstanceResourcePolicy.build(context) when :put_access_point_configuration_for_object_lambda Aws::S3Control::Endpoints::PutAccessPointConfigurationForObjectLambda.build(context) when :put_access_point_policy @@ -194,6 +232,8 @@ def parameters_for_operation(context) Aws::S3Control::Endpoints::TagResource.build(context) when :untag_resource Aws::S3Control::Endpoints::UntagResource.build(context) + when :update_access_grants_location + Aws::S3Control::Endpoints::UpdateAccessGrantsLocation.build(context) when :update_job_priority Aws::S3Control::Endpoints::UpdateJobPriority.build(context) when :update_job_status diff --git a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/types.rb b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/types.rb index 90d2abc563a..ab6b5a873ea 100644 --- a/gems/aws-sdk-s3control/lib/aws-sdk-s3control/types.rb +++ b/gems/aws-sdk-s3control/lib/aws-sdk-s3control/types.rb @@ -43,6 +43,36 @@ class AccessControlTranslation < Struct.new( include Aws::Structure end + # The configuration options of the S3 Access Grants location. It + # contains the `S3SubPrefix` field. The grant scope, the data to which + # you are granting access, is the result of appending the `Subprefix` + # field to the scope of the registered location. + # + # @!attribute [rw] s3_sub_prefix + # The `S3SubPrefix` is appended to the location scope creating the + # grant scope. Use this field to narrow the scope of the grant to a + # subset of the location scope. This field is required if the location + # scope is the default location `s3://` because you cannot create a + # grant for all of your S3 data in the Region and must narrow the + # scope. For example, if the location scope is the default location + # `s3://`, the `S3SubPrefx` can be a <bucket-name>/*, so the + # full grant scope path would be `s3:///*`. Or the + # `S3SubPrefx` can be `/*`, so the full + # grant scope path would be or `s3:///*`. + # + # If the `S3SubPrefix` includes a prefix, append the wildcard + # character `*` after the prefix to indicate that you want to include + # all object key names in the bucket that start with that prefix. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/AccessGrantsLocationConfiguration AWS API Documentation + # + class AccessGrantsLocationConfiguration < Struct.new( + :s3_sub_prefix) + SENSITIVE = [] + include Aws::Structure + end + # An access point used to access a bucket. # # @!attribute [rw] name @@ -236,6 +266,33 @@ class AdvancedDataProtectionMetrics < Struct.new( include Aws::Structure end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] identity_center_arn + # The Amazon Resource Name (ARN) of the Amazon Web Services IAM + # Identity Center instance that you are associating with your S3 + # Access Grants instance. An IAM Identity Center instance is your + # corporate identity directory that you added to the IAM Identity + # Center. You can use the [ListInstances][1] API operation to retrieve + # a list of your Identity Center instances and their ARNs. + # + # + # + # [1]: https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/AssociateAccessGrantsIdentityCenterRequest AWS API Documentation + # + class AssociateAccessGrantsIdentityCenterRequest < Struct.new( + :account_id, + :identity_center_arn) + SENSITIVE = [] + include Aws::Structure + end + # Error details for the failed asynchronous operation. # # @!attribute [rw] code @@ -483,6 +540,317 @@ class CloudWatchMetrics < Struct.new( include Aws::Structure end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # + # If you are passing the `default` location, you cannot create an + # access grant for the entire default location. You must also specify + # a bucket or a bucket and prefix in the `Subprefix` field. + # @return [String] + # + # @!attribute [rw] access_grants_location_configuration + # The configuration options of the grant location. The grant location + # is the S3 path to the data to which you are granting access. It + # contains the `S3SubPrefix` field. The grant scope is the result of + # appending the subprefix to the location scope of the registered + # location. + # @return [Types::AccessGrantsLocationConfiguration] + # + # @!attribute [rw] grantee + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added your + # corporate directory to Amazon Web Services IAM Identity Center and + # associated your Identity Center instance with your S3 Access Grants + # instance, the grantee can also be a corporate directory user or + # group. + # @return [Types::Grantee] + # + # @!attribute [rw] permission + # The type of access that you are granting to your S3 data, which can + # be set to one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM + # Identity Center application associated with your Identity Center + # instance. If an application ARN is included in the request to create + # an access grant, the grantee can only access the S3 data through + # this application. + # @return [String] + # + # @!attribute [rw] s3_prefix_type + # The type of `S3SubPrefix`. The only possible value is `Object`. Pass + # this value if the access grant scope is an object. Do not pass this + # value if the access grant scope is a bucket or a bucket and a + # prefix. + # @return [String] + # + # @!attribute [rw] tags + # The Amazon Web Services resource tags that you are adding to the + # access grant. Each tag is a label consisting of a user-defined key + # and value. Tags can help you manage, identify, organize, search for, + # and filter resources. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantRequest AWS API Documentation + # + class CreateAccessGrantRequest < Struct.new( + :account_id, + :access_grants_location_id, + :access_grants_location_configuration, + :grantee, + :permission, + :application_arn, + :s3_prefix_type, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you created the access grant. + # @return [Time] + # + # @!attribute [rw] access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # @return [String] + # + # @!attribute [rw] access_grant_arn + # The Amazon Resource Name (ARN) of the access grant. + # @return [String] + # + # @!attribute [rw] grantee + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added your + # corporate directory to Amazon Web Services IAM Identity Center and + # associated your Identity Center instance with your S3 Access Grants + # instance, the grantee can also be a corporate directory user or + # group. + # @return [Types::Grantee] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_configuration + # The configuration options of the grant location. The grant location + # is the S3 path to the data to which you are granting access. + # @return [Types::AccessGrantsLocationConfiguration] + # + # @!attribute [rw] permission + # The type of access that you are granting to your S3 data, which can + # be set to one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM + # Identity Center application associated with your Identity Center + # instance. If the grant includes an application ARN, the grantee can + # only access the S3 data through this application. + # @return [String] + # + # @!attribute [rw] grant_scope + # The S3 path of the data to which you are granting access. It is the + # result of appending the `Subprefix` to the location scope. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantResult AWS API Documentation + # + class CreateAccessGrantResult < Struct.new( + :created_at, + :access_grant_id, + :access_grant_arn, + :grantee, + :access_grants_location_id, + :access_grants_location_configuration, + :permission, + :application_arn, + :grant_scope) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] identity_center_arn + # If you would like to associate your S3 Access Grants instance with + # an Amazon Web Services IAM Identity Center instance, use this field + # to pass the Amazon Resource Name (ARN) of the Amazon Web Services + # IAM Identity Center instance that you are associating with your S3 + # Access Grants instance. An IAM Identity Center instance is your + # corporate identity directory that you added to the IAM Identity + # Center. You can use the [ListInstances][1] API operation to retrieve + # a list of your Identity Center instances and their ARNs. + # + # + # + # [1]: https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html + # @return [String] + # + # @!attribute [rw] tags + # The Amazon Web Services resource tags that you are adding to the S3 + # Access Grants instance. Each tag is a label consisting of a + # user-defined key and value. Tags can help you manage, identify, + # organize, search for, and filter resources. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsInstanceRequest AWS API Documentation + # + class CreateAccessGrantsInstanceRequest < Struct.new( + :account_id, + :identity_center_arn, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance. + # @return [Time] + # + # @!attribute [rw] access_grants_instance_id + # The ID of the S3 Access Grants instance. The ID is `default`. You + # can have one S3 Access Grants instance per Region per account. + # @return [String] + # + # @!attribute [rw] access_grants_instance_arn + # The Amazon Resource Name (ARN) of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] identity_center_arn + # If you associated your S3 Access Grants instance with an Amazon Web + # Services IAM Identity Center instance, this field returns the Amazon + # Resource Name (ARN) of the IAM Identity Center instance application; + # a subresource of the original Identity Center instance passed in the + # request. S3 Access Grants creates this Identity Center application + # for this specific S3 Access Grants instance. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsInstanceResult AWS API Documentation + # + class CreateAccessGrantsInstanceResult < Struct.new( + :created_at, + :access_grants_instance_id, + :access_grants_instance_arn, + :identity_center_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] location_scope + # The S3 path to the location that you are registering. The location + # scope can be the default S3 location `s3://`, the S3 path to a + # bucket `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. A prefix in S3 is a string of characters + # at the beginning of an object key name used to organize the objects + # that you store in your S3 buckets. For example, object key names + # that start with the `engineering/` prefix or object key names that + # start with the `marketing/campaigns/` prefix. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @!attribute [rw] tags + # The Amazon Web Services resource tags that you are adding to the S3 + # Access Grants location. Each tag is a label consisting of a + # user-defined key and value. Tags can help you manage, identify, + # organize, search for, and filter resources. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsLocationRequest AWS API Documentation + # + class CreateAccessGrantsLocationRequest < Struct.new( + :account_id, + :location_scope, + :iam_role_arn, + :tags) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you registered the location. + # @return [Time] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_arn + # The Amazon Resource Name (ARN) of the location you are registering. + # @return [String] + # + # @!attribute [rw] location_scope + # The S3 URI path to the location that you are registering. The + # location scope can be the default S3 location `s3://`, the S3 path + # to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 + # is a string of characters at the beginning of an object key name + # used to organize the objects that you store in your S3 buckets. For + # example, object key names that start with the `engineering/` prefix + # or object key names that start with the `marketing/campaigns/` + # prefix. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/CreateAccessGrantsLocationResult AWS API Documentation + # + class CreateAccessGrantsLocationResult < Struct.new( + :created_at, + :access_grants_location_id, + :access_grants_location_arn, + :location_scope, + :iam_role_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The Amazon Web Services account ID for owner of the specified Object # Lambda Access Point. @@ -962,6 +1330,109 @@ class CreateStorageLensGroupRequest < Struct.new( include Aws::Structure end + # The Amazon Web Services Security Token Service temporary credential + # that S3 Access Grants vends to grantees and client applications. + # + # @!attribute [rw] access_key_id + # The unique access key ID of the Amazon Web Services STS temporary + # credential that S3 Access Grants vends to grantees and client + # applications. + # @return [String] + # + # @!attribute [rw] secret_access_key + # The secret access key of the Amazon Web Services STS temporary + # credential that S3 Access Grants vends to grantees and client + # applications. + # @return [String] + # + # @!attribute [rw] session_token + # The Amazon Web Services STS temporary credential that S3 Access + # Grants vends to grantees and client applications. + # @return [String] + # + # @!attribute [rw] expiration + # The expiration date and time of the temporary credential that S3 + # Access Grants vends to grantees and client applications. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/Credentials AWS API Documentation + # + class Credentials < Struct.new( + :access_key_id, + :secret_access_key, + :session_token, + :expiration) + SENSITIVE = [:access_key_id, :secret_access_key, :session_token] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantRequest AWS API Documentation + # + class DeleteAccessGrantRequest < Struct.new( + :account_id, + :access_grant_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsInstanceRequest AWS API Documentation + # + class DeleteAccessGrantsInstanceRequest < Struct.new( + :account_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsInstanceResourcePolicyRequest AWS API Documentation + # + class DeleteAccessGrantsInstanceResourcePolicyRequest < Struct.new( + :account_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location that you are deregistering from + # your S3 Access Grants instance. S3 Access Grants assigned this ID + # when you registered the location. S3 Access Grants assigns the ID + # `default` to the default location `s3://` and assigns an + # auto-generated ID to other locations that you register. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DeleteAccessGrantsLocationRequest AWS API Documentation + # + class DeleteAccessGrantsLocationRequest < Struct.new( + :account_id, + :access_grants_location_id) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The account ID for the account that owns the specified Object Lambda # Access Point. @@ -1568,6 +2039,19 @@ class DetailedStatusCodesMetrics < Struct.new( include Aws::Structure end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/DissociateAccessGrantsIdentityCenterRequest AWS API Documentation + # + class DissociateAccessGrantsIdentityCenterRequest < Struct.new( + :account_id) + SENSITIVE = [] + include Aws::Structure + end + # Specifies encryption-related information for an Amazon S3 bucket that # is a destination for replicated objects. # @@ -1677,6 +2161,282 @@ class GeneratedManifestEncryption < Struct.new( include Aws::Structure end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantRequest AWS API Documentation + # + class GetAccessGrantRequest < Struct.new( + :account_id, + :access_grant_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you created the access grant. + # @return [Time] + # + # @!attribute [rw] access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # @return [String] + # + # @!attribute [rw] access_grant_arn + # The Amazon Resource Name (ARN) of the access grant. + # @return [String] + # + # @!attribute [rw] grantee + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added a corporate + # directory to Amazon Web Services IAM Identity Center and associated + # this Identity Center instance with the S3 Access Grants instance, + # the grantee can also be a corporate directory user or group. + # @return [Types::Grantee] + # + # @!attribute [rw] permission + # The type of permission that was granted in the access grant. Can be + # one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_configuration + # The configuration options of the grant location. The grant location + # is the S3 path to the data to which you are granting access. + # @return [Types::AccessGrantsLocationConfiguration] + # + # @!attribute [rw] grant_scope + # The S3 path of the data to which you are granting access. It is the + # result of appending the `Subprefix` to the location scope. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM + # Identity Center application associated with your Identity Center + # instance. If the grant includes an application ARN, the grantee can + # only access the S3 data through this application. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantResult AWS API Documentation + # + class GetAccessGrantResult < Struct.new( + :created_at, + :access_grant_id, + :access_grant_arn, + :grantee, + :permission, + :access_grants_location_id, + :access_grants_location_configuration, + :grant_scope, + :application_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] s3_prefix + # The S3 prefix of the access grants that you would like to retrieve. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceForPrefixRequest AWS API Documentation + # + class GetAccessGrantsInstanceForPrefixRequest < Struct.new( + :account_id, + :s3_prefix) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] access_grants_instance_arn + # The Amazon Resource Name (ARN) of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] access_grants_instance_id + # The ID of the S3 Access Grants instance. The ID is `default`. You + # can have one S3 Access Grants instance per Region per account. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceForPrefixResult AWS API Documentation + # + class GetAccessGrantsInstanceForPrefixResult < Struct.new( + :access_grants_instance_arn, + :access_grants_instance_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceRequest AWS API Documentation + # + class GetAccessGrantsInstanceRequest < Struct.new( + :account_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceResourcePolicyRequest AWS API Documentation + # + class GetAccessGrantsInstanceResourcePolicyRequest < Struct.new( + :account_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] policy + # The resource policy of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] organization + # The Organization of the resource policy of the S3 Access Grants + # instance. + # @return [String] + # + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance + # resource policy. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceResourcePolicyResult AWS API Documentation + # + class GetAccessGrantsInstanceResourcePolicyResult < Struct.new( + :policy, + :organization, + :created_at) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] access_grants_instance_arn + # The Amazon Resource Name (ARN) of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] access_grants_instance_id + # The ID of the S3 Access Grants instance. The ID is `default`. You + # can have one S3 Access Grants instance per Region per account. + # @return [String] + # + # @!attribute [rw] identity_center_arn + # If you associated your S3 Access Grants instance with an Amazon Web + # Services IAM Identity Center instance, this field returns the Amazon + # Resource Name (ARN) of the Amazon Web Services IAM Identity Center + # instance application; a subresource of the original Identity Center + # instance. S3 Access Grants creates this Identity Center application + # for the specific S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsInstanceResult AWS API Documentation + # + class GetAccessGrantsInstanceResult < Struct.new( + :access_grants_instance_arn, + :access_grants_instance_id, + :identity_center_arn, + :created_at) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location that you are retrieving. S3 Access + # Grants assigns this ID when you register the location. S3 Access + # Grants assigns the ID `default` to the default location `s3://` and + # assigns an auto-generated ID to other locations that you register. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsLocationRequest AWS API Documentation + # + class GetAccessGrantsLocationRequest < Struct.new( + :account_id, + :access_grants_location_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you registered the location. + # @return [Time] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_arn + # The Amazon Resource Name (ARN) of the registered location. + # @return [String] + # + # @!attribute [rw] location_scope + # The S3 URI path to the registered location. The location scope can + # be the default S3 location `s3://`, the S3 path to a bucket, or the + # S3 path to a bucket and prefix. A prefix in S3 is a string of + # characters at the beginning of an object key name used to organize + # the objects that you store in your S3 buckets. For example, object + # key names that start with the `engineering/` prefix or object key + # names that start with the `marketing/campaigns/` prefix. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetAccessGrantsLocationResult AWS API Documentation + # + class GetAccessGrantsLocationResult < Struct.new( + :created_at, + :access_grants_location_id, + :access_grants_location_arn, + :location_scope, + :iam_role_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The account ID for the account that owns the specified Object Lambda # Access Point. @@ -2245,23 +3005,105 @@ class GetBucketVersioningRequest < Struct.new( include Aws::Structure end - # @!attribute [rw] status - # The versioning state of the S3 on Outposts bucket. - # @return [String] + # @!attribute [rw] status + # The versioning state of the S3 on Outposts bucket. + # @return [String] + # + # @!attribute [rw] mfa_delete + # Specifies whether MFA delete is enabled in the bucket versioning + # configuration. This element is returned only if the bucket has been + # configured with MFA delete. If MFA delete has never been configured + # for the bucket, this element is not returned. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetBucketVersioningResult AWS API Documentation + # + class GetBucketVersioningResult < Struct.new( + :status, + :mfa_delete) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] target + # The S3 URI path of the data to which you are requesting temporary + # access credentials. If the requesting account has an access grant + # for this data, S3 Access Grants vends temporary access credentials + # in the response. + # @return [String] + # + # @!attribute [rw] permission + # The type of permission granted to your S3 data, which can be set to + # one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] duration_seconds + # The session duration, in seconds, of the temporary access credential + # that S3 Access Grants vends to the grantee or client application. + # The default value is 1 hour, but the grantee can specify a range + # from 900 seconds (15 minutes) up to 43200 seconds (12 hours). If the + # grantee requests a value higher than this maximum, the operation + # fails. + # @return [Integer] + # + # @!attribute [rw] privilege + # The scope of the temporary access credential that S3 Access Grants + # vends to the grantee or client application. + # + # * `Default` – The scope of the returned temporary access token is + # the scope of the grant that is closest to the target scope. + # + # * `Minimal` – The scope of the returned temporary access token is + # the same as the requested target scope as long as the requested + # scope is the same as or a subset of the grant scope. + # @return [String] + # + # @!attribute [rw] target_type + # The type of `Target`. The only possible value is `Object`. Pass this + # value if the target data that you would like to access is a path to + # an object. Do not pass this value if the target data is a bucket or + # a bucket and a prefix. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetDataAccessRequest AWS API Documentation + # + class GetDataAccessRequest < Struct.new( + :account_id, + :target, + :permission, + :duration_seconds, + :privilege, + :target_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] credentials + # The temporary credential token that S3 Access Grants vends. + # @return [Types::Credentials] # - # @!attribute [rw] mfa_delete - # Specifies whether MFA delete is enabled in the bucket versioning - # configuration. This element is returned only if the bucket has been - # configured with MFA delete. If MFA delete has never been configured - # for the bucket, this element is not returned. + # @!attribute [rw] matched_grant_target + # The S3 URI path of the data to which you are being granted temporary + # access credentials. # @return [String] # - # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetBucketVersioningResult AWS API Documentation + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/GetDataAccessResult AWS API Documentation # - class GetBucketVersioningResult < Struct.new( - :status, - :mfa_delete) - SENSITIVE = [] + class GetDataAccessResult < Struct.new( + :credentials, + :matched_grant_target) + SENSITIVE = [:credentials] include Aws::Structure end @@ -2572,6 +3414,47 @@ class GetStorageLensGroupResult < Struct.new( include Aws::Structure end + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added your corporate + # directory to Amazon Web Services IAM Identity Center and associated + # your Identity Center instance with your S3 Access Grants instance, the + # grantee can also be a corporate directory user or group. + # + # @!attribute [rw] grantee_type + # The type of the grantee to which access has been granted. It can be + # one of the following values: + # + # * `IAM` - An IAM user or role. + # + # * `DIRECTORY_USER` - Your corporate directory user. You can use this + # option if you have added your corporate identity directory to IAM + # Identity Center and associated the IAM Identity Center instance + # with your S3 Access Grants instance. + # + # * `DIRECTORY_GROUP` - Your corporate directory group. You can use + # this option if you have added your corporate identity directory to + # IAM Identity Center and associated the IAM Identity Center + # instance with your S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] grantee_identifier + # The unique identifier of the `Grantee`. If the grantee type is + # `IAM`, the identifier is the IAM Amazon Resource Name (ARN) of the + # user or role. If the grantee type is a directory user or group, the + # identifier is 128-bit universally unique identifier (UUID) in the + # format `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`. You can obtain this + # UUID from your Amazon Web Services IAM Identity Center instance. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/Grantee AWS API Documentation + # + class Grantee < Struct.new( + :grantee_type, + :grantee_identifier) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] message # @return [String] # @@ -3405,6 +4288,372 @@ class LifecycleRuleFilter < Struct.new( include Aws::Structure end + # Information about the access grant. + # + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance. + # @return [Time] + # + # @!attribute [rw] access_grant_id + # The ID of the access grant. S3 Access Grants auto-generates this ID + # when you create the access grant. + # @return [String] + # + # @!attribute [rw] access_grant_arn + # The Amazon Resource Name (ARN) of the access grant. + # @return [String] + # + # @!attribute [rw] grantee + # The user, group, or role to which you are granting access. You can + # grant access to an IAM user or role. If you have added your + # corporate directory to Amazon Web Services IAM Identity Center and + # associated your Identity Center instance with your S3 Access Grants + # instance, the grantee can also be a corporate directory user or + # group. + # @return [Types::Grantee] + # + # @!attribute [rw] permission + # The type of access granted to your S3 data, which can be set to one + # of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_configuration + # The configuration options of the grant location. The grant location + # is the S3 path to the data to which you are granting access. + # @return [Types::AccessGrantsLocationConfiguration] + # + # @!attribute [rw] grant_scope + # The S3 path of the data to which you are granting access. It is the + # result of appending the `Subprefix` to the location scope. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM + # Identity Center application associated with your Identity Center + # instance. If the grant includes an application ARN, the grantee can + # only access the S3 data through this application. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantEntry AWS API Documentation + # + class ListAccessGrantEntry < Struct.new( + :created_at, + :access_grant_id, + :access_grant_arn, + :grantee, + :permission, + :access_grants_location_id, + :access_grants_location_configuration, + :grant_scope, + :application_arn) + SENSITIVE = [] + include Aws::Structure + end + + # Information about the S3 Access Grants instance. + # + # @!attribute [rw] access_grants_instance_id + # The ID of the S3 Access Grants instance. The ID is `default`. You + # can have one S3 Access Grants instance per Region per account. + # @return [String] + # + # @!attribute [rw] access_grants_instance_arn + # The Amazon Resource Name (ARN) of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance. + # @return [Time] + # + # @!attribute [rw] identity_center_arn + # If you associated your S3 Access Grants instance with an Amazon Web + # Services IAM Identity Center instance, this field returns the Amazon + # Resource Name (ARN) of the IAM Identity Center instance application; + # a subresource of the original Identity Center instance. S3 Access + # Grants creates this Identity Center application for the specific S3 + # Access Grants instance. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsInstanceEntry AWS API Documentation + # + class ListAccessGrantsInstanceEntry < Struct.new( + :access_grants_instance_id, + :access_grants_instance_arn, + :created_at, + :identity_center_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Instances` request in + # order to retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the + # `NextToken` to determine if there are more results. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsInstancesRequest AWS API Documentation + # + class ListAccessGrantsInstancesRequest < Struct.new( + :account_id, + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Instances` request in + # order to retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] access_grants_instances_list + # A container for a list of S3 Access Grants instances. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsInstancesResult AWS API Documentation + # + class ListAccessGrantsInstancesResult < Struct.new( + :next_token, + :access_grants_instances_list) + SENSITIVE = [] + include Aws::Structure + end + + # A container for information about the registered location. + # + # @!attribute [rw] created_at + # The date and time when you registered the location. + # @return [Time] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigns this ID when you register the location. S3 + # Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_arn + # The Amazon Resource Name (ARN) of the registered location. + # @return [String] + # + # @!attribute [rw] location_scope + # The S3 path to the location that you are registering. The location + # scope can be the default S3 location `s3://`, the S3 path to a + # bucket `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. A prefix in S3 is a string of characters + # at the beginning of an object key name used to organize the objects + # that you store in your S3 buckets. For example, object key names + # that start with the `engineering/` prefix or object key names that + # start with the `marketing/campaigns/` prefix. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsLocationsEntry AWS API Documentation + # + class ListAccessGrantsLocationsEntry < Struct.new( + :created_at, + :access_grants_location_id, + :access_grants_location_arn, + :location_scope, + :iam_role_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Locations` request in + # order to retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the + # `NextToken` to determine if there are more results. + # @return [Integer] + # + # @!attribute [rw] location_scope + # The S3 path to the location that you are registering. The location + # scope can be the default S3 location `s3://`, the S3 path to a + # bucket `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. A prefix in S3 is a string of characters + # at the beginning of an object key name used to organize the objects + # that you store in your S3 buckets. For example, object key names + # that start with the `engineering/` prefix or object key names that + # start with the `marketing/campaigns/` prefix. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsLocationsRequest AWS API Documentation + # + class ListAccessGrantsLocationsRequest < Struct.new( + :account_id, + :next_token, + :max_results, + :location_scope) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants Locations` request in + # order to retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] access_grants_locations_list + # A container for a list of registered locations in an S3 Access + # Grants instance. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsLocationsResult AWS API Documentation + # + class ListAccessGrantsLocationsResult < Struct.new( + :next_token, + :access_grants_locations_list) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants` request in order to + # retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of access grants that you would like returned in + # the `List Access Grants` response. If the results include the + # pagination token `NextToken`, make another call using the + # `NextToken` to determine if there are more results. + # @return [Integer] + # + # @!attribute [rw] grantee_type + # The type of the grantee to which access has been granted. It can be + # one of the following values: + # + # * `IAM` - An IAM user or role. + # + # * `DIRECTORY_USER` - Your corporate directory user. You can use this + # option if you have added your corporate identity directory to IAM + # Identity Center and associated the IAM Identity Center instance + # with your S3 Access Grants instance. + # + # * `DIRECTORY_GROUP` - Your corporate directory group. You can use + # this option if you have added your corporate identity directory to + # IAM Identity Center and associated the IAM Identity Center + # instance with your S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] grantee_identifier + # The unique identifer of the `Grantee`. If the grantee type is `IAM`, + # the identifier is the IAM Amazon Resource Name (ARN) of the user or + # role. If the grantee type is a directory user or group, the + # identifier is 128-bit universally unique identifier (UUID) in the + # format `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`. You can obtain this + # UUID from your Amazon Web Services IAM Identity Center instance. + # @return [String] + # + # @!attribute [rw] permission + # The type of permission granted to your S3 data, which can be set to + # one of the following values: + # + # * `READ` – Grant read-only access to the S3 data. + # + # * `WRITE` – Grant write-only access to the S3 data. + # + # * `READWRITE` – Grant both read and write access to the S3 data. + # @return [String] + # + # @!attribute [rw] grant_scope + # The S3 path of the data to which you are granting access. It is the + # result of appending the `Subprefix` to the location scope. + # @return [String] + # + # @!attribute [rw] application_arn + # The Amazon Resource Name (ARN) of an Amazon Web Services IAM + # Identity Center application associated with your Identity Center + # instance. If the grant includes an application ARN, the grantee can + # only access the S3 data through this application. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsRequest AWS API Documentation + # + class ListAccessGrantsRequest < Struct.new( + :account_id, + :next_token, + :max_results, + :grantee_type, + :grantee_identifier, + :permission, + :grant_scope, + :application_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # A pagination token to request the next page of results. Pass this + # value into a subsequent `List Access Grants` request in order to + # retrieve the next page of results. + # @return [String] + # + # @!attribute [rw] access_grants_list + # A container for a list of grants in an S3 Access Grants instance. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListAccessGrantsResult AWS API Documentation + # + class ListAccessGrantsResult < Struct.new( + :next_token, + :access_grants_list) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The account ID for the account that owns the specified Object Lambda # Access Point. @@ -3817,7 +5066,8 @@ class ListStorageLensGroupsResult < Struct.new( # # @!attribute [rw] resource_arn # The Amazon Resource Name (ARN) of the S3 resource that you want to - # list the tags for. + # list the tags for. The tagged resource can be an S3 Storage Lens + # group or S3 Access Grants instance, registered location, or grant. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/ListTagsForResourceRequest AWS API Documentation @@ -4465,6 +5715,55 @@ class PublicAccessBlockConfiguration < Struct.new( include Aws::Structure end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] policy + # The resource policy of the S3 Access Grants instance that you are + # updating. + # @return [String] + # + # @!attribute [rw] organization + # The Organization of the resource policy of the S3 Access Grants + # instance. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/PutAccessGrantsInstanceResourcePolicyRequest AWS API Documentation + # + class PutAccessGrantsInstanceResourcePolicyRequest < Struct.new( + :account_id, + :policy, + :organization) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] policy + # The updated resource policy of the S3 Access Grants instance. + # @return [String] + # + # @!attribute [rw] organization + # The Organization of the resource policy of the S3 Access Grants + # instance. + # @return [String] + # + # @!attribute [rw] created_at + # The date and time when you created the S3 Access Grants instance + # resource policy. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/PutAccessGrantsInstanceResourcePolicyResult AWS API Documentation + # + class PutAccessGrantsInstanceResourcePolicyResult < Struct.new( + :policy, + :organization, + :created_at) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The account ID for the account that owns the specified Object Lambda # Access Point. @@ -6414,23 +7713,29 @@ class SubmitMultiRegionAccessPointRoutesResult < Aws::EmptyStructure; end # resource. You can add tags to new objects when you upload them, or you # can add object tags to existing objects. # - # This data type is only supported for [S3 Storage Lens groups][1]. + # This operation is only supported for [S3 Storage Lens groups][1] and + # for [S3 Access Grants][2]. The tagged resource can be an S3 Storage + # Lens group or S3 Access Grants instance, registered location, or + # grant. # # # # # # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups.html + # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-tagging.html # # @!attribute [rw] key - # The tag key for your Amazon Web Services resource. A tag key can be - # up to 128 Unicode characters in length and is case-sensitive. System - # created tags that begin with `aws:` aren’t supported. + # The key of the key-value pair of a tag added to your Amazon Web + # Services resource. A tag key can be up to 128 Unicode characters in + # length and is case-sensitive. System created tags that begin with + # `aws:` aren’t supported. # @return [String] # # @!attribute [rw] value - # The tag value for your Amazon Web Services resource. A tag value can - # be up to 256 Unicode characters in length and is case-sensitive. + # The value of the key-value pair of a tag added to your Amazon Web + # Services resource. A tag value can be up to 256 Unicode characters + # in length and is case-sensitive. # @return [String] # # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/Tag AWS API Documentation @@ -6444,12 +7749,13 @@ class Tag < Struct.new( # @!attribute [rw] account_id # The Amazon Web Services account ID that created the S3 resource that - # you're trying to add tags to. + # you're trying to add tags to or the requester's account ID. # @return [String] # # @!attribute [rw] resource_arn # The Amazon Resource Name (ARN) of the S3 resource that you're - # trying to add tags to. + # trying to add tags to. The tagged resource can be an S3 Storage Lens + # group or S3 Access Grants instance, registered location, or grant. # @return [String] # # @!attribute [rw] tags @@ -6549,13 +7855,13 @@ class Transition < Struct.new( # @return [String] # # @!attribute [rw] resource_arn - # The Amazon Resource Name (ARN) of the S3 resource that you want to - # remove the resource tags from. + # The Amazon Resource Name (ARN) of the S3 resource that you're + # trying to remove the tags from. # @return [String] # # @!attribute [rw] tag_keys - # The tag key pair of the S3 resource tag that you're trying to - # remove. + # The array of tag key-value pairs that you're trying to remove from + # of the S3 resource. # @return [Array] # # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/UntagResourceRequest AWS API Documentation @@ -6572,6 +7878,87 @@ class UntagResourceRequest < Struct.new( # class UntagResourceResult < Aws::EmptyStructure; end + # @!attribute [rw] account_id + # The ID of the Amazon Web Services account that is making this + # request. + # @return [String] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location that you are updating. S3 Access + # Grants assigns this ID when you register the location. S3 Access + # Grants assigns the ID `default` to the default location `s3://` and + # assigns an auto-generated ID to other locations that you register. + # + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigned this ID when you registered the location. + # S3 Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # + # If you are passing the `default` location, you cannot create an + # access grant for the entire default location. You must also specify + # a bucket or a bucket and prefix in the `Subprefix` field. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role for the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/UpdateAccessGrantsLocationRequest AWS API Documentation + # + class UpdateAccessGrantsLocationRequest < Struct.new( + :account_id, + :access_grants_location_id, + :iam_role_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] created_at + # The date and time when you registered the location. + # @return [Time] + # + # @!attribute [rw] access_grants_location_id + # The ID of the registered location to which you are granting access. + # S3 Access Grants assigned this ID when you registered the location. + # S3 Access Grants assigns the ID `default` to the default location + # `s3://` and assigns an auto-generated ID to other locations that you + # register. + # @return [String] + # + # @!attribute [rw] access_grants_location_arn + # The Amazon Resource Name (ARN) of the registered location that you + # are updating. + # @return [String] + # + # @!attribute [rw] location_scope + # The S3 URI path of the location that you are updating. You cannot + # update the scope of the registered location. The location scope can + # be the default S3 location `s3://`, the S3 path to a bucket + # `s3://`, or the S3 path to a bucket and prefix + # `s3:///`. + # @return [String] + # + # @!attribute [rw] iam_role_arn + # The Amazon Resource Name (ARN) of the IAM role of the registered + # location. S3 Access Grants assumes this role to manage access to the + # registered location. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/s3control-2018-08-20/UpdateAccessGrantsLocationResult AWS API Documentation + # + class UpdateAccessGrantsLocationResult < Struct.new( + :created_at, + :access_grants_location_id, + :access_grants_location_arn, + :location_scope, + :iam_role_arn) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] account_id # The Amazon Web Services account ID associated with the S3 Batch # Operations job. diff --git a/gems/aws-sdk-secretsmanager/CHANGELOG.md b/gems/aws-sdk-secretsmanager/CHANGELOG.md index 807aa498400..97cc52863ff 100644 --- a/gems/aws-sdk-secretsmanager/CHANGELOG.md +++ b/gems/aws-sdk-secretsmanager/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.86.0 (2023-11-27) +------------------ + +* Feature - AWS Secrets Manager has released the BatchGetSecretValue API, which allows customers to fetch up to 20 Secrets with a single request using a list of secret names or filters. + 1.85.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-secretsmanager/VERSION b/gems/aws-sdk-secretsmanager/VERSION index f288d11142d..b7844a6ffdc 100644 --- a/gems/aws-sdk-secretsmanager/VERSION +++ b/gems/aws-sdk-secretsmanager/VERSION @@ -1 +1 @@ -1.85.0 +1.86.0 diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager.rb index 15df61013a7..42ee5352849 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager.rb @@ -32,7 +32,7 @@ # structure. # # secrets_manager = Aws::SecretsManager::Client.new -# resp = secrets_manager.cancel_rotate_secret(params) +# resp = secrets_manager.batch_get_secret_value(params) # # See {Client} for more information. # @@ -52,6 +52,6 @@ # @!group service module Aws::SecretsManager - GEM_VERSION = '1.85.0' + GEM_VERSION = '1.86.0' end diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client.rb index b2973bb514c..de9e9e219f2 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client.rb @@ -398,6 +398,105 @@ def initialize(*args) # @!group API Operations + # Retrieves the contents of the encrypted fields `SecretString` or + # `SecretBinary` for up to 20 secrets. To retrieve a single secret, call + # GetSecretValue. + # + # To choose which secrets to retrieve, you can specify a list of secrets + # by name or ARN, or you can use filters. If Secrets Manager encounters + # errors such as `AccessDeniedException` while attempting to retrieve + # any of the secrets, you can see the errors in `Errors` in the + # response. + # + # Secrets Manager generates CloudTrail `GetSecretValue` log entries for + # each secret you request when you call this action. Do not include + # sensitive information in request parameters because it might be + # logged. For more information, see [Logging Secrets Manager events with + # CloudTrail][1]. + # + # Required permissions: `secretsmanager:BatchGetSecretValue`, + # and you must have `secretsmanager:GetSecretValue` for each secret. If + # you use filters, you must also have `secretsmanager:ListSecrets`. If + # the secrets are encrypted using customer-managed keys instead of the + # Amazon Web Services managed key `aws/secretsmanager`, then you also + # need `kms:Decrypt` permissions for the keys. For more information, see + # [ IAM policy actions for Secrets Manager][2] and [Authentication and + # access control in Secrets Manager][3]. + # + # + # + # [1]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html + # [2]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions + # [3]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html + # + # @option params [Array] :secret_id_list + # The ARN or names of the secrets to retrieve. You must include + # `Filters` or `SecretIdList`, but not both. + # + # @option params [Array] :filters + # The filters to choose which secrets to retrieve. You must include + # `Filters` or `SecretIdList`, but not both. + # + # @option params [Integer] :max_results + # The number of results to include in the response. + # + # If there are more results available, in the response, Secrets Manager + # includes `NextToken`. To get the next results, call + # `BatchGetSecretValue` again with the value from `NextToken`. + # + # @option params [String] :next_token + # A token that indicates where the output should continue from, if a + # previous call did not show all results. To get the next results, call + # `BatchGetSecretValue` again with this value. + # + # @return [Types::BatchGetSecretValueResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::BatchGetSecretValueResponse#secret_values #secret_values} => Array<Types::SecretValueEntry> + # * {Types::BatchGetSecretValueResponse#next_token #next_token} => String + # * {Types::BatchGetSecretValueResponse#errors #errors} => Array<Types::APIErrorType> + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.batch_get_secret_value({ + # secret_id_list: ["SecretIdType"], + # filters: [ + # { + # key: "description", # accepts description, name, tag-key, tag-value, primary-region, owning-service, all + # values: ["FilterValueStringType"], + # }, + # ], + # max_results: 1, + # next_token: "NextTokenType", + # }) + # + # @example Response structure + # + # resp.secret_values #=> Array + # resp.secret_values[0].arn #=> String + # resp.secret_values[0].name #=> String + # resp.secret_values[0].version_id #=> String + # resp.secret_values[0].secret_binary #=> String + # resp.secret_values[0].secret_string #=> String + # resp.secret_values[0].version_stages #=> Array + # resp.secret_values[0].version_stages[0] #=> String + # resp.secret_values[0].created_date #=> Time + # resp.next_token #=> String + # resp.errors #=> Array + # resp.errors[0].secret_id #=> String + # resp.errors[0].error_code #=> String + # resp.errors[0].message #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/BatchGetSecretValue AWS API Documentation + # + # @overload batch_get_secret_value(params = {}) + # @param [Hash] params ({}) + def batch_get_secret_value(params = {}, options = {}) + req = build_request(:batch_get_secret_value, params) + req.send_request(options) + end + # Turns off automatic rotation, and if a rotation is currently in # progress, cancels the rotation. # @@ -1294,6 +1393,9 @@ def get_resource_policy(params = {}, options = {}) # `SecretBinary` from the specified version of a secret, whichever # contains content. # + # To retrieve the values for a group of secrets, call + # BatchGetSecretValue. + # # We recommend that you cache your secret values by using client-side # caching. Caching secrets improves speed and reduces your costs. For # more information, see [Cache secrets for your applications][1]. @@ -1552,7 +1654,7 @@ def list_secret_version_ids(params = {}, options = {}) # # To list the versions of a secret, use ListSecretVersionIds. # - # To get the secret value from `SecretString` or `SecretBinary`, call + # To retrieve the values for the secrets, call BatchGetSecretValue or # GetSecretValue. # # For information about finding secrets in the console, see [Find @@ -3086,7 +3188,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-secretsmanager' - context[:gem_version] = '1.85.0' + context[:gem_version] = '1.86.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client_api.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client_api.rb index 3b29c01af14..a914173ecae 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client_api.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/client_api.rb @@ -13,8 +13,12 @@ module ClientApi include Seahorse::Model + APIErrorListType = Shapes::ListShape.new(name: 'APIErrorListType') + APIErrorType = Shapes::StructureShape.new(name: 'APIErrorType') AddReplicaRegionListType = Shapes::ListShape.new(name: 'AddReplicaRegionListType') AutomaticallyRotateAfterDaysType = Shapes::IntegerShape.new(name: 'AutomaticallyRotateAfterDaysType') + BatchGetSecretValueRequest = Shapes::StructureShape.new(name: 'BatchGetSecretValueRequest') + BatchGetSecretValueResponse = Shapes::StructureShape.new(name: 'BatchGetSecretValueResponse') BooleanType = Shapes::BooleanShape.new(name: 'BooleanType') CancelRotateSecretRequest = Shapes::StructureShape.new(name: 'CancelRotateSecretRequest') CancelRotateSecretResponse = Shapes::StructureShape.new(name: 'CancelRotateSecretResponse') @@ -34,6 +38,7 @@ module ClientApi DescriptionType = Shapes::StringShape.new(name: 'DescriptionType') DurationType = Shapes::StringShape.new(name: 'DurationType') EncryptionFailure = Shapes::StructureShape.new(name: 'EncryptionFailure') + ErrorCode = Shapes::StringShape.new(name: 'ErrorCode') ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage') ExcludeCharactersType = Shapes::StringShape.new(name: 'ExcludeCharactersType') ExcludeLowercaseType = Shapes::BooleanShape.new(name: 'ExcludeLowercaseType') @@ -67,6 +72,7 @@ module ClientApi ListSecretsRequest = Shapes::StructureShape.new(name: 'ListSecretsRequest') ListSecretsResponse = Shapes::StructureShape.new(name: 'ListSecretsResponse') MalformedPolicyDocumentException = Shapes::StructureShape.new(name: 'MalformedPolicyDocumentException') + MaxResultsBatchType = Shapes::IntegerShape.new(name: 'MaxResultsBatchType') MaxResultsType = Shapes::IntegerShape.new(name: 'MaxResultsType') NameType = Shapes::StringShape.new(name: 'NameType') NextRotationDateType = Shapes::TimestampShape.new(name: 'NextRotationDateType') @@ -104,11 +110,14 @@ module ClientApi ScheduleExpressionType = Shapes::StringShape.new(name: 'ScheduleExpressionType') SecretARNType = Shapes::StringShape.new(name: 'SecretARNType') SecretBinaryType = Shapes::BlobShape.new(name: 'SecretBinaryType') + SecretIdListType = Shapes::ListShape.new(name: 'SecretIdListType') SecretIdType = Shapes::StringShape.new(name: 'SecretIdType') SecretListEntry = Shapes::StructureShape.new(name: 'SecretListEntry') SecretListType = Shapes::ListShape.new(name: 'SecretListType') SecretNameType = Shapes::StringShape.new(name: 'SecretNameType') SecretStringType = Shapes::StringShape.new(name: 'SecretStringType') + SecretValueEntry = Shapes::StructureShape.new(name: 'SecretValueEntry') + SecretValuesType = Shapes::ListShape.new(name: 'SecretValuesType') SecretVersionIdType = Shapes::StringShape.new(name: 'SecretVersionIdType') SecretVersionStageType = Shapes::StringShape.new(name: 'SecretVersionStageType') SecretVersionStagesType = Shapes::ListShape.new(name: 'SecretVersionStagesType') @@ -137,8 +146,26 @@ module ClientApi ValidationErrorsEntry = Shapes::StructureShape.new(name: 'ValidationErrorsEntry') ValidationErrorsType = Shapes::ListShape.new(name: 'ValidationErrorsType') + APIErrorListType.member = Shapes::ShapeRef.new(shape: APIErrorType) + + APIErrorType.add_member(:secret_id, Shapes::ShapeRef.new(shape: SecretIdType, location_name: "SecretId")) + APIErrorType.add_member(:error_code, Shapes::ShapeRef.new(shape: ErrorCode, location_name: "ErrorCode")) + APIErrorType.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message")) + APIErrorType.struct_class = Types::APIErrorType + AddReplicaRegionListType.member = Shapes::ShapeRef.new(shape: ReplicaRegionType) + BatchGetSecretValueRequest.add_member(:secret_id_list, Shapes::ShapeRef.new(shape: SecretIdListType, location_name: "SecretIdList")) + BatchGetSecretValueRequest.add_member(:filters, Shapes::ShapeRef.new(shape: FiltersListType, location_name: "Filters")) + BatchGetSecretValueRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResultsBatchType, location_name: "MaxResults", metadata: {"box"=>true})) + BatchGetSecretValueRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextTokenType, location_name: "NextToken")) + BatchGetSecretValueRequest.struct_class = Types::BatchGetSecretValueRequest + + BatchGetSecretValueResponse.add_member(:secret_values, Shapes::ShapeRef.new(shape: SecretValuesType, location_name: "SecretValues")) + BatchGetSecretValueResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextTokenType, location_name: "NextToken")) + BatchGetSecretValueResponse.add_member(:errors, Shapes::ShapeRef.new(shape: APIErrorListType, location_name: "Errors")) + BatchGetSecretValueResponse.struct_class = Types::BatchGetSecretValueResponse + CancelRotateSecretRequest.add_member(:secret_id, Shapes::ShapeRef.new(shape: SecretIdType, required: true, location_name: "SecretId")) CancelRotateSecretRequest.struct_class = Types::CancelRotateSecretRequest @@ -386,6 +413,8 @@ module ClientApi RotationRulesType.add_member(:schedule_expression, Shapes::ShapeRef.new(shape: ScheduleExpressionType, location_name: "ScheduleExpression")) RotationRulesType.struct_class = Types::RotationRulesType + SecretIdListType.member = Shapes::ShapeRef.new(shape: SecretIdType) + SecretListEntry.add_member(:arn, Shapes::ShapeRef.new(shape: SecretARNType, location_name: "ARN")) SecretListEntry.add_member(:name, Shapes::ShapeRef.new(shape: SecretNameType, location_name: "Name")) SecretListEntry.add_member(:description, Shapes::ShapeRef.new(shape: DescriptionType, location_name: "Description")) @@ -407,6 +436,17 @@ module ClientApi SecretListType.member = Shapes::ShapeRef.new(shape: SecretListEntry) + SecretValueEntry.add_member(:arn, Shapes::ShapeRef.new(shape: SecretARNType, location_name: "ARN")) + SecretValueEntry.add_member(:name, Shapes::ShapeRef.new(shape: SecretNameType, location_name: "Name")) + SecretValueEntry.add_member(:version_id, Shapes::ShapeRef.new(shape: SecretVersionIdType, location_name: "VersionId")) + SecretValueEntry.add_member(:secret_binary, Shapes::ShapeRef.new(shape: SecretBinaryType, location_name: "SecretBinary")) + SecretValueEntry.add_member(:secret_string, Shapes::ShapeRef.new(shape: SecretStringType, location_name: "SecretString")) + SecretValueEntry.add_member(:version_stages, Shapes::ShapeRef.new(shape: SecretVersionStagesType, location_name: "VersionStages")) + SecretValueEntry.add_member(:created_date, Shapes::ShapeRef.new(shape: CreatedDateType, location_name: "CreatedDate", metadata: {"box"=>true})) + SecretValueEntry.struct_class = Types::SecretValueEntry + + SecretValuesType.member = Shapes::ShapeRef.new(shape: SecretValueEntry) + SecretVersionStagesType.member = Shapes::ShapeRef.new(shape: SecretVersionStageType) SecretVersionsListEntry.add_member(:version_id, Shapes::ShapeRef.new(shape: SecretVersionIdType, location_name: "VersionId")) @@ -499,6 +539,26 @@ module ClientApi "uid" => "secretsmanager-2017-10-17", } + api.add_operation(:batch_get_secret_value, Seahorse::Model::Operation.new.tap do |o| + o.name = "BatchGetSecretValue" + o.http_method = "POST" + o.http_request_uri = "/" + o.input = Shapes::ShapeRef.new(shape: BatchGetSecretValueRequest) + o.output = Shapes::ShapeRef.new(shape: BatchGetSecretValueResponse) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException) + o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException) + o.errors << Shapes::ShapeRef.new(shape: DecryptionFailure) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceError) + o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + api.add_operation(:cancel_rotate_secret, Seahorse::Model::Operation.new.tap do |o| o.name = "CancelRotateSecret" o.http_method = "POST" diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/endpoints.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/endpoints.rb index 2b18072d3bf..a11c2a94eca 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/endpoints.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/endpoints.rb @@ -12,6 +12,20 @@ module Aws::SecretsManager # @api private module Endpoints + class BatchGetSecretValue + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::SecretsManager::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class CancelRotateSecret def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/plugins/endpoints.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/plugins/endpoints.rb index e823ca39862..959154ed0c2 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/plugins/endpoints.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/plugins/endpoints.rb @@ -56,6 +56,8 @@ def apply_endpoint_headers(context, headers) def parameters_for_operation(context) case context.operation_name + when :batch_get_secret_value + Aws::SecretsManager::Endpoints::BatchGetSecretValue.build(context) when :cancel_rotate_secret Aws::SecretsManager::Endpoints::CancelRotateSecret.build(context) when :create_secret diff --git a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/types.rb b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/types.rb index cbe2bca23c3..aed6aea2a6c 100644 --- a/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/types.rb +++ b/gems/aws-sdk-secretsmanager/lib/aws-sdk-secretsmanager/types.rb @@ -10,6 +10,97 @@ module Aws::SecretsManager module Types + # The error Secrets Manager encountered while retrieving an individual + # secret as part of BatchGetSecretValue. + # + # @!attribute [rw] secret_id + # The ARN or name of the secret. + # @return [String] + # + # @!attribute [rw] error_code + # The error Secrets Manager encountered while retrieving an individual + # secret as part of BatchGetSecretValue, for example + # `ResourceNotFoundException`,`InvalidParameterException`, + # `InvalidRequestException`, `DecryptionFailure`, or + # `AccessDeniedException`. + # @return [String] + # + # @!attribute [rw] message + # A message describing the error. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/APIErrorType AWS API Documentation + # + class APIErrorType < Struct.new( + :secret_id, + :error_code, + :message) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] secret_id_list + # The ARN or names of the secrets to retrieve. You must include + # `Filters` or `SecretIdList`, but not both. + # @return [Array] + # + # @!attribute [rw] filters + # The filters to choose which secrets to retrieve. You must include + # `Filters` or `SecretIdList`, but not both. + # @return [Array] + # + # @!attribute [rw] max_results + # The number of results to include in the response. + # + # If there are more results available, in the response, Secrets + # Manager includes `NextToken`. To get the next results, call + # `BatchGetSecretValue` again with the value from `NextToken`. + # @return [Integer] + # + # @!attribute [rw] next_token + # A token that indicates where the output should continue from, if a + # previous call did not show all results. To get the next results, + # call `BatchGetSecretValue` again with this value. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/BatchGetSecretValueRequest AWS API Documentation + # + class BatchGetSecretValueRequest < Struct.new( + :secret_id_list, + :filters, + :max_results, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] secret_values + # A list of secret values. + # @return [Array] + # + # @!attribute [rw] next_token + # Secrets Manager includes this value if there's more output + # available than what is included in the current response. This can + # occur even when the response includes no values at all, such as when + # you ask for a filtered view of a long list. To get the next results, + # call `BatchGetSecretValue` again with this value. + # @return [String] + # + # @!attribute [rw] errors + # A list of errors Secrets Manager encountered while attempting to + # retrieve individual secrets. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/BatchGetSecretValueResponse AWS API Documentation + # + class BatchGetSecretValueResponse < Struct.new( + :secret_values, + :next_token, + :errors) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] secret_id # The ARN or name of the secret. # @@ -1715,10 +1806,7 @@ class RotationRulesType < Struct.new( # @return [String] # # @!attribute [rw] name - # The friendly name of the secret. You can use forward slashes in the - # name to represent a path hierarchy. For example, - # `/prod/databases/dbserver1` could represent the secret for a server - # named `dbserver1` in the folder `databases` in the folder `prod`. + # The friendly name of the secret. # @return [String] # # @!attribute [rw] description @@ -1843,6 +1931,59 @@ class SecretListEntry < Struct.new( include Aws::Structure end + # A structure that contains the secret value and other details for a + # secret. + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the secret. + # @return [String] + # + # @!attribute [rw] name + # The friendly name of the secret. + # @return [String] + # + # @!attribute [rw] version_id + # The unique version identifier of this version of the secret. + # @return [String] + # + # @!attribute [rw] secret_binary + # The decrypted secret value, if the secret value was originally + # provided as binary data in the form of a byte array. The parameter + # represents the binary data as a [base64-encoded][1] string. + # + # + # + # [1]: https://tools.ietf.org/html/rfc4648#section-4 + # @return [String] + # + # @!attribute [rw] secret_string + # The decrypted secret value, if the secret value was originally + # provided as a string or through the Secrets Manager console. + # @return [String] + # + # @!attribute [rw] version_stages + # A list of all of the staging labels currently attached to this + # version of the secret. + # @return [Array] + # + # @!attribute [rw] created_date + # The date the secret was created. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/SecretValueEntry AWS API Documentation + # + class SecretValueEntry < Struct.new( + :arn, + :name, + :version_id, + :secret_binary, + :secret_string, + :version_stages, + :created_date) + SENSITIVE = [:secret_binary, :secret_string] + include Aws::Structure + end + # A structure that contains information about one version of a secret. # # @!attribute [rw] version_id diff --git a/gems/aws-sdk-securityhub/CHANGELOG.md b/gems/aws-sdk-securityhub/CHANGELOG.md index ad338514d54..7fe6b0c500a 100644 --- a/gems/aws-sdk-securityhub/CHANGELOG.md +++ b/gems/aws-sdk-securityhub/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.96.0 (2023-11-27) +------------------ + +* Feature - Adds and updates APIs to support customizable security controls. This feature allows Security Hub customers to provide custom parameters for security controls. With this release, findings for controls that support custom parameters will include the parameters used to generate the findings. + 1.95.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-securityhub/VERSION b/gems/aws-sdk-securityhub/VERSION index 55f6ae93382..9141007a558 100644 --- a/gems/aws-sdk-securityhub/VERSION +++ b/gems/aws-sdk-securityhub/VERSION @@ -1 +1 @@ -1.95.0 +1.96.0 diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub.rb index f04f9fa07ab..f1fca2f214b 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub.rb @@ -52,6 +52,6 @@ # @!group service module Aws::SecurityHub - GEM_VERSION = '1.95.0' + GEM_VERSION = '1.96.0' end diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client.rb index 2d480d7420f..c6126c7367c 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client.rb @@ -845,10 +845,14 @@ def batch_enable_standards(params = {}, options = {}) # resp.rules[0].criteria.confidence[0].gte #=> Float # resp.rules[0].criteria.confidence[0].lte #=> Float # resp.rules[0].criteria.confidence[0].eq #=> Float + # resp.rules[0].criteria.confidence[0].gt #=> Float + # resp.rules[0].criteria.confidence[0].lt #=> Float # resp.rules[0].criteria.criticality #=> Array # resp.rules[0].criteria.criticality[0].gte #=> Float # resp.rules[0].criteria.criticality[0].lte #=> Float # resp.rules[0].criteria.criticality[0].eq #=> Float + # resp.rules[0].criteria.criticality[0].gt #=> Float + # resp.rules[0].criteria.criticality[0].lt #=> Float # resp.rules[0].criteria.title #=> Array # resp.rules[0].criteria.title[0].value #=> String # resp.rules[0].criteria.title[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -991,21 +995,41 @@ def batch_get_automation_rules(params = {}, options = {}) # security_controls: [ # { # description: "This AWS control checks whether ACM Certificates in your account are marked for expiration within a specified time period. Certificates provided by ACM are automatically renewed. ACM does not automatically renew certificates that you import.", + # last_update_reason: "Stayed with default value", + # parameters: { + # "daysToExpiration" => { + # value: { + # integer: 30, + # }, + # value_type: "DEFAULT", + # }, + # }, # remediation_url: "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation", # security_control_arn: "arn:aws:securityhub:us-west-2:123456789012:security-control/ACM.1", # security_control_id: "ACM.1", # security_control_status: "ENABLED", # severity_rating: "MEDIUM", # title: "Imported and ACM-issued certificates should be renewed after a specified time period", + # update_status: "UPDATING", # }, # { # description: "This control checks whether all stages of Amazon API Gateway REST and WebSocket APIs have logging enabled. The control fails if logging is not enabled for all methods of a stage or if loggingLevel is neither ERROR nor INFO.", + # last_update_reason: "Updated control parameters to comply with internal requirements", + # parameters: { + # "loggingLevel" => { + # value: { + # enum: "ERROR", + # }, + # value_type: "CUSTOM", + # }, + # }, # remediation_url: "https://docs.aws.amazon.com/console/securityhub/APIGateway.1/remediation", # security_control_arn: "arn:aws:securityhub:us-west-2:123456789012:security-control/APIGateway.1", # security_control_id: "APIGateway.1", # security_control_status: "ENABLED", # severity_rating: "MEDIUM", # title: "API Gateway REST and WebSocket API execution logging should be enabled", + # update_status: "UPDATING", # }, # ], # } @@ -1026,6 +1050,21 @@ def batch_get_automation_rules(params = {}, options = {}) # resp.security_controls[0].remediation_url #=> String # resp.security_controls[0].severity_rating #=> String, one of "LOW", "MEDIUM", "HIGH", "CRITICAL" # resp.security_controls[0].security_control_status #=> String, one of "ENABLED", "DISABLED" + # resp.security_controls[0].update_status #=> String, one of "READY", "UPDATING" + # resp.security_controls[0].parameters #=> Hash + # resp.security_controls[0].parameters["NonEmptyString"].value_type #=> String, one of "DEFAULT", "CUSTOM" + # resp.security_controls[0].parameters["NonEmptyString"].value.integer #=> Integer + # resp.security_controls[0].parameters["NonEmptyString"].value.integer_list #=> Array + # resp.security_controls[0].parameters["NonEmptyString"].value.integer_list[0] #=> Integer + # resp.security_controls[0].parameters["NonEmptyString"].value.double #=> Float + # resp.security_controls[0].parameters["NonEmptyString"].value.string #=> String + # resp.security_controls[0].parameters["NonEmptyString"].value.string_list #=> Array + # resp.security_controls[0].parameters["NonEmptyString"].value.string_list[0] #=> String + # resp.security_controls[0].parameters["NonEmptyString"].value.boolean #=> Boolean + # resp.security_controls[0].parameters["NonEmptyString"].value.enum #=> String + # resp.security_controls[0].parameters["NonEmptyString"].value.enum_list #=> Array + # resp.security_controls[0].parameters["NonEmptyString"].value.enum_list[0] #=> String + # resp.security_controls[0].last_update_reason #=> String # resp.unprocessed_ids #=> Array # resp.unprocessed_ids[0].security_control_id #=> String # resp.unprocessed_ids[0].error_code #=> String, one of "INVALID_INPUT", "ACCESS_DENIED", "NOT_FOUND", "LIMIT_EXCEEDED" @@ -1403,6 +1442,8 @@ def batch_import_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -1410,6 +1451,8 @@ def batch_import_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -2192,6 +2235,8 @@ def create_action_target(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -2199,6 +2244,8 @@ def create_action_target(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -2641,6 +2688,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_normalized: [ @@ -2648,6 +2697,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_label: [ @@ -2661,6 +2712,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -2668,6 +2721,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -2771,6 +2826,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_source_domain: [ @@ -2800,6 +2857,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_destination_domain: [ @@ -2825,6 +2884,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_parent_pid: [ @@ -2832,6 +2893,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_launched_at: [ @@ -3136,6 +3199,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_criticality: [ @@ -3143,6 +3208,8 @@ def create_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_related_findings_id: [ @@ -3192,6 +3259,30 @@ def create_finding_aggregator(params = {}, options = {}) # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS # }, # ], + # vulnerabilities_exploit_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # vulnerabilities_fix_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_name: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_value: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], # }, # group_by_attribute: "NonEmptyString", # required # }) @@ -5009,6 +5100,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_normalized: [ @@ -5016,6 +5109,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_label: [ @@ -5029,6 +5124,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -5036,6 +5133,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -5139,6 +5238,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_source_domain: [ @@ -5168,6 +5269,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_destination_domain: [ @@ -5193,6 +5296,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_parent_pid: [ @@ -5200,6 +5305,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_launched_at: [ @@ -5504,6 +5611,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_criticality: [ @@ -5511,6 +5620,8 @@ def get_finding_history(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_related_findings_id: [ @@ -5560,6 +5671,30 @@ def get_finding_history(params = {}, options = {}) # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS # }, # ], + # vulnerabilities_exploit_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # vulnerabilities_fix_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_name: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_value: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], # }, # sort_criteria: [ # { @@ -5756,10 +5891,14 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.severity_product[0].gte #=> Float # resp.insights[0].filters.severity_product[0].lte #=> Float # resp.insights[0].filters.severity_product[0].eq #=> Float + # resp.insights[0].filters.severity_product[0].gt #=> Float + # resp.insights[0].filters.severity_product[0].lt #=> Float # resp.insights[0].filters.severity_normalized #=> Array # resp.insights[0].filters.severity_normalized[0].gte #=> Float # resp.insights[0].filters.severity_normalized[0].lte #=> Float # resp.insights[0].filters.severity_normalized[0].eq #=> Float + # resp.insights[0].filters.severity_normalized[0].gt #=> Float + # resp.insights[0].filters.severity_normalized[0].lt #=> Float # resp.insights[0].filters.severity_label #=> Array # resp.insights[0].filters.severity_label[0].value #=> String # resp.insights[0].filters.severity_label[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -5767,10 +5906,14 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.confidence[0].gte #=> Float # resp.insights[0].filters.confidence[0].lte #=> Float # resp.insights[0].filters.confidence[0].eq #=> Float + # resp.insights[0].filters.confidence[0].gt #=> Float + # resp.insights[0].filters.confidence[0].lt #=> Float # resp.insights[0].filters.criticality #=> Array # resp.insights[0].filters.criticality[0].gte #=> Float # resp.insights[0].filters.criticality[0].lte #=> Float # resp.insights[0].filters.criticality[0].eq #=> Float + # resp.insights[0].filters.criticality[0].gt #=> Float + # resp.insights[0].filters.criticality[0].lt #=> Float # resp.insights[0].filters.title #=> Array # resp.insights[0].filters.title[0].value #=> String # resp.insights[0].filters.title[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -5823,6 +5966,8 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.network_source_port[0].gte #=> Float # resp.insights[0].filters.network_source_port[0].lte #=> Float # resp.insights[0].filters.network_source_port[0].eq #=> Float + # resp.insights[0].filters.network_source_port[0].gt #=> Float + # resp.insights[0].filters.network_source_port[0].lt #=> Float # resp.insights[0].filters.network_source_domain #=> Array # resp.insights[0].filters.network_source_domain[0].value #=> String # resp.insights[0].filters.network_source_domain[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -5837,6 +5982,8 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.network_destination_port[0].gte #=> Float # resp.insights[0].filters.network_destination_port[0].lte #=> Float # resp.insights[0].filters.network_destination_port[0].eq #=> Float + # resp.insights[0].filters.network_destination_port[0].gt #=> Float + # resp.insights[0].filters.network_destination_port[0].lt #=> Float # resp.insights[0].filters.network_destination_domain #=> Array # resp.insights[0].filters.network_destination_domain[0].value #=> String # resp.insights[0].filters.network_destination_domain[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -5850,10 +5997,14 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.process_pid[0].gte #=> Float # resp.insights[0].filters.process_pid[0].lte #=> Float # resp.insights[0].filters.process_pid[0].eq #=> Float + # resp.insights[0].filters.process_pid[0].gt #=> Float + # resp.insights[0].filters.process_pid[0].lt #=> Float # resp.insights[0].filters.process_parent_pid #=> Array # resp.insights[0].filters.process_parent_pid[0].gte #=> Float # resp.insights[0].filters.process_parent_pid[0].lte #=> Float # resp.insights[0].filters.process_parent_pid[0].eq #=> Float + # resp.insights[0].filters.process_parent_pid[0].gt #=> Float + # resp.insights[0].filters.process_parent_pid[0].lt #=> Float # resp.insights[0].filters.process_launched_at #=> Array # resp.insights[0].filters.process_launched_at[0].start #=> String # resp.insights[0].filters.process_launched_at[0].end #=> String @@ -6006,10 +6157,14 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.finding_provider_fields_confidence[0].gte #=> Float # resp.insights[0].filters.finding_provider_fields_confidence[0].lte #=> Float # resp.insights[0].filters.finding_provider_fields_confidence[0].eq #=> Float + # resp.insights[0].filters.finding_provider_fields_confidence[0].gt #=> Float + # resp.insights[0].filters.finding_provider_fields_confidence[0].lt #=> Float # resp.insights[0].filters.finding_provider_fields_criticality #=> Array # resp.insights[0].filters.finding_provider_fields_criticality[0].gte #=> Float # resp.insights[0].filters.finding_provider_fields_criticality[0].lte #=> Float # resp.insights[0].filters.finding_provider_fields_criticality[0].eq #=> Float + # resp.insights[0].filters.finding_provider_fields_criticality[0].gt #=> Float + # resp.insights[0].filters.finding_provider_fields_criticality[0].lt #=> Float # resp.insights[0].filters.finding_provider_fields_related_findings_id #=> Array # resp.insights[0].filters.finding_provider_fields_related_findings_id[0].value #=> String # resp.insights[0].filters.finding_provider_fields_related_findings_id[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" @@ -6033,6 +6188,18 @@ def get_insight_results(params = {}, options = {}) # resp.insights[0].filters.compliance_associated_standards_id #=> Array # resp.insights[0].filters.compliance_associated_standards_id[0].value #=> String # resp.insights[0].filters.compliance_associated_standards_id[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" + # resp.insights[0].filters.vulnerabilities_exploit_available #=> Array + # resp.insights[0].filters.vulnerabilities_exploit_available[0].value #=> String + # resp.insights[0].filters.vulnerabilities_exploit_available[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" + # resp.insights[0].filters.vulnerabilities_fix_available #=> Array + # resp.insights[0].filters.vulnerabilities_fix_available[0].value #=> String + # resp.insights[0].filters.vulnerabilities_fix_available[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" + # resp.insights[0].filters.compliance_security_control_parameters_name #=> Array + # resp.insights[0].filters.compliance_security_control_parameters_name[0].value #=> String + # resp.insights[0].filters.compliance_security_control_parameters_name[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" + # resp.insights[0].filters.compliance_security_control_parameters_value #=> Array + # resp.insights[0].filters.compliance_security_control_parameters_value[0].value #=> String + # resp.insights[0].filters.compliance_security_control_parameters_value[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" # resp.insights[0].group_by_attribute #=> String # resp.next_token #=> String # @@ -6201,6 +6368,107 @@ def get_members(params = {}, options = {}) req.send_request(options) end + # Retrieves the definition of a security control. The definition + # includes the control title, description, Region availability, + # parameter definitions, and other details. + # + # @option params [required, String] :security_control_id + # The ID of the security control to retrieve the definition for. This + # field doesn’t accept an Amazon Resource Name (ARN). + # + # @return [Types::GetSecurityControlDefinitionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetSecurityControlDefinitionResponse#security_control_definition #security_control_definition} => Types::SecurityControlDefinition + # + # + # @example Example: To get the definition of a security control. + # + # # The following example retrieves definition details for the specified security control. + # + # resp = client.get_security_control_definition({ + # security_control_id: "EC2.4", + # }) + # + # resp.to_h outputs the following: + # { + # security_control_definition: { + # current_region_availability: "AVAILABLE", + # description: "This control checks whether an Amazon EC2 instance has been stopped for longer than the allowed number of days. The control fails if an EC2 instance is stopped for longer than the maximum allowed time period. Unless you provide a custom parameter value for the maximum allowed time period, Security Hub uses a default value of 30 days.", + # parameter_definitions: { + # "AllowedDays" => { + # configuration_options: { + # integer: { + # default_value: 30, + # max: 365, + # min: 1, + # }, + # }, + # description: "Number of days the EC2 instance is allowed to be in a stopped state before generating a failed finding", + # }, + # }, + # remediation_url: "https://docs.aws.amazon.com/console/securityhub/EC2.4/remediation", + # security_control_id: "EC2.4", + # severity_rating: "MEDIUM", + # title: "Stopped Amazon EC2 instances should be removed after a specified time period", + # }, + # } + # + # @example Request syntax with placeholder values + # + # resp = client.get_security_control_definition({ + # security_control_id: "NonEmptyString", # required + # }) + # + # @example Response structure + # + # resp.security_control_definition.security_control_id #=> String + # resp.security_control_definition.title #=> String + # resp.security_control_definition.description #=> String + # resp.security_control_definition.remediation_url #=> String + # resp.security_control_definition.severity_rating #=> String, one of "LOW", "MEDIUM", "HIGH", "CRITICAL" + # resp.security_control_definition.current_region_availability #=> String, one of "AVAILABLE", "UNAVAILABLE" + # resp.security_control_definition.customizable_properties #=> Array + # resp.security_control_definition.customizable_properties[0] #=> String, one of "Parameters" + # resp.security_control_definition.parameter_definitions #=> Hash + # resp.security_control_definition.parameter_definitions["NonEmptyString"].description #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer.default_value #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer.min #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer.max #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer_list.default_value #=> Array + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer_list.default_value[0] #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer_list.min #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer_list.max #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.integer_list.max_items #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.double.default_value #=> Float + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.double.min #=> Float + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.double.max #=> Float + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string.default_value #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string.re_2_expression #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string.expression_description #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string_list.default_value #=> Array + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string_list.default_value[0] #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string_list.re_2_expression #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string_list.max_items #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.string_list.expression_description #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.boolean.default_value #=> Boolean + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum.default_value #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum.allowed_values #=> Array + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum.allowed_values[0] #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum_list.default_value #=> Array + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum_list.default_value[0] #=> String + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum_list.max_items #=> Integer + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum_list.allowed_values #=> Array + # resp.security_control_definition.parameter_definitions["NonEmptyString"].configuration_options.enum_list.allowed_values[0] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSecurityControlDefinition AWS API Documentation + # + # @overload get_security_control_definition(params = {}) + # @param [Hash] params ({}) + def get_security_control_definition(params = {}, options = {}) + req = build_request(:get_security_control_definition, params) + req.send_request(options) + end + # Invites other Amazon Web Services accounts to become member accounts # for the Security Hub administrator account that the invitation is sent # from. @@ -6742,6 +7010,9 @@ def list_organization_admin_accounts(params = {}, options = {}) # security_control_definitions: [ # { # current_region_availability: "AVAILABLE", + # customizable_properties: [ + # "Parameters", + # ], # description: "This AWS control checks whether ACM Certificates in your account are marked for expiration within a specified time period. Certificates provided by ACM are automatically renewed. ACM does not automatically renew certificates that you import.", # remediation_url: "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation", # security_control_id: "ACM.1", @@ -6750,6 +7021,9 @@ def list_organization_admin_accounts(params = {}, options = {}) # }, # { # current_region_availability: "AVAILABLE", + # customizable_properties: [ + # "Parameters", + # ], # description: "This control checks whether all stages of Amazon API Gateway REST and WebSocket APIs have logging enabled. The control fails if logging is not enabled for all methods of a stage or if loggingLevel is neither ERROR nor INFO.", # remediation_url: "https://docs.aws.amazon.com/console/securityhub/APIGateway.1/remediation", # security_control_id: "APIGateway.1", @@ -6784,6 +7058,38 @@ def list_organization_admin_accounts(params = {}, options = {}) # resp.security_control_definitions[0].remediation_url #=> String # resp.security_control_definitions[0].severity_rating #=> String, one of "LOW", "MEDIUM", "HIGH", "CRITICAL" # resp.security_control_definitions[0].current_region_availability #=> String, one of "AVAILABLE", "UNAVAILABLE" + # resp.security_control_definitions[0].customizable_properties #=> Array + # resp.security_control_definitions[0].customizable_properties[0] #=> String, one of "Parameters" + # resp.security_control_definitions[0].parameter_definitions #=> Hash + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].description #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer.default_value #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer.min #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer.max #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer_list.default_value #=> Array + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer_list.default_value[0] #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer_list.min #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer_list.max #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.integer_list.max_items #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.double.default_value #=> Float + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.double.min #=> Float + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.double.max #=> Float + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string.default_value #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string.re_2_expression #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string.expression_description #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string_list.default_value #=> Array + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string_list.default_value[0] #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string_list.re_2_expression #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string_list.max_items #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.string_list.expression_description #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.boolean.default_value #=> Boolean + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum.default_value #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum.allowed_values #=> Array + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum.allowed_values[0] #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum_list.default_value #=> Array + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum_list.default_value[0] #=> String + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum_list.max_items #=> Integer + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum_list.allowed_values #=> Array + # resp.security_control_definitions[0].parameter_definitions["NonEmptyString"].configuration_options.enum_list.allowed_values[0] #=> String # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListSecurityControlDefinitions AWS API Documentation @@ -7279,6 +7585,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_normalized: [ @@ -7286,6 +7594,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_label: [ @@ -7299,6 +7609,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -7306,6 +7618,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -7409,6 +7723,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_source_domain: [ @@ -7438,6 +7754,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_destination_domain: [ @@ -7463,6 +7781,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_parent_pid: [ @@ -7470,6 +7790,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_launched_at: [ @@ -7774,6 +8096,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_criticality: [ @@ -7781,6 +8105,8 @@ def update_finding_aggregator(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_related_findings_id: [ @@ -7830,6 +8156,30 @@ def update_finding_aggregator(params = {}, options = {}) # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS # }, # ], + # vulnerabilities_exploit_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # vulnerabilities_fix_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_name: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_value: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], # }, # note: { # text: "NonEmptyString", # required @@ -7975,6 +8325,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_normalized: [ @@ -7982,6 +8334,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # severity_label: [ @@ -7995,6 +8349,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # criticality: [ @@ -8002,6 +8358,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # title: [ @@ -8105,6 +8463,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_source_domain: [ @@ -8134,6 +8494,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # network_destination_domain: [ @@ -8159,6 +8521,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_parent_pid: [ @@ -8166,6 +8530,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # process_launched_at: [ @@ -8470,6 +8836,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_criticality: [ @@ -8477,6 +8845,8 @@ def update_findings(params = {}, options = {}) # gte: 1.0, # lte: 1.0, # eq: 1.0, + # gt: 1.0, + # lt: 1.0, # }, # ], # finding_provider_fields_related_findings_id: [ @@ -8526,6 +8896,30 @@ def update_findings(params = {}, options = {}) # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS # }, # ], + # vulnerabilities_exploit_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # vulnerabilities_fix_available: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_name: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], + # compliance_security_control_parameters_value: [ + # { + # value: "NonEmptyString", + # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS + # }, + # ], # }, # group_by_attribute: "NonEmptyString", # }) @@ -8595,6 +8989,74 @@ def update_organization_configuration(params = {}, options = {}) req.send_request(options) end + # Updates the properties of a security control. + # + # @option params [required, String] :security_control_id + # The Amazon Resource Name (ARN) or ID of the control to update. + # + # @option params [required, Hash] :parameters + # An object that specifies which security control parameters to update. + # + # @option params [String] :last_update_reason + # The most recent reason for updating the properties of the security + # control. This field accepts alphanumeric characters in addition to + # white spaces, dashes, and underscores. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # + # @example Example: To update security control properties + # + # # The following example updates the specified security control. Specifically, this example updates control parameters. + # + # resp = client.update_security_control({ + # last_update_reason: "Comply with internal requirements", + # parameters: { + # "maxCredentialUsageAge" => { + # value: { + # integer: 15, + # }, + # value_type: "CUSTOM", + # }, + # }, + # security_control_id: "ACM.1", + # }) + # + # resp.to_h outputs the following: + # { + # } + # + # @example Request syntax with placeholder values + # + # resp = client.update_security_control({ + # security_control_id: "NonEmptyString", # required + # parameters: { # required + # "NonEmptyString" => { + # value_type: "DEFAULT", # required, accepts DEFAULT, CUSTOM + # value: { + # integer: 1, + # integer_list: [1], + # double: 1.0, + # string: "NonEmptyString", + # string_list: ["NonEmptyString"], + # boolean: false, + # enum: "NonEmptyString", + # enum_list: ["NonEmptyString"], + # }, + # }, + # }, + # last_update_reason: "AlphaNumericNonEmptyString", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityControl AWS API Documentation + # + # @overload update_security_control(params = {}) + # @param [Hash] params ({}) + def update_security_control(params = {}, options = {}) + req = build_request(:update_security_control, params) + req.send_request(options) + end + # Updates configuration options for Security Hub. # # @option params [Boolean] :auto_enable_controls @@ -8703,7 +9165,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-securityhub' - context[:gem_version] = '1.95.0' + context[:gem_version] = '1.96.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client_api.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client_api.rb index 2dca4cbe089..18053cc7dd7 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client_api.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/client_api.rb @@ -36,6 +36,7 @@ module ClientApi AdminAccounts = Shapes::ListShape.new(name: 'AdminAccounts') AdminStatus = Shapes::StringShape.new(name: 'AdminStatus') AdminsMaxResults = Shapes::IntegerShape.new(name: 'AdminsMaxResults') + AlphaNumericNonEmptyString = Shapes::StringShape.new(name: 'AlphaNumericNonEmptyString') ArnList = Shapes::ListShape.new(name: 'ArnList') AssociatedStandard = Shapes::StructureShape.new(name: 'AssociatedStandard') AssociatedStandardsList = Shapes::ListShape.new(name: 'AssociatedStandardsList') @@ -716,6 +717,7 @@ module ClientApi BatchUpdateStandardsControlAssociationsRequest = Shapes::StructureShape.new(name: 'BatchUpdateStandardsControlAssociationsRequest') BatchUpdateStandardsControlAssociationsResponse = Shapes::StructureShape.new(name: 'BatchUpdateStandardsControlAssociationsResponse') Boolean = Shapes::BooleanShape.new(name: 'Boolean') + BooleanConfigurationOptions = Shapes::StructureShape.new(name: 'BooleanConfigurationOptions') BooleanFilter = Shapes::StructureShape.new(name: 'BooleanFilter') BooleanFilterList = Shapes::ListShape.new(name: 'BooleanFilterList') CategoryList = Shapes::ListShape.new(name: 'CategoryList') @@ -730,6 +732,7 @@ module ClientApi CodeVulnerabilitiesFilePath = Shapes::StructureShape.new(name: 'CodeVulnerabilitiesFilePath') Compliance = Shapes::StructureShape.new(name: 'Compliance') ComplianceStatus = Shapes::StringShape.new(name: 'ComplianceStatus') + ConfigurationOptions = Shapes::UnionShape.new(name: 'ConfigurationOptions') ContainerDetails = Shapes::StructureShape.new(name: 'ContainerDetails') ControlFindingGenerator = Shapes::StringShape.new(name: 'ControlFindingGenerator') ControlStatus = Shapes::StringShape.new(name: 'ControlStatus') @@ -748,6 +751,7 @@ module ClientApi CustomDataIdentifiersDetections = Shapes::StructureShape.new(name: 'CustomDataIdentifiersDetections') CustomDataIdentifiersDetectionsList = Shapes::ListShape.new(name: 'CustomDataIdentifiersDetectionsList') CustomDataIdentifiersResult = Shapes::StructureShape.new(name: 'CustomDataIdentifiersResult') + CustomizableProperties = Shapes::ListShape.new(name: 'CustomizableProperties') Cvss = Shapes::StructureShape.new(name: 'Cvss') CvssList = Shapes::ListShape.new(name: 'CvssList') DataClassificationDetails = Shapes::StructureShape.new(name: 'DataClassificationDetails') @@ -793,12 +797,15 @@ module ClientApi DisassociateMembersResponse = Shapes::StructureShape.new(name: 'DisassociateMembersResponse') DnsRequestAction = Shapes::StructureShape.new(name: 'DnsRequestAction') Double = Shapes::FloatShape.new(name: 'Double') + DoubleConfigurationOptions = Shapes::StructureShape.new(name: 'DoubleConfigurationOptions') EnableImportFindingsForProductRequest = Shapes::StructureShape.new(name: 'EnableImportFindingsForProductRequest') EnableImportFindingsForProductResponse = Shapes::StructureShape.new(name: 'EnableImportFindingsForProductResponse') EnableOrganizationAdminAccountRequest = Shapes::StructureShape.new(name: 'EnableOrganizationAdminAccountRequest') EnableOrganizationAdminAccountResponse = Shapes::StructureShape.new(name: 'EnableOrganizationAdminAccountResponse') EnableSecurityHubRequest = Shapes::StructureShape.new(name: 'EnableSecurityHubRequest') EnableSecurityHubResponse = Shapes::StructureShape.new(name: 'EnableSecurityHubResponse') + EnumConfigurationOptions = Shapes::StructureShape.new(name: 'EnumConfigurationOptions') + EnumListConfigurationOptions = Shapes::StructureShape.new(name: 'EnumListConfigurationOptions') FieldMap = Shapes::MapShape.new(name: 'FieldMap') FilePathList = Shapes::ListShape.new(name: 'FilePathList') FilePaths = Shapes::StructureShape.new(name: 'FilePaths') @@ -841,6 +848,8 @@ module ClientApi GetMasterAccountResponse = Shapes::StructureShape.new(name: 'GetMasterAccountResponse') GetMembersRequest = Shapes::StructureShape.new(name: 'GetMembersRequest') GetMembersResponse = Shapes::StructureShape.new(name: 'GetMembersResponse') + GetSecurityControlDefinitionRequest = Shapes::StructureShape.new(name: 'GetSecurityControlDefinitionRequest') + GetSecurityControlDefinitionResponse = Shapes::StructureShape.new(name: 'GetSecurityControlDefinitionResponse') IcmpTypeCode = Shapes::StructureShape.new(name: 'IcmpTypeCode') ImportFindingsError = Shapes::StructureShape.new(name: 'ImportFindingsError') ImportFindingsErrorList = Shapes::ListShape.new(name: 'ImportFindingsErrorList') @@ -850,7 +859,9 @@ module ClientApi InsightResultValueList = Shapes::ListShape.new(name: 'InsightResultValueList') InsightResults = Shapes::StructureShape.new(name: 'InsightResults') Integer = Shapes::IntegerShape.new(name: 'Integer') + IntegerConfigurationOptions = Shapes::StructureShape.new(name: 'IntegerConfigurationOptions') IntegerList = Shapes::ListShape.new(name: 'IntegerList') + IntegerListConfigurationOptions = Shapes::StructureShape.new(name: 'IntegerListConfigurationOptions') IntegrationType = Shapes::StringShape.new(name: 'IntegrationType') IntegrationTypeList = Shapes::ListShape.new(name: 'IntegrationTypeList') InternalException = Shapes::StructureShape.new(name: 'InternalException') @@ -915,6 +926,12 @@ module ClientApi Occurrences = Shapes::StructureShape.new(name: 'Occurrences') Page = Shapes::StructureShape.new(name: 'Page') Pages = Shapes::ListShape.new(name: 'Pages') + ParameterConfiguration = Shapes::StructureShape.new(name: 'ParameterConfiguration') + ParameterDefinition = Shapes::StructureShape.new(name: 'ParameterDefinition') + ParameterDefinitions = Shapes::MapShape.new(name: 'ParameterDefinitions') + ParameterValue = Shapes::UnionShape.new(name: 'ParameterValue') + ParameterValueType = Shapes::StringShape.new(name: 'ParameterValueType') + Parameters = Shapes::MapShape.new(name: 'Parameters') Partition = Shapes::StringShape.new(name: 'Partition') PatchSummary = Shapes::StructureShape.new(name: 'PatchSummary') PortProbeAction = Shapes::StructureShape.new(name: 'PortProbeAction') @@ -945,6 +962,7 @@ module ClientApi ResourceArn = Shapes::StringShape.new(name: 'ResourceArn') ResourceConflictException = Shapes::StructureShape.new(name: 'ResourceConflictException') ResourceDetails = Shapes::StructureShape.new(name: 'ResourceDetails') + ResourceInUseException = Shapes::StructureShape.new(name: 'ResourceInUseException') ResourceList = Shapes::ListShape.new(name: 'ResourceList') ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') Result = Shapes::StructureShape.new(name: 'Result') @@ -986,6 +1004,9 @@ module ClientApi SecurityControl = Shapes::StructureShape.new(name: 'SecurityControl') SecurityControlDefinition = Shapes::StructureShape.new(name: 'SecurityControlDefinition') SecurityControlDefinitions = Shapes::ListShape.new(name: 'SecurityControlDefinitions') + SecurityControlParameter = Shapes::StructureShape.new(name: 'SecurityControlParameter') + SecurityControlParametersList = Shapes::ListShape.new(name: 'SecurityControlParametersList') + SecurityControlProperty = Shapes::StringShape.new(name: 'SecurityControlProperty') SecurityControls = Shapes::ListShape.new(name: 'SecurityControls') SecurityGroups = Shapes::ListShape.new(name: 'SecurityGroups') SensitiveDataDetections = Shapes::StructureShape.new(name: 'SensitiveDataDetections') @@ -1031,10 +1052,12 @@ module ClientApi StatusReason = Shapes::StructureShape.new(name: 'StatusReason') StatusReasonCode = Shapes::StringShape.new(name: 'StatusReasonCode') StatusReasonsList = Shapes::ListShape.new(name: 'StatusReasonsList') + StringConfigurationOptions = Shapes::StructureShape.new(name: 'StringConfigurationOptions') StringFilter = Shapes::StructureShape.new(name: 'StringFilter') StringFilterComparison = Shapes::StringShape.new(name: 'StringFilterComparison') StringFilterList = Shapes::ListShape.new(name: 'StringFilterList') StringList = Shapes::ListShape.new(name: 'StringList') + StringListConfigurationOptions = Shapes::StructureShape.new(name: 'StringListConfigurationOptions') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') TagMap = Shapes::MapShape.new(name: 'TagMap') @@ -1072,10 +1095,13 @@ module ClientApi UpdateInsightResponse = Shapes::StructureShape.new(name: 'UpdateInsightResponse') UpdateOrganizationConfigurationRequest = Shapes::StructureShape.new(name: 'UpdateOrganizationConfigurationRequest') UpdateOrganizationConfigurationResponse = Shapes::StructureShape.new(name: 'UpdateOrganizationConfigurationResponse') + UpdateSecurityControlRequest = Shapes::StructureShape.new(name: 'UpdateSecurityControlRequest') + UpdateSecurityControlResponse = Shapes::StructureShape.new(name: 'UpdateSecurityControlResponse') UpdateSecurityHubConfigurationRequest = Shapes::StructureShape.new(name: 'UpdateSecurityHubConfigurationRequest') UpdateSecurityHubConfigurationResponse = Shapes::StructureShape.new(name: 'UpdateSecurityHubConfigurationResponse') UpdateStandardsControlRequest = Shapes::StructureShape.new(name: 'UpdateStandardsControlRequest') UpdateStandardsControlResponse = Shapes::StructureShape.new(name: 'UpdateStandardsControlResponse') + UpdateStatus = Shapes::StringShape.new(name: 'UpdateStatus') VerificationState = Shapes::StringShape.new(name: 'VerificationState') VolumeMount = Shapes::StructureShape.new(name: 'VolumeMount') VolumeMountList = Shapes::ListShape.new(name: 'VolumeMountList') @@ -4614,6 +4640,10 @@ module ClientApi AwsSecurityFindingFilters.add_member(:sample, Shapes::ShapeRef.new(shape: BooleanFilterList, location_name: "Sample")) AwsSecurityFindingFilters.add_member(:compliance_security_control_id, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ComplianceSecurityControlId")) AwsSecurityFindingFilters.add_member(:compliance_associated_standards_id, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ComplianceAssociatedStandardsId")) + AwsSecurityFindingFilters.add_member(:vulnerabilities_exploit_available, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "VulnerabilitiesExploitAvailable")) + AwsSecurityFindingFilters.add_member(:vulnerabilities_fix_available, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "VulnerabilitiesFixAvailable")) + AwsSecurityFindingFilters.add_member(:compliance_security_control_parameters_name, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ComplianceSecurityControlParametersName")) + AwsSecurityFindingFilters.add_member(:compliance_security_control_parameters_value, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ComplianceSecurityControlParametersValue")) AwsSecurityFindingFilters.struct_class = Types::AwsSecurityFindingFilters AwsSecurityFindingIdentifier.add_member(:id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Id")) @@ -4998,6 +5028,9 @@ module ClientApi BatchUpdateStandardsControlAssociationsResponse.add_member(:unprocessed_association_updates, Shapes::ShapeRef.new(shape: UnprocessedStandardsControlAssociationUpdates, location_name: "UnprocessedAssociationUpdates")) BatchUpdateStandardsControlAssociationsResponse.struct_class = Types::BatchUpdateStandardsControlAssociationsResponse + BooleanConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: Boolean, location_name: "DefaultValue")) + BooleanConfigurationOptions.struct_class = Types::BooleanConfigurationOptions + BooleanFilter.add_member(:value, Shapes::ShapeRef.new(shape: Boolean, location_name: "Value")) BooleanFilter.struct_class = Types::BooleanFilter @@ -5051,8 +5084,29 @@ module ClientApi Compliance.add_member(:status_reasons, Shapes::ShapeRef.new(shape: StatusReasonsList, location_name: "StatusReasons")) Compliance.add_member(:security_control_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SecurityControlId")) Compliance.add_member(:associated_standards, Shapes::ShapeRef.new(shape: AssociatedStandardsList, location_name: "AssociatedStandards")) + Compliance.add_member(:security_control_parameters, Shapes::ShapeRef.new(shape: SecurityControlParametersList, location_name: "SecurityControlParameters")) Compliance.struct_class = Types::Compliance + ConfigurationOptions.add_member(:integer, Shapes::ShapeRef.new(shape: IntegerConfigurationOptions, location_name: "Integer")) + ConfigurationOptions.add_member(:integer_list, Shapes::ShapeRef.new(shape: IntegerListConfigurationOptions, location_name: "IntegerList")) + ConfigurationOptions.add_member(:double, Shapes::ShapeRef.new(shape: DoubleConfigurationOptions, location_name: "Double")) + ConfigurationOptions.add_member(:string, Shapes::ShapeRef.new(shape: StringConfigurationOptions, location_name: "String")) + ConfigurationOptions.add_member(:string_list, Shapes::ShapeRef.new(shape: StringListConfigurationOptions, location_name: "StringList")) + ConfigurationOptions.add_member(:boolean, Shapes::ShapeRef.new(shape: BooleanConfigurationOptions, location_name: "Boolean")) + ConfigurationOptions.add_member(:enum, Shapes::ShapeRef.new(shape: EnumConfigurationOptions, location_name: "Enum")) + ConfigurationOptions.add_member(:enum_list, Shapes::ShapeRef.new(shape: EnumListConfigurationOptions, location_name: "EnumList")) + ConfigurationOptions.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + ConfigurationOptions.add_member_subclass(:integer, Types::ConfigurationOptions::Integer) + ConfigurationOptions.add_member_subclass(:integer_list, Types::ConfigurationOptions::IntegerList) + ConfigurationOptions.add_member_subclass(:double, Types::ConfigurationOptions::Double) + ConfigurationOptions.add_member_subclass(:string, Types::ConfigurationOptions::String) + ConfigurationOptions.add_member_subclass(:string_list, Types::ConfigurationOptions::StringList) + ConfigurationOptions.add_member_subclass(:boolean, Types::ConfigurationOptions::Boolean) + ConfigurationOptions.add_member_subclass(:enum, Types::ConfigurationOptions::Enum) + ConfigurationOptions.add_member_subclass(:enum_list, Types::ConfigurationOptions::EnumList) + ConfigurationOptions.add_member_subclass(:unknown, Types::ConfigurationOptions::Unknown) + ConfigurationOptions.struct_class = Types::ConfigurationOptions + ContainerDetails.add_member(:container_runtime, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ContainerRuntime")) ContainerDetails.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Name")) ContainerDetails.add_member(:image_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ImageId")) @@ -5123,6 +5177,8 @@ module ClientApi CustomDataIdentifiersResult.add_member(:total_count, Shapes::ShapeRef.new(shape: Long, location_name: "TotalCount")) CustomDataIdentifiersResult.struct_class = Types::CustomDataIdentifiersResult + CustomizableProperties.member = Shapes::ShapeRef.new(shape: SecurityControlProperty) + Cvss.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Version")) Cvss.add_member(:base_score, Shapes::ShapeRef.new(shape: Double, location_name: "BaseScore")) Cvss.add_member(:base_vector, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BaseVector")) @@ -5265,6 +5321,11 @@ module ClientApi DnsRequestAction.add_member(:blocked, Shapes::ShapeRef.new(shape: Boolean, location_name: "Blocked")) DnsRequestAction.struct_class = Types::DnsRequestAction + DoubleConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: Double, location_name: "DefaultValue")) + DoubleConfigurationOptions.add_member(:min, Shapes::ShapeRef.new(shape: Double, location_name: "Min")) + DoubleConfigurationOptions.add_member(:max, Shapes::ShapeRef.new(shape: Double, location_name: "Max")) + DoubleConfigurationOptions.struct_class = Types::DoubleConfigurationOptions + EnableImportFindingsForProductRequest.add_member(:product_arn, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ProductArn")) EnableImportFindingsForProductRequest.struct_class = Types::EnableImportFindingsForProductRequest @@ -5283,6 +5344,15 @@ module ClientApi EnableSecurityHubResponse.struct_class = Types::EnableSecurityHubResponse + EnumConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DefaultValue")) + EnumConfigurationOptions.add_member(:allowed_values, Shapes::ShapeRef.new(shape: StringList, location_name: "AllowedValues")) + EnumConfigurationOptions.struct_class = Types::EnumConfigurationOptions + + EnumListConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: StringList, location_name: "DefaultValue")) + EnumListConfigurationOptions.add_member(:max_items, Shapes::ShapeRef.new(shape: Integer, location_name: "MaxItems")) + EnumListConfigurationOptions.add_member(:allowed_values, Shapes::ShapeRef.new(shape: StringList, location_name: "AllowedValues")) + EnumListConfigurationOptions.struct_class = Types::EnumListConfigurationOptions + FieldMap.key = Shapes::ShapeRef.new(shape: NonEmptyString) FieldMap.value = Shapes::ShapeRef.new(shape: NonEmptyString) @@ -5440,6 +5510,12 @@ module ClientApi GetMembersResponse.add_member(:unprocessed_accounts, Shapes::ShapeRef.new(shape: ResultList, location_name: "UnprocessedAccounts")) GetMembersResponse.struct_class = Types::GetMembersResponse + GetSecurityControlDefinitionRequest.add_member(:security_control_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location: "querystring", location_name: "SecurityControlId")) + GetSecurityControlDefinitionRequest.struct_class = Types::GetSecurityControlDefinitionRequest + + GetSecurityControlDefinitionResponse.add_member(:security_control_definition, Shapes::ShapeRef.new(shape: SecurityControlDefinition, required: true, location_name: "SecurityControlDefinition")) + GetSecurityControlDefinitionResponse.struct_class = Types::GetSecurityControlDefinitionResponse + IcmpTypeCode.add_member(:code, Shapes::ShapeRef.new(shape: Integer, location_name: "Code")) IcmpTypeCode.add_member(:type, Shapes::ShapeRef.new(shape: Integer, location_name: "Type")) IcmpTypeCode.struct_class = Types::IcmpTypeCode @@ -5470,8 +5546,19 @@ module ClientApi InsightResults.add_member(:result_values, Shapes::ShapeRef.new(shape: InsightResultValueList, required: true, location_name: "ResultValues")) InsightResults.struct_class = Types::InsightResults + IntegerConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: Integer, location_name: "DefaultValue")) + IntegerConfigurationOptions.add_member(:min, Shapes::ShapeRef.new(shape: Integer, location_name: "Min")) + IntegerConfigurationOptions.add_member(:max, Shapes::ShapeRef.new(shape: Integer, location_name: "Max")) + IntegerConfigurationOptions.struct_class = Types::IntegerConfigurationOptions + IntegerList.member = Shapes::ShapeRef.new(shape: Integer) + IntegerListConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: IntegerList, location_name: "DefaultValue")) + IntegerListConfigurationOptions.add_member(:min, Shapes::ShapeRef.new(shape: Integer, location_name: "Min")) + IntegerListConfigurationOptions.add_member(:max, Shapes::ShapeRef.new(shape: Integer, location_name: "Max")) + IntegerListConfigurationOptions.add_member(:max_items, Shapes::ShapeRef.new(shape: Integer, location_name: "MaxItems")) + IntegerListConfigurationOptions.struct_class = Types::IntegerListConfigurationOptions + IntegrationTypeList.member = Shapes::ShapeRef.new(shape: IntegrationType) InternalException.add_member(:message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Message")) @@ -5683,6 +5770,8 @@ module ClientApi NumberFilter.add_member(:gte, Shapes::ShapeRef.new(shape: Double, location_name: "Gte")) NumberFilter.add_member(:lte, Shapes::ShapeRef.new(shape: Double, location_name: "Lte")) NumberFilter.add_member(:eq, Shapes::ShapeRef.new(shape: Double, location_name: "Eq")) + NumberFilter.add_member(:gt, Shapes::ShapeRef.new(shape: Double, location_name: "Gt")) + NumberFilter.add_member(:lt, Shapes::ShapeRef.new(shape: Double, location_name: "Lt")) NumberFilter.struct_class = Types::NumberFilter NumberFilterList.member = Shapes::ShapeRef.new(shape: NumberFilter) @@ -5701,6 +5790,40 @@ module ClientApi Pages.member = Shapes::ShapeRef.new(shape: Page) + ParameterConfiguration.add_member(:value_type, Shapes::ShapeRef.new(shape: ParameterValueType, required: true, location_name: "ValueType")) + ParameterConfiguration.add_member(:value, Shapes::ShapeRef.new(shape: ParameterValue, location_name: "Value")) + ParameterConfiguration.struct_class = Types::ParameterConfiguration + + ParameterDefinition.add_member(:description, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Description")) + ParameterDefinition.add_member(:configuration_options, Shapes::ShapeRef.new(shape: ConfigurationOptions, required: true, location_name: "ConfigurationOptions")) + ParameterDefinition.struct_class = Types::ParameterDefinition + + ParameterDefinitions.key = Shapes::ShapeRef.new(shape: NonEmptyString) + ParameterDefinitions.value = Shapes::ShapeRef.new(shape: ParameterDefinition) + + ParameterValue.add_member(:integer, Shapes::ShapeRef.new(shape: Integer, location_name: "Integer")) + ParameterValue.add_member(:integer_list, Shapes::ShapeRef.new(shape: IntegerList, location_name: "IntegerList")) + ParameterValue.add_member(:double, Shapes::ShapeRef.new(shape: Double, location_name: "Double")) + ParameterValue.add_member(:string, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "String")) + ParameterValue.add_member(:string_list, Shapes::ShapeRef.new(shape: StringList, location_name: "StringList")) + ParameterValue.add_member(:boolean, Shapes::ShapeRef.new(shape: Boolean, location_name: "Boolean")) + ParameterValue.add_member(:enum, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Enum")) + ParameterValue.add_member(:enum_list, Shapes::ShapeRef.new(shape: StringList, location_name: "EnumList")) + ParameterValue.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown')) + ParameterValue.add_member_subclass(:integer, Types::ParameterValue::Integer) + ParameterValue.add_member_subclass(:integer_list, Types::ParameterValue::IntegerList) + ParameterValue.add_member_subclass(:double, Types::ParameterValue::Double) + ParameterValue.add_member_subclass(:string, Types::ParameterValue::String) + ParameterValue.add_member_subclass(:string_list, Types::ParameterValue::StringList) + ParameterValue.add_member_subclass(:boolean, Types::ParameterValue::Boolean) + ParameterValue.add_member_subclass(:enum, Types::ParameterValue::Enum) + ParameterValue.add_member_subclass(:enum_list, Types::ParameterValue::EnumList) + ParameterValue.add_member_subclass(:unknown, Types::ParameterValue::Unknown) + ParameterValue.struct_class = Types::ParameterValue + + Parameters.key = Shapes::ShapeRef.new(shape: NonEmptyString) + Parameters.value = Shapes::ShapeRef.new(shape: ParameterConfiguration) + PatchSummary.add_member(:id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Id")) PatchSummary.add_member(:installed_count, Shapes::ShapeRef.new(shape: Integer, location_name: "InstalledCount")) PatchSummary.add_member(:missing_count, Shapes::ShapeRef.new(shape: Integer, location_name: "MissingCount")) @@ -5904,6 +6027,10 @@ module ClientApi ResourceDetails.add_member(:aws_msk_cluster, Shapes::ShapeRef.new(shape: AwsMskClusterDetails, location_name: "AwsMskCluster")) ResourceDetails.struct_class = Types::ResourceDetails + ResourceInUseException.add_member(:message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Message")) + ResourceInUseException.add_member(:code, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Code")) + ResourceInUseException.struct_class = Types::ResourceInUseException + ResourceList.member = Shapes::ShapeRef.new(shape: Resource) ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Message")) @@ -6049,6 +6176,9 @@ module ClientApi SecurityControl.add_member(:remediation_url, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "RemediationUrl")) SecurityControl.add_member(:severity_rating, Shapes::ShapeRef.new(shape: SeverityRating, required: true, location_name: "SeverityRating")) SecurityControl.add_member(:security_control_status, Shapes::ShapeRef.new(shape: ControlStatus, required: true, location_name: "SecurityControlStatus")) + SecurityControl.add_member(:update_status, Shapes::ShapeRef.new(shape: UpdateStatus, location_name: "UpdateStatus")) + SecurityControl.add_member(:parameters, Shapes::ShapeRef.new(shape: Parameters, location_name: "Parameters")) + SecurityControl.add_member(:last_update_reason, Shapes::ShapeRef.new(shape: AlphaNumericNonEmptyString, location_name: "LastUpdateReason")) SecurityControl.struct_class = Types::SecurityControl SecurityControlDefinition.add_member(:security_control_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "SecurityControlId")) @@ -6057,10 +6187,18 @@ module ClientApi SecurityControlDefinition.add_member(:remediation_url, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "RemediationUrl")) SecurityControlDefinition.add_member(:severity_rating, Shapes::ShapeRef.new(shape: SeverityRating, required: true, location_name: "SeverityRating")) SecurityControlDefinition.add_member(:current_region_availability, Shapes::ShapeRef.new(shape: RegionAvailabilityStatus, required: true, location_name: "CurrentRegionAvailability")) + SecurityControlDefinition.add_member(:customizable_properties, Shapes::ShapeRef.new(shape: CustomizableProperties, location_name: "CustomizableProperties")) + SecurityControlDefinition.add_member(:parameter_definitions, Shapes::ShapeRef.new(shape: ParameterDefinitions, location_name: "ParameterDefinitions")) SecurityControlDefinition.struct_class = Types::SecurityControlDefinition SecurityControlDefinitions.member = Shapes::ShapeRef.new(shape: SecurityControlDefinition) + SecurityControlParameter.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Name")) + SecurityControlParameter.add_member(:value, Shapes::ShapeRef.new(shape: TypeList, location_name: "Value")) + SecurityControlParameter.struct_class = Types::SecurityControlParameter + + SecurityControlParametersList.member = Shapes::ShapeRef.new(shape: SecurityControlParameter) + SecurityControls.member = Shapes::ShapeRef.new(shape: SecurityControl) SecurityGroups.member = Shapes::ShapeRef.new(shape: NonEmptyString) @@ -6221,6 +6359,11 @@ module ClientApi StatusReasonsList.member = Shapes::ShapeRef.new(shape: StatusReason) + StringConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DefaultValue")) + StringConfigurationOptions.add_member(:re_2_expression, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Re2Expression")) + StringConfigurationOptions.add_member(:expression_description, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ExpressionDescription")) + StringConfigurationOptions.struct_class = Types::StringConfigurationOptions + StringFilter.add_member(:value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Value")) StringFilter.add_member(:comparison, Shapes::ShapeRef.new(shape: StringFilterComparison, location_name: "Comparison")) StringFilter.struct_class = Types::StringFilter @@ -6229,6 +6372,12 @@ module ClientApi StringList.member = Shapes::ShapeRef.new(shape: NonEmptyString) + StringListConfigurationOptions.add_member(:default_value, Shapes::ShapeRef.new(shape: StringList, location_name: "DefaultValue")) + StringListConfigurationOptions.add_member(:re_2_expression, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Re2Expression")) + StringListConfigurationOptions.add_member(:max_items, Shapes::ShapeRef.new(shape: Integer, location_name: "MaxItems")) + StringListConfigurationOptions.add_member(:expression_description, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ExpressionDescription")) + StringListConfigurationOptions.struct_class = Types::StringListConfigurationOptions + TagKeyList.member = Shapes::ShapeRef.new(shape: TagKey) TagMap.key = Shapes::ShapeRef.new(shape: TagKey) @@ -6345,6 +6494,13 @@ module ClientApi UpdateOrganizationConfigurationResponse.struct_class = Types::UpdateOrganizationConfigurationResponse + UpdateSecurityControlRequest.add_member(:security_control_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "SecurityControlId")) + UpdateSecurityControlRequest.add_member(:parameters, Shapes::ShapeRef.new(shape: Parameters, required: true, location_name: "Parameters")) + UpdateSecurityControlRequest.add_member(:last_update_reason, Shapes::ShapeRef.new(shape: AlphaNumericNonEmptyString, location_name: "LastUpdateReason")) + UpdateSecurityControlRequest.struct_class = Types::UpdateSecurityControlRequest + + UpdateSecurityControlResponse.struct_class = Types::UpdateSecurityControlResponse + UpdateSecurityHubConfigurationRequest.add_member(:auto_enable_controls, Shapes::ShapeRef.new(shape: Boolean, location_name: "AutoEnableControls")) UpdateSecurityHubConfigurationRequest.add_member(:control_finding_generator, Shapes::ShapeRef.new(shape: ControlFindingGenerator, location_name: "ControlFindingGenerator")) UpdateSecurityHubConfigurationRequest.struct_class = Types::UpdateSecurityHubConfigurationRequest @@ -7098,6 +7254,19 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) end) + api.add_operation(:get_security_control_definition, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetSecurityControlDefinition" + o.http_method = "GET" + o.http_request_uri = "/securityControl/definition" + o.input = Shapes::ShapeRef.new(shape: GetSecurityControlDefinitionRequest) + o.output = Shapes::ShapeRef.new(shape: GetSecurityControlDefinitionResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: InvalidAccessException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + end) + api.add_operation(:invite_members, Seahorse::Model::Operation.new.tap do |o| o.name = "InviteMembers" o.http_method = "POST" @@ -7348,6 +7517,20 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) end) + api.add_operation(:update_security_control, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSecurityControl" + o.http_method = "PATCH" + o.http_request_uri = "/securityControl/update" + o.input = Shapes::ShapeRef.new(shape: UpdateSecurityControlRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateSecurityControlResponse) + o.errors << Shapes::ShapeRef.new(shape: InternalException) + o.errors << Shapes::ShapeRef.new(shape: InvalidInputException) + o.errors << Shapes::ShapeRef.new(shape: InvalidAccessException) + o.errors << Shapes::ShapeRef.new(shape: LimitExceededException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException) + end) + api.add_operation(:update_security_hub_configuration, Seahorse::Model::Operation.new.tap do |o| o.name = "UpdateSecurityHubConfiguration" o.http_method = "PATCH" diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoint_provider.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoint_provider.rb index 22c4cff00f0..c7e1f767ccd 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoint_provider.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoint_provider.rb @@ -32,7 +32,7 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) return Aws::Endpoints::Endpoint.new(url: "https://securityhub-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) end raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoints.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoints.rb index f032b2ff05f..cec9577ece8 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoints.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/endpoints.rb @@ -684,6 +684,20 @@ def self.build(context) end end + class GetSecurityControlDefinition + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::SecurityHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class InviteMembers def self.build(context) unless context.config.regional_endpoint @@ -922,6 +936,20 @@ def self.build(context) end end + class UpdateSecurityControl + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::SecurityHub::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UpdateSecurityHubConfiguration def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/errors.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/errors.rb index a7a120f6580..ab952cde97a 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/errors.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/errors.rb @@ -33,6 +33,7 @@ module Aws::SecurityHub # * {InvalidInputException} # * {LimitExceededException} # * {ResourceConflictException} + # * {ResourceInUseException} # * {ResourceNotFoundException} # # Additionally, error classes are dynamically generated for service errors based on the error code @@ -161,6 +162,26 @@ def code end end + class ResourceInUseException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::SecurityHub::Types::ResourceInUseException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def code + @code || @data[:code] + end + end + class ResourceNotFoundException < ServiceError # @param [Seahorse::Client::RequestContext] context diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/plugins/endpoints.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/plugins/endpoints.rb index 4531472588d..e2610dd236c 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/plugins/endpoints.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/plugins/endpoints.rb @@ -152,6 +152,8 @@ def parameters_for_operation(context) Aws::SecurityHub::Endpoints::GetMasterAccount.build(context) when :get_members Aws::SecurityHub::Endpoints::GetMembers.build(context) + when :get_security_control_definition + Aws::SecurityHub::Endpoints::GetSecurityControlDefinition.build(context) when :invite_members Aws::SecurityHub::Endpoints::InviteMembers.build(context) when :list_automation_rules @@ -186,6 +188,8 @@ def parameters_for_operation(context) Aws::SecurityHub::Endpoints::UpdateInsight.build(context) when :update_organization_configuration Aws::SecurityHub::Endpoints::UpdateOrganizationConfiguration.build(context) + when :update_security_control + Aws::SecurityHub::Endpoints::UpdateSecurityControl.build(context) when :update_security_hub_configuration Aws::SecurityHub::Endpoints::UpdateSecurityHubConfiguration.build(context) when :update_standards_control diff --git a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/types.rb b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/types.rb index 161cb889b37..c45500367a3 100644 --- a/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/types.rb +++ b/gems/aws-sdk-securityhub/lib/aws-sdk-securityhub/types.rb @@ -4232,7 +4232,7 @@ class AwsCloudFrontDistributionOriginGroups < Struct.new( end # A complex type that describes the Amazon S3 bucket, HTTP server (for - # example, a web server), AWS Elemental MediaStore, or other server from + # example, a web server), Elemental MediaStore, or other server from # which CloudFront gets your files. # # @!attribute [rw] domain_name @@ -18690,12 +18690,11 @@ class AwsSecurityFinding < Struct.new( include Aws::Structure end - # A collection of attributes that are applied to all active Security - # Hub-aggregated findings and that result in a subset of findings that - # are included in this insight. + # A collection of filters that are applied to all active findings + # aggregated by Security Hub. # - # You can filter by up to 10 finding attributes. For each attribute, you - # can provide up to 20 filter values. + # You can filter by up to ten finding attributes. For each attribute, + # you can provide up to 20 filter values. # # @!attribute [rw] product_arn # The ARN generated by Security Hub that uniquely identifies a @@ -19273,6 +19272,26 @@ class AwsSecurityFinding < Struct.new( # [1]: https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html # @return [Array] # + # @!attribute [rw] vulnerabilities_exploit_available + # Indicates whether a software vulnerability in your environment has a + # known exploit. You can filter findings by this field only if you use + # Security Hub and Amazon Inspector. + # @return [Array] + # + # @!attribute [rw] vulnerabilities_fix_available + # Indicates whether a vulnerability is fixed in a newer version of the + # affected software packages. You can filter findings by this field + # only if you use Security Hub and Amazon Inspector. + # @return [Array] + # + # @!attribute [rw] compliance_security_control_parameters_name + # The name of a security control parameter. + # @return [Array] + # + # @!attribute [rw] compliance_security_control_parameters_value + # The current value of a security control parameter. + # @return [Array] + # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AwsSecurityFindingFilters AWS API Documentation # class AwsSecurityFindingFilters < Struct.new( @@ -19372,7 +19391,11 @@ class AwsSecurityFindingFilters < Struct.new( :finding_provider_fields_types, :sample, :compliance_security_control_id, - :compliance_associated_standards_id) + :compliance_associated_standards_id, + :vulnerabilities_exploit_available, + :vulnerabilities_fix_available, + :compliance_security_control_parameters_name, + :compliance_security_control_parameters_value) SENSITIVE = [] include Aws::Structure end @@ -21431,6 +21454,21 @@ class BatchUpdateStandardsControlAssociationsResponse < Struct.new( include Aws::Structure end + # The options for customizing a security control parameter with a + # boolean. For a boolean parameter, the options are `true` and `false`. + # + # @!attribute [rw] default_value + # The Security Hub default value for a boolean parameter. + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/BooleanConfigurationOptions AWS API Documentation + # + class BooleanConfigurationOptions < Struct.new( + :default_value) + SENSITIVE = [] + include Aws::Structure + end + # Boolean filter for querying findings. # # @!attribute [rw] value @@ -21693,6 +21731,10 @@ class CodeVulnerabilitiesFilePath < Struct.new( # currently enabled. # @return [Array] # + # @!attribute [rw] security_control_parameters + # An object that includes security control parameter names and values. + # @return [Array] + # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/Compliance AWS API Documentation # class Compliance < Struct.new( @@ -21700,11 +21742,84 @@ class Compliance < Struct.new( :related_requirements, :status_reasons, :security_control_id, - :associated_standards) + :associated_standards, + :security_control_parameters) SENSITIVE = [] include Aws::Structure end + # The options for customizing a security control parameter. + # + # @note ConfigurationOptions is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of ConfigurationOptions corresponding to the set member. + # + # @!attribute [rw] integer + # The options for customizing a security control parameter that is an + # integer. + # @return [Types::IntegerConfigurationOptions] + # + # @!attribute [rw] integer_list + # The options for customizing a security control parameter that is a + # list of integers. + # @return [Types::IntegerListConfigurationOptions] + # + # @!attribute [rw] double + # The options for customizing a security control parameter that is a + # double. + # @return [Types::DoubleConfigurationOptions] + # + # @!attribute [rw] string + # The options for customizing a security control parameter that is a + # string data type. + # @return [Types::StringConfigurationOptions] + # + # @!attribute [rw] string_list + # The options for customizing a security control parameter that is a + # list of strings. + # @return [Types::StringListConfigurationOptions] + # + # @!attribute [rw] boolean + # The options for customizing a security control parameter that is a + # boolean. For a boolean parameter, the options are `true` and + # `false`. + # @return [Types::BooleanConfigurationOptions] + # + # @!attribute [rw] enum + # The options for customizing a security control parameter that is an + # enum. + # @return [Types::EnumConfigurationOptions] + # + # @!attribute [rw] enum_list + # The options for customizing a security control parameter that is a + # list of enums. + # @return [Types::EnumListConfigurationOptions] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ConfigurationOptions AWS API Documentation + # + class ConfigurationOptions < Struct.new( + :integer, + :integer_list, + :double, + :string, + :string_list, + :boolean, + :enum, + :enum_list, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class Integer < ConfigurationOptions; end + class IntegerList < ConfigurationOptions; end + class Double < ConfigurationOptions; end + class String < ConfigurationOptions; end + class StringList < ConfigurationOptions; end + class Boolean < ConfigurationOptions; end + class Enum < ConfigurationOptions; end + class EnumList < ConfigurationOptions; end + class Unknown < ConfigurationOptions; end + end + # Container details related to a finding. # # @!attribute [rw] container_runtime @@ -22738,6 +22853,32 @@ class DnsRequestAction < Struct.new( include Aws::Structure end + # The options for customizing a security control parameter that is a + # double. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is a + # double. + # @return [Float] + # + # @!attribute [rw] min + # The minimum valid value for a control parameter that is a double. + # @return [Float] + # + # @!attribute [rw] max + # The maximum valid value for a control parameter that is a double. + # @return [Float] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/DoubleConfigurationOptions AWS API Documentation + # + class DoubleConfigurationOptions < Struct.new( + :default_value, + :min, + :max) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] product_arn # The ARN of the product to enable the integration for. # @return [String] @@ -22823,6 +22964,54 @@ class EnableSecurityHubRequest < Struct.new( # class EnableSecurityHubResponse < Aws::EmptyStructure; end + # The options for customizing a security control parameter that is an + # enum. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is an + # enum. + # @return [String] + # + # @!attribute [rw] allowed_values + # The valid values for a control parameter that is an enum. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnumConfigurationOptions AWS API Documentation + # + class EnumConfigurationOptions < Struct.new( + :default_value, + :allowed_values) + SENSITIVE = [] + include Aws::Structure + end + + # The options for customizing a security control parameter that is a + # list of enums. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is a + # list of enums. + # @return [Array] + # + # @!attribute [rw] max_items + # The maximum number of list items that an enum list control parameter + # can accept. + # @return [Integer] + # + # @!attribute [rw] allowed_values + # The valid values for a control parameter that is a list of enums. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/EnumListConfigurationOptions AWS API Documentation + # + class EnumListConfigurationOptions < Struct.new( + :default_value, + :max_items, + :allowed_values) + SENSITIVE = [] + include Aws::Structure + end + # Provides information about the file paths that were affected by the # threat. # @@ -23628,6 +23817,34 @@ class GetMembersResponse < Struct.new( include Aws::Structure end + # @!attribute [rw] security_control_id + # The ID of the security control to retrieve the definition for. This + # field doesn’t accept an Amazon Resource Name (ARN). + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSecurityControlDefinitionRequest AWS API Documentation + # + class GetSecurityControlDefinitionRequest < Struct.new( + :security_control_id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] security_control_definition + # Provides metadata for a security control, including its unique + # standard-agnostic identifier, title, description, severity, + # availability in Amazon Web Services Regions, and a link to + # remediation steps. + # @return [Types::SecurityControlDefinition] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSecurityControlDefinitionResponse AWS API Documentation + # + class GetSecurityControlDefinitionResponse < Struct.new( + :security_control_definition) + SENSITIVE = [] + include Aws::Structure + end + # An Internet Control Message Protocol (ICMP) type and code. # # @!attribute [rw] code @@ -23760,6 +23977,66 @@ class InsightResults < Struct.new( include Aws::Structure end + # The options for customizing a security control parameter that is an + # integer. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is an + # integer. + # @return [Integer] + # + # @!attribute [rw] min + # The minimum valid value for a control parameter that is an integer. + # @return [Integer] + # + # @!attribute [rw] max + # The maximum valid value for a control parameter that is an integer. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/IntegerConfigurationOptions AWS API Documentation + # + class IntegerConfigurationOptions < Struct.new( + :default_value, + :min, + :max) + SENSITIVE = [] + include Aws::Structure + end + + # The options for customizing a security control parameter that is a + # list of integers. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is a + # list of integers. + # @return [Array] + # + # @!attribute [rw] min + # The minimum valid value for a control parameter that is a list of + # integers. + # @return [Integer] + # + # @!attribute [rw] max + # The maximum valid value for a control parameter that is a list of + # integers. + # @return [Integer] + # + # @!attribute [rw] max_items + # The maximum number of list items that an interger list control + # parameter can accept. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/IntegerListConfigurationOptions AWS API Documentation + # + class IntegerListConfigurationOptions < Struct.new( + :default_value, + :min, + :max, + :max_items) + SENSITIVE = [] + include Aws::Structure + end + # Internal server error. # # @!attribute [rw] message @@ -24838,12 +25115,24 @@ class NoteUpdate < Struct.new( # for findings. # @return [Float] # + # @!attribute [rw] gt + # The greater-than condition to be applied to a single field when + # querying for findings. + # @return [Float] + # + # @!attribute [rw] lt + # The less-than condition to be applied to a single field when + # querying for findings. + # @return [Float] + # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/NumberFilter AWS API Documentation # class NumberFilter < Struct.new( :gte, :lte, - :eq) + :eq, + :gt, + :lt) SENSITIVE = [] include Aws::Structure end @@ -24915,6 +25204,114 @@ class Page < Struct.new( include Aws::Structure end + # An object that provides the current value of a security control + # parameter and identifies whether it has been customized. + # + # @!attribute [rw] value_type + # Identifies whether a control parameter uses a custom user-defined + # value or the Security Hub default value. + # @return [String] + # + # @!attribute [rw] value + # The current value of a control parameter. + # @return [Types::ParameterValue] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ParameterConfiguration AWS API Documentation + # + class ParameterConfiguration < Struct.new( + :value_type, + :value) + SENSITIVE = [] + include Aws::Structure + end + + # An object that describes a security control parameter and the options + # for customizing it. + # + # @!attribute [rw] description + # Description of a control parameter. + # @return [String] + # + # @!attribute [rw] configuration_options + # The options for customizing a control parameter. Customization + # options vary based on the data type of the parameter. + # @return [Types::ConfigurationOptions] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ParameterDefinition AWS API Documentation + # + class ParameterDefinition < Struct.new( + :description, + :configuration_options) + SENSITIVE = [] + include Aws::Structure + end + + # An object that includes the data type of a security control parameter + # and its current value. + # + # @note ParameterValue is a union - when making an API calls you must set exactly one of the members. + # + # @note ParameterValue is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of ParameterValue corresponding to the set member. + # + # @!attribute [rw] integer + # A control parameter that is an integer. + # @return [Integer] + # + # @!attribute [rw] integer_list + # A control parameter that is a list of integers. + # @return [Array] + # + # @!attribute [rw] double + # A control parameter that is a double. + # @return [Float] + # + # @!attribute [rw] string + # A control parameter that is a string. + # @return [String] + # + # @!attribute [rw] string_list + # A control parameter that is a list of strings. + # @return [Array] + # + # @!attribute [rw] boolean + # A control parameter that is a boolean. + # @return [Boolean] + # + # @!attribute [rw] enum + # A control parameter that is an enum. + # @return [String] + # + # @!attribute [rw] enum_list + # A control parameter that is a list of enums. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ParameterValue AWS API Documentation + # + class ParameterValue < Struct.new( + :integer, + :integer_list, + :double, + :string, + :string_list, + :boolean, + :enum, + :enum_list, + :unknown) + SENSITIVE = [] + include Aws::Structure + include Aws::Structure::Union + + class Integer < ParameterValue; end + class IntegerList < ParameterValue; end + class Double < ParameterValue; end + class String < ParameterValue; end + class StringList < ParameterValue; end + class Boolean < ParameterValue; end + class Enum < ParameterValue; end + class EnumList < ParameterValue; end + class Unknown < ParameterValue; end + end + # Provides an overview of the patch compliance status for an instance # against a selected compliance standard. # @@ -25985,6 +26382,25 @@ class ResourceDetails < Struct.new( include Aws::Structure end + # The request was rejected because it conflicts with the resource's + # availability. For example, you tried to update a security control + # that's currently in the `UPDATING` state. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] code + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ResourceInUseException AWS API Documentation + # + class ResourceInUseException < Struct.new( + :message, + :code) + SENSITIVE = [] + include Aws::Structure + end + # The request was rejected because we can't find the specified # resource. # @@ -26598,6 +27014,32 @@ class RuleGroupVariablesPortSetsDetails < Struct.new( # The enablement status of a security control in a specific standard. # @return [String] # + # @!attribute [rw] update_status + # Identifies whether customizable properties of a security control are + # reflected in Security Hub findings. A status of `READY` indicates + # findings include the current parameter values. A status of + # `UPDATING` indicates that all findings may not include the current + # parameter values. + # @return [String] + # + # @!attribute [rw] parameters + # An object that identifies the name of a control parameter, its + # current value, and whether it has been customized. + # @return [Hash] + # + # @!attribute [rw] last_update_reason + # The most recent reason for updating the customizable properties of a + # security control. This differs from the `UpdateReason` field of the + # [ `BatchUpdateStandardsControlAssociations` ][1] API, which tracks + # the reason for updating the enablement status of a control. This + # field accepts alphanumeric characters in addition to white spaces, + # dashes, and underscores. + # + # + # + # [1]: https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchUpdateStandardsControlAssociations.html + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/SecurityControl AWS API Documentation # class SecurityControl < Struct.new( @@ -26607,7 +27049,10 @@ class SecurityControl < Struct.new( :description, :remediation_url, :severity_rating, - :security_control_status) + :security_control_status, + :update_status, + :parameters, + :last_update_reason) SENSITIVE = [] include Aws::Structure end @@ -26658,6 +27103,18 @@ class SecurityControl < Struct.new( # Amazon Web Services Region. # @return [String] # + # @!attribute [rw] customizable_properties + # Security control properties that you can customize. Currently, only + # parameter customization is supported for select controls. An empty + # array is returned for controls that don’t support custom properties. + # @return [Array] + # + # @!attribute [rw] parameter_definitions + # An object that provides a security control parameter name, + # description, and the options for customizing it. This object is + # excluded for a control that doesn't support custom parameters. + # @return [Hash] + # # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/SecurityControlDefinition AWS API Documentation # class SecurityControlDefinition < Struct.new( @@ -26666,7 +27123,28 @@ class SecurityControlDefinition < Struct.new( :description, :remediation_url, :severity_rating, - :current_region_availability) + :current_region_availability, + :customizable_properties, + :parameter_definitions) + SENSITIVE = [] + include Aws::Structure + end + + # A parameter that a security control accepts. + # + # @!attribute [rw] name + # The name of a + # @return [String] + # + # @!attribute [rw] value + # The current value of a control parameter. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/SecurityControlParameter AWS API Documentation + # + class SecurityControlParameter < Struct.new( + :name, + :value) SENSITIVE = [] include Aws::Structure end @@ -26737,8 +27215,8 @@ class SensitiveDataResult < Struct.new( # attribute. # # @!attribute [rw] product - # Deprecated. This attribute is being deprecated. Instead of providing - # `Product`, provide `Original`. + # Deprecated. This attribute isn't included in findings. Instead of + # providing `Product`, provide `Original`. # # The native severity as defined by the Amazon Web Services service or # integrated partner product that generated the finding. @@ -26774,9 +27252,8 @@ class SensitiveDataResult < Struct.new( # @return [String] # # @!attribute [rw] normalized - # Deprecated. The normalized severity of a finding. This attribute is - # being deprecated. Instead of providing `Normalized`, provide - # `Label`. + # Deprecated. The normalized severity of a finding. Instead of + # providing `Normalized`, provide `Label`. # # If you provide `Label` and do not provide `Normalized`, then # `Normalized` is set automatically as follows. @@ -27430,6 +27907,33 @@ class StatusReason < Struct.new( include Aws::Structure end + # The options for customizing a security control parameter that is a + # string. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is a + # string. + # @return [String] + # + # @!attribute [rw] re_2_expression + # An RE2 regular expression that Security Hub uses to validate a + # user-provided control parameter string. + # @return [String] + # + # @!attribute [rw] expression_description + # The description of the RE2 regular expression. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StringConfigurationOptions AWS API Documentation + # + class StringConfigurationOptions < Struct.new( + :default_value, + :re_2_expression, + :expression_description) + SENSITIVE = [] + include Aws::Structure + end + # A string filter for filtering Security Hub findings. # # @!attribute [rw] value @@ -27537,6 +28041,39 @@ class StringFilter < Struct.new( include Aws::Structure end + # The options for customizing a security control parameter that is a + # list of strings. + # + # @!attribute [rw] default_value + # The Security Hub default value for a control parameter that is a + # list of strings. + # @return [Array] + # + # @!attribute [rw] re_2_expression + # An RE2 regular expression that Security Hub uses to validate a + # user-provided list of strings for a control parameter. + # @return [String] + # + # @!attribute [rw] max_items + # The maximum number of list items that a string list control + # parameter can accept. + # @return [Integer] + # + # @!attribute [rw] expression_description + # The description of the RE2 regular expression. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/StringListConfigurationOptions AWS API Documentation + # + class StringListConfigurationOptions < Struct.new( + :default_value, + :re_2_expression, + :max_items, + :expression_description) + SENSITIVE = [] + include Aws::Structure + end + # @!attribute [rw] resource_arn # The ARN of the resource to apply the tags to. # @return [String] @@ -28069,6 +28606,35 @@ class UpdateOrganizationConfigurationRequest < Struct.new( # class UpdateOrganizationConfigurationResponse < Aws::EmptyStructure; end + # @!attribute [rw] security_control_id + # The Amazon Resource Name (ARN) or ID of the control to update. + # @return [String] + # + # @!attribute [rw] parameters + # An object that specifies which security control parameters to + # update. + # @return [Hash] + # + # @!attribute [rw] last_update_reason + # The most recent reason for updating the properties of the security + # control. This field accepts alphanumeric characters in addition to + # white spaces, dashes, and underscores. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityControlRequest AWS API Documentation + # + class UpdateSecurityControlRequest < Struct.new( + :security_control_id, + :parameters, + :last_update_reason) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/UpdateSecurityControlResponse AWS API Documentation + # + class UpdateSecurityControlResponse < Aws::EmptyStructure; end + # @!attribute [rw] auto_enable_controls # Whether to automatically enable new controls when they are added to # standards that are enabled. diff --git a/gems/aws-sdk-states/CHANGELOG.md b/gems/aws-sdk-states/CHANGELOG.md index 938d6038d72..f0305e7c9a4 100644 --- a/gems/aws-sdk-states/CHANGELOG.md +++ b/gems/aws-sdk-states/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.62.0 (2023-11-27) +------------------ + +* Feature - Adds new TestState operation which accepts the definition of a single state and executes it. You can test a state without creating a state machine or updating an existing state machine. + 1.61.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-states/VERSION b/gems/aws-sdk-states/VERSION index 91951fd8ad7..76d05362056 100644 --- a/gems/aws-sdk-states/VERSION +++ b/gems/aws-sdk-states/VERSION @@ -1 +1 @@ -1.61.0 +1.62.0 diff --git a/gems/aws-sdk-states/lib/aws-sdk-states.rb b/gems/aws-sdk-states/lib/aws-sdk-states.rb index ae93382dc43..574bc141b04 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states.rb @@ -52,6 +52,6 @@ # @!group service module Aws::States - GEM_VERSION = '1.61.0' + GEM_VERSION = '1.62.0' end diff --git a/gems/aws-sdk-states/lib/aws-sdk-states/client.rb b/gems/aws-sdk-states/lib/aws-sdk-states/client.rb index 2b6448f5d56..ea7f91bebdc 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states/client.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states/client.rb @@ -2157,10 +2157,11 @@ def publish_state_machine_version(params = {}, options = {}) # `RedriveExecution` API action reschedules and redrives only the # iterations and branches that failed or aborted. # - # To redrive a workflow that includes a Distributed Map state with - # failed child workflow executions, you must redrive the [parent - # workflow][4]. The parent workflow redrives all the unsuccessful - # states, including Distributed Map. + # To redrive a workflow that includes a Distributed Map state whose Map + # Run failed, you must redrive the [parent workflow][4]. The parent + # workflow redrives all the unsuccessful states, including a failed Map + # Run. If a Map Run was not started in the original execution attempt, + # the redriven parent workflow starts the Map Run. # # This API action is not supported by `EXPRESS` state machines. # @@ -2208,8 +2209,10 @@ def publish_state_machine_version(params = {}, options = {}) # A unique, case-sensitive identifier that you provide to ensure the # idempotency of the request. If you don’t specify a client token, the # Amazon Web Services SDK automatically generates a client token and - # uses it for the request to ensure idempotency. The API uses one of the - # last 10 client tokens provided. + # uses it for the request to ensure idempotency. The API will return + # idempotent responses for the last 10 client tokens used to + # successfully redrive the execution. These client tokens are valid for + # up to 15 minutes after they are first used. # # **A suitable default value is auto-generated.** You should normally # not need to pass this option.** @@ -2722,6 +2725,164 @@ def tag_resource(params = {}, options = {}) req.send_request(options) end + # Accepts the definition of a single state and executes it. You can test + # a state without creating a state machine or updating an existing state + # machine. Using this API, you can test the following: + # + # * A state's [input and output processing][1] data flow + # + # * An [Amazon Web Services service integration][2] request and response + # + # * An [HTTP Task][3] request and response + # + # You can call this API on only one state at a time. The states that you + # can test include the following: + # + # * [All Task types][4] except [Activity][5] + # + # * [Pass][6] + # + # * [Wait][7] + # + # * [Choice][8] + # + # * [Succeed][9] + # + # * [Fail][10] + # + # The `TestState` API assumes an IAM role which must contain the + # required IAM permissions for the resources your state is accessing. + # For information about the permissions a state might need, see [IAM + # permissions to test a state][11]. + # + # The `TestState` API can run for up to five minutes. If the execution + # of a state exceeds this duration, it fails with the `States.Timeout` + # error. + # + # `TestState` doesn't support [Activity tasks][5], `.sync` or + # `.waitForTaskToken` [service integration patterns][12], + # [Parallel][13], or [Map][14] states. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html#test-state-input-output-dataflow + # [2]: https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-services.html + # [3]: https://docs.aws.amazon.com/step-functions/latest/dg/connect-third-party-apis.html + # [4]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-task-state.html#task-types + # [5]: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-activities.html + # [6]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-pass-state.html + # [7]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html + # [8]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-choice-state.html + # [9]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-succeed-state.html + # [10]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-fail-state.html + # [11]: https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html#test-state-permissions + # [12]: https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html + # [13]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-parallel-state.html + # [14]: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-map-state.html + # + # @option params [required, String] :definition + # The [Amazon States Language][1] (ASL) definition of the state. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html + # + # @option params [required, String] :role_arn + # The Amazon Resource Name (ARN) of the execution role with the required + # IAM permissions for the state. + # + # @option params [String] :input + # A string that contains the JSON input data for the state. + # + # @option params [String] :inspection_level + # Determines the values to return when a state is tested. You can + # specify one of the following types: + # + # * `INFO`: Shows the final state output. By default, Step Functions + # sets `inspectionLevel` to `INFO` if you don't specify a level. + # + # * `DEBUG`: Shows the final state output along with the input and + # output data processing result. + # + # * `TRACE`: Shows the HTTP request and response for an HTTP Task. This + # level also shows the final state output along with the input and + # output data processing result. + # + # Each of these levels also provide information about the status of the + # state execution and the next state to transition to. + # + # @option params [Boolean] :reveal_secrets + # Specifies whether or not to include secret information in the test + # result. For HTTP Tasks, a secret includes the data that an EventBridge + # connection adds to modify the HTTP request headers, query parameters, + # and body. Step Functions doesn't omit any information included in the + # state definition or the HTTP response. + # + # If you set `revealSecrets` to `true`, you must make sure that the IAM + # user that calls the `TestState` API has permission for the + # `states:RevealSecrets` action. For an example of IAM policy that sets + # the `states:RevealSecrets` permission, see [IAM permissions to test a + # state][1]. Without this permission, Step Functions throws an access + # denied error. + # + # By default, `revealSecrets` is set to `false`. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html#test-state-permissions + # + # @return [Types::TestStateOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::TestStateOutput#output #output} => String + # * {Types::TestStateOutput#error #error} => String + # * {Types::TestStateOutput#cause #cause} => String + # * {Types::TestStateOutput#inspection_data #inspection_data} => Types::InspectionData + # * {Types::TestStateOutput#next_state #next_state} => String + # * {Types::TestStateOutput#status #status} => String + # + # @example Request syntax with placeholder values + # + # resp = client.test_state({ + # definition: "Definition", # required + # role_arn: "Arn", # required + # input: "SensitiveData", + # inspection_level: "INFO", # accepts INFO, DEBUG, TRACE + # reveal_secrets: false, + # }) + # + # @example Response structure + # + # resp.output #=> String + # resp.error #=> String + # resp.cause #=> String + # resp.inspection_data.input #=> String + # resp.inspection_data.after_input_path #=> String + # resp.inspection_data.after_parameters #=> String + # resp.inspection_data.result #=> String + # resp.inspection_data.after_result_selector #=> String + # resp.inspection_data.after_result_path #=> String + # resp.inspection_data.request.protocol #=> String + # resp.inspection_data.request.method #=> String + # resp.inspection_data.request.url #=> String + # resp.inspection_data.request.headers #=> String + # resp.inspection_data.request.body #=> String + # resp.inspection_data.response.protocol #=> String + # resp.inspection_data.response.status_code #=> String + # resp.inspection_data.response.status_message #=> String + # resp.inspection_data.response.headers #=> String + # resp.inspection_data.response.body #=> String + # resp.next_state #=> String + # resp.status #=> String, one of "SUCCEEDED", "FAILED", "RETRIABLE", "CAUGHT_ERROR" + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/TestState AWS API Documentation + # + # @overload test_state(params = {}) + # @param [Hash] params ({}) + def test_state(params = {}, options = {}) + req = build_request(:test_state, params) + req.send_request(options) + end + # Remove a tag from a Step Functions resource # # @option params [required, String] :resource_arn @@ -3018,7 +3179,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-states' - context[:gem_version] = '1.61.0' + context[:gem_version] = '1.62.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-states/lib/aws-sdk-states/client_api.rb b/gems/aws-sdk-states/lib/aws-sdk-states/client_api.rb index 5be63d91114..826cf5f58bc 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states/client_api.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states/client_api.rb @@ -84,6 +84,12 @@ module ClientApi GetActivityTaskOutput = Shapes::StructureShape.new(name: 'GetActivityTaskOutput') GetExecutionHistoryInput = Shapes::StructureShape.new(name: 'GetExecutionHistoryInput') GetExecutionHistoryOutput = Shapes::StructureShape.new(name: 'GetExecutionHistoryOutput') + HTTPBody = Shapes::StringShape.new(name: 'HTTPBody') + HTTPHeaders = Shapes::StringShape.new(name: 'HTTPHeaders') + HTTPMethod = Shapes::StringShape.new(name: 'HTTPMethod') + HTTPProtocol = Shapes::StringShape.new(name: 'HTTPProtocol') + HTTPStatusCode = Shapes::StringShape.new(name: 'HTTPStatusCode') + HTTPStatusMessage = Shapes::StringShape.new(name: 'HTTPStatusMessage') HistoryEvent = Shapes::StructureShape.new(name: 'HistoryEvent') HistoryEventExecutionDataDetails = Shapes::StructureShape.new(name: 'HistoryEventExecutionDataDetails') HistoryEventList = Shapes::ListShape.new(name: 'HistoryEventList') @@ -91,6 +97,10 @@ module ClientApi Identity = Shapes::StringShape.new(name: 'Identity') IncludeExecutionData = Shapes::BooleanShape.new(name: 'IncludeExecutionData') IncludeExecutionDataGetExecutionHistory = Shapes::BooleanShape.new(name: 'IncludeExecutionDataGetExecutionHistory') + InspectionData = Shapes::StructureShape.new(name: 'InspectionData') + InspectionDataRequest = Shapes::StructureShape.new(name: 'InspectionDataRequest') + InspectionDataResponse = Shapes::StructureShape.new(name: 'InspectionDataResponse') + InspectionLevel = Shapes::StringShape.new(name: 'InspectionLevel') InvalidArn = Shapes::StructureShape.new(name: 'InvalidArn') InvalidDefinition = Shapes::StructureShape.new(name: 'InvalidDefinition') InvalidExecutionInput = Shapes::StructureShape.new(name: 'InvalidExecutionInput') @@ -149,6 +159,7 @@ module ClientApi RedriveExecutionInput = Shapes::StructureShape.new(name: 'RedriveExecutionInput') RedriveExecutionOutput = Shapes::StructureShape.new(name: 'RedriveExecutionOutput') ResourceNotFound = Shapes::StructureShape.new(name: 'ResourceNotFound') + RevealSecrets = Shapes::BooleanShape.new(name: 'RevealSecrets') ReverseOrder = Shapes::BooleanShape.new(name: 'ReverseOrder') RevisionId = Shapes::StringShape.new(name: 'RevisionId') RoutingConfigurationList = Shapes::ListShape.new(name: 'RoutingConfigurationList') @@ -183,6 +194,7 @@ module ClientApi StateMachineTypeNotSupported = Shapes::StructureShape.new(name: 'StateMachineTypeNotSupported') StateMachineVersionList = Shapes::ListShape.new(name: 'StateMachineVersionList') StateMachineVersionListItem = Shapes::StructureShape.new(name: 'StateMachineVersionListItem') + StateName = Shapes::StringShape.new(name: 'StateName') StopExecutionInput = Shapes::StructureShape.new(name: 'StopExecutionInput') StopExecutionOutput = Shapes::StructureShape.new(name: 'StopExecutionOutput') SyncExecutionStatus = Shapes::StringShape.new(name: 'SyncExecutionStatus') @@ -205,6 +217,9 @@ module ClientApi TaskTimedOut = Shapes::StructureShape.new(name: 'TaskTimedOut') TaskTimedOutEventDetails = Shapes::StructureShape.new(name: 'TaskTimedOutEventDetails') TaskToken = Shapes::StringShape.new(name: 'TaskToken') + TestExecutionStatus = Shapes::StringShape.new(name: 'TestExecutionStatus') + TestStateInput = Shapes::StructureShape.new(name: 'TestStateInput') + TestStateOutput = Shapes::StructureShape.new(name: 'TestStateOutput') TimeoutInSeconds = Shapes::IntegerShape.new(name: 'TimeoutInSeconds') Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') ToleratedFailureCount = Shapes::IntegerShape.new(name: 'ToleratedFailureCount') @@ -212,6 +227,7 @@ module ClientApi TooManyTags = Shapes::StructureShape.new(name: 'TooManyTags') TraceHeader = Shapes::StringShape.new(name: 'TraceHeader') TracingConfiguration = Shapes::StructureShape.new(name: 'TracingConfiguration') + URL = Shapes::StringShape.new(name: 'URL') UnsignedInteger = Shapes::IntegerShape.new(name: 'UnsignedInteger') UnsignedLong = Shapes::IntegerShape.new(name: 'UnsignedLong') UntagResourceInput = Shapes::StructureShape.new(name: 'UntagResourceInput') @@ -550,6 +566,30 @@ module ClientApi HistoryEventList.member = Shapes::ShapeRef.new(shape: HistoryEvent) + InspectionData.add_member(:input, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "input")) + InspectionData.add_member(:after_input_path, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "afterInputPath")) + InspectionData.add_member(:after_parameters, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "afterParameters")) + InspectionData.add_member(:result, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "result")) + InspectionData.add_member(:after_result_selector, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "afterResultSelector")) + InspectionData.add_member(:after_result_path, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "afterResultPath")) + InspectionData.add_member(:request, Shapes::ShapeRef.new(shape: InspectionDataRequest, location_name: "request")) + InspectionData.add_member(:response, Shapes::ShapeRef.new(shape: InspectionDataResponse, location_name: "response")) + InspectionData.struct_class = Types::InspectionData + + InspectionDataRequest.add_member(:protocol, Shapes::ShapeRef.new(shape: HTTPProtocol, location_name: "protocol")) + InspectionDataRequest.add_member(:method, Shapes::ShapeRef.new(shape: HTTPMethod, location_name: "method")) + InspectionDataRequest.add_member(:url, Shapes::ShapeRef.new(shape: URL, location_name: "url")) + InspectionDataRequest.add_member(:headers, Shapes::ShapeRef.new(shape: HTTPHeaders, location_name: "headers")) + InspectionDataRequest.add_member(:body, Shapes::ShapeRef.new(shape: HTTPBody, location_name: "body")) + InspectionDataRequest.struct_class = Types::InspectionDataRequest + + InspectionDataResponse.add_member(:protocol, Shapes::ShapeRef.new(shape: HTTPProtocol, location_name: "protocol")) + InspectionDataResponse.add_member(:status_code, Shapes::ShapeRef.new(shape: HTTPStatusCode, location_name: "statusCode")) + InspectionDataResponse.add_member(:status_message, Shapes::ShapeRef.new(shape: HTTPStatusMessage, location_name: "statusMessage")) + InspectionDataResponse.add_member(:headers, Shapes::ShapeRef.new(shape: HTTPHeaders, location_name: "headers")) + InspectionDataResponse.add_member(:body, Shapes::ShapeRef.new(shape: HTTPBody, location_name: "body")) + InspectionDataResponse.struct_class = Types::InspectionDataResponse + InvalidArn.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "message")) InvalidArn.struct_class = Types::InvalidArn @@ -930,6 +970,21 @@ module ClientApi TaskTimedOutEventDetails.add_member(:cause, Shapes::ShapeRef.new(shape: SensitiveCause, location_name: "cause")) TaskTimedOutEventDetails.struct_class = Types::TaskTimedOutEventDetails + TestStateInput.add_member(:definition, Shapes::ShapeRef.new(shape: Definition, required: true, location_name: "definition")) + TestStateInput.add_member(:role_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "roleArn")) + TestStateInput.add_member(:input, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "input")) + TestStateInput.add_member(:inspection_level, Shapes::ShapeRef.new(shape: InspectionLevel, location_name: "inspectionLevel")) + TestStateInput.add_member(:reveal_secrets, Shapes::ShapeRef.new(shape: RevealSecrets, location_name: "revealSecrets")) + TestStateInput.struct_class = Types::TestStateInput + + TestStateOutput.add_member(:output, Shapes::ShapeRef.new(shape: SensitiveData, location_name: "output")) + TestStateOutput.add_member(:error, Shapes::ShapeRef.new(shape: SensitiveError, location_name: "error")) + TestStateOutput.add_member(:cause, Shapes::ShapeRef.new(shape: SensitiveCause, location_name: "cause")) + TestStateOutput.add_member(:inspection_data, Shapes::ShapeRef.new(shape: InspectionData, location_name: "inspectionData")) + TestStateOutput.add_member(:next_state, Shapes::ShapeRef.new(shape: StateName, location_name: "nextState")) + TestStateOutput.add_member(:status, Shapes::ShapeRef.new(shape: TestExecutionStatus, location_name: "status")) + TestStateOutput.struct_class = Types::TestStateOutput + TooManyTags.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "message")) TooManyTags.add_member(:resource_name, Shapes::ShapeRef.new(shape: Arn, location_name: "resourceName")) TooManyTags.struct_class = Types::TooManyTags @@ -1389,6 +1444,21 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: TooManyTags) end) + api.add_operation(:test_state, Seahorse::Model::Operation.new.tap do |o| + o.name = "TestState" + o.http_method = "POST" + o.http_request_uri = "/" + o.endpoint_pattern = { + "hostPrefix" => "sync-", + } + o.input = Shapes::ShapeRef.new(shape: TestStateInput) + o.output = Shapes::ShapeRef.new(shape: TestStateOutput) + o.errors << Shapes::ShapeRef.new(shape: InvalidArn) + o.errors << Shapes::ShapeRef.new(shape: InvalidDefinition) + o.errors << Shapes::ShapeRef.new(shape: InvalidExecutionInput) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + end) + api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o| o.name = "UntagResource" o.http_method = "POST" @@ -1438,6 +1508,7 @@ module ClientApi o.errors << Shapes::ShapeRef.new(shape: InvalidArn) o.errors << Shapes::ShapeRef.new(shape: ResourceNotFound) o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: StateMachineDeleting) end) end diff --git a/gems/aws-sdk-states/lib/aws-sdk-states/endpoints.rb b/gems/aws-sdk-states/lib/aws-sdk-states/endpoints.rb index 3650ff56ee5..e2776361c48 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states/endpoints.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states/endpoints.rb @@ -446,6 +446,20 @@ def self.build(context) end end + class TestState + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::States::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + class UntagResource def self.build(context) unless context.config.regional_endpoint diff --git a/gems/aws-sdk-states/lib/aws-sdk-states/plugins/endpoints.rb b/gems/aws-sdk-states/lib/aws-sdk-states/plugins/endpoints.rb index a9ffe85c38f..00f4c9feb87 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states/plugins/endpoints.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states/plugins/endpoints.rb @@ -118,6 +118,8 @@ def parameters_for_operation(context) Aws::States::Endpoints::StopExecution.build(context) when :tag_resource Aws::States::Endpoints::TagResource.build(context) + when :test_state + Aws::States::Endpoints::TestState.build(context) when :untag_resource Aws::States::Endpoints::UntagResource.build(context) when :update_map_run diff --git a/gems/aws-sdk-states/lib/aws-sdk-states/types.rb b/gems/aws-sdk-states/lib/aws-sdk-states/types.rb index 0fb4ebc557b..b44d04927a8 100644 --- a/gems/aws-sdk-states/lib/aws-sdk-states/types.rb +++ b/gems/aws-sdk-states/lib/aws-sdk-states/types.rb @@ -759,8 +759,7 @@ class DescribeExecutionInput < Struct.new( # @!attribute [rw] redrive_count # The number of times you've redriven an execution. If you have not # yet redriven an execution, the `redriveCount` is 0. This count is - # not updated for redrives that failed to start or are pending to be - # redriven. + # only updated if you successfully redrive an execution. # @return [Integer] # # @!attribute [rw] redrive_date @@ -914,9 +913,8 @@ class DescribeMapRunInput < Struct.new( # # @!attribute [rw] redrive_count # The number of times you've redriven a Map Run. If you have not yet - # redriven a Map Run, the `redriveCount` is 0. This count is not - # updated for redrives that failed to start or are pending to be - # redriven. + # redriven a Map Run, the `redriveCount` is 0. This count is only + # updated if you successfully redrive a Map Run. # @return [Integer] # # @!attribute [rw] redrive_date @@ -1371,8 +1369,7 @@ class ExecutionLimitExceeded < Struct.new( # @!attribute [rw] redrive_count # The number of times you've redriven an execution. If you have not # yet redriven an execution, the `redriveCount` is 0. This count is - # not updated for redrives that failed to start or are pending to be - # redriven. + # only updated when you successfully redrive an execution. # @return [Integer] # # @!attribute [rw] redrive_date @@ -1852,6 +1849,149 @@ class HistoryEventExecutionDataDetails < Struct.new( include Aws::Structure end + # Contains additional details about the state's execution, including + # its input and output data processing flow, and HTTP request and + # response information. + # + # @!attribute [rw] input + # The raw state input. + # @return [String] + # + # @!attribute [rw] after_input_path + # The input after Step Functions applies the [InputPath][1] filter. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-inputpath + # @return [String] + # + # @!attribute [rw] after_parameters + # The effective input after Step Functions applies the [Parameters][1] + # filter. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters + # @return [String] + # + # @!attribute [rw] result + # The state's raw result. + # @return [String] + # + # @!attribute [rw] after_result_selector + # The effective result after Step Functions applies the + # [ResultSelector][1] filter. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-resultselector + # @return [String] + # + # @!attribute [rw] after_result_path + # The effective result combined with the raw state input after Step + # Functions applies the [ResultPath][1] filter. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/input-output-resultpath.html + # @return [String] + # + # @!attribute [rw] request + # The raw HTTP request that is sent when you test an HTTP Task. + # @return [Types::InspectionDataRequest] + # + # @!attribute [rw] response + # The raw HTTP response that is returned when you test an HTTP Task. + # @return [Types::InspectionDataResponse] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/InspectionData AWS API Documentation + # + class InspectionData < Struct.new( + :input, + :after_input_path, + :after_parameters, + :result, + :after_result_selector, + :after_result_path, + :request, + :response) + SENSITIVE = [:input, :after_input_path, :after_parameters, :result, :after_result_selector, :after_result_path] + include Aws::Structure + end + + # Contains additional details about the state's execution, including + # its input and output data processing flow, and HTTP request + # information. + # + # @!attribute [rw] protocol + # The protocol used to make the HTTP request. + # @return [String] + # + # @!attribute [rw] method + # The HTTP method used for the HTTP request. + # @return [String] + # + # @!attribute [rw] url + # The API endpoint used for the HTTP request. + # @return [String] + # + # @!attribute [rw] headers + # The request headers associated with the HTTP request. + # @return [String] + # + # @!attribute [rw] body + # The request body for the HTTP request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/InspectionDataRequest AWS API Documentation + # + class InspectionDataRequest < Struct.new( + :protocol, + :method, + :url, + :headers, + :body) + SENSITIVE = [] + include Aws::Structure + end + + # Contains additional details about the state's execution, including + # its input and output data processing flow, and HTTP response + # information. The `inspectionLevel` request parameter specifies which + # details are returned. + # + # @!attribute [rw] protocol + # The protocol used to return the HTTP response. + # @return [String] + # + # @!attribute [rw] status_code + # The HTTP response status code for the HTTP response. + # @return [String] + # + # @!attribute [rw] status_message + # The message associated with the HTTP status code. + # @return [String] + # + # @!attribute [rw] headers + # The response headers associated with the HTTP response. + # @return [String] + # + # @!attribute [rw] body + # The HTTP response returned. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/InspectionDataResponse AWS API Documentation + # + class InspectionDataResponse < Struct.new( + :protocol, + :status_code, + :status_message, + :headers, + :body) + SENSITIVE = [] + include Aws::Structure + end + # The provided Amazon Resource Name (ARN) is not valid. # # @!attribute [rw] message @@ -2610,9 +2750,9 @@ class MapIterationEventDetails < Struct.new( # @!attribute [rw] failures_not_redrivable # The number of `FAILED`, `ABORTED`, or `TIMED_OUT` child workflow # executions that cannot be redriven because their execution status is - # terminal. For example, if your execution event history contains - # 25,000 entries, or the `toleratedFailureCount` or - # `toleratedFailurePercentage` for the Distributed Map has exceeded. + # terminal. For example, child workflows with an execution status of + # `FAILED`, `ABORTED`, or `TIMED_OUT` and a `redriveStatus` of + # `NOT_REDRIVABLE`. # @return [Integer] # # @!attribute [rw] pending_redrive @@ -2711,10 +2851,9 @@ class MapRunFailedEventDetails < Struct.new( # @!attribute [rw] failures_not_redrivable # The number of `FAILED`, `ABORTED`, or `TIMED_OUT` items in child # workflow executions that cannot be redriven because the execution - # status of those child workflows is terminal. For example, if your - # execution event history contains 25,000 entries, or the - # `toleratedFailureCount` or `toleratedFailurePercentage` for the - # Distributed Map has exceeded. + # status of those child workflows is terminal. For example, child + # workflows with an execution status of `FAILED`, `ABORTED`, or + # `TIMED_OUT` and a `redriveStatus` of `NOT_REDRIVABLE`. # @return [Integer] # # @!attribute [rw] pending_redrive @@ -2900,8 +3039,10 @@ class PublishStateMachineVersionOutput < Struct.new( # A unique, case-sensitive identifier that you provide to ensure the # idempotency of the request. If you don’t specify a client token, the # Amazon Web Services SDK automatically generates a client token and - # uses it for the request to ensure idempotency. The API uses one of - # the last 10 client tokens provided. + # uses it for the request to ensure idempotency. The API will return + # idempotent responses for the last 10 client tokens used to + # successfully redrive the execution. These client tokens are valid + # for up to 15 minutes after they are first used. # # **A suitable default value is auto-generated.** You should normally # not need to pass this option. @@ -3913,6 +4054,118 @@ class TaskTimedOutEventDetails < Struct.new( include Aws::Structure end + # @!attribute [rw] definition + # The [Amazon States Language][1] (ASL) definition of the state. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html + # @return [String] + # + # @!attribute [rw] role_arn + # The Amazon Resource Name (ARN) of the execution role with the + # required IAM permissions for the state. + # @return [String] + # + # @!attribute [rw] input + # A string that contains the JSON input data for the state. + # @return [String] + # + # @!attribute [rw] inspection_level + # Determines the values to return when a state is tested. You can + # specify one of the following types: + # + # * `INFO`: Shows the final state output. By default, Step Functions + # sets `inspectionLevel` to `INFO` if you don't specify a level. + # + # * `DEBUG`: Shows the final state output along with the input and + # output data processing result. + # + # * `TRACE`: Shows the HTTP request and response for an HTTP Task. + # This level also shows the final state output along with the input + # and output data processing result. + # + # Each of these levels also provide information about the status of + # the state execution and the next state to transition to. + # @return [String] + # + # @!attribute [rw] reveal_secrets + # Specifies whether or not to include secret information in the test + # result. For HTTP Tasks, a secret includes the data that an + # EventBridge connection adds to modify the HTTP request headers, + # query parameters, and body. Step Functions doesn't omit any + # information included in the state definition or the HTTP response. + # + # If you set `revealSecrets` to `true`, you must make sure that the + # IAM user that calls the `TestState` API has permission for the + # `states:RevealSecrets` action. For an example of IAM policy that + # sets the `states:RevealSecrets` permission, see [IAM permissions to + # test a state][1]. Without this permission, Step Functions throws an + # access denied error. + # + # By default, `revealSecrets` is set to `false`. + # + # + # + # [1]: https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html#test-state-permissions + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/TestStateInput AWS API Documentation + # + class TestStateInput < Struct.new( + :definition, + :role_arn, + :input, + :inspection_level, + :reveal_secrets) + SENSITIVE = [:definition, :input] + include Aws::Structure + end + + # @!attribute [rw] output + # The JSON output data of the state. Length constraints apply to the + # payload size, and are expressed as bytes in UTF-8 encoding. + # @return [String] + # + # @!attribute [rw] error + # The error returned when the execution of a state fails. + # @return [String] + # + # @!attribute [rw] cause + # A detailed explanation of the cause for the error when the execution + # of a state fails. + # @return [String] + # + # @!attribute [rw] inspection_data + # Returns additional details about the state's execution, including + # its input and output data processing flow, and HTTP request and + # response information. The `inspectionLevel` request parameter + # specifies which details are returned. + # @return [Types::InspectionData] + # + # @!attribute [rw] next_state + # The name of the next state to transition to. If you haven't defined + # a next state in your definition or if the execution of the state + # fails, this field doesn't contain a value. + # @return [String] + # + # @!attribute [rw] status + # The execution status of the state. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/TestStateOutput AWS API Documentation + # + class TestStateOutput < Struct.new( + :output, + :error, + :cause, + :inspection_data, + :next_state, + :status) + SENSITIVE = [:output, :error, :cause, :inspection_data] + include Aws::Structure + end + # You've exceeded the number of tags allowed for a resource. See the [ # Limits Topic][1] in the Step Functions Developer Guide. # diff --git a/gems/aws-sdk-transcribeservice/CHANGELOG.md b/gems/aws-sdk-transcribeservice/CHANGELOG.md index 57464fa4ac8..814c93613c3 100644 --- a/gems/aws-sdk-transcribeservice/CHANGELOG.md +++ b/gems/aws-sdk-transcribeservice/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.92.0 (2023-11-27) +------------------ + +* Feature - This release adds support for transcriptions from audio sources in 64 new languages and introduces generative call summarization in Transcribe Call Analytics (Post call) + 1.91.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-transcribeservice/VERSION b/gems/aws-sdk-transcribeservice/VERSION index 6979a6c0661..7f229af9647 100644 --- a/gems/aws-sdk-transcribeservice/VERSION +++ b/gems/aws-sdk-transcribeservice/VERSION @@ -1 +1 @@ -1.91.0 +1.92.0 diff --git a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice.rb b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice.rb index a7e455abdea..12c59170750 100644 --- a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice.rb +++ b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice.rb @@ -52,6 +52,6 @@ # @!group service module Aws::TranscribeService - GEM_VERSION = '1.91.0' + GEM_VERSION = '1.92.0' end diff --git a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client.rb b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client.rb index 57f656340ca..1eb58aceb39 100644 --- a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client.rb +++ b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client.rb @@ -793,7 +793,7 @@ def create_language_model(params = {}, options = {}) # # resp = client.create_medical_vocabulary({ # vocabulary_name: "VocabularyName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # vocabulary_file_uri: "Uri", # required # tags: [ # { @@ -806,7 +806,7 @@ def create_language_model(params = {}, options = {}) # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # resp.last_modified_time #=> Time # resp.failure_reason #=> String @@ -936,7 +936,7 @@ def create_medical_vocabulary(params = {}, options = {}) # # resp = client.create_vocabulary({ # vocabulary_name: "VocabularyName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # phrases: ["Phrase"], # vocabulary_file_uri: "Uri", # tags: [ @@ -951,7 +951,7 @@ def create_medical_vocabulary(params = {}, options = {}) # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # resp.last_modified_time #=> Time # resp.failure_reason #=> String @@ -1078,7 +1078,7 @@ def create_vocabulary(params = {}, options = {}) # # resp = client.create_vocabulary_filter({ # vocabulary_filter_name: "VocabularyFilterName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # words: ["Word"], # vocabulary_filter_file_uri: "Uri", # tags: [ @@ -1093,7 +1093,7 @@ def create_vocabulary(params = {}, options = {}) # @example Response structure # # resp.vocabulary_filter_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.last_modified_time #=> Time # # @see http://docs.aws.amazon.com/goto/WebAPI/transcribe-2017-10-26/CreateVocabularyFilter AWS API Documentation @@ -1471,7 +1471,7 @@ def get_call_analytics_category(params = {}, options = {}) # # resp.call_analytics_job.call_analytics_job_name #=> String # resp.call_analytics_job.call_analytics_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.call_analytics_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.call_analytics_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.call_analytics_job.media_sample_rate_hertz #=> Integer # resp.call_analytics_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.call_analytics_job.media.media_file_uri #=> String @@ -1493,11 +1493,12 @@ def get_call_analytics_category(params = {}, options = {}) # resp.call_analytics_job.settings.content_redaction.pii_entity_types #=> Array # resp.call_analytics_job.settings.content_redaction.pii_entity_types[0] #=> String, one of "BANK_ACCOUNT_NUMBER", "BANK_ROUTING", "CREDIT_DEBIT_NUMBER", "CREDIT_DEBIT_CVV", "CREDIT_DEBIT_EXPIRY", "PIN", "EMAIL", "ADDRESS", "NAME", "PHONE", "SSN", "ALL" # resp.call_analytics_job.settings.language_options #=> Array - # resp.call_analytics_job.settings.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.call_analytics_job.settings.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.call_analytics_job.settings.language_id_settings #=> Hash # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].vocabulary_name #=> String # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].vocabulary_filter_name #=> String # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].language_model_name #=> String + # resp.call_analytics_job.settings.summarization.generate_abstractive_summary #=> Boolean # resp.call_analytics_job.channel_definitions #=> Array # resp.call_analytics_job.channel_definitions[0].channel_id #=> Integer # resp.call_analytics_job.channel_definitions[0].participant_role #=> String, one of "AGENT", "CUSTOMER" @@ -1539,7 +1540,7 @@ def get_call_analytics_job(params = {}, options = {}) # # resp.medical_transcription_job.medical_transcription_job_name #=> String # resp.medical_transcription_job.transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.medical_transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.medical_transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.medical_transcription_job.media_sample_rate_hertz #=> Integer # resp.medical_transcription_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.medical_transcription_job.media.media_file_uri #=> String @@ -1602,7 +1603,7 @@ def get_medical_transcription_job(params = {}, options = {}) # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # resp.last_modified_time #=> Time # resp.failure_reason #=> String @@ -1648,7 +1649,7 @@ def get_medical_vocabulary(params = {}, options = {}) # # resp.transcription_job.transcription_job_name #=> String # resp.transcription_job.transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.media_sample_rate_hertz #=> Integer # resp.transcription_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.transcription_job.media.media_file_uri #=> String @@ -1677,10 +1678,10 @@ def get_medical_vocabulary(params = {}, options = {}) # resp.transcription_job.identify_language #=> Boolean # resp.transcription_job.identify_multiple_languages #=> Boolean # resp.transcription_job.language_options #=> Array - # resp.transcription_job.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.identified_language_score #=> Float # resp.transcription_job.language_codes #=> Array - # resp.transcription_job.language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.language_codes[0].duration_in_seconds #=> Float # resp.transcription_job.tags #=> Array # resp.transcription_job.tags[0].key #=> String @@ -1738,7 +1739,7 @@ def get_transcription_job(params = {}, options = {}) # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # resp.last_modified_time #=> Time # resp.failure_reason #=> String @@ -1777,7 +1778,7 @@ def get_vocabulary(params = {}, options = {}) # @example Response structure # # resp.vocabulary_filter_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.last_modified_time #=> Time # resp.download_uri #=> String # @@ -1943,7 +1944,7 @@ def list_call_analytics_categories(params = {}, options = {}) # resp.call_analytics_job_summaries[0].creation_time #=> Time # resp.call_analytics_job_summaries[0].start_time #=> Time # resp.call_analytics_job_summaries[0].completion_time #=> Time - # resp.call_analytics_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.call_analytics_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.call_analytics_job_summaries[0].call_analytics_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" # resp.call_analytics_job_summaries[0].failure_reason #=> String # @@ -2082,7 +2083,7 @@ def list_language_models(params = {}, options = {}) # resp.medical_transcription_job_summaries[0].creation_time #=> Time # resp.medical_transcription_job_summaries[0].start_time #=> Time # resp.medical_transcription_job_summaries[0].completion_time #=> Time - # resp.medical_transcription_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.medical_transcription_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.medical_transcription_job_summaries[0].transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" # resp.medical_transcription_job_summaries[0].failure_reason #=> String # resp.medical_transcription_job_summaries[0].output_location_type #=> String, one of "CUSTOMER_BUCKET", "SERVICE_BUCKET" @@ -2152,7 +2153,7 @@ def list_medical_transcription_jobs(params = {}, options = {}) # resp.next_token #=> String # resp.vocabularies #=> Array # resp.vocabularies[0].vocabulary_name #=> String - # resp.vocabularies[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.vocabularies[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabularies[0].last_modified_time #=> Time # resp.vocabularies[0].vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # @@ -2269,7 +2270,7 @@ def list_tags_for_resource(params = {}, options = {}) # resp.transcription_job_summaries[0].creation_time #=> Time # resp.transcription_job_summaries[0].start_time #=> Time # resp.transcription_job_summaries[0].completion_time #=> Time - # resp.transcription_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job_summaries[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job_summaries[0].transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" # resp.transcription_job_summaries[0].failure_reason #=> String # resp.transcription_job_summaries[0].output_location_type #=> String, one of "CUSTOMER_BUCKET", "SERVICE_BUCKET" @@ -2282,7 +2283,7 @@ def list_tags_for_resource(params = {}, options = {}) # resp.transcription_job_summaries[0].identify_multiple_languages #=> Boolean # resp.transcription_job_summaries[0].identified_language_score #=> Float # resp.transcription_job_summaries[0].language_codes #=> Array - # resp.transcription_job_summaries[0].language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job_summaries[0].language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job_summaries[0].language_codes[0].duration_in_seconds #=> Float # resp.transcription_job_summaries[0].toxicity_detection #=> Array # resp.transcription_job_summaries[0].toxicity_detection[0].toxicity_categories #=> Array @@ -2350,7 +2351,7 @@ def list_transcription_jobs(params = {}, options = {}) # resp.next_token #=> String # resp.vocabularies #=> Array # resp.vocabularies[0].vocabulary_name #=> String - # resp.vocabularies[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.vocabularies[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabularies[0].last_modified_time #=> Time # resp.vocabularies[0].vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # @@ -2407,7 +2408,7 @@ def list_vocabularies(params = {}, options = {}) # resp.next_token #=> String # resp.vocabulary_filters #=> Array # resp.vocabulary_filters[0].vocabulary_filter_name #=> String - # resp.vocabulary_filters[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.vocabulary_filters[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.vocabulary_filters[0].last_modified_time #=> Time # # @see http://docs.aws.amazon.com/goto/WebAPI/transcribe-2017-10-26/ListVocabularyFilters AWS API Documentation @@ -2604,7 +2605,7 @@ def list_vocabulary_filters(params = {}, options = {}) # redaction_output: "redacted", # required, accepts redacted, redacted_and_unredacted # pii_entity_types: ["BANK_ACCOUNT_NUMBER"], # accepts BANK_ACCOUNT_NUMBER, BANK_ROUTING, CREDIT_DEBIT_NUMBER, CREDIT_DEBIT_CVV, CREDIT_DEBIT_EXPIRY, PIN, EMAIL, ADDRESS, NAME, PHONE, SSN, ALL # }, - # language_options: ["af-ZA"], # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_options: ["af-ZA"], # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # language_id_settings: { # "af-ZA" => { # vocabulary_name: "VocabularyName", @@ -2612,6 +2613,9 @@ def list_vocabulary_filters(params = {}, options = {}) # language_model_name: "ModelName", # }, # }, + # summarization: { + # generate_abstractive_summary: false, # required + # }, # }, # channel_definitions: [ # { @@ -2625,7 +2629,7 @@ def list_vocabulary_filters(params = {}, options = {}) # # resp.call_analytics_job.call_analytics_job_name #=> String # resp.call_analytics_job.call_analytics_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.call_analytics_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.call_analytics_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.call_analytics_job.media_sample_rate_hertz #=> Integer # resp.call_analytics_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.call_analytics_job.media.media_file_uri #=> String @@ -2647,11 +2651,12 @@ def list_vocabulary_filters(params = {}, options = {}) # resp.call_analytics_job.settings.content_redaction.pii_entity_types #=> Array # resp.call_analytics_job.settings.content_redaction.pii_entity_types[0] #=> String, one of "BANK_ACCOUNT_NUMBER", "BANK_ROUTING", "CREDIT_DEBIT_NUMBER", "CREDIT_DEBIT_CVV", "CREDIT_DEBIT_EXPIRY", "PIN", "EMAIL", "ADDRESS", "NAME", "PHONE", "SSN", "ALL" # resp.call_analytics_job.settings.language_options #=> Array - # resp.call_analytics_job.settings.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.call_analytics_job.settings.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.call_analytics_job.settings.language_id_settings #=> Hash # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].vocabulary_name #=> String # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].vocabulary_filter_name #=> String # resp.call_analytics_job.settings.language_id_settings["LanguageCode"].language_model_name #=> String + # resp.call_analytics_job.settings.summarization.generate_abstractive_summary #=> Boolean # resp.call_analytics_job.channel_definitions #=> Array # resp.call_analytics_job.channel_definitions[0].channel_id #=> Integer # resp.call_analytics_job.channel_definitions[0].participant_role #=> String, one of "AGENT", "CUSTOMER" @@ -2910,7 +2915,7 @@ def start_call_analytics_job(params = {}, options = {}) # # resp = client.start_medical_transcription_job({ # medical_transcription_job_name: "TranscriptionJobName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # media_sample_rate_hertz: 1, # media_format: "mp3", # accepts mp3, mp4, wav, flac, ogg, amr, webm, m4a # media: { # required @@ -2946,7 +2951,7 @@ def start_call_analytics_job(params = {}, options = {}) # # resp.medical_transcription_job.medical_transcription_job_name #=> String # resp.medical_transcription_job.transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.medical_transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.medical_transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.medical_transcription_job.media_sample_rate_hertz #=> Integer # resp.medical_transcription_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.medical_transcription_job.media.media_file_uri #=> String @@ -3351,7 +3356,7 @@ def start_medical_transcription_job(params = {}, options = {}) # # resp = client.start_transcription_job({ # transcription_job_name: "TranscriptionJobName", # required - # language_code: "af-ZA", # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # media_sample_rate_hertz: 1, # media_format: "mp3", # accepts mp3, mp4, wav, flac, ogg, amr, webm, m4a # media: { # required @@ -3388,7 +3393,7 @@ def start_medical_transcription_job(params = {}, options = {}) # }, # identify_language: false, # identify_multiple_languages: false, - # language_options: ["af-ZA"], # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_options: ["af-ZA"], # accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # subtitles: { # formats: ["vtt"], # accepts vtt, srt # output_start_index: 1, @@ -3417,7 +3422,7 @@ def start_medical_transcription_job(params = {}, options = {}) # # resp.transcription_job.transcription_job_name #=> String # resp.transcription_job.transcription_job_status #=> String, one of "QUEUED", "IN_PROGRESS", "FAILED", "COMPLETED" - # resp.transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.media_sample_rate_hertz #=> Integer # resp.transcription_job.media_format #=> String, one of "mp3", "mp4", "wav", "flac", "ogg", "amr", "webm", "m4a" # resp.transcription_job.media.media_file_uri #=> String @@ -3446,10 +3451,10 @@ def start_medical_transcription_job(params = {}, options = {}) # resp.transcription_job.identify_language #=> Boolean # resp.transcription_job.identify_multiple_languages #=> Boolean # resp.transcription_job.language_options #=> Array - # resp.transcription_job.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_options[0] #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.identified_language_score #=> Float # resp.transcription_job.language_codes #=> Array - # resp.transcription_job.language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.transcription_job.language_codes[0].language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.transcription_job.language_codes[0].duration_in_seconds #=> Float # resp.transcription_job.tags #=> Array # resp.transcription_job.tags[0].key #=> String @@ -3773,14 +3778,14 @@ def update_call_analytics_category(params = {}, options = {}) # # resp = client.update_medical_vocabulary({ # vocabulary_name: "VocabularyName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # vocabulary_file_uri: "Uri", # required # }) # # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.last_modified_time #=> Time # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # @@ -3877,7 +3882,7 @@ def update_medical_vocabulary(params = {}, options = {}) # # resp = client.update_vocabulary({ # vocabulary_name: "VocabularyName", # required - # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE + # language_code: "af-ZA", # required, accepts af-ZA, ar-AE, ar-SA, da-DK, de-CH, de-DE, en-AB, en-AU, en-GB, en-IE, en-IN, en-US, en-WL, es-ES, es-US, fa-IR, fr-CA, fr-FR, he-IL, hi-IN, id-ID, it-IT, ja-JP, ko-KR, ms-MY, nl-NL, pt-BR, pt-PT, ru-RU, ta-IN, te-IN, tr-TR, zh-CN, zh-TW, th-TH, en-ZA, en-NZ, vi-VN, sv-SE, ab-GE, ast-ES, az-AZ, ba-RU, be-BY, bg-BG, bn-IN, bs-BA, ca-ES, ckb-IQ, ckb-IR, cs-CZ, cy-WL, el-GR, et-ET, eu-ES, fi-FI, gl-ES, gu-IN, ha-NG, hr-HR, hu-HU, hy-AM, is-IS, ka-GE, kab-DZ, kk-KZ, kn-IN, ky-KG, lg-IN, lt-LT, lv-LV, mhr-RU, mi-NZ, mk-MK, ml-IN, mn-MN, mr-IN, mt-MT, no-NO, or-IN, pa-IN, pl-PL, ps-AF, ro-RO, rw-RW, si-LK, sk-SK, sl-SI, so-SO, sr-RS, su-ID, sw-BI, sw-KE, sw-RW, sw-TZ, sw-UG, tl-PH, tt-RU, ug-CN, uk-UA, uz-UZ, wo-SN, zu-ZA # phrases: ["Phrase"], # vocabulary_file_uri: "Uri", # data_access_role_arn: "DataAccessRoleArn", @@ -3886,7 +3891,7 @@ def update_medical_vocabulary(params = {}, options = {}) # @example Response structure # # resp.vocabulary_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.last_modified_time #=> Time # resp.vocabulary_state #=> String, one of "PENDING", "READY", "FAILED" # @@ -3973,7 +3978,7 @@ def update_vocabulary(params = {}, options = {}) # @example Response structure # # resp.vocabulary_filter_name #=> String - # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE" + # resp.language_code #=> String, one of "af-ZA", "ar-AE", "ar-SA", "da-DK", "de-CH", "de-DE", "en-AB", "en-AU", "en-GB", "en-IE", "en-IN", "en-US", "en-WL", "es-ES", "es-US", "fa-IR", "fr-CA", "fr-FR", "he-IL", "hi-IN", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "pt-BR", "pt-PT", "ru-RU", "ta-IN", "te-IN", "tr-TR", "zh-CN", "zh-TW", "th-TH", "en-ZA", "en-NZ", "vi-VN", "sv-SE", "ab-GE", "ast-ES", "az-AZ", "ba-RU", "be-BY", "bg-BG", "bn-IN", "bs-BA", "ca-ES", "ckb-IQ", "ckb-IR", "cs-CZ", "cy-WL", "el-GR", "et-ET", "eu-ES", "fi-FI", "gl-ES", "gu-IN", "ha-NG", "hr-HR", "hu-HU", "hy-AM", "is-IS", "ka-GE", "kab-DZ", "kk-KZ", "kn-IN", "ky-KG", "lg-IN", "lt-LT", "lv-LV", "mhr-RU", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "mt-MT", "no-NO", "or-IN", "pa-IN", "pl-PL", "ps-AF", "ro-RO", "rw-RW", "si-LK", "sk-SK", "sl-SI", "so-SO", "sr-RS", "su-ID", "sw-BI", "sw-KE", "sw-RW", "sw-TZ", "sw-UG", "tl-PH", "tt-RU", "ug-CN", "uk-UA", "uz-UZ", "wo-SN", "zu-ZA" # resp.last_modified_time #=> Time # # @see http://docs.aws.amazon.com/goto/WebAPI/transcribe-2017-10-26/UpdateVocabularyFilter AWS API Documentation @@ -3998,7 +4003,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-transcribeservice' - context[:gem_version] = '1.91.0' + context[:gem_version] = '1.92.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client_api.rb b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client_api.rb index 6c2e2a615df..d7e10471997 100644 --- a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client_api.rb +++ b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/client_api.rb @@ -160,6 +160,7 @@ module ClientApi SubtitleOutputStartIndex = Shapes::IntegerShape.new(name: 'SubtitleOutputStartIndex') Subtitles = Shapes::StructureShape.new(name: 'Subtitles') SubtitlesOutput = Shapes::StructureShape.new(name: 'SubtitlesOutput') + Summarization = Shapes::StructureShape.new(name: 'Summarization') Tag = Shapes::StructureShape.new(name: 'Tag') TagKey = Shapes::StringShape.new(name: 'TagKey') TagKeyList = Shapes::ListShape.new(name: 'TagKeyList') @@ -237,6 +238,7 @@ module ClientApi CallAnalyticsJobSettings.add_member(:content_redaction, Shapes::ShapeRef.new(shape: ContentRedaction, location_name: "ContentRedaction")) CallAnalyticsJobSettings.add_member(:language_options, Shapes::ShapeRef.new(shape: LanguageOptions, location_name: "LanguageOptions")) CallAnalyticsJobSettings.add_member(:language_id_settings, Shapes::ShapeRef.new(shape: LanguageIdSettingsMap, location_name: "LanguageIdSettings")) + CallAnalyticsJobSettings.add_member(:summarization, Shapes::ShapeRef.new(shape: Summarization, location_name: "Summarization")) CallAnalyticsJobSettings.struct_class = Types::CallAnalyticsJobSettings CallAnalyticsJobSummaries.member = Shapes::ShapeRef.new(shape: CallAnalyticsJobSummary) @@ -742,6 +744,9 @@ module ClientApi SubtitlesOutput.add_member(:output_start_index, Shapes::ShapeRef.new(shape: SubtitleOutputStartIndex, location_name: "OutputStartIndex")) SubtitlesOutput.struct_class = Types::SubtitlesOutput + Summarization.add_member(:generate_abstractive_summary, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "GenerateAbstractiveSummary")) + Summarization.struct_class = Types::Summarization + Tag.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, required: true, location_name: "Key")) Tag.add_member(:value, Shapes::ShapeRef.new(shape: TagValue, required: true, location_name: "Value")) Tag.struct_class = Types::Tag diff --git a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/endpoint_provider.rb b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/endpoint_provider.rb index 9ff6db7f871..ee6d2ed9052 100644 --- a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/endpoint_provider.rb +++ b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/endpoint_provider.rb @@ -32,11 +32,11 @@ def resolve_endpoint(parameters) raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" end if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) - if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) - if Aws::Endpoints::Matchers.string_equals?("aws", Aws::Endpoints::Matchers.attr(partition_result, "name")) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws") return Aws::Endpoints::Endpoint.new(url: "https://fips.transcribe.#{region}.amazonaws.com", headers: {}, properties: {}) end - if Aws::Endpoints::Matchers.string_equals?("aws-us-gov", Aws::Endpoints::Matchers.attr(partition_result, "name")) + if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-us-gov") return Aws::Endpoints::Endpoint.new(url: "https://fips.transcribe.#{region}.amazonaws.com", headers: {}, properties: {}) end return Aws::Endpoints::Endpoint.new(url: "https://transcribe-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) diff --git a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/types.rb b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/types.rb index cbf81fab54b..cbb765fde9e 100644 --- a/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/types.rb +++ b/gems/aws-sdk-transcribeservice/lib/aws-sdk-transcribeservice/types.rb @@ -367,6 +367,12 @@ class CallAnalyticsJob < Struct.new( # ` # @return [Hash] # + # @!attribute [rw] summarization + # Contains `GenerateAbstractiveSummary`, which is a required parameter + # if you want to enable Generative call summarization in your Call + # Analytics request. + # @return [Types::Summarization] + # # @see http://docs.aws.amazon.com/goto/WebAPI/transcribe-2017-10-26/CallAnalyticsJobSettings AWS API Documentation # class CallAnalyticsJobSettings < Struct.new( @@ -376,7 +382,8 @@ class CallAnalyticsJobSettings < Struct.new( :language_model_name, :content_redaction, :language_options, - :language_id_settings) + :language_id_settings, + :summarization) SENSITIVE = [] include Aws::Structure end @@ -4240,6 +4247,32 @@ class SubtitlesOutput < Struct.new( include Aws::Structure end + # Contains `GenerateAbstractiveSummary`, which is a required parameter + # if you want to enable Generative call summarization in your Call + # Analytics request. + # + # @!attribute [rw] generate_abstractive_summary + # Enables Generative call summarization in your Call Analytics request + # + # Generative call summarization provides a summary of the transcript + # including important components discussed in the conversation. + # + # For more information, see [Enabling generative call + # summarization][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/transcribe/latest/dg/tca-enable-summarization.html + # @return [Boolean] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/transcribe-2017-10-26/Summarization AWS API Documentation + # + class Summarization < Struct.new( + :generate_abstractive_summary) + SENSITIVE = [] + include Aws::Structure + end + # Adds metadata, in the form of a key:value pair, to the specified # resource. # diff --git a/gems/aws-sdk-workspaces/CHANGELOG.md b/gems/aws-sdk-workspaces/CHANGELOG.md index 4369173b8e9..5ac2d41ef59 100644 --- a/gems/aws-sdk-workspaces/CHANGELOG.md +++ b/gems/aws-sdk-workspaces/CHANGELOG.md @@ -1,6 +1,11 @@ Unreleased Changes ------------------ +1.93.0 (2023-11-27) +------------------ + +* Feature - The release introduces Multi-Region Resilience one-way data replication that allows you to replicate data from your primary WorkSpace to a standby WorkSpace in another AWS Region. DescribeWorkspaces now returns the status of data replication. + 1.92.0 (2023-11-22) ------------------ diff --git a/gems/aws-sdk-workspaces/VERSION b/gems/aws-sdk-workspaces/VERSION index 7f229af9647..95784efddbc 100644 --- a/gems/aws-sdk-workspaces/VERSION +++ b/gems/aws-sdk-workspaces/VERSION @@ -1 +1 @@ -1.92.0 +1.93.0 diff --git a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces.rb b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces.rb index 85296dfbc67..1363602e717 100644 --- a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces.rb +++ b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces.rb @@ -52,6 +52,6 @@ # @!group service module Aws::WorkSpaces - GEM_VERSION = '1.92.0' + GEM_VERSION = '1.93.0' end diff --git a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client.rb b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client.rb index a3e7c5489fc..d3d0d8b6f11 100644 --- a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client.rb +++ b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client.rb @@ -795,6 +795,7 @@ def create_ip_group(params = {}, options = {}) # value: "TagValue", # }, # ], + # data_replication: "NO_REPLICATION", # accepts NO_REPLICATION, PRIMARY_AS_SOURCE # }, # ], # }) @@ -808,6 +809,7 @@ def create_ip_group(params = {}, options = {}) # resp.failed_standby_requests[0].standby_workspace_request.tags #=> Array # resp.failed_standby_requests[0].standby_workspace_request.tags[0].key #=> String # resp.failed_standby_requests[0].standby_workspace_request.tags[0].value #=> String + # resp.failed_standby_requests[0].standby_workspace_request.data_replication #=> String, one of "NO_REPLICATION", "PRIMARY_AS_SOURCE" # resp.failed_standby_requests[0].error_code #=> String # resp.failed_standby_requests[0].error_message #=> String # resp.pending_standby_requests #=> Array @@ -1186,6 +1188,12 @@ def create_workspace_image(params = {}, options = {}) # resp.pending_requests[0].related_workspaces[0].region #=> String # resp.pending_requests[0].related_workspaces[0].state #=> String, one of "PENDING", "AVAILABLE", "IMPAIRED", "UNHEALTHY", "REBOOTING", "STARTING", "REBUILDING", "RESTORING", "MAINTENANCE", "ADMIN_MAINTENANCE", "TERMINATING", "TERMINATED", "SUSPENDED", "UPDATING", "STOPPING", "STOPPED", "ERROR" # resp.pending_requests[0].related_workspaces[0].type #=> String, one of "PRIMARY", "STANDBY" + # resp.pending_requests[0].data_replication_settings.data_replication #=> String, one of "NO_REPLICATION", "PRIMARY_AS_SOURCE" + # resp.pending_requests[0].data_replication_settings.recovery_snapshot_time #=> Time + # resp.pending_requests[0].standby_workspaces_properties #=> Array + # resp.pending_requests[0].standby_workspaces_properties[0].standby_workspace_id #=> String + # resp.pending_requests[0].standby_workspaces_properties[0].data_replication #=> String, one of "NO_REPLICATION", "PRIMARY_AS_SOURCE" + # resp.pending_requests[0].standby_workspaces_properties[0].recovery_snapshot_time #=> Time # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaces AWS API Documentation # @@ -2505,6 +2513,12 @@ def describe_workspace_snapshots(params = {}, options = {}) # resp.workspaces[0].related_workspaces[0].region #=> String # resp.workspaces[0].related_workspaces[0].state #=> String, one of "PENDING", "AVAILABLE", "IMPAIRED", "UNHEALTHY", "REBOOTING", "STARTING", "REBUILDING", "RESTORING", "MAINTENANCE", "ADMIN_MAINTENANCE", "TERMINATING", "TERMINATED", "SUSPENDED", "UPDATING", "STOPPING", "STOPPED", "ERROR" # resp.workspaces[0].related_workspaces[0].type #=> String, one of "PRIMARY", "STANDBY" + # resp.workspaces[0].data_replication_settings.data_replication #=> String, one of "NO_REPLICATION", "PRIMARY_AS_SOURCE" + # resp.workspaces[0].data_replication_settings.recovery_snapshot_time #=> Time + # resp.workspaces[0].standby_workspaces_properties #=> Array + # resp.workspaces[0].standby_workspaces_properties[0].standby_workspace_id #=> String + # resp.workspaces[0].standby_workspaces_properties[0].data_replication #=> String, one of "NO_REPLICATION", "PRIMARY_AS_SOURCE" + # resp.workspaces[0].standby_workspaces_properties[0].recovery_snapshot_time #=> Time # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaces AWS API Documentation @@ -3295,16 +3309,19 @@ def modify_workspace_creation_properties(params = {}, options = {}) # @option params [required, String] :workspace_id # The identifier of the WorkSpace. # - # @option params [required, Types::WorkspaceProperties] :workspace_properties + # @option params [Types::WorkspaceProperties] :workspace_properties # The properties of the WorkSpace. # + # @option params [String] :data_replication + # Indicates the data replication status. + # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.modify_workspace_properties({ # workspace_id: "WorkspaceId", # required - # workspace_properties: { # required + # workspace_properties: { # running_mode: "AUTO_STOP", # accepts AUTO_STOP, ALWAYS_ON, MANUAL # running_mode_auto_stop_timeout_in_minutes: 1, # root_volume_size_gib: 1, @@ -3313,6 +3330,7 @@ def modify_workspace_creation_properties(params = {}, options = {}) # protocols: ["PCOIP"], # accepts PCOIP, WSP # operating_system_name: "AMAZON_LINUX_2", # accepts AMAZON_LINUX_2, UBUNTU_18_04, UBUNTU_20_04, UBUNTU_22_04, UNKNOWN, WINDOWS_10, WINDOWS_11, WINDOWS_7, WINDOWS_SERVER_2016, WINDOWS_SERVER_2019, WINDOWS_SERVER_2022 # }, + # data_replication: "NO_REPLICATION", # accepts NO_REPLICATION, PRIMARY_AS_SOURCE # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceProperties AWS API Documentation @@ -3969,7 +3987,7 @@ def build_request(operation_name, params = {}) params: params, config: config) context[:gem_name] = 'aws-sdk-workspaces' - context[:gem_version] = '1.92.0' + context[:gem_version] = '1.93.0' Seahorse::Client::Request.new(handlers, context) end diff --git a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client_api.rb b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client_api.rb index 291667874ce..15af5c8b53a 100644 --- a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client_api.rb +++ b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/client_api.rb @@ -103,6 +103,8 @@ module ClientApi CreateWorkspaceImageResult = Shapes::StructureShape.new(name: 'CreateWorkspaceImageResult') CreateWorkspacesRequest = Shapes::StructureShape.new(name: 'CreateWorkspacesRequest') CreateWorkspacesResult = Shapes::StructureShape.new(name: 'CreateWorkspacesResult') + DataReplication = Shapes::StringShape.new(name: 'DataReplication') + DataReplicationSettings = Shapes::StructureShape.new(name: 'DataReplicationSettings') DedicatedTenancyCidrRangeList = Shapes::ListShape.new(name: 'DedicatedTenancyCidrRangeList') DedicatedTenancyManagementCidrRange = Shapes::StringShape.new(name: 'DedicatedTenancyManagementCidrRange') DedicatedTenancyModificationStateEnum = Shapes::StringShape.new(name: 'DedicatedTenancyModificationStateEnum') @@ -319,6 +321,8 @@ module ClientApi StandbyWorkspace = Shapes::StructureShape.new(name: 'StandbyWorkspace') StandbyWorkspaceRelationshipType = Shapes::StringShape.new(name: 'StandbyWorkspaceRelationshipType') StandbyWorkspacesList = Shapes::ListShape.new(name: 'StandbyWorkspacesList') + StandbyWorkspacesProperties = Shapes::StructureShape.new(name: 'StandbyWorkspacesProperties') + StandbyWorkspacesPropertiesList = Shapes::ListShape.new(name: 'StandbyWorkspacesPropertiesList') StartRequest = Shapes::StructureShape.new(name: 'StartRequest') StartWorkspaceRequests = Shapes::ListShape.new(name: 'StartWorkspaceRequests') StartWorkspacesRequest = Shapes::StructureShape.new(name: 'StartWorkspacesRequest') @@ -632,6 +636,10 @@ module ClientApi CreateWorkspacesResult.add_member(:pending_requests, Shapes::ShapeRef.new(shape: WorkspaceList, location_name: "PendingRequests")) CreateWorkspacesResult.struct_class = Types::CreateWorkspacesResult + DataReplicationSettings.add_member(:data_replication, Shapes::ShapeRef.new(shape: DataReplication, location_name: "DataReplication")) + DataReplicationSettings.add_member(:recovery_snapshot_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "RecoverySnapshotTime")) + DataReplicationSettings.struct_class = Types::DataReplicationSettings + DedicatedTenancyCidrRangeList.member = Shapes::ShapeRef.new(shape: DedicatedTenancyManagementCidrRange) DefaultClientBrandingAttributes.add_member(:logo_url, Shapes::ShapeRef.new(shape: ClientUrl, location_name: "LogoUrl")) @@ -1105,7 +1113,8 @@ module ClientApi ModifyWorkspaceCreationPropertiesResult.struct_class = Types::ModifyWorkspaceCreationPropertiesResult ModifyWorkspacePropertiesRequest.add_member(:workspace_id, Shapes::ShapeRef.new(shape: WorkspaceId, required: true, location_name: "WorkspaceId")) - ModifyWorkspacePropertiesRequest.add_member(:workspace_properties, Shapes::ShapeRef.new(shape: WorkspaceProperties, required: true, location_name: "WorkspaceProperties")) + ModifyWorkspacePropertiesRequest.add_member(:workspace_properties, Shapes::ShapeRef.new(shape: WorkspaceProperties, location_name: "WorkspaceProperties")) + ModifyWorkspacePropertiesRequest.add_member(:data_replication, Shapes::ShapeRef.new(shape: DataReplication, location_name: "DataReplication")) ModifyWorkspacePropertiesRequest.struct_class = Types::ModifyWorkspacePropertiesRequest ModifyWorkspacePropertiesResult.struct_class = Types::ModifyWorkspacePropertiesResult @@ -1241,10 +1250,18 @@ module ClientApi StandbyWorkspace.add_member(:volume_encryption_key, Shapes::ShapeRef.new(shape: VolumeEncryptionKey, location_name: "VolumeEncryptionKey")) StandbyWorkspace.add_member(:directory_id, Shapes::ShapeRef.new(shape: DirectoryId, required: true, location_name: "DirectoryId")) StandbyWorkspace.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags")) + StandbyWorkspace.add_member(:data_replication, Shapes::ShapeRef.new(shape: DataReplication, location_name: "DataReplication")) StandbyWorkspace.struct_class = Types::StandbyWorkspace StandbyWorkspacesList.member = Shapes::ShapeRef.new(shape: StandbyWorkspace) + StandbyWorkspacesProperties.add_member(:standby_workspace_id, Shapes::ShapeRef.new(shape: WorkspaceId, location_name: "StandbyWorkspaceId")) + StandbyWorkspacesProperties.add_member(:data_replication, Shapes::ShapeRef.new(shape: DataReplication, location_name: "DataReplication")) + StandbyWorkspacesProperties.add_member(:recovery_snapshot_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "RecoverySnapshotTime")) + StandbyWorkspacesProperties.struct_class = Types::StandbyWorkspacesProperties + + StandbyWorkspacesPropertiesList.member = Shapes::ShapeRef.new(shape: StandbyWorkspacesProperties) + StartRequest.add_member(:workspace_id, Shapes::ShapeRef.new(shape: WorkspaceId, location_name: "WorkspaceId")) StartRequest.struct_class = Types::StartRequest @@ -1370,6 +1387,8 @@ module ClientApi Workspace.add_member(:workspace_properties, Shapes::ShapeRef.new(shape: WorkspaceProperties, location_name: "WorkspaceProperties")) Workspace.add_member(:modification_states, Shapes::ShapeRef.new(shape: ModificationStateList, location_name: "ModificationStates")) Workspace.add_member(:related_workspaces, Shapes::ShapeRef.new(shape: RelatedWorkspaces, location_name: "RelatedWorkspaces")) + Workspace.add_member(:data_replication_settings, Shapes::ShapeRef.new(shape: DataReplicationSettings, location_name: "DataReplicationSettings")) + Workspace.add_member(:standby_workspaces_properties, Shapes::ShapeRef.new(shape: StandbyWorkspacesPropertiesList, location_name: "StandbyWorkspacesProperties")) Workspace.struct_class = Types::Workspace WorkspaceAccessProperties.add_member(:device_type_windows, Shapes::ShapeRef.new(shape: AccessPropertyValue, location_name: "DeviceTypeWindows")) diff --git a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/types.rb b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/types.rb index 129765c7219..f0e737b247c 100644 --- a/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/types.rb +++ b/gems/aws-sdk-workspaces/lib/aws-sdk-workspaces/types.rb @@ -944,6 +944,27 @@ class CreateWorkspacesResult < Struct.new( include Aws::Structure end + # Describes the data replication settings. + # + # @!attribute [rw] data_replication + # Indicates whether data replication is enabled, and if enabled, the + # type of data replication. + # @return [String] + # + # @!attribute [rw] recovery_snapshot_time + # The date and time at which the last successful snapshot was taken of + # the primary WorkSpace used for replicating data. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DataReplicationSettings AWS API Documentation + # + class DataReplicationSettings < Struct.new( + :data_replication, + :recovery_snapshot_time) + SENSITIVE = [] + include Aws::Structure + end + # Returns default client branding attributes that were imported. These # attributes display on the client login screen. # @@ -3093,11 +3114,16 @@ class ModifyWorkspaceCreationPropertiesResult < Aws::EmptyStructure; end # The properties of the WorkSpace. # @return [Types::WorkspaceProperties] # + # @!attribute [rw] data_replication + # Indicates the data replication status. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspacePropertiesRequest AWS API Documentation # class ModifyWorkspacePropertiesRequest < Struct.new( :workspace_id, - :workspace_properties) + :workspace_properties, + :data_replication) SENSITIVE = [] include Aws::Structure end @@ -3680,13 +3706,45 @@ class Snapshot < Struct.new( # The tags associated with the standby WorkSpace. # @return [Array] # + # @!attribute [rw] data_replication + # Indicates whether data replication is enabled, and if enabled, the + # type of data replication. + # @return [String] + # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StandbyWorkspace AWS API Documentation # class StandbyWorkspace < Struct.new( :primary_workspace_id, :volume_encryption_key, :directory_id, - :tags) + :tags, + :data_replication) + SENSITIVE = [] + include Aws::Structure + end + + # Describes the properties of the related standby WorkSpaces. + # + # @!attribute [rw] standby_workspace_id + # The identifier of the standby WorkSpace + # @return [String] + # + # @!attribute [rw] data_replication + # Indicates whether data replication is enabled, and if enabled, the + # type of data replication. + # @return [String] + # + # @!attribute [rw] recovery_snapshot_time + # The date and time at which the last successful snapshot was taken of + # the primary WorkSpace used for replicating data. + # @return [Time] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StandbyWorkspacesProperties AWS API Documentation + # + class StandbyWorkspacesProperties < Struct.new( + :standby_workspace_id, + :data_replication, + :recovery_snapshot_time) SENSITIVE = [] include Aws::Structure end @@ -4188,6 +4246,14 @@ class WorkSpaceApplicationDeployment < Struct.new( # WorkSpace. # @return [Array] # + # @!attribute [rw] data_replication_settings + # Indicates the settings of the data replication. + # @return [Types::DataReplicationSettings] + # + # @!attribute [rw] standby_workspaces_properties + # The properties of the standby WorkSpace + # @return [Array] + # # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/Workspace AWS API Documentation # class Workspace < Struct.new( @@ -4206,7 +4272,9 @@ class Workspace < Struct.new( :root_volume_encryption_enabled, :workspace_properties, :modification_states, - :related_workspaces) + :related_workspaces, + :data_replication_settings, + :standby_workspaces_properties) SENSITIVE = [] include Aws::Structure end diff --git a/gems/aws-sdk-workspacesthinclient/CHANGELOG.md b/gems/aws-sdk-workspacesthinclient/CHANGELOG.md new file mode 100644 index 00000000000..9fc29c00936 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/CHANGELOG.md @@ -0,0 +1,8 @@ +Unreleased Changes +------------------ + +1.0.0 (2023-11-27) +------------------ + +* Feature - Initial release of `aws-sdk-workspacesthinclient`. + diff --git a/gems/aws-sdk-workspacesthinclient/LICENSE.txt b/gems/aws-sdk-workspacesthinclient/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gems/aws-sdk-workspacesthinclient/VERSION b/gems/aws-sdk-workspacesthinclient/VERSION new file mode 100644 index 00000000000..3eefcb9dd5b --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/gems/aws-sdk-workspacesthinclient/aws-sdk-workspacesthinclient.gemspec b/gems/aws-sdk-workspacesthinclient/aws-sdk-workspacesthinclient.gemspec new file mode 100644 index 00000000000..e21e9880a82 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/aws-sdk-workspacesthinclient.gemspec @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +Gem::Specification.new do |spec| + + spec.name = 'aws-sdk-workspacesthinclient' + spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip + spec.summary = 'AWS SDK for Ruby - Amazon WorkSpaces Thin Client' + spec.description = 'Official AWS Ruby gem for Amazon WorkSpaces Thin Client. This gem is part of the AWS SDK for Ruby.' + spec.author = 'Amazon Web Services' + spec.homepage = 'https://github.com/aws/aws-sdk-ruby' + spec.license = 'Apache-2.0' + spec.email = ['aws-dr-rubygems@amazon.com'] + spec.require_paths = ['lib'] + spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb"] + + spec.metadata = { + 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-workspacesthinclient', + 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-workspacesthinclient/CHANGELOG.md' + } + + spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.188.0') + spec.add_dependency('aws-sigv4', '~> 1.1') + + spec.required_ruby_version = '>= 2.5' +end diff --git a/gems/aws-sdk-workspacesthinclient/features/env.rb b/gems/aws-sdk-workspacesthinclient/features/env.rb new file mode 100644 index 00000000000..90788f07da5 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/features/env.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'features_helper' +require 'aws-sdk-workspacesthinclient' + +Aws::WorkSpacesThinClient::Client.add_plugin(ApiCallTracker) diff --git a/gems/aws-sdk-workspacesthinclient/features/step_definitions.rb b/gems/aws-sdk-workspacesthinclient/features/step_definitions.rb new file mode 100644 index 00000000000..d67b096b028 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/features/step_definitions.rb @@ -0,0 +1,8 @@ +Before("@workspacesthinclient") do + @service = Aws::WorkSpacesThinClient::Resource.new + @client = @service.client +end + +After("@workspacesthinclient") do + # shared cleanup logic +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient.rb new file mode 100644 index 00000000000..72ce76339a6 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require 'aws-sdk-core' +require 'aws-sigv4' + +require_relative 'aws-sdk-workspacesthinclient/types' +require_relative 'aws-sdk-workspacesthinclient/client_api' +require_relative 'aws-sdk-workspacesthinclient/plugins/endpoints.rb' +require_relative 'aws-sdk-workspacesthinclient/client' +require_relative 'aws-sdk-workspacesthinclient/errors' +require_relative 'aws-sdk-workspacesthinclient/resource' +require_relative 'aws-sdk-workspacesthinclient/endpoint_parameters' +require_relative 'aws-sdk-workspacesthinclient/endpoint_provider' +require_relative 'aws-sdk-workspacesthinclient/endpoints' +require_relative 'aws-sdk-workspacesthinclient/customizations' + +# This module provides support for Amazon WorkSpaces Thin Client. This module is available in the +# `aws-sdk-workspacesthinclient` gem. +# +# # Client +# +# The {Client} class provides one method for each API operation. Operation +# methods each accept a hash of request parameters and return a response +# structure. +# +# work_spaces_thin_client = Aws::WorkSpacesThinClient::Client.new +# resp = work_spaces_thin_client.create_environment(params) +# +# See {Client} for more information. +# +# # Errors +# +# Errors returned from Amazon WorkSpaces Thin Client are defined in the +# {Errors} module and all extend {Errors::ServiceError}. +# +# begin +# # do stuff +# rescue Aws::WorkSpacesThinClient::Errors::ServiceError +# # rescues all Amazon WorkSpaces Thin Client API errors +# end +# +# See {Errors} for more information. +# +# @!group service +module Aws::WorkSpacesThinClient + + GEM_VERSION = '1.0.0' + +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client.rb new file mode 100644 index 00000000000..3170a6aa1f7 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client.rb @@ -0,0 +1,1268 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require 'seahorse/client/plugins/content_length.rb' +require 'aws-sdk-core/plugins/credentials_configuration.rb' +require 'aws-sdk-core/plugins/logging.rb' +require 'aws-sdk-core/plugins/param_converter.rb' +require 'aws-sdk-core/plugins/param_validator.rb' +require 'aws-sdk-core/plugins/user_agent.rb' +require 'aws-sdk-core/plugins/helpful_socket_errors.rb' +require 'aws-sdk-core/plugins/retry_errors.rb' +require 'aws-sdk-core/plugins/global_configuration.rb' +require 'aws-sdk-core/plugins/regional_endpoint.rb' +require 'aws-sdk-core/plugins/endpoint_discovery.rb' +require 'aws-sdk-core/plugins/endpoint_pattern.rb' +require 'aws-sdk-core/plugins/response_paging.rb' +require 'aws-sdk-core/plugins/stub_responses.rb' +require 'aws-sdk-core/plugins/idempotency_token.rb' +require 'aws-sdk-core/plugins/jsonvalue_converter.rb' +require 'aws-sdk-core/plugins/client_metrics_plugin.rb' +require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' +require 'aws-sdk-core/plugins/transfer_encoding.rb' +require 'aws-sdk-core/plugins/http_checksum.rb' +require 'aws-sdk-core/plugins/checksum_algorithm.rb' +require 'aws-sdk-core/plugins/request_compression.rb' +require 'aws-sdk-core/plugins/defaults_mode.rb' +require 'aws-sdk-core/plugins/recursion_detection.rb' +require 'aws-sdk-core/plugins/sign.rb' +require 'aws-sdk-core/plugins/protocols/rest_json.rb' + +Aws::Plugins::GlobalConfiguration.add_identifier(:workspacesthinclient) + +module Aws::WorkSpacesThinClient + # An API client for WorkSpacesThinClient. To construct a client, you need to configure a `:region` and `:credentials`. + # + # client = Aws::WorkSpacesThinClient::Client.new( + # region: region_name, + # credentials: credentials, + # # ... + # ) + # + # For details on configuring region and credentials see + # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). + # + # See {#initialize} for a full list of supported configuration options. + class Client < Seahorse::Client::Base + + include Aws::ClientStubs + + @identifier = :workspacesthinclient + + set_api(ClientApi::API) + + add_plugin(Seahorse::Client::Plugins::ContentLength) + add_plugin(Aws::Plugins::CredentialsConfiguration) + add_plugin(Aws::Plugins::Logging) + add_plugin(Aws::Plugins::ParamConverter) + add_plugin(Aws::Plugins::ParamValidator) + add_plugin(Aws::Plugins::UserAgent) + add_plugin(Aws::Plugins::HelpfulSocketErrors) + add_plugin(Aws::Plugins::RetryErrors) + add_plugin(Aws::Plugins::GlobalConfiguration) + add_plugin(Aws::Plugins::RegionalEndpoint) + add_plugin(Aws::Plugins::EndpointDiscovery) + add_plugin(Aws::Plugins::EndpointPattern) + add_plugin(Aws::Plugins::ResponsePaging) + add_plugin(Aws::Plugins::StubResponses) + add_plugin(Aws::Plugins::IdempotencyToken) + add_plugin(Aws::Plugins::JsonvalueConverter) + add_plugin(Aws::Plugins::ClientMetricsPlugin) + add_plugin(Aws::Plugins::ClientMetricsSendPlugin) + add_plugin(Aws::Plugins::TransferEncoding) + add_plugin(Aws::Plugins::HttpChecksum) + add_plugin(Aws::Plugins::ChecksumAlgorithm) + add_plugin(Aws::Plugins::RequestCompression) + add_plugin(Aws::Plugins::DefaultsMode) + add_plugin(Aws::Plugins::RecursionDetection) + add_plugin(Aws::Plugins::Sign) + add_plugin(Aws::Plugins::Protocols::RestJson) + add_plugin(Aws::WorkSpacesThinClient::Plugins::Endpoints) + + # @overload initialize(options) + # @param [Hash] options + # @option options [required, Aws::CredentialProvider] :credentials + # Your AWS credentials. This can be an instance of any one of the + # following classes: + # + # * `Aws::Credentials` - Used for configuring static, non-refreshing + # credentials. + # + # * `Aws::SharedCredentials` - Used for loading static credentials from a + # shared file, such as `~/.aws/config`. + # + # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. + # + # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to + # assume a role after providing credentials via the web. + # + # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an + # access token generated from `aws login`. + # + # * `Aws::ProcessCredentials` - Used for loading credentials from a + # process that outputs to stdout. + # + # * `Aws::InstanceProfileCredentials` - Used for loading credentials + # from an EC2 IMDS on an EC2 instance. + # + # * `Aws::ECSCredentials` - Used for loading credentials from + # instances running in ECS. + # + # * `Aws::CognitoIdentityCredentials` - Used for loading credentials + # from the Cognito Identity service. + # + # When `:credentials` are not configured directly, the following + # locations will be searched for credentials: + # + # * `Aws.config[:credentials]` + # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. + # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] + # * `~/.aws/credentials` + # * `~/.aws/config` + # * EC2/ECS IMDS instance profile - When used by default, the timeouts + # are very aggressive. Construct and pass an instance of + # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to + # enable retries and extended timeouts. Instance profile credential + # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] + # to true. + # + # @option options [required, String] :region + # The AWS region to connect to. The configured `:region` is + # used to determine the service `:endpoint`. When not passed, + # a default `:region` is searched for in the following locations: + # + # * `Aws.config[:region]` + # * `ENV['AWS_REGION']` + # * `ENV['AMAZON_REGION']` + # * `ENV['AWS_DEFAULT_REGION']` + # * `~/.aws/credentials` + # * `~/.aws/config` + # + # @option options [String] :access_key_id + # + # @option options [Boolean] :active_endpoint_cache (false) + # When set to `true`, a thread polling for endpoints will be running in + # the background every 60 secs (default). Defaults to `false`. + # + # @option options [Boolean] :adaptive_retry_wait_to_fill (true) + # Used only in `adaptive` retry mode. When true, the request will sleep + # until there is sufficent client side capacity to retry the request. + # When false, the request will raise a `RetryCapacityNotAvailableError` and will + # not retry instead of sleeping. + # + # @option options [Boolean] :client_side_monitoring (false) + # When `true`, client-side metrics will be collected for all API requests from + # this client. + # + # @option options [String] :client_side_monitoring_client_id ("") + # Allows you to provide an identifier for this client which will be attached to + # all generated client side metrics. Defaults to an empty string. + # + # @option options [String] :client_side_monitoring_host ("127.0.0.1") + # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client + # side monitoring agent is running on, where client metrics will be published via UDP. + # + # @option options [Integer] :client_side_monitoring_port (31000) + # Required for publishing client metrics. The port that the client side monitoring + # agent is running on, where client metrics will be published via UDP. + # + # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) + # Allows you to provide a custom client-side monitoring publisher class. By default, + # will use the Client Side Monitoring Agent Publisher. + # + # @option options [Boolean] :convert_params (true) + # When `true`, an attempt is made to coerce request parameters into + # the required types. + # + # @option options [Boolean] :correct_clock_skew (true) + # Used only in `standard` and adaptive retry modes. Specifies whether to apply + # a clock skew correction and retry requests with skewed client clocks. + # + # @option options [String] :defaults_mode ("legacy") + # See {Aws::DefaultsModeConfiguration} for a list of the + # accepted modes and the configuration defaults that are included. + # + # @option options [Boolean] :disable_host_prefix_injection (false) + # Set to true to disable SDK automatically adding host prefix + # to default service endpoint when available. + # + # @option options [Boolean] :disable_request_compression (false) + # When set to 'true' the request body will not be compressed + # for supported operations. + # + # @option options [String] :endpoint + # The client endpoint is normally constructed from the `:region` + # option. You should only configure an `:endpoint` when connecting + # to test or custom endpoints. This should be a valid HTTP(S) URI. + # + # @option options [Integer] :endpoint_cache_max_entries (1000) + # Used for the maximum size limit of the LRU cache storing endpoints data + # for endpoint discovery enabled operations. Defaults to 1000. + # + # @option options [Integer] :endpoint_cache_max_threads (10) + # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. + # + # @option options [Integer] :endpoint_cache_poll_interval (60) + # When :endpoint_discovery and :active_endpoint_cache is enabled, + # Use this option to config the time interval in seconds for making + # requests fetching endpoints information. Defaults to 60 sec. + # + # @option options [Boolean] :endpoint_discovery (false) + # When set to `true`, endpoint discovery will be enabled for operations when available. + # + # @option options [Boolean] :ignore_configured_endpoint_urls + # Setting to true disables use of endpoint URLs provided via environment + # variables and the shared configuration file. + # + # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) + # The log formatter. + # + # @option options [Symbol] :log_level (:info) + # The log level to send messages to the `:logger` at. + # + # @option options [Logger] :logger + # The Logger instance to send log messages to. If this option + # is not set, logging will be disabled. + # + # @option options [Integer] :max_attempts (3) + # An integer representing the maximum number attempts that will be made for + # a single request, including the initial attempt. For example, + # setting this value to 5 will result in a request being retried up to + # 4 times. Used in `standard` and `adaptive` retry modes. + # + # @option options [String] :profile ("default") + # Used when loading credentials from the shared credentials file + # at HOME/.aws/credentials. When not specified, 'default' is used. + # + # @option options [Integer] :request_min_compression_size_bytes (10240) + # The minimum size in bytes that triggers compression for request + # bodies. The value must be non-negative integer value between 0 + # and 10485780 bytes inclusive. + # + # @option options [Proc] :retry_backoff + # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. + # This option is only used in the `legacy` retry mode. + # + # @option options [Float] :retry_base_delay (0.3) + # The base delay in seconds used by the default backoff function. This option + # is only used in the `legacy` retry mode. + # + # @option options [Symbol] :retry_jitter (:none) + # A delay randomiser function used by the default backoff function. + # Some predefined functions can be referenced by name - :none, :equal, :full, + # otherwise a Proc that takes and returns a number. This option is only used + # in the `legacy` retry mode. + # + # @see https://www.awsarchitectureblog.com/2015/03/backoff.html + # + # @option options [Integer] :retry_limit (3) + # The maximum number of times to retry failed requests. Only + # ~ 500 level server errors and certain ~ 400 level client errors + # are retried. Generally, these are throttling errors, data + # checksum errors, networking errors, timeout errors, auth errors, + # endpoint discovery, and errors from expired credentials. + # This option is only used in the `legacy` retry mode. + # + # @option options [Integer] :retry_max_delay (0) + # The maximum number of seconds to delay between retries (0 for no limit) + # used by the default backoff function. This option is only used in the + # `legacy` retry mode. + # + # @option options [String] :retry_mode ("legacy") + # Specifies which retry algorithm to use. Values are: + # + # * `legacy` - The pre-existing retry behavior. This is default value if + # no retry mode is provided. + # + # * `standard` - A standardized set of retry rules across the AWS SDKs. + # This includes support for retry quotas, which limit the number of + # unsuccessful retries a client can make. + # + # * `adaptive` - An experimental retry mode that includes all the + # functionality of `standard` mode along with automatic client side + # throttling. This is a provisional mode that may change behavior + # in the future. + # + # + # @option options [String] :sdk_ua_app_id + # A unique and opaque application ID that is appended to the + # User-Agent header as app/. It should have a + # maximum length of 50. + # + # @option options [String] :secret_access_key + # + # @option options [String] :session_token + # + # @option options [Boolean] :stub_responses (false) + # Causes the client to return stubbed responses. By default + # fake responses are generated and returned. You can specify + # the response data to return or errors to raise by calling + # {ClientStubs#stub_responses}. See {ClientStubs} for more information. + # + # ** Please note ** When response stubbing is enabled, no HTTP + # requests are made, and retries are disabled. + # + # @option options [Aws::TokenProvider] :token_provider + # A Bearer Token Provider. This can be an instance of any one of the + # following classes: + # + # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing + # tokens. + # + # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an + # access token generated from `aws login`. + # + # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain` + # will be used to search for tokens configured for your profile in shared configuration files. + # + # @option options [Boolean] :use_dualstack_endpoint + # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) + # will be used if available. + # + # @option options [Boolean] :use_fips_endpoint + # When set to `true`, fips compatible endpoints will be used if available. + # When a `fips` region is used, the region is normalized and this config + # is set to `true`. + # + # @option options [Boolean] :validate_params (true) + # When `true`, request parameters are validated before + # sending the request. + # + # @option options [Aws::WorkSpacesThinClient::EndpointProvider] :endpoint_provider + # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::WorkSpacesThinClient::EndpointParameters` + # + # @option options [URI::HTTP,String] :http_proxy A proxy to send + # requests through. Formatted like 'http://proxy.com:123'. + # + # @option options [Float] :http_open_timeout (15) The number of + # seconds to wait when opening a HTTP session before raising a + # `Timeout::Error`. + # + # @option options [Float] :http_read_timeout (60) The default + # number of seconds to wait for response data. This value can + # safely be set per-request on the session. + # + # @option options [Float] :http_idle_timeout (5) The number of + # seconds a connection is allowed to sit idle before it is + # considered stale. Stale connections are closed and removed + # from the pool before making a request. + # + # @option options [Float] :http_continue_timeout (1) The number of + # seconds to wait for a 100-continue response before sending the + # request body. This option has no effect unless the request has + # "Expect" header set to "100-continue". Defaults to `nil` which + # disables this behaviour. This value can safely be set per + # request on the session. + # + # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout + # in seconds. + # + # @option options [Boolean] :http_wire_trace (false) When `true`, + # HTTP debug output will be sent to the `:logger`. + # + # @option options [Boolean] :ssl_verify_peer (true) When `true`, + # SSL peer certificates are verified when establishing a + # connection. + # + # @option options [String] :ssl_ca_bundle Full path to the SSL + # certificate authority bundle file that should be used when + # verifying peer certificates. If you do not pass + # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default + # will be used if available. + # + # @option options [String] :ssl_ca_directory Full path of the + # directory that contains the unbundled SSL certificate + # authority files for verifying peer certificates. If you do + # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the + # system default will be used if available. + # + def initialize(*args) + super + end + + # @!group API Operations + + # Creates an environment for your thin client devices. + # + # @option params [String] :name + # The name for the environment. + # + # @option params [required, String] :desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # + # @option params [String] :desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # + # @option params [String] :software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # + # @option params [Types::MaintenanceWindow] :maintenance_window + # A specification for a time window to apply software updates. + # + # @option params [String] :software_set_update_mode + # An option to define which software updates to apply. + # + # @option params [String] :desired_software_set_id + # The ID of the software set to apply. + # + # @option params [String] :kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key to + # use to encrypt the environment. + # + # @option params [String] :client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry the + # request without accidentally performing the same operation a second + # time. Passing the same value to a later call to an operation requires + # that you also pass the same value for all other parameters. We + # recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates a + # random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # + # @option params [Hash] :tags + # A map of the key-value pairs of the tag or tags to assign to the + # resource. + # + # @return [Types::CreateEnvironmentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::CreateEnvironmentResponse#environment #environment} => Types::EnvironmentSummary + # + # @example Request syntax with placeholder values + # + # resp = client.create_environment({ + # name: "EnvironmentName", + # desktop_arn: "Arn", # required + # desktop_endpoint: "DesktopEndpoint", + # software_set_update_schedule: "USE_MAINTENANCE_WINDOW", # accepts USE_MAINTENANCE_WINDOW, APPLY_IMMEDIATELY + # maintenance_window: { + # type: "SYSTEM", # accepts SYSTEM, CUSTOM + # start_time_hour: 1, + # start_time_minute: 1, + # end_time_hour: 1, + # end_time_minute: 1, + # days_of_the_week: ["MONDAY"], # accepts MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY + # apply_time_of: "UTC", # accepts UTC, DEVICE + # }, + # software_set_update_mode: "USE_LATEST", # accepts USE_LATEST, USE_DESIRED + # desired_software_set_id: "SoftwareSetId", + # kms_key_arn: "KmsKeyArn", + # client_token: "ClientToken", + # tags: { + # "String" => "String", + # }, + # }) + # + # @example Response structure + # + # resp.environment.id #=> String + # resp.environment.name #=> String + # resp.environment.desktop_arn #=> String + # resp.environment.desktop_endpoint #=> String + # resp.environment.desktop_type #=> String, one of "workspaces", "appstream", "workspaces-web" + # resp.environment.activation_code #=> String + # resp.environment.software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.environment.maintenance_window.type #=> String, one of "SYSTEM", "CUSTOM" + # resp.environment.maintenance_window.start_time_hour #=> Integer + # resp.environment.maintenance_window.start_time_minute #=> Integer + # resp.environment.maintenance_window.end_time_hour #=> Integer + # resp.environment.maintenance_window.end_time_minute #=> Integer + # resp.environment.maintenance_window.days_of_the_week #=> Array + # resp.environment.maintenance_window.days_of_the_week[0] #=> String, one of "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" + # resp.environment.maintenance_window.apply_time_of #=> String, one of "UTC", "DEVICE" + # resp.environment.software_set_update_mode #=> String, one of "USE_LATEST", "USE_DESIRED" + # resp.environment.desired_software_set_id #=> String + # resp.environment.pending_software_set_id #=> String + # resp.environment.created_at #=> Time + # resp.environment.updated_at #=> Time + # resp.environment.arn #=> String + # resp.environment.tags.resource_arn #=> String + # resp.environment.tags.internal_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/CreateEnvironment AWS API Documentation + # + # @overload create_environment(params = {}) + # @param [Hash] params ({}) + def create_environment(params = {}, options = {}) + req = build_request(:create_environment, params) + req.send_request(options) + end + + # Deletes a thin client device. + # + # @option params [required, String] :id + # The ID of the device to delete. + # + # @option params [String] :client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry the + # request without accidentally performing the same operation a second + # time. Passing the same value to a later call to an operation requires + # that you also pass the same value for all other parameters. We + # recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates a + # random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_device({ + # id: "DeviceId", # required + # client_token: "ClientToken", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteDevice AWS API Documentation + # + # @overload delete_device(params = {}) + # @param [Hash] params ({}) + def delete_device(params = {}, options = {}) + req = build_request(:delete_device, params) + req.send_request(options) + end + + # Deletes an environment. + # + # @option params [required, String] :id + # The ID of the environment to delete. + # + # @option params [String] :client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry the + # request without accidentally performing the same operation a second + # time. Passing the same value to a later call to an operation requires + # that you also pass the same value for all other parameters. We + # recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates a + # random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.delete_environment({ + # id: "EnvironmentId", # required + # client_token: "ClientToken", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteEnvironment AWS API Documentation + # + # @overload delete_environment(params = {}) + # @param [Hash] params ({}) + def delete_environment(params = {}, options = {}) + req = build_request(:delete_environment, params) + req.send_request(options) + end + + # Deregisters a thin client device. + # + # @option params [required, String] :id + # The ID of the device to deregister. + # + # @option params [String] :target_device_status + # The desired new status for the device. + # + # @option params [String] :client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry the + # request without accidentally performing the same operation a second + # time. Passing the same value to a later call to an operation requires + # that you also pass the same value for all other parameters. We + # recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates a + # random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option.** + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.deregister_device({ + # id: "DeviceId", # required + # target_device_status: "DEREGISTERED", # accepts DEREGISTERED, ARCHIVED + # client_token: "ClientToken", + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeregisterDevice AWS API Documentation + # + # @overload deregister_device(params = {}) + # @param [Hash] params ({}) + def deregister_device(params = {}, options = {}) + req = build_request(:deregister_device, params) + req.send_request(options) + end + + # Returns information for a thin client device. + # + # @option params [required, String] :id + # The ID of the device for which to return information. + # + # @return [Types::GetDeviceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetDeviceResponse#device #device} => Types::Device + # + # @example Request syntax with placeholder values + # + # resp = client.get_device({ + # id: "DeviceId", # required + # }) + # + # @example Response structure + # + # resp.device.id #=> String + # resp.device.serial_number #=> String + # resp.device.name #=> String + # resp.device.model #=> String + # resp.device.environment_id #=> String + # resp.device.status #=> String, one of "REGISTERED", "DEREGISTERING", "DEREGISTERED", "ARCHIVED" + # resp.device.current_software_set_id #=> String + # resp.device.current_software_set_version #=> String + # resp.device.desired_software_set_id #=> String + # resp.device.pending_software_set_id #=> String + # resp.device.pending_software_set_version #=> String + # resp.device.software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.device.software_set_compliance_status #=> String, one of "NONE", "COMPLIANT", "NOT_COMPLIANT" + # resp.device.software_set_update_status #=> String, one of "AVAILABLE", "IN_PROGRESS", "UP_TO_DATE" + # resp.device.last_connected_at #=> Time + # resp.device.last_posture_at #=> Time + # resp.device.created_at #=> Time + # resp.device.updated_at #=> Time + # resp.device.arn #=> String + # resp.device.kms_key_arn #=> String + # resp.device.tags.resource_arn #=> String + # resp.device.tags.internal_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetDevice AWS API Documentation + # + # @overload get_device(params = {}) + # @param [Hash] params ({}) + def get_device(params = {}, options = {}) + req = build_request(:get_device, params) + req.send_request(options) + end + + # Returns information for an environment. + # + # @option params [required, String] :id + # The ID of the environment for which to return information. + # + # @return [Types::GetEnvironmentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetEnvironmentResponse#environment #environment} => Types::Environment + # + # @example Request syntax with placeholder values + # + # resp = client.get_environment({ + # id: "EnvironmentId", # required + # }) + # + # @example Response structure + # + # resp.environment.id #=> String + # resp.environment.name #=> String + # resp.environment.desktop_arn #=> String + # resp.environment.desktop_endpoint #=> String + # resp.environment.desktop_type #=> String, one of "workspaces", "appstream", "workspaces-web" + # resp.environment.activation_code #=> String + # resp.environment.registered_devices_count #=> Integer + # resp.environment.software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.environment.maintenance_window.type #=> String, one of "SYSTEM", "CUSTOM" + # resp.environment.maintenance_window.start_time_hour #=> Integer + # resp.environment.maintenance_window.start_time_minute #=> Integer + # resp.environment.maintenance_window.end_time_hour #=> Integer + # resp.environment.maintenance_window.end_time_minute #=> Integer + # resp.environment.maintenance_window.days_of_the_week #=> Array + # resp.environment.maintenance_window.days_of_the_week[0] #=> String, one of "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" + # resp.environment.maintenance_window.apply_time_of #=> String, one of "UTC", "DEVICE" + # resp.environment.software_set_update_mode #=> String, one of "USE_LATEST", "USE_DESIRED" + # resp.environment.desired_software_set_id #=> String + # resp.environment.pending_software_set_id #=> String + # resp.environment.pending_software_set_version #=> String + # resp.environment.software_set_compliance_status #=> String, one of "NO_REGISTERED_DEVICES", "COMPLIANT", "NOT_COMPLIANT" + # resp.environment.created_at #=> Time + # resp.environment.updated_at #=> Time + # resp.environment.arn #=> String + # resp.environment.kms_key_arn #=> String + # resp.environment.tags.resource_arn #=> String + # resp.environment.tags.internal_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetEnvironment AWS API Documentation + # + # @overload get_environment(params = {}) + # @param [Hash] params ({}) + def get_environment(params = {}, options = {}) + req = build_request(:get_environment, params) + req.send_request(options) + end + + # Returns information for a software set. + # + # @option params [required, String] :id + # The ID of the software set for which to return information. + # + # @return [Types::GetSoftwareSetResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::GetSoftwareSetResponse#software_set #software_set} => Types::SoftwareSet + # + # @example Request syntax with placeholder values + # + # resp = client.get_software_set({ + # id: "SoftwareSetId", # required + # }) + # + # @example Response structure + # + # resp.software_set.id #=> String + # resp.software_set.version #=> String + # resp.software_set.released_at #=> Time + # resp.software_set.supported_until #=> Time + # resp.software_set.validation_status #=> String, one of "VALIDATED", "NOT_VALIDATED" + # resp.software_set.software #=> Array + # resp.software_set.software[0].name #=> String + # resp.software_set.software[0].version #=> String + # resp.software_set.arn #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetSoftwareSet AWS API Documentation + # + # @overload get_software_set(params = {}) + # @param [Hash] params ({}) + def get_software_set(params = {}, options = {}) + req = build_request(:get_software_set, params) + req.send_request(options) + end + + # Returns a list of thin client devices. + # + # @option params [String] :next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. Make + # the call again using the returned token to retrieve the next page. + # Keep all other arguments unchanged. Each pagination token expires + # after 24 hours. Using an expired pagination token will return an *HTTP + # 400 InvalidToken error*. + # + # @option params [Integer] :max_results + # The maximum number of results that are returned per call. You can use + # `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned per + # call might be fewer than the specified maximum. + # + # @return [Types::ListDevicesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListDevicesResponse#devices #devices} => Array<Types::DeviceSummary> + # * {Types::ListDevicesResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_devices({ + # next_token: "PaginationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.devices #=> Array + # resp.devices[0].id #=> String + # resp.devices[0].serial_number #=> String + # resp.devices[0].name #=> String + # resp.devices[0].model #=> String + # resp.devices[0].environment_id #=> String + # resp.devices[0].status #=> String, one of "REGISTERED", "DEREGISTERING", "DEREGISTERED", "ARCHIVED" + # resp.devices[0].current_software_set_id #=> String + # resp.devices[0].desired_software_set_id #=> String + # resp.devices[0].pending_software_set_id #=> String + # resp.devices[0].software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.devices[0].last_connected_at #=> Time + # resp.devices[0].last_posture_at #=> Time + # resp.devices[0].created_at #=> Time + # resp.devices[0].updated_at #=> Time + # resp.devices[0].arn #=> String + # resp.devices[0].tags.resource_arn #=> String + # resp.devices[0].tags.internal_id #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListDevices AWS API Documentation + # + # @overload list_devices(params = {}) + # @param [Hash] params ({}) + def list_devices(params = {}, options = {}) + req = build_request(:list_devices, params) + req.send_request(options) + end + + # Returns a list of environments. + # + # @option params [String] :next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. Make + # the call again using the returned token to retrieve the next page. + # Keep all other arguments unchanged. Each pagination token expires + # after 24 hours. Using an expired pagination token will return an *HTTP + # 400 InvalidToken error*. + # + # @option params [Integer] :max_results + # The maximum number of results that are returned per call. You can use + # `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned per + # call might be fewer than the specified maximum. + # + # @return [Types::ListEnvironmentsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListEnvironmentsResponse#environments #environments} => Array<Types::EnvironmentSummary> + # * {Types::ListEnvironmentsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_environments({ + # next_token: "PaginationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.environments #=> Array + # resp.environments[0].id #=> String + # resp.environments[0].name #=> String + # resp.environments[0].desktop_arn #=> String + # resp.environments[0].desktop_endpoint #=> String + # resp.environments[0].desktop_type #=> String, one of "workspaces", "appstream", "workspaces-web" + # resp.environments[0].activation_code #=> String + # resp.environments[0].software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.environments[0].maintenance_window.type #=> String, one of "SYSTEM", "CUSTOM" + # resp.environments[0].maintenance_window.start_time_hour #=> Integer + # resp.environments[0].maintenance_window.start_time_minute #=> Integer + # resp.environments[0].maintenance_window.end_time_hour #=> Integer + # resp.environments[0].maintenance_window.end_time_minute #=> Integer + # resp.environments[0].maintenance_window.days_of_the_week #=> Array + # resp.environments[0].maintenance_window.days_of_the_week[0] #=> String, one of "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" + # resp.environments[0].maintenance_window.apply_time_of #=> String, one of "UTC", "DEVICE" + # resp.environments[0].software_set_update_mode #=> String, one of "USE_LATEST", "USE_DESIRED" + # resp.environments[0].desired_software_set_id #=> String + # resp.environments[0].pending_software_set_id #=> String + # resp.environments[0].created_at #=> Time + # resp.environments[0].updated_at #=> Time + # resp.environments[0].arn #=> String + # resp.environments[0].tags.resource_arn #=> String + # resp.environments[0].tags.internal_id #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListEnvironments AWS API Documentation + # + # @overload list_environments(params = {}) + # @param [Hash] params ({}) + def list_environments(params = {}, options = {}) + req = build_request(:list_environments, params) + req.send_request(options) + end + + # Returns a list of software sets. + # + # @option params [String] :next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. Make + # the call again using the returned token to retrieve the next page. + # Keep all other arguments unchanged. Each pagination token expires + # after 24 hours. Using an expired pagination token will return an *HTTP + # 400 InvalidToken error*. + # + # @option params [Integer] :max_results + # The maximum number of results that are returned per call. You can use + # `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned per + # call might be fewer than the specified maximum. + # + # @return [Types::ListSoftwareSetsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListSoftwareSetsResponse#software_sets #software_sets} => Array<Types::SoftwareSetSummary> + # * {Types::ListSoftwareSetsResponse#next_token #next_token} => String + # + # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. + # + # @example Request syntax with placeholder values + # + # resp = client.list_software_sets({ + # next_token: "PaginationToken", + # max_results: 1, + # }) + # + # @example Response structure + # + # resp.software_sets #=> Array + # resp.software_sets[0].id #=> String + # resp.software_sets[0].version #=> String + # resp.software_sets[0].released_at #=> Time + # resp.software_sets[0].supported_until #=> Time + # resp.software_sets[0].validation_status #=> String, one of "VALIDATED", "NOT_VALIDATED" + # resp.software_sets[0].arn #=> String + # resp.next_token #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListSoftwareSets AWS API Documentation + # + # @overload list_software_sets(params = {}) + # @param [Hash] params ({}) + def list_software_sets(params = {}, options = {}) + req = build_request(:list_software_sets, params) + req.send_request(options) + end + + # Returns a list of tags for a resource. + # + # @option params [required, String] :resource_arn + # The Amazon Resource Name (ARN) of the resource for which you want to + # retrieve tags. + # + # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::ListTagsForResourceResponse#tags #tags} => Hash<String,String> + # + # @example Request syntax with placeholder values + # + # resp = client.list_tags_for_resource({ + # resource_arn: "String", # required + # }) + # + # @example Response structure + # + # resp.tags #=> Hash + # resp.tags["String"] #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListTagsForResource AWS API Documentation + # + # @overload list_tags_for_resource(params = {}) + # @param [Hash] params ({}) + def list_tags_for_resource(params = {}, options = {}) + req = build_request(:list_tags_for_resource, params) + req.send_request(options) + end + + # Assigns one or more tags (key-value pairs) to the specified resource. + # + # @option params [required, String] :resource_arn + # The Amazon Resource Name (ARN) of the resource that you want to tag. + # + # @option params [required, Hash] :tags + # A map of the key-value pairs of the tag or tags to assign to the + # resource. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.tag_resource({ + # resource_arn: "String", # required + # tags: { # required + # "String" => "String", + # }, + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/TagResource AWS API Documentation + # + # @overload tag_resource(params = {}) + # @param [Hash] params ({}) + def tag_resource(params = {}, options = {}) + req = build_request(:tag_resource, params) + req.send_request(options) + end + + # Removes a tag or tags from a resource. + # + # @option params [required, String] :resource_arn + # The Amazon Resource Name (ARN) of the resource that you want to untag. + # + # @option params [required, Array] :tag_keys + # The keys of the key-value pairs for the tag or tags you want to remove + # from the specified resource. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.untag_resource({ + # resource_arn: "String", # required + # tag_keys: ["String"], # required + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UntagResource AWS API Documentation + # + # @overload untag_resource(params = {}) + # @param [Hash] params ({}) + def untag_resource(params = {}, options = {}) + req = build_request(:untag_resource, params) + req.send_request(options) + end + + # Updates a thin client device. + # + # @option params [required, String] :id + # The ID of the device to update. + # + # @option params [String] :name + # The name of the device to update. + # + # @option params [String] :desired_software_set_id + # The ID of the software set to apply. + # + # @option params [String] :software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # + # @option params [String] :kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key to + # use for the update. + # + # @return [Types::UpdateDeviceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateDeviceResponse#device #device} => Types::DeviceSummary + # + # @example Request syntax with placeholder values + # + # resp = client.update_device({ + # id: "DeviceId", # required + # name: "DeviceName", + # desired_software_set_id: "SoftwareSetId", + # software_set_update_schedule: "USE_MAINTENANCE_WINDOW", # accepts USE_MAINTENANCE_WINDOW, APPLY_IMMEDIATELY + # kms_key_arn: "KmsKeyArn", + # }) + # + # @example Response structure + # + # resp.device.id #=> String + # resp.device.serial_number #=> String + # resp.device.name #=> String + # resp.device.model #=> String + # resp.device.environment_id #=> String + # resp.device.status #=> String, one of "REGISTERED", "DEREGISTERING", "DEREGISTERED", "ARCHIVED" + # resp.device.current_software_set_id #=> String + # resp.device.desired_software_set_id #=> String + # resp.device.pending_software_set_id #=> String + # resp.device.software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.device.last_connected_at #=> Time + # resp.device.last_posture_at #=> Time + # resp.device.created_at #=> Time + # resp.device.updated_at #=> Time + # resp.device.arn #=> String + # resp.device.tags.resource_arn #=> String + # resp.device.tags.internal_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateDevice AWS API Documentation + # + # @overload update_device(params = {}) + # @param [Hash] params ({}) + def update_device(params = {}, options = {}) + req = build_request(:update_device, params) + req.send_request(options) + end + + # Updates an environment. + # + # @option params [required, String] :id + # The ID of the environment to update. + # + # @option params [String] :name + # The name of the environment to update. + # + # @option params [String] :desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # + # @option params [String] :desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # + # @option params [String] :software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # + # @option params [Types::MaintenanceWindow] :maintenance_window + # A specification for a time window to apply software updates. + # + # @option params [String] :software_set_update_mode + # An option to define which software updates to apply. + # + # @option params [String] :desired_software_set_id + # The ID of the software set to apply. + # + # @return [Types::UpdateEnvironmentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods: + # + # * {Types::UpdateEnvironmentResponse#environment #environment} => Types::EnvironmentSummary + # + # @example Request syntax with placeholder values + # + # resp = client.update_environment({ + # id: "EnvironmentId", # required + # name: "EnvironmentName", + # desktop_arn: "Arn", + # desktop_endpoint: "DesktopEndpoint", + # software_set_update_schedule: "USE_MAINTENANCE_WINDOW", # accepts USE_MAINTENANCE_WINDOW, APPLY_IMMEDIATELY + # maintenance_window: { + # type: "SYSTEM", # accepts SYSTEM, CUSTOM + # start_time_hour: 1, + # start_time_minute: 1, + # end_time_hour: 1, + # end_time_minute: 1, + # days_of_the_week: ["MONDAY"], # accepts MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY + # apply_time_of: "UTC", # accepts UTC, DEVICE + # }, + # software_set_update_mode: "USE_LATEST", # accepts USE_LATEST, USE_DESIRED + # desired_software_set_id: "SoftwareSetIdOrEmptyString", + # }) + # + # @example Response structure + # + # resp.environment.id #=> String + # resp.environment.name #=> String + # resp.environment.desktop_arn #=> String + # resp.environment.desktop_endpoint #=> String + # resp.environment.desktop_type #=> String, one of "workspaces", "appstream", "workspaces-web" + # resp.environment.activation_code #=> String + # resp.environment.software_set_update_schedule #=> String, one of "USE_MAINTENANCE_WINDOW", "APPLY_IMMEDIATELY" + # resp.environment.maintenance_window.type #=> String, one of "SYSTEM", "CUSTOM" + # resp.environment.maintenance_window.start_time_hour #=> Integer + # resp.environment.maintenance_window.start_time_minute #=> Integer + # resp.environment.maintenance_window.end_time_hour #=> Integer + # resp.environment.maintenance_window.end_time_minute #=> Integer + # resp.environment.maintenance_window.days_of_the_week #=> Array + # resp.environment.maintenance_window.days_of_the_week[0] #=> String, one of "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" + # resp.environment.maintenance_window.apply_time_of #=> String, one of "UTC", "DEVICE" + # resp.environment.software_set_update_mode #=> String, one of "USE_LATEST", "USE_DESIRED" + # resp.environment.desired_software_set_id #=> String + # resp.environment.pending_software_set_id #=> String + # resp.environment.created_at #=> Time + # resp.environment.updated_at #=> Time + # resp.environment.arn #=> String + # resp.environment.tags.resource_arn #=> String + # resp.environment.tags.internal_id #=> String + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateEnvironment AWS API Documentation + # + # @overload update_environment(params = {}) + # @param [Hash] params ({}) + def update_environment(params = {}, options = {}) + req = build_request(:update_environment, params) + req.send_request(options) + end + + # Updates a software set. + # + # @option params [required, String] :id + # The ID of the software set to update. + # + # @option params [required, String] :validation_status + # An option to define if the software set has been validated. + # + # @return [Struct] Returns an empty {Seahorse::Client::Response response}. + # + # @example Request syntax with placeholder values + # + # resp = client.update_software_set({ + # id: "SoftwareSetId", # required + # validation_status: "VALIDATED", # required, accepts VALIDATED, NOT_VALIDATED + # }) + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateSoftwareSet AWS API Documentation + # + # @overload update_software_set(params = {}) + # @param [Hash] params ({}) + def update_software_set(params = {}, options = {}) + req = build_request(:update_software_set, params) + req.send_request(options) + end + + # @!endgroup + + # @param params ({}) + # @api private + def build_request(operation_name, params = {}) + handlers = @handlers.for(operation_name) + context = Seahorse::Client::RequestContext.new( + operation_name: operation_name, + operation: config.api.operation(operation_name), + client: self, + params: params, + config: config) + context[:gem_name] = 'aws-sdk-workspacesthinclient' + context[:gem_version] = '1.0.0' + Seahorse::Client::Request.new(handlers, context) + end + + # @api private + # @deprecated + def waiter_names + [] + end + + class << self + + # @api private + attr_reader :identifier + + # @api private + def errors_module + Errors + end + + end + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client_api.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client_api.rb new file mode 100644 index 00000000000..440522e954e --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/client_api.rb @@ -0,0 +1,699 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + # @api private + module ClientApi + + include Seahorse::Model + + AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException') + ActivationCode = Shapes::StringShape.new(name: 'ActivationCode') + ApplyTimeOf = Shapes::StringShape.new(name: 'ApplyTimeOf') + Arn = Shapes::StringShape.new(name: 'Arn') + ClientToken = Shapes::StringShape.new(name: 'ClientToken') + ConflictException = Shapes::StructureShape.new(name: 'ConflictException') + CreateEnvironmentRequest = Shapes::StructureShape.new(name: 'CreateEnvironmentRequest') + CreateEnvironmentResponse = Shapes::StructureShape.new(name: 'CreateEnvironmentResponse') + DayOfWeek = Shapes::StringShape.new(name: 'DayOfWeek') + DayOfWeekList = Shapes::ListShape.new(name: 'DayOfWeekList') + DeleteDeviceRequest = Shapes::StructureShape.new(name: 'DeleteDeviceRequest') + DeleteDeviceResponse = Shapes::StructureShape.new(name: 'DeleteDeviceResponse') + DeleteEnvironmentRequest = Shapes::StructureShape.new(name: 'DeleteEnvironmentRequest') + DeleteEnvironmentResponse = Shapes::StructureShape.new(name: 'DeleteEnvironmentResponse') + DeregisterDeviceRequest = Shapes::StructureShape.new(name: 'DeregisterDeviceRequest') + DeregisterDeviceResponse = Shapes::StructureShape.new(name: 'DeregisterDeviceResponse') + DesktopEndpoint = Shapes::StringShape.new(name: 'DesktopEndpoint') + DesktopType = Shapes::StringShape.new(name: 'DesktopType') + Device = Shapes::StructureShape.new(name: 'Device') + DeviceId = Shapes::StringShape.new(name: 'DeviceId') + DeviceList = Shapes::ListShape.new(name: 'DeviceList') + DeviceName = Shapes::StringShape.new(name: 'DeviceName') + DeviceSoftwareSetComplianceStatus = Shapes::StringShape.new(name: 'DeviceSoftwareSetComplianceStatus') + DeviceStatus = Shapes::StringShape.new(name: 'DeviceStatus') + DeviceSummary = Shapes::StructureShape.new(name: 'DeviceSummary') + EmbeddedTag = Shapes::StructureShape.new(name: 'EmbeddedTag') + Environment = Shapes::StructureShape.new(name: 'Environment') + EnvironmentId = Shapes::StringShape.new(name: 'EnvironmentId') + EnvironmentList = Shapes::ListShape.new(name: 'EnvironmentList') + EnvironmentName = Shapes::StringShape.new(name: 'EnvironmentName') + EnvironmentSoftwareSetComplianceStatus = Shapes::StringShape.new(name: 'EnvironmentSoftwareSetComplianceStatus') + EnvironmentSummary = Shapes::StructureShape.new(name: 'EnvironmentSummary') + ExceptionMessage = Shapes::StringShape.new(name: 'ExceptionMessage') + FieldName = Shapes::StringShape.new(name: 'FieldName') + GetDeviceRequest = Shapes::StructureShape.new(name: 'GetDeviceRequest') + GetDeviceResponse = Shapes::StructureShape.new(name: 'GetDeviceResponse') + GetEnvironmentRequest = Shapes::StructureShape.new(name: 'GetEnvironmentRequest') + GetEnvironmentResponse = Shapes::StructureShape.new(name: 'GetEnvironmentResponse') + GetSoftwareSetRequest = Shapes::StructureShape.new(name: 'GetSoftwareSetRequest') + GetSoftwareSetResponse = Shapes::StructureShape.new(name: 'GetSoftwareSetResponse') + Hour = Shapes::IntegerShape.new(name: 'Hour') + Integer = Shapes::IntegerShape.new(name: 'Integer') + InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException') + InternalServiceException = Shapes::StructureShape.new(name: 'InternalServiceException') + KmsKeyArn = Shapes::StringShape.new(name: 'KmsKeyArn') + ListDevicesRequest = Shapes::StructureShape.new(name: 'ListDevicesRequest') + ListDevicesResponse = Shapes::StructureShape.new(name: 'ListDevicesResponse') + ListEnvironmentsRequest = Shapes::StructureShape.new(name: 'ListEnvironmentsRequest') + ListEnvironmentsResponse = Shapes::StructureShape.new(name: 'ListEnvironmentsResponse') + ListSoftwareSetsRequest = Shapes::StructureShape.new(name: 'ListSoftwareSetsRequest') + ListSoftwareSetsResponse = Shapes::StructureShape.new(name: 'ListSoftwareSetsResponse') + ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest') + ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse') + MaintenanceWindow = Shapes::StructureShape.new(name: 'MaintenanceWindow') + MaintenanceWindowType = Shapes::StringShape.new(name: 'MaintenanceWindowType') + MaxResults = Shapes::IntegerShape.new(name: 'MaxResults') + Minute = Shapes::IntegerShape.new(name: 'Minute') + PaginationToken = Shapes::StringShape.new(name: 'PaginationToken') + QuotaCode = Shapes::StringShape.new(name: 'QuotaCode') + ResourceId = Shapes::StringShape.new(name: 'ResourceId') + ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException') + ResourceType = Shapes::StringShape.new(name: 'ResourceType') + RetryAfterSeconds = Shapes::IntegerShape.new(name: 'RetryAfterSeconds') + ServiceCode = Shapes::StringShape.new(name: 'ServiceCode') + ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException') + Software = Shapes::StructureShape.new(name: 'Software') + SoftwareList = Shapes::ListShape.new(name: 'SoftwareList') + SoftwareSet = Shapes::StructureShape.new(name: 'SoftwareSet') + SoftwareSetId = Shapes::StringShape.new(name: 'SoftwareSetId') + SoftwareSetIdOrEmptyString = Shapes::StringShape.new(name: 'SoftwareSetIdOrEmptyString') + SoftwareSetList = Shapes::ListShape.new(name: 'SoftwareSetList') + SoftwareSetSummary = Shapes::StructureShape.new(name: 'SoftwareSetSummary') + SoftwareSetUpdateMode = Shapes::StringShape.new(name: 'SoftwareSetUpdateMode') + SoftwareSetUpdateSchedule = Shapes::StringShape.new(name: 'SoftwareSetUpdateSchedule') + SoftwareSetUpdateStatus = Shapes::StringShape.new(name: 'SoftwareSetUpdateStatus') + SoftwareSetValidationStatus = Shapes::StringShape.new(name: 'SoftwareSetValidationStatus') + String = Shapes::StringShape.new(name: 'String') + TagKeys = Shapes::ListShape.new(name: 'TagKeys') + TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest') + TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse') + TagsMap = Shapes::MapShape.new(name: 'TagsMap') + TargetDeviceStatus = Shapes::StringShape.new(name: 'TargetDeviceStatus') + ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException') + Timestamp = Shapes::TimestampShape.new(name: 'Timestamp') + UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest') + UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse') + UpdateDeviceRequest = Shapes::StructureShape.new(name: 'UpdateDeviceRequest') + UpdateDeviceResponse = Shapes::StructureShape.new(name: 'UpdateDeviceResponse') + UpdateEnvironmentRequest = Shapes::StructureShape.new(name: 'UpdateEnvironmentRequest') + UpdateEnvironmentResponse = Shapes::StructureShape.new(name: 'UpdateEnvironmentResponse') + UpdateSoftwareSetRequest = Shapes::StructureShape.new(name: 'UpdateSoftwareSetRequest') + UpdateSoftwareSetResponse = Shapes::StructureShape.new(name: 'UpdateSoftwareSetResponse') + ValidationException = Shapes::StructureShape.new(name: 'ValidationException') + ValidationExceptionField = Shapes::StructureShape.new(name: 'ValidationExceptionField') + ValidationExceptionFieldList = Shapes::ListShape.new(name: 'ValidationExceptionFieldList') + ValidationExceptionReason = Shapes::StringShape.new(name: 'ValidationExceptionReason') + + AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + AccessDeniedException.struct_class = Types::AccessDeniedException + + ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + ConflictException.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "resourceId")) + ConflictException.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "resourceType")) + ConflictException.struct_class = Types::ConflictException + + CreateEnvironmentRequest.add_member(:name, Shapes::ShapeRef.new(shape: EnvironmentName, location_name: "name")) + CreateEnvironmentRequest.add_member(:desktop_arn, Shapes::ShapeRef.new(shape: Arn, required: true, location_name: "desktopArn")) + CreateEnvironmentRequest.add_member(:desktop_endpoint, Shapes::ShapeRef.new(shape: DesktopEndpoint, location_name: "desktopEndpoint")) + CreateEnvironmentRequest.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + CreateEnvironmentRequest.add_member(:maintenance_window, Shapes::ShapeRef.new(shape: MaintenanceWindow, location_name: "maintenanceWindow")) + CreateEnvironmentRequest.add_member(:software_set_update_mode, Shapes::ShapeRef.new(shape: SoftwareSetUpdateMode, location_name: "softwareSetUpdateMode")) + CreateEnvironmentRequest.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + CreateEnvironmentRequest.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "kmsKeyArn")) + CreateEnvironmentRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + CreateEnvironmentRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags")) + CreateEnvironmentRequest.struct_class = Types::CreateEnvironmentRequest + + CreateEnvironmentResponse.add_member(:environment, Shapes::ShapeRef.new(shape: EnvironmentSummary, location_name: "environment")) + CreateEnvironmentResponse.struct_class = Types::CreateEnvironmentResponse + + DayOfWeekList.member = Shapes::ShapeRef.new(shape: DayOfWeek) + + DeleteDeviceRequest.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, required: true, location: "uri", location_name: "id")) + DeleteDeviceRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + DeleteDeviceRequest.struct_class = Types::DeleteDeviceRequest + + DeleteDeviceResponse.struct_class = Types::DeleteDeviceResponse + + DeleteEnvironmentRequest.add_member(:id, Shapes::ShapeRef.new(shape: EnvironmentId, required: true, location: "uri", location_name: "id")) + DeleteEnvironmentRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + DeleteEnvironmentRequest.struct_class = Types::DeleteEnvironmentRequest + + DeleteEnvironmentResponse.struct_class = Types::DeleteEnvironmentResponse + + DeregisterDeviceRequest.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, required: true, location: "uri", location_name: "id")) + DeregisterDeviceRequest.add_member(:target_device_status, Shapes::ShapeRef.new(shape: TargetDeviceStatus, location_name: "targetDeviceStatus")) + DeregisterDeviceRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true})) + DeregisterDeviceRequest.struct_class = Types::DeregisterDeviceRequest + + DeregisterDeviceResponse.struct_class = Types::DeregisterDeviceResponse + + Device.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, location_name: "id")) + Device.add_member(:serial_number, Shapes::ShapeRef.new(shape: String, location_name: "serialNumber")) + Device.add_member(:name, Shapes::ShapeRef.new(shape: DeviceName, location_name: "name")) + Device.add_member(:model, Shapes::ShapeRef.new(shape: String, location_name: "model")) + Device.add_member(:environment_id, Shapes::ShapeRef.new(shape: EnvironmentId, location_name: "environmentId")) + Device.add_member(:status, Shapes::ShapeRef.new(shape: DeviceStatus, location_name: "status")) + Device.add_member(:current_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "currentSoftwareSetId")) + Device.add_member(:current_software_set_version, Shapes::ShapeRef.new(shape: String, location_name: "currentSoftwareSetVersion")) + Device.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + Device.add_member(:pending_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "pendingSoftwareSetId")) + Device.add_member(:pending_software_set_version, Shapes::ShapeRef.new(shape: String, location_name: "pendingSoftwareSetVersion")) + Device.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + Device.add_member(:software_set_compliance_status, Shapes::ShapeRef.new(shape: DeviceSoftwareSetComplianceStatus, location_name: "softwareSetComplianceStatus")) + Device.add_member(:software_set_update_status, Shapes::ShapeRef.new(shape: SoftwareSetUpdateStatus, location_name: "softwareSetUpdateStatus")) + Device.add_member(:last_connected_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastConnectedAt")) + Device.add_member(:last_posture_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastPostureAt")) + Device.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt")) + Device.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt")) + Device.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + Device.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "kmsKeyArn")) + Device.add_member(:tags, Shapes::ShapeRef.new(shape: EmbeddedTag, location_name: "tags")) + Device.struct_class = Types::Device + + DeviceList.member = Shapes::ShapeRef.new(shape: DeviceSummary) + + DeviceSummary.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, location_name: "id")) + DeviceSummary.add_member(:serial_number, Shapes::ShapeRef.new(shape: String, location_name: "serialNumber")) + DeviceSummary.add_member(:name, Shapes::ShapeRef.new(shape: DeviceName, location_name: "name")) + DeviceSummary.add_member(:model, Shapes::ShapeRef.new(shape: String, location_name: "model")) + DeviceSummary.add_member(:environment_id, Shapes::ShapeRef.new(shape: EnvironmentId, location_name: "environmentId")) + DeviceSummary.add_member(:status, Shapes::ShapeRef.new(shape: DeviceStatus, location_name: "status")) + DeviceSummary.add_member(:current_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "currentSoftwareSetId")) + DeviceSummary.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + DeviceSummary.add_member(:pending_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "pendingSoftwareSetId")) + DeviceSummary.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + DeviceSummary.add_member(:last_connected_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastConnectedAt")) + DeviceSummary.add_member(:last_posture_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastPostureAt")) + DeviceSummary.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt")) + DeviceSummary.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt")) + DeviceSummary.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + DeviceSummary.add_member(:tags, Shapes::ShapeRef.new(shape: EmbeddedTag, location_name: "tags")) + DeviceSummary.struct_class = Types::DeviceSummary + + EmbeddedTag.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, location_name: "resourceArn")) + EmbeddedTag.add_member(:internal_id, Shapes::ShapeRef.new(shape: String, location_name: "internalId")) + EmbeddedTag.struct_class = Types::EmbeddedTag + + Environment.add_member(:id, Shapes::ShapeRef.new(shape: EnvironmentId, location_name: "id")) + Environment.add_member(:name, Shapes::ShapeRef.new(shape: EnvironmentName, location_name: "name")) + Environment.add_member(:desktop_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "desktopArn")) + Environment.add_member(:desktop_endpoint, Shapes::ShapeRef.new(shape: DesktopEndpoint, location_name: "desktopEndpoint")) + Environment.add_member(:desktop_type, Shapes::ShapeRef.new(shape: DesktopType, location_name: "desktopType")) + Environment.add_member(:activation_code, Shapes::ShapeRef.new(shape: ActivationCode, location_name: "activationCode")) + Environment.add_member(:registered_devices_count, Shapes::ShapeRef.new(shape: Integer, location_name: "registeredDevicesCount")) + Environment.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + Environment.add_member(:maintenance_window, Shapes::ShapeRef.new(shape: MaintenanceWindow, location_name: "maintenanceWindow")) + Environment.add_member(:software_set_update_mode, Shapes::ShapeRef.new(shape: SoftwareSetUpdateMode, location_name: "softwareSetUpdateMode")) + Environment.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + Environment.add_member(:pending_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "pendingSoftwareSetId")) + Environment.add_member(:pending_software_set_version, Shapes::ShapeRef.new(shape: String, location_name: "pendingSoftwareSetVersion")) + Environment.add_member(:software_set_compliance_status, Shapes::ShapeRef.new(shape: EnvironmentSoftwareSetComplianceStatus, location_name: "softwareSetComplianceStatus")) + Environment.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt")) + Environment.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt")) + Environment.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + Environment.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "kmsKeyArn")) + Environment.add_member(:tags, Shapes::ShapeRef.new(shape: EmbeddedTag, location_name: "tags")) + Environment.struct_class = Types::Environment + + EnvironmentList.member = Shapes::ShapeRef.new(shape: EnvironmentSummary) + + EnvironmentSummary.add_member(:id, Shapes::ShapeRef.new(shape: EnvironmentId, location_name: "id")) + EnvironmentSummary.add_member(:name, Shapes::ShapeRef.new(shape: EnvironmentName, location_name: "name")) + EnvironmentSummary.add_member(:desktop_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "desktopArn")) + EnvironmentSummary.add_member(:desktop_endpoint, Shapes::ShapeRef.new(shape: DesktopEndpoint, location_name: "desktopEndpoint")) + EnvironmentSummary.add_member(:desktop_type, Shapes::ShapeRef.new(shape: DesktopType, location_name: "desktopType")) + EnvironmentSummary.add_member(:activation_code, Shapes::ShapeRef.new(shape: ActivationCode, location_name: "activationCode")) + EnvironmentSummary.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + EnvironmentSummary.add_member(:maintenance_window, Shapes::ShapeRef.new(shape: MaintenanceWindow, location_name: "maintenanceWindow")) + EnvironmentSummary.add_member(:software_set_update_mode, Shapes::ShapeRef.new(shape: SoftwareSetUpdateMode, location_name: "softwareSetUpdateMode")) + EnvironmentSummary.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + EnvironmentSummary.add_member(:pending_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "pendingSoftwareSetId")) + EnvironmentSummary.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt")) + EnvironmentSummary.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt")) + EnvironmentSummary.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + EnvironmentSummary.add_member(:tags, Shapes::ShapeRef.new(shape: EmbeddedTag, location_name: "tags")) + EnvironmentSummary.struct_class = Types::EnvironmentSummary + + GetDeviceRequest.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, required: true, location: "uri", location_name: "id")) + GetDeviceRequest.struct_class = Types::GetDeviceRequest + + GetDeviceResponse.add_member(:device, Shapes::ShapeRef.new(shape: Device, location_name: "device")) + GetDeviceResponse.struct_class = Types::GetDeviceResponse + + GetEnvironmentRequest.add_member(:id, Shapes::ShapeRef.new(shape: EnvironmentId, required: true, location: "uri", location_name: "id")) + GetEnvironmentRequest.struct_class = Types::GetEnvironmentRequest + + GetEnvironmentResponse.add_member(:environment, Shapes::ShapeRef.new(shape: Environment, location_name: "environment")) + GetEnvironmentResponse.struct_class = Types::GetEnvironmentResponse + + GetSoftwareSetRequest.add_member(:id, Shapes::ShapeRef.new(shape: SoftwareSetId, required: true, location: "uri", location_name: "id")) + GetSoftwareSetRequest.struct_class = Types::GetSoftwareSetRequest + + GetSoftwareSetResponse.add_member(:software_set, Shapes::ShapeRef.new(shape: SoftwareSet, location_name: "softwareSet")) + GetSoftwareSetResponse.struct_class = Types::GetSoftwareSetResponse + + InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + InternalServerException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: RetryAfterSeconds, location: "header", location_name: "Retry-After")) + InternalServerException.struct_class = Types::InternalServerException + + InternalServiceException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + InternalServiceException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: RetryAfterSeconds, location: "header", location_name: "Retry-After")) + InternalServiceException.struct_class = Types::InternalServiceException + + ListDevicesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location: "querystring", location_name: "nextToken")) + ListDevicesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListDevicesRequest.struct_class = Types::ListDevicesRequest + + ListDevicesResponse.add_member(:devices, Shapes::ShapeRef.new(shape: DeviceList, location_name: "devices")) + ListDevicesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "nextToken")) + ListDevicesResponse.struct_class = Types::ListDevicesResponse + + ListEnvironmentsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location: "querystring", location_name: "nextToken")) + ListEnvironmentsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListEnvironmentsRequest.struct_class = Types::ListEnvironmentsRequest + + ListEnvironmentsResponse.add_member(:environments, Shapes::ShapeRef.new(shape: EnvironmentList, location_name: "environments")) + ListEnvironmentsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "nextToken")) + ListEnvironmentsResponse.struct_class = Types::ListEnvironmentsResponse + + ListSoftwareSetsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location: "querystring", location_name: "nextToken")) + ListSoftwareSetsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults")) + ListSoftwareSetsRequest.struct_class = Types::ListSoftwareSetsRequest + + ListSoftwareSetsResponse.add_member(:software_sets, Shapes::ShapeRef.new(shape: SoftwareSetList, location_name: "softwareSets")) + ListSoftwareSetsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "nextToken")) + ListSoftwareSetsResponse.struct_class = Types::ListSoftwareSetsResponse + + ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) + ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest + + ListTagsForResourceResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags")) + ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse + + MaintenanceWindow.add_member(:type, Shapes::ShapeRef.new(shape: MaintenanceWindowType, location_name: "type")) + MaintenanceWindow.add_member(:start_time_hour, Shapes::ShapeRef.new(shape: Hour, location_name: "startTimeHour")) + MaintenanceWindow.add_member(:start_time_minute, Shapes::ShapeRef.new(shape: Minute, location_name: "startTimeMinute")) + MaintenanceWindow.add_member(:end_time_hour, Shapes::ShapeRef.new(shape: Hour, location_name: "endTimeHour")) + MaintenanceWindow.add_member(:end_time_minute, Shapes::ShapeRef.new(shape: Minute, location_name: "endTimeMinute")) + MaintenanceWindow.add_member(:days_of_the_week, Shapes::ShapeRef.new(shape: DayOfWeekList, location_name: "daysOfTheWeek")) + MaintenanceWindow.add_member(:apply_time_of, Shapes::ShapeRef.new(shape: ApplyTimeOf, location_name: "applyTimeOf")) + MaintenanceWindow.struct_class = Types::MaintenanceWindow + + ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + ResourceNotFoundException.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "resourceId")) + ResourceNotFoundException.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "resourceType")) + ResourceNotFoundException.struct_class = Types::ResourceNotFoundException + + ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + ServiceQuotaExceededException.add_member(:resource_id, Shapes::ShapeRef.new(shape: ResourceId, location_name: "resourceId")) + ServiceQuotaExceededException.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "resourceType")) + ServiceQuotaExceededException.add_member(:service_code, Shapes::ShapeRef.new(shape: ServiceCode, location_name: "serviceCode")) + ServiceQuotaExceededException.add_member(:quota_code, Shapes::ShapeRef.new(shape: QuotaCode, location_name: "quotaCode")) + ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException + + Software.add_member(:name, Shapes::ShapeRef.new(shape: String, location_name: "name")) + Software.add_member(:version, Shapes::ShapeRef.new(shape: String, location_name: "version")) + Software.struct_class = Types::Software + + SoftwareList.member = Shapes::ShapeRef.new(shape: Software) + + SoftwareSet.add_member(:id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "id")) + SoftwareSet.add_member(:version, Shapes::ShapeRef.new(shape: String, location_name: "version")) + SoftwareSet.add_member(:released_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "releasedAt")) + SoftwareSet.add_member(:supported_until, Shapes::ShapeRef.new(shape: Timestamp, location_name: "supportedUntil")) + SoftwareSet.add_member(:validation_status, Shapes::ShapeRef.new(shape: SoftwareSetValidationStatus, location_name: "validationStatus")) + SoftwareSet.add_member(:software, Shapes::ShapeRef.new(shape: SoftwareList, location_name: "software")) + SoftwareSet.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + SoftwareSet.struct_class = Types::SoftwareSet + + SoftwareSetList.member = Shapes::ShapeRef.new(shape: SoftwareSetSummary) + + SoftwareSetSummary.add_member(:id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "id")) + SoftwareSetSummary.add_member(:version, Shapes::ShapeRef.new(shape: String, location_name: "version")) + SoftwareSetSummary.add_member(:released_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "releasedAt")) + SoftwareSetSummary.add_member(:supported_until, Shapes::ShapeRef.new(shape: Timestamp, location_name: "supportedUntil")) + SoftwareSetSummary.add_member(:validation_status, Shapes::ShapeRef.new(shape: SoftwareSetValidationStatus, location_name: "validationStatus")) + SoftwareSetSummary.add_member(:arn, Shapes::ShapeRef.new(shape: Arn, location_name: "arn")) + SoftwareSetSummary.struct_class = Types::SoftwareSetSummary + + TagKeys.member = Shapes::ShapeRef.new(shape: String) + + TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) + TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, required: true, location_name: "tags")) + TagResourceRequest.struct_class = Types::TagResourceRequest + + TagResourceResponse.struct_class = Types::TagResourceResponse + + TagsMap.key = Shapes::ShapeRef.new(shape: String) + TagsMap.value = Shapes::ShapeRef.new(shape: String) + + ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + ThrottlingException.add_member(:service_code, Shapes::ShapeRef.new(shape: ServiceCode, location_name: "serviceCode")) + ThrottlingException.add_member(:quota_code, Shapes::ShapeRef.new(shape: QuotaCode, location_name: "quotaCode")) + ThrottlingException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: RetryAfterSeconds, location: "header", location_name: "Retry-After")) + ThrottlingException.struct_class = Types::ThrottlingException + + UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn")) + UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeys, required: true, location: "querystring", location_name: "tagKeys")) + UntagResourceRequest.struct_class = Types::UntagResourceRequest + + UntagResourceResponse.struct_class = Types::UntagResourceResponse + + UpdateDeviceRequest.add_member(:id, Shapes::ShapeRef.new(shape: DeviceId, required: true, location: "uri", location_name: "id")) + UpdateDeviceRequest.add_member(:name, Shapes::ShapeRef.new(shape: DeviceName, location_name: "name")) + UpdateDeviceRequest.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetId, location_name: "desiredSoftwareSetId")) + UpdateDeviceRequest.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + UpdateDeviceRequest.add_member(:kms_key_arn, Shapes::ShapeRef.new(shape: KmsKeyArn, location_name: "kmsKeyArn")) + UpdateDeviceRequest.struct_class = Types::UpdateDeviceRequest + + UpdateDeviceResponse.add_member(:device, Shapes::ShapeRef.new(shape: DeviceSummary, location_name: "device")) + UpdateDeviceResponse.struct_class = Types::UpdateDeviceResponse + + UpdateEnvironmentRequest.add_member(:id, Shapes::ShapeRef.new(shape: EnvironmentId, required: true, location: "uri", location_name: "id")) + UpdateEnvironmentRequest.add_member(:name, Shapes::ShapeRef.new(shape: EnvironmentName, location_name: "name")) + UpdateEnvironmentRequest.add_member(:desktop_arn, Shapes::ShapeRef.new(shape: Arn, location_name: "desktopArn")) + UpdateEnvironmentRequest.add_member(:desktop_endpoint, Shapes::ShapeRef.new(shape: DesktopEndpoint, location_name: "desktopEndpoint")) + UpdateEnvironmentRequest.add_member(:software_set_update_schedule, Shapes::ShapeRef.new(shape: SoftwareSetUpdateSchedule, location_name: "softwareSetUpdateSchedule")) + UpdateEnvironmentRequest.add_member(:maintenance_window, Shapes::ShapeRef.new(shape: MaintenanceWindow, location_name: "maintenanceWindow")) + UpdateEnvironmentRequest.add_member(:software_set_update_mode, Shapes::ShapeRef.new(shape: SoftwareSetUpdateMode, location_name: "softwareSetUpdateMode")) + UpdateEnvironmentRequest.add_member(:desired_software_set_id, Shapes::ShapeRef.new(shape: SoftwareSetIdOrEmptyString, location_name: "desiredSoftwareSetId")) + UpdateEnvironmentRequest.struct_class = Types::UpdateEnvironmentRequest + + UpdateEnvironmentResponse.add_member(:environment, Shapes::ShapeRef.new(shape: EnvironmentSummary, location_name: "environment")) + UpdateEnvironmentResponse.struct_class = Types::UpdateEnvironmentResponse + + UpdateSoftwareSetRequest.add_member(:id, Shapes::ShapeRef.new(shape: SoftwareSetId, required: true, location: "uri", location_name: "id")) + UpdateSoftwareSetRequest.add_member(:validation_status, Shapes::ShapeRef.new(shape: SoftwareSetValidationStatus, required: true, location_name: "validationStatus")) + UpdateSoftwareSetRequest.struct_class = Types::UpdateSoftwareSetRequest + + UpdateSoftwareSetResponse.struct_class = Types::UpdateSoftwareSetResponse + + ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, location_name: "message")) + ValidationException.add_member(:reason, Shapes::ShapeRef.new(shape: ValidationExceptionReason, location_name: "reason")) + ValidationException.add_member(:field_list, Shapes::ShapeRef.new(shape: ValidationExceptionFieldList, location_name: "fieldList")) + ValidationException.struct_class = Types::ValidationException + + ValidationExceptionField.add_member(:name, Shapes::ShapeRef.new(shape: FieldName, required: true, location_name: "name")) + ValidationExceptionField.add_member(:message, Shapes::ShapeRef.new(shape: ExceptionMessage, required: true, location_name: "message")) + ValidationExceptionField.struct_class = Types::ValidationExceptionField + + ValidationExceptionFieldList.member = Shapes::ShapeRef.new(shape: ValidationExceptionField) + + + # @api private + API = Seahorse::Model::Api.new.tap do |api| + + api.version = "2023-08-22" + + api.metadata = { + "apiVersion" => "2023-08-22", + "endpointPrefix" => "thinclient", + "jsonVersion" => "1.1", + "protocol" => "rest-json", + "serviceFullName" => "Amazon WorkSpaces Thin Client", + "serviceId" => "WorkSpaces Thin Client", + "signatureVersion" => "v4", + "signingName" => "thinclient", + "uid" => "workspaces-thin-client-2023-08-22", + } + + api.add_operation(:create_environment, Seahorse::Model::Operation.new.tap do |o| + o.name = "CreateEnvironment" + o.http_method = "POST" + o.http_request_uri = "/environments" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: CreateEnvironmentRequest) + o.output = Shapes::ShapeRef.new(shape: CreateEnvironmentResponse) + o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:delete_device, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteDevice" + o.http_method = "DELETE" + o.http_request_uri = "/devices/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: DeleteDeviceRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteDeviceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:delete_environment, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeleteEnvironment" + o.http_method = "DELETE" + o.http_request_uri = "/environments/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: DeleteEnvironmentRequest) + o.output = Shapes::ShapeRef.new(shape: DeleteEnvironmentResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:deregister_device, Seahorse::Model::Operation.new.tap do |o| + o.name = "DeregisterDevice" + o.http_method = "POST" + o.http_request_uri = "/deregister-device/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: DeregisterDeviceRequest) + o.output = Shapes::ShapeRef.new(shape: DeregisterDeviceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: ConflictException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:get_device, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetDevice" + o.http_method = "GET" + o.http_request_uri = "/devices/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: GetDeviceRequest) + o.output = Shapes::ShapeRef.new(shape: GetDeviceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:get_environment, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetEnvironment" + o.http_method = "GET" + o.http_request_uri = "/environments/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: GetEnvironmentRequest) + o.output = Shapes::ShapeRef.new(shape: GetEnvironmentResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:get_software_set, Seahorse::Model::Operation.new.tap do |o| + o.name = "GetSoftwareSet" + o.http_method = "GET" + o.http_request_uri = "/softwaresets/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: GetSoftwareSetRequest) + o.output = Shapes::ShapeRef.new(shape: GetSoftwareSetResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:list_devices, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListDevices" + o.http_method = "GET" + o.http_request_uri = "/devices" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: ListDevicesRequest) + o.output = Shapes::ShapeRef.new(shape: ListDevicesResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_environments, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListEnvironments" + o.http_method = "GET" + o.http_request_uri = "/environments" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: ListEnvironmentsRequest) + o.output = Shapes::ShapeRef.new(shape: ListEnvironmentsResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_software_sets, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListSoftwareSets" + o.http_method = "GET" + o.http_request_uri = "/softwaresets" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: ListSoftwareSetsRequest) + o.output = Shapes::ShapeRef.new(shape: ListSoftwareSetsResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + o[:pager] = Aws::Pager.new( + limit_key: "max_results", + tokens: { + "next_token" => "next_token" + } + ) + end) + + api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "ListTagsForResource" + o.http_method = "GET" + o.http_request_uri = "/tags/{resourceArn}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: ListTagsForResourceRequest) + o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + end) + + api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "TagResource" + o.http_method = "POST" + o.http_request_uri = "/tags/{resourceArn}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: TagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: TagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + end) + + api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o| + o.name = "UntagResource" + o.http_method = "DELETE" + o.http_request_uri = "/tags/{resourceArn}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: UntagResourceRequest) + o.output = Shapes::ShapeRef.new(shape: UntagResourceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: InternalServiceException) + end) + + api.add_operation(:update_device, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateDevice" + o.http_method = "PATCH" + o.http_request_uri = "/devices/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: UpdateDeviceRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateDeviceResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:update_environment, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateEnvironment" + o.http_method = "PATCH" + o.http_request_uri = "/environments/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: UpdateEnvironmentRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateEnvironmentResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + + api.add_operation(:update_software_set, Seahorse::Model::Operation.new.tap do |o| + o.name = "UpdateSoftwareSet" + o.http_method = "PATCH" + o.http_request_uri = "/softwaresets/{id}" + o.endpoint_pattern = { + "hostPrefix" => "api.", + } + o.input = Shapes::ShapeRef.new(shape: UpdateSoftwareSetRequest) + o.output = Shapes::ShapeRef.new(shape: UpdateSoftwareSetResponse) + o.errors << Shapes::ShapeRef.new(shape: ValidationException) + o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException) + o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException) + o.errors << Shapes::ShapeRef.new(shape: ThrottlingException) + o.errors << Shapes::ShapeRef.new(shape: InternalServerException) + end) + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/customizations.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/customizations.rb new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_parameters.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_parameters.rb new file mode 100644 index 00000000000..dcca3cf2b43 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_parameters.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + # Endpoint parameters used to influence endpoints per request. + # + # @!attribute region + # The AWS region used to dispatch the request. + # + # @return [String] + # + # @!attribute use_dual_stack + # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error. + # + # @return [Boolean] + # + # @!attribute use_fips + # 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. + # + # @return [Boolean] + # + # @!attribute endpoint + # Override the endpoint used to send this request + # + # @return [String] + # + EndpointParameters = Struct.new( + :region, + :use_dual_stack, + :use_fips, + :endpoint, + ) do + include Aws::Structure + + # @api private + class << self + PARAM_MAP = { + 'Region' => :region, + 'UseDualStack' => :use_dual_stack, + 'UseFIPS' => :use_fips, + 'Endpoint' => :endpoint, + }.freeze + end + + def initialize(options = {}) + self[:region] = options[:region] + self[:use_dual_stack] = options[:use_dual_stack] + self[:use_dual_stack] = false if self[:use_dual_stack].nil? + if self[:use_dual_stack].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack" + end + self[:use_fips] = options[:use_fips] + self[:use_fips] = false if self[:use_fips].nil? + if self[:use_fips].nil? + raise ArgumentError, "Missing required EndpointParameter: :use_fips" + end + self[:endpoint] = options[:endpoint] + end + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_provider.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_provider.rb new file mode 100644 index 00000000000..6e9ec971ad0 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoint_provider.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + class EndpointProvider + def resolve_endpoint(parameters) + region = parameters.region + use_dual_stack = parameters.use_dual_stack + use_fips = parameters.use_fips + endpoint = parameters.endpoint + if Aws::Endpoints::Matchers.set?(endpoint) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported" + end + return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {}) + end + if Aws::Endpoints::Matchers.set?(region) + if (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + 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")) + return Aws::Endpoints::Endpoint.new(url: "https://thinclient-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) + if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"), true) + return Aws::Endpoints::Endpoint.new(url: "https://thinclient-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "FIPS is enabled but this partition does not support FIPS" + end + if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true) + if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack")) + return Aws::Endpoints::Endpoint.new(url: "https://thinclient.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {}) + end + raise ArgumentError, "DualStack is enabled but this partition does not support DualStack" + end + return Aws::Endpoints::Endpoint.new(url: "https://thinclient.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {}) + end + end + raise ArgumentError, "Invalid Configuration: Missing Region" + raise ArgumentError, 'No endpoint could be resolved' + + end + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoints.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoints.rb new file mode 100644 index 00000000000..3f6ec141366 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/endpoints.rb @@ -0,0 +1,240 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::WorkSpacesThinClient + # @api private + module Endpoints + + class CreateEnvironment + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteDevice + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeleteEnvironment + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class DeregisterDevice + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetDevice + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetEnvironment + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class GetSoftwareSet + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListDevices + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListEnvironments + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListSoftwareSets + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class ListTagsForResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class TagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UntagResource + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateDevice + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateEnvironment + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + class UpdateSoftwareSet + def self.build(context) + unless context.config.regional_endpoint + endpoint = context.config.endpoint.to_s + end + Aws::WorkSpacesThinClient::EndpointParameters.new( + region: context.config.region, + use_dual_stack: context.config.use_dualstack_endpoint, + use_fips: context.config.use_fips_endpoint, + endpoint: endpoint, + ) + end + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/errors.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/errors.rb new file mode 100644 index 00000000000..f2b3b76b2c3 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/errors.rb @@ -0,0 +1,241 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + + # When WorkSpacesThinClient returns an error response, the Ruby SDK constructs and raises an error. + # These errors all extend Aws::WorkSpacesThinClient::Errors::ServiceError < {Aws::Errors::ServiceError} + # + # You can rescue all WorkSpacesThinClient errors using ServiceError: + # + # begin + # # do stuff + # rescue Aws::WorkSpacesThinClient::Errors::ServiceError + # # rescues all WorkSpacesThinClient API errors + # end + # + # + # ## Request Context + # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns + # information about the request that generated the error. + # See {Seahorse::Client::RequestContext} for more information. + # + # ## Error Classes + # * {AccessDeniedException} + # * {ConflictException} + # * {InternalServerException} + # * {InternalServiceException} + # * {ResourceNotFoundException} + # * {ServiceQuotaExceededException} + # * {ThrottlingException} + # * {ValidationException} + # + # Additionally, error classes are dynamically generated for service errors based on the error code + # if they are not defined above. + module Errors + + extend Aws::Errors::DynamicErrors + + class AccessDeniedException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::AccessDeniedException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + end + + class ConflictException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::ConflictException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + end + + class InternalServerException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::InternalServerException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def retry_after_seconds + @data[:retry_after_seconds] + end + end + + class InternalServiceException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::InternalServiceException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def retry_after_seconds + @data[:retry_after_seconds] + end + end + + class ResourceNotFoundException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::ResourceNotFoundException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + end + + class ServiceQuotaExceededException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::ServiceQuotaExceededException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def resource_id + @data[:resource_id] + end + + # @return [String] + def resource_type + @data[:resource_type] + end + + # @return [String] + def service_code + @data[:service_code] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + end + + class ThrottlingException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::ThrottlingException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def service_code + @data[:service_code] + end + + # @return [String] + def quota_code + @data[:quota_code] + end + + # @return [String] + def retry_after_seconds + @data[:retry_after_seconds] + end + end + + class ValidationException < ServiceError + + # @param [Seahorse::Client::RequestContext] context + # @param [String] message + # @param [Aws::WorkSpacesThinClient::Types::ValidationException] data + def initialize(context, message, data = Aws::EmptyStructure.new) + super(context, message, data) + end + + # @return [String] + def message + @message || @data[:message] + end + + # @return [String] + def reason + @data[:reason] + end + + # @return [String] + def field_list + @data[:field_list] + end + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/plugins/endpoints.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/plugins/endpoints.rb new file mode 100644 index 00000000000..3097fcd58a6 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/plugins/endpoints.rb @@ -0,0 +1,100 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +module Aws::WorkSpacesThinClient + module Plugins + class Endpoints < Seahorse::Client::Plugin + option( + :endpoint_provider, + doc_type: 'Aws::WorkSpacesThinClient::EndpointProvider', + docstring: 'The endpoint provider used to resolve endpoints. Any '\ + 'object that responds to `#resolve_endpoint(parameters)` '\ + 'where `parameters` is a Struct similar to '\ + '`Aws::WorkSpacesThinClient::EndpointParameters`' + ) do |cfg| + Aws::WorkSpacesThinClient::EndpointProvider.new + end + + # @api private + class Handler < Seahorse::Client::Handler + def call(context) + # If endpoint was discovered, do not resolve or apply the endpoint. + unless context[:discovered_endpoint] + params = parameters_for_operation(context) + endpoint = context.config.endpoint_provider.resolve_endpoint(params) + + context.http_request.endpoint = endpoint.url + apply_endpoint_headers(context, endpoint.headers) + end + + context[:endpoint_params] = params + context[:auth_scheme] = + Aws::Endpoints.resolve_auth_scheme(context, endpoint) + + @handler.call(context) + end + + private + + def apply_endpoint_headers(context, headers) + headers.each do |key, values| + value = values + .compact + .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) } + .join(',') + + context.http_request.headers[key] = value + end + end + + def parameters_for_operation(context) + case context.operation_name + when :create_environment + Aws::WorkSpacesThinClient::Endpoints::CreateEnvironment.build(context) + when :delete_device + Aws::WorkSpacesThinClient::Endpoints::DeleteDevice.build(context) + when :delete_environment + Aws::WorkSpacesThinClient::Endpoints::DeleteEnvironment.build(context) + when :deregister_device + Aws::WorkSpacesThinClient::Endpoints::DeregisterDevice.build(context) + when :get_device + Aws::WorkSpacesThinClient::Endpoints::GetDevice.build(context) + when :get_environment + Aws::WorkSpacesThinClient::Endpoints::GetEnvironment.build(context) + when :get_software_set + Aws::WorkSpacesThinClient::Endpoints::GetSoftwareSet.build(context) + when :list_devices + Aws::WorkSpacesThinClient::Endpoints::ListDevices.build(context) + when :list_environments + Aws::WorkSpacesThinClient::Endpoints::ListEnvironments.build(context) + when :list_software_sets + Aws::WorkSpacesThinClient::Endpoints::ListSoftwareSets.build(context) + when :list_tags_for_resource + Aws::WorkSpacesThinClient::Endpoints::ListTagsForResource.build(context) + when :tag_resource + Aws::WorkSpacesThinClient::Endpoints::TagResource.build(context) + when :untag_resource + Aws::WorkSpacesThinClient::Endpoints::UntagResource.build(context) + when :update_device + Aws::WorkSpacesThinClient::Endpoints::UpdateDevice.build(context) + when :update_environment + Aws::WorkSpacesThinClient::Endpoints::UpdateEnvironment.build(context) + when :update_software_set + Aws::WorkSpacesThinClient::Endpoints::UpdateSoftwareSet.build(context) + end + end + end + + def add_handlers(handlers, _config) + handlers.add(Handler, step: :build, priority: 75) + end + end + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/resource.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/resource.rb new file mode 100644 index 00000000000..9e76e60b18c --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/resource.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + + class Resource + + # @param options ({}) + # @option options [Client] :client + def initialize(options = {}) + @client = options[:client] || Client.new(options) + end + + # @return [Client] + def client + @client + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/types.rb b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/types.rb new file mode 100644 index 00000000000..c65b3dabe07 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/lib/aws-sdk-workspacesthinclient/types.rb @@ -0,0 +1,1440 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +module Aws::WorkSpacesThinClient + module Types + + # You do not have sufficient access to perform this action. + # + # @!attribute [rw] message + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/AccessDeniedException AWS API Documentation + # + class AccessDeniedException < Struct.new( + :message) + SENSITIVE = [] + include Aws::Structure + end + + # The requested operation would cause a conflict with the current state + # of a service resource associated with the request. Resolve the + # conflict before retrying this request. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The ID of the resource associated with the request. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource associated with the request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ConflictException AWS API Documentation + # + class ConflictException < Struct.new( + :message, + :resource_id, + :resource_type) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] name + # The name for the environment. + # @return [String] + # + # @!attribute [rw] desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # @return [String] + # + # @!attribute [rw] desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] maintenance_window + # A specification for a time window to apply software updates. + # @return [Types::MaintenanceWindow] + # + # @!attribute [rw] software_set_update_mode + # An option to define which software updates to apply. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set to apply. + # @return [String] + # + # @!attribute [rw] kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key to + # use to encrypt the environment. + # @return [String] + # + # @!attribute [rw] client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry + # the request without accidentally performing the same operation a + # second time. Passing the same value to a later call to an operation + # requires that you also pass the same value for all other parameters. + # We recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates + # a random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # @return [String] + # + # @!attribute [rw] tags + # A map of the key-value pairs of the tag or tags to assign to the + # resource. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/CreateEnvironmentRequest AWS API Documentation + # + class CreateEnvironmentRequest < Struct.new( + :name, + :desktop_arn, + :desktop_endpoint, + :software_set_update_schedule, + :maintenance_window, + :software_set_update_mode, + :desired_software_set_id, + :kms_key_arn, + :client_token, + :tags) + SENSITIVE = [:name, :desktop_endpoint, :tags] + include Aws::Structure + end + + # @!attribute [rw] environment + # Describes an environment. + # @return [Types::EnvironmentSummary] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/CreateEnvironmentResponse AWS API Documentation + # + class CreateEnvironmentResponse < Struct.new( + :environment) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the device to delete. + # @return [String] + # + # @!attribute [rw] client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry + # the request without accidentally performing the same operation a + # second time. Passing the same value to a later call to an operation + # requires that you also pass the same value for all other parameters. + # We recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates + # a random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteDeviceRequest AWS API Documentation + # + class DeleteDeviceRequest < Struct.new( + :id, + :client_token) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteDeviceResponse AWS API Documentation + # + class DeleteDeviceResponse < Aws::EmptyStructure; end + + # @!attribute [rw] id + # The ID of the environment to delete. + # @return [String] + # + # @!attribute [rw] client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry + # the request without accidentally performing the same operation a + # second time. Passing the same value to a later call to an operation + # requires that you also pass the same value for all other parameters. + # We recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates + # a random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteEnvironmentRequest AWS API Documentation + # + class DeleteEnvironmentRequest < Struct.new( + :id, + :client_token) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeleteEnvironmentResponse AWS API Documentation + # + class DeleteEnvironmentResponse < Aws::EmptyStructure; end + + # @!attribute [rw] id + # The ID of the device to deregister. + # @return [String] + # + # @!attribute [rw] target_device_status + # The desired new status for the device. + # @return [String] + # + # @!attribute [rw] client_token + # Specifies a unique, case-sensitive identifier that you provide to + # ensure the idempotency of the request. This lets you safely retry + # the request without accidentally performing the same operation a + # second time. Passing the same value to a later call to an operation + # requires that you also pass the same value for all other parameters. + # We recommend that you use a [UUID type of value][1]. + # + # If you don't provide this value, then Amazon Web Services generates + # a random one for you. + # + # If you retry the operation with the same `ClientToken`, but with + # different parameters, the retry fails with an + # `IdempotentParameterMismatch` error. + # + # **A suitable default value is auto-generated.** You should normally + # not need to pass this option. + # + # + # + # [1]: https://wikipedia.org/wiki/Universally_unique_identifier + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeregisterDeviceRequest AWS API Documentation + # + class DeregisterDeviceRequest < Struct.new( + :id, + :target_device_status, + :client_token) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeregisterDeviceResponse AWS API Documentation + # + class DeregisterDeviceResponse < Aws::EmptyStructure; end + + # Describes a thin client device. + # + # @!attribute [rw] id + # The ID of the device. + # @return [String] + # + # @!attribute [rw] serial_number + # The hardware serial number of the device. + # @return [String] + # + # @!attribute [rw] name + # The name of the device. + # @return [String] + # + # @!attribute [rw] model + # The model number of the device. + # @return [String] + # + # @!attribute [rw] environment_id + # The ID of the environment the device is associated with. + # @return [String] + # + # @!attribute [rw] status + # The status of the device. + # @return [String] + # + # @!attribute [rw] current_software_set_id + # The ID of the software set currently installed on the device. + # @return [String] + # + # @!attribute [rw] current_software_set_version + # The version of the software set currently installed on the device. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set which the device has been set to. + # @return [String] + # + # @!attribute [rw] pending_software_set_id + # The ID of the software set that is pending to be installed on the + # device. + # @return [String] + # + # @!attribute [rw] pending_software_set_version + # The version of the software set that is pending to be installed on + # the device. + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] software_set_compliance_status + # Describes if the software currently installed on the device is a + # supported version. + # @return [String] + # + # @!attribute [rw] software_set_update_status + # Describes if the device has a supported version of software + # installed. + # @return [String] + # + # @!attribute [rw] last_connected_at + # The timestamp of the most recent session on the device. + # @return [Time] + # + # @!attribute [rw] last_posture_at + # The timestamp of the most recent check-in of the device. + # @return [Time] + # + # @!attribute [rw] created_at + # The timestamp of when the device was created. + # @return [Time] + # + # @!attribute [rw] updated_at + # The timestamp of when the device was updated. + # @return [Time] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the device. + # @return [String] + # + # @!attribute [rw] kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key + # used to encrypt the device. + # @return [String] + # + # @!attribute [rw] tags + # The tag keys and optional values for the resource. + # @return [Types::EmbeddedTag] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/Device AWS API Documentation + # + class Device < Struct.new( + :id, + :serial_number, + :name, + :model, + :environment_id, + :status, + :current_software_set_id, + :current_software_set_version, + :desired_software_set_id, + :pending_software_set_id, + :pending_software_set_version, + :software_set_update_schedule, + :software_set_compliance_status, + :software_set_update_status, + :last_connected_at, + :last_posture_at, + :created_at, + :updated_at, + :arn, + :kms_key_arn, + :tags) + SENSITIVE = [:name, :tags] + include Aws::Structure + end + + # Describes a thin client device. + # + # @!attribute [rw] id + # The ID of the device. + # @return [String] + # + # @!attribute [rw] serial_number + # The hardware serial number of the device. + # @return [String] + # + # @!attribute [rw] name + # The name of the device. + # @return [String] + # + # @!attribute [rw] model + # The model number of the device. + # @return [String] + # + # @!attribute [rw] environment_id + # The ID of the environment the device is associated with. + # @return [String] + # + # @!attribute [rw] status + # The status of the device. + # @return [String] + # + # @!attribute [rw] current_software_set_id + # The ID of the software set currently installed on the device. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set which the device has been set to. + # @return [String] + # + # @!attribute [rw] pending_software_set_id + # The ID of the software set that is pending to be installed on the + # device. + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] last_connected_at + # The timestamp of the most recent session on the device. + # @return [Time] + # + # @!attribute [rw] last_posture_at + # The timestamp of the most recent check-in of the device. + # @return [Time] + # + # @!attribute [rw] created_at + # The timestamp of when the device was created. + # @return [Time] + # + # @!attribute [rw] updated_at + # The timestamp of when the device was updated. + # @return [Time] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the device. + # @return [String] + # + # @!attribute [rw] tags + # The tag keys and optional values for the resource. + # @return [Types::EmbeddedTag] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/DeviceSummary AWS API Documentation + # + class DeviceSummary < Struct.new( + :id, + :serial_number, + :name, + :model, + :environment_id, + :status, + :current_software_set_id, + :desired_software_set_id, + :pending_software_set_id, + :software_set_update_schedule, + :last_connected_at, + :last_posture_at, + :created_at, + :updated_at, + :arn, + :tags) + SENSITIVE = [:name, :tags] + include Aws::Structure + end + + # The resource and internal ID of a resource to tag. + # + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of a resource to tag. + # @return [String] + # + # @!attribute [rw] internal_id + # The internal ID of a resource to tag. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/EmbeddedTag AWS API Documentation + # + class EmbeddedTag < Struct.new( + :resource_arn, + :internal_id) + SENSITIVE = [] + include Aws::Structure + end + + # Describes an environment. + # + # @!attribute [rw] id + # The ID of the environment. + # @return [String] + # + # @!attribute [rw] name + # The name of the environment. + # @return [String] + # + # @!attribute [rw] desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # @return [String] + # + # @!attribute [rw] desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # @return [String] + # + # @!attribute [rw] desktop_type + # The type of streaming desktop for the environment. + # @return [String] + # + # @!attribute [rw] activation_code + # The activation code to register a device to the environment. + # @return [String] + # + # @!attribute [rw] registered_devices_count + # The number of devices registered to the environment. + # @return [Integer] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] maintenance_window + # A specification for a time window to apply software updates. + # @return [Types::MaintenanceWindow] + # + # @!attribute [rw] software_set_update_mode + # An option to define which software updates to apply. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set to apply. + # @return [String] + # + # @!attribute [rw] pending_software_set_id + # The ID of the software set that is pending to be installed. + # @return [String] + # + # @!attribute [rw] pending_software_set_version + # The version of the software set that is pending to be installed. + # @return [String] + # + # @!attribute [rw] software_set_compliance_status + # Describes if the software currently installed on all devices in the + # environment is a supported version. + # @return [String] + # + # @!attribute [rw] created_at + # The timestamp of when the environment was created. + # @return [Time] + # + # @!attribute [rw] updated_at + # The timestamp of when the device was updated. + # @return [Time] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the environment. + # @return [String] + # + # @!attribute [rw] kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key + # used to encrypt the environment. + # @return [String] + # + # @!attribute [rw] tags + # The tag keys and optional values for the resource. + # @return [Types::EmbeddedTag] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/Environment AWS API Documentation + # + class Environment < Struct.new( + :id, + :name, + :desktop_arn, + :desktop_endpoint, + :desktop_type, + :activation_code, + :registered_devices_count, + :software_set_update_schedule, + :maintenance_window, + :software_set_update_mode, + :desired_software_set_id, + :pending_software_set_id, + :pending_software_set_version, + :software_set_compliance_status, + :created_at, + :updated_at, + :arn, + :kms_key_arn, + :tags) + SENSITIVE = [:name, :desktop_endpoint, :tags] + include Aws::Structure + end + + # Describes an environment. + # + # @!attribute [rw] id + # The ID of the environment. + # @return [String] + # + # @!attribute [rw] name + # The name of the environment. + # @return [String] + # + # @!attribute [rw] desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # @return [String] + # + # @!attribute [rw] desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # @return [String] + # + # @!attribute [rw] desktop_type + # The type of streaming desktop for the environment. + # @return [String] + # + # @!attribute [rw] activation_code + # The activation code to register a device to the environment. + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] maintenance_window + # A specification for a time window to apply software updates. + # @return [Types::MaintenanceWindow] + # + # @!attribute [rw] software_set_update_mode + # An option to define which software updates to apply. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set to apply. + # @return [String] + # + # @!attribute [rw] pending_software_set_id + # The ID of the software set that is pending to be installed. + # @return [String] + # + # @!attribute [rw] created_at + # The timestamp of when the environment was created. + # @return [Time] + # + # @!attribute [rw] updated_at + # The timestamp of when the device was updated. + # @return [Time] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the environment. + # @return [String] + # + # @!attribute [rw] tags + # The tag keys and optional values for the resource. + # @return [Types::EmbeddedTag] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/EnvironmentSummary AWS API Documentation + # + class EnvironmentSummary < Struct.new( + :id, + :name, + :desktop_arn, + :desktop_endpoint, + :desktop_type, + :activation_code, + :software_set_update_schedule, + :maintenance_window, + :software_set_update_mode, + :desired_software_set_id, + :pending_software_set_id, + :created_at, + :updated_at, + :arn, + :tags) + SENSITIVE = [:name, :desktop_endpoint, :tags] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the device for which to return information. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetDeviceRequest AWS API Documentation + # + class GetDeviceRequest < Struct.new( + :id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] device + # Describes an device. + # @return [Types::Device] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetDeviceResponse AWS API Documentation + # + class GetDeviceResponse < Struct.new( + :device) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the environment for which to return information. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetEnvironmentRequest AWS API Documentation + # + class GetEnvironmentRequest < Struct.new( + :id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] environment + # Describes an environment. + # @return [Types::Environment] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetEnvironmentResponse AWS API Documentation + # + class GetEnvironmentResponse < Struct.new( + :environment) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the software set for which to return information. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetSoftwareSetRequest AWS API Documentation + # + class GetSoftwareSetRequest < Struct.new( + :id) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] software_set + # Describes a software set. + # @return [Types::SoftwareSet] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/GetSoftwareSetResponse AWS API Documentation + # + class GetSoftwareSetResponse < Struct.new( + :software_set) + SENSITIVE = [] + include Aws::Structure + end + + # The server encountered an internal error and is unable to complete the + # request. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] retry_after_seconds + # The number of seconds to wait before retrying the next request. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/InternalServerException AWS API Documentation + # + class InternalServerException < Struct.new( + :message, + :retry_after_seconds) + SENSITIVE = [] + include Aws::Structure + end + + # Request processing failed due to some unknown error, exception, or + # failure. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] retry_after_seconds + # The number of seconds to wait before retrying the next request. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/InternalServiceException AWS API Documentation + # + class InternalServiceException < Struct.new( + :message, + :retry_after_seconds) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of results that are returned per call. You can + # use `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned + # per call might be fewer than the specified maximum. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListDevicesRequest AWS API Documentation + # + class ListDevicesRequest < Struct.new( + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] devices + # Describes devices. + # @return [Array] + # + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListDevicesResponse AWS API Documentation + # + class ListDevicesResponse < Struct.new( + :devices, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of results that are returned per call. You can + # use `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned + # per call might be fewer than the specified maximum. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListEnvironmentsRequest AWS API Documentation + # + class ListEnvironmentsRequest < Struct.new( + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] environments + # Describes environments. + # @return [Array] + # + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListEnvironmentsResponse AWS API Documentation + # + class ListEnvironmentsResponse < Struct.new( + :environments, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @!attribute [rw] max_results + # The maximum number of results that are returned per call. You can + # use `nextToken` to obtain further pages of results. + # + # This is only an upper limit. The actual number of results returned + # per call might be fewer than the specified maximum. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListSoftwareSetsRequest AWS API Documentation + # + class ListSoftwareSetsRequest < Struct.new( + :next_token, + :max_results) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] software_sets + # Describes software sets. + # @return [Array] + # + # @!attribute [rw] next_token + # If `nextToken` is returned, there are more results available. The + # value of `nextToken` is a unique pagination token for each page. + # Make the call again using the returned token to retrieve the next + # page. Keep all other arguments unchanged. Each pagination token + # expires after 24 hours. Using an expired pagination token will + # return an *HTTP 400 InvalidToken error*. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListSoftwareSetsResponse AWS API Documentation + # + class ListSoftwareSetsResponse < Struct.new( + :software_sets, + :next_token) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource for which you want to + # retrieve tags. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListTagsForResourceRequest AWS API Documentation + # + class ListTagsForResourceRequest < Struct.new( + :resource_arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] tags + # A map of the key-value pairs for the tag or tags assigned to the + # specified resource. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ListTagsForResourceResponse AWS API Documentation + # + class ListTagsForResourceResponse < Struct.new( + :tags) + SENSITIVE = [:tags] + include Aws::Structure + end + + # Describes the maintenance window for a thin client device. + # + # @!attribute [rw] type + # An option to select the default or custom maintenance window. + # @return [String] + # + # @!attribute [rw] start_time_hour + # The hour for the maintenance window start (`00`-`23`). + # @return [Integer] + # + # @!attribute [rw] start_time_minute + # The minutes past the hour for the maintenance window start + # (`00`-`59`). + # @return [Integer] + # + # @!attribute [rw] end_time_hour + # The hour for the maintenance window end (`00`-`23`). + # @return [Integer] + # + # @!attribute [rw] end_time_minute + # The minutes for the maintenance window end (`00`-`59`). + # @return [Integer] + # + # @!attribute [rw] days_of_the_week + # The days of the week during which the maintenance window is open. + # @return [Array] + # + # @!attribute [rw] apply_time_of + # The option to set the maintenance window during the device local + # time or Universal Coordinated Time (UTC). + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/MaintenanceWindow AWS API Documentation + # + class MaintenanceWindow < Struct.new( + :type, + :start_time_hour, + :start_time_minute, + :end_time_hour, + :end_time_minute, + :days_of_the_week, + :apply_time_of) + SENSITIVE = [] + include Aws::Structure + end + + # The resource specified in the request was not found. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The ID of the resource associated with the request. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource associated with the request. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ResourceNotFoundException AWS API Documentation + # + class ResourceNotFoundException < Struct.new( + :message, + :resource_id, + :resource_type) + SENSITIVE = [] + include Aws::Structure + end + + # Your request exceeds a service quota. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] resource_id + # The ID of the resource that exceeds the service quota. + # @return [String] + # + # @!attribute [rw] resource_type + # The type of the resource that exceeds the service quota. + # @return [String] + # + # @!attribute [rw] service_code + # The code for the service in [Service Quotas][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html + # @return [String] + # + # @!attribute [rw] quota_code + # The code for the quota in [Service Quotas][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ServiceQuotaExceededException AWS API Documentation + # + class ServiceQuotaExceededException < Struct.new( + :message, + :resource_id, + :resource_type, + :service_code, + :quota_code) + SENSITIVE = [] + include Aws::Structure + end + + # Describes software. + # + # @!attribute [rw] name + # The name of the software component. + # @return [String] + # + # @!attribute [rw] version + # The version of the software component. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/Software AWS API Documentation + # + class Software < Struct.new( + :name, + :version) + SENSITIVE = [] + include Aws::Structure + end + + # Describes a software set. + # + # @!attribute [rw] id + # The ID of the software set. + # @return [String] + # + # @!attribute [rw] version + # The version of the software set. + # @return [String] + # + # @!attribute [rw] released_at + # The timestamp of when the software set was released. + # @return [Time] + # + # @!attribute [rw] supported_until + # The timestamp of the end of support for the software set. + # @return [Time] + # + # @!attribute [rw] validation_status + # An option to define if the software set has been validated. + # @return [String] + # + # @!attribute [rw] software + # A list of the software components in the software set. + # @return [Array] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the software set. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/SoftwareSet AWS API Documentation + # + class SoftwareSet < Struct.new( + :id, + :version, + :released_at, + :supported_until, + :validation_status, + :software, + :arn) + SENSITIVE = [] + include Aws::Structure + end + + # Describes a software set. + # + # @!attribute [rw] id + # The ID of the software set. + # @return [String] + # + # @!attribute [rw] version + # The version of the software set. + # @return [String] + # + # @!attribute [rw] released_at + # The timestamp of when the software set was released. + # @return [Time] + # + # @!attribute [rw] supported_until + # The timestamp of the end of support for the software set. + # @return [Time] + # + # @!attribute [rw] validation_status + # An option to define if the software set has been validated. + # @return [String] + # + # @!attribute [rw] arn + # The Amazon Resource Name (ARN) of the software set. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/SoftwareSetSummary AWS API Documentation + # + class SoftwareSetSummary < Struct.new( + :id, + :version, + :released_at, + :supported_until, + :validation_status, + :arn) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource that you want to tag. + # @return [String] + # + # @!attribute [rw] tags + # A map of the key-value pairs of the tag or tags to assign to the + # resource. + # @return [Hash] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/TagResourceRequest AWS API Documentation + # + class TagResourceRequest < Struct.new( + :resource_arn, + :tags) + SENSITIVE = [:tags] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/TagResourceResponse AWS API Documentation + # + class TagResourceResponse < Aws::EmptyStructure; end + + # The request was denied due to request throttling. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] service_code + # The code for the service in [Service Quotas][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html + # @return [String] + # + # @!attribute [rw] quota_code + # The code for the quota in [Service Quotas][1]. + # + # + # + # [1]: https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html + # @return [String] + # + # @!attribute [rw] retry_after_seconds + # The number of seconds to wait before retrying the next request. + # @return [Integer] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ThrottlingException AWS API Documentation + # + class ThrottlingException < Struct.new( + :message, + :service_code, + :quota_code, + :retry_after_seconds) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] resource_arn + # The Amazon Resource Name (ARN) of the resource that you want to + # untag. + # @return [String] + # + # @!attribute [rw] tag_keys + # The keys of the key-value pairs for the tag or tags you want to + # remove from the specified resource. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UntagResourceRequest AWS API Documentation + # + class UntagResourceRequest < Struct.new( + :resource_arn, + :tag_keys) + SENSITIVE = [:tag_keys] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UntagResourceResponse AWS API Documentation + # + class UntagResourceResponse < Aws::EmptyStructure; end + + # @!attribute [rw] id + # The ID of the device to update. + # @return [String] + # + # @!attribute [rw] name + # The name of the device to update. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set to apply. + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] kms_key_arn + # The Amazon Resource Name (ARN) of the Key Management Service key to + # use for the update. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateDeviceRequest AWS API Documentation + # + class UpdateDeviceRequest < Struct.new( + :id, + :name, + :desired_software_set_id, + :software_set_update_schedule, + :kms_key_arn) + SENSITIVE = [:name] + include Aws::Structure + end + + # @!attribute [rw] device + # Describes a device. + # @return [Types::DeviceSummary] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateDeviceResponse AWS API Documentation + # + class UpdateDeviceResponse < Struct.new( + :device) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the environment to update. + # @return [String] + # + # @!attribute [rw] name + # The name of the environment to update. + # @return [String] + # + # @!attribute [rw] desktop_arn + # The Amazon Resource Name (ARN) of the desktop to stream from Amazon + # WorkSpaces, WorkSpaces Web, or AppStream 2.0. + # @return [String] + # + # @!attribute [rw] desktop_endpoint + # The URL for the identity provider login (only for environments that + # use AppStream 2.0). + # @return [String] + # + # @!attribute [rw] software_set_update_schedule + # An option to define if software updates should be applied within a + # maintenance window. + # @return [String] + # + # @!attribute [rw] maintenance_window + # A specification for a time window to apply software updates. + # @return [Types::MaintenanceWindow] + # + # @!attribute [rw] software_set_update_mode + # An option to define which software updates to apply. + # @return [String] + # + # @!attribute [rw] desired_software_set_id + # The ID of the software set to apply. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateEnvironmentRequest AWS API Documentation + # + class UpdateEnvironmentRequest < Struct.new( + :id, + :name, + :desktop_arn, + :desktop_endpoint, + :software_set_update_schedule, + :maintenance_window, + :software_set_update_mode, + :desired_software_set_id) + SENSITIVE = [:name, :desktop_endpoint] + include Aws::Structure + end + + # @!attribute [rw] environment + # Describes an environment. + # @return [Types::EnvironmentSummary] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateEnvironmentResponse AWS API Documentation + # + class UpdateEnvironmentResponse < Struct.new( + :environment) + SENSITIVE = [] + include Aws::Structure + end + + # @!attribute [rw] id + # The ID of the software set to update. + # @return [String] + # + # @!attribute [rw] validation_status + # An option to define if the software set has been validated. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateSoftwareSetRequest AWS API Documentation + # + class UpdateSoftwareSetRequest < Struct.new( + :id, + :validation_status) + SENSITIVE = [] + include Aws::Structure + end + + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/UpdateSoftwareSetResponse AWS API Documentation + # + class UpdateSoftwareSetResponse < Aws::EmptyStructure; end + + # The input fails to satisfy the specified constraints. + # + # @!attribute [rw] message + # @return [String] + # + # @!attribute [rw] reason + # The reason for the exception. + # @return [String] + # + # @!attribute [rw] field_list + # A list of fields that didn't validate. + # @return [Array] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ValidationException AWS API Documentation + # + class ValidationException < Struct.new( + :message, + :reason, + :field_list) + SENSITIVE = [] + include Aws::Structure + end + + # Describes a validation exception. + # + # @!attribute [rw] name + # The name of the exception. + # @return [String] + # + # @!attribute [rw] message + # A message that describes the reason for the exception. + # @return [String] + # + # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-thin-client-2023-08-22/ValidationExceptionField AWS API Documentation + # + class ValidationExceptionField < Struct.new( + :name, + :message) + SENSITIVE = [] + include Aws::Structure + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/spec/endpoint_provider_spec.rb b/gems/aws-sdk-workspacesthinclient/spec/endpoint_provider_spec.rb new file mode 100644 index 00000000000..2e8c789fd77 --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/spec/endpoint_provider_spec.rb @@ -0,0 +1,361 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + + +require_relative 'spec_helper' + +module Aws::WorkSpacesThinClient + describe EndpointProvider do + subject { Aws::WorkSpacesThinClient::EndpointProvider.new } + + context 'For region us-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.cn-north-1.api.amazonwebservices.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region cn-north-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.cn-north-1.amazonaws.com.cn"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-gov-east-1.api.aws"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>true}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-gov-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-gov-east-1.amazonaws.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-iso-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-iso-east-1.c2s.ic.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack enabled' do + let(:expected) do + {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS enabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient-fips.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack enabled' do + let(:expected) do + {"error"=>"DualStack is enabled but this partition does not support DualStack"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>true}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For region us-isob-east-1 with FIPS disabled and DualStack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://thinclient.us-isob-east-1.sc2s.sgov.gov"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>false}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with region not set and fips disabled and dualstack disabled' do + let(:expected) do + {"endpoint"=>{"url"=>"https://example.com"}} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + endpoint = subject.resolve_endpoint(params) + expect(endpoint.url).to eq(expected['endpoint']['url']) + expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {}) + expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {}) + end + end + + context 'For custom endpoint with fips enabled and dualstack disabled' do + let(:expected) do + {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'For custom endpoint with fips disabled and dualstack enabled' do + let(:expected) do + {"error"=>"Invalid Configuration: Dualstack and custom endpoint are not supported"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true, :endpoint=>"https://example.com"}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + context 'Missing region' do + let(:expected) do + {"error"=>"Invalid Configuration: Missing Region"} + end + + it 'produces the expected output from the EndpointProvider' do + params = EndpointParameters.new(**{}) + expect do + subject.resolve_endpoint(params) + end.to raise_error(ArgumentError, expected['error']) + end + end + + end +end diff --git a/gems/aws-sdk-workspacesthinclient/spec/spec_helper.rb b/gems/aws-sdk-workspacesthinclient/spec/spec_helper.rb new file mode 100644 index 00000000000..a09a94cc47d --- /dev/null +++ b/gems/aws-sdk-workspacesthinclient/spec/spec_helper.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# WARNING ABOUT GENERATED CODE +# +# This file is generated. See the contributing guide for more information: +# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md +# +# WARNING ABOUT GENERATED CODE + +require_relative '../../aws-sdk-core/spec/shared_spec_helper' + +$:.unshift(File.expand_path('../../lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__)) +$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__)) + +require 'rspec' +require 'webmock/rspec' +require 'aws-sdk-workspacesthinclient' diff --git a/services.json b/services.json index fb6c932c697..41e533634da 100644 --- a/services.json +++ b/services.json @@ -96,6 +96,9 @@ "AutoScalingPlans": { "models": "autoscaling-plans/2018-01-06" }, + "BCMDataExports": { + "models": "bcm-data-exports/2023-11-26" + }, "Backup": { "models": "backup/2018-11-15" }, @@ -287,6 +290,9 @@ "CostExplorer": { "models": "ce/2017-10-25" }, + "CostOptimizationHub": { + "models": "cost-optimization-hub/2022-07-26" + }, "CostandUsageReportService": { "models": "cur/2017-01-06" }, @@ -386,6 +392,9 @@ "EKS": { "models": "eks/2017-11-01" }, + "EKSAuth": { + "models": "eks-auth/2023-11-26" + }, "EMR": { "models": "elasticmapreduce/2009-03-31" }, @@ -455,6 +464,9 @@ "FraudDetector": { "models": "frauddetector/2019-11-15" }, + "FreeTier": { + "models": "freetier/2023-09-07" + }, "GameLift": { "models": "gamelift/2015-10-01" }, @@ -905,6 +917,9 @@ "Rekognition": { "models": "rekognition/2016-06-27" }, + "Repostspace": { + "models": "repostspace/2022-05-13" + }, "ResilienceHub": { "models": "resiliencehub/2020-04-30" }, @@ -1188,6 +1203,9 @@ "WorkSpaces": { "models": "workspaces/2015-04-08" }, + "WorkSpacesThinClient": { + "models": "workspaces-thin-client/2023-08-22" + }, "WorkSpacesWeb": { "models": "workspaces-web/2020-07-08" },