[Python-modules-commits] [python-botocore] 01/05: New upstream version 1.8.36+repack

Takaki Taniguchi takaki at moszumanska.debian.org
Sat Feb 3 09:41:23 UTC 2018


This is an automated email from the git hooks/post-receive script.

takaki pushed a commit to branch master
in repository python-botocore.

commit ede794960c0710d5a8cc9f258ad0c6e8f3cb9a94
Author: TANIGUCHI Takaki <takaki at asis.media-as.org>
Date:   Sat Feb 3 18:30:12 2018 +0900

    New upstream version 1.8.36+repack
---
 PKG-INFO                                           |   2 +-
 botocore.egg-info/PKG-INFO                         |   2 +-
 botocore.egg-info/SOURCES.txt                      |   4 +
 botocore/__init__.py                               |   2 +-
 botocore/client.py                                 |  20 +-
 botocore/credentials.py                            |  44 +-
 .../alexaforbusiness/2017-11-09/paginators-1.json  |  45 +-
 .../alexaforbusiness/2017-11-09/service-2.json     |  43 +-
 .../2016-02-06/service-2.json                      |  44 +-
 .../2018-01-06}/paginators-1.json                  |   0
 .../autoscaling-plans/2018-01-06/service-2.json    | 665 +++++++++++++++++++++
 botocore/data/budgets/2016-10-20/service-2.json    |   8 +
 botocore/data/cloud9/2017-09-23/paginators-1.json  |  15 +-
 .../clouddirectory/2016-05-10/paginators-1.json    |  99 ++-
 .../data/cloudhsmv2/2017-04-28/paginators-1.json   |  21 +-
 .../data/cloudwatch/2010-08-01/paginators-1.json   |   5 +
 botocore/data/codebuild/2016-10-06/service-2.json  |  33 +-
 .../data/codecommit/2015-04-13/paginators-1.json   |  30 +
 .../data/comprehend/2017-11-27/paginators-1.json   |   9 +-
 botocore/data/devicefarm/2015-06-23/service-2.json |  95 ++-
 botocore/data/dms/2016-01-01/paginators-1.json     |  81 ++-
 botocore/data/ds/2015-04-16/paginators-1.json      |   9 +-
 botocore/data/ec2/2016-11-15/service-2.json        |  22 +-
 botocore/data/endpoints.json                       |  28 +
 botocore/data/es/2015-01-01/paginators-1.json      |  15 +-
 botocore/data/glue/2017-03-31/paginators-1.json    |  81 ++-
 botocore/data/glue/2017-03-31/service-2.json       | 241 +++++++-
 botocore/data/guardduty/2017-11-28/service-2.json  |  30 +
 .../data/inspector/2016-02-16/paginators-1.json    |  51 +-
 botocore/data/lambda/2015-03-31/service-2.json     | 103 +++-
 .../data/lex-models/2017-04-19/paginators-1.json   |  63 +-
 botocore/data/medialive/2017-10-14/service-2.json  | 156 +++--
 botocore/data/mobile/2017-07-01/paginators-1.json  |  15 +-
 botocore/data/mturk/2017-01-17/paginators-1.json   |  57 +-
 botocore/data/mturk/2017-01-17/service-2.json      |   2 +-
 .../organizations/2016-11-28/paginators-1.json     |   6 +
 botocore/data/rds/2014-10-31/service-2.json        |  75 ++-
 .../data/rekognition/2016-06-27/paginators-1.json  |   6 +
 .../resource-groups/2017-11-27/paginators-1.json   |  21 +-
 .../data/sagemaker/2017-07-24/paginators-1.json    |  39 +-
 botocore/data/sagemaker/2017-07-24/service-2.json  |  14 +-
 .../servicecatalog/2015-12-10/paginators-1.json    |  57 +-
 .../servicediscovery/2017-03-14/paginators-1.json  |  27 +-
 botocore/data/ses/2010-12-01/paginators-1.json     |   6 +
 botocore/data/ssm/2014-11-06/paginators-1.json     |  18 +
 .../2017-10-26}/paginators-1.json                  |   0
 botocore/data/transcribe/2017-10-26/service-2.json | 353 +++++++++++
 .../data/workmail/2017-10-01/paginators-1.json     |  39 +-
 botocore/docs/bcdoc/style.py                       |   6 +
 botocore/handlers.py                               |   5 +-
 botocore/signers.py                                |  14 +-
 botocore/stub.py                                   |  13 +-
 docs/source/conf.py                                |   2 +-
 tests/functional/test_credentials.py               |  14 +
 tests/functional/test_endpoints.py                 |   1 +
 tests/functional/test_s3.py                        |  43 ++
 tests/functional/test_stub.py                      |  49 +-
 tests/unit/docs/bcdoc/test_style.py                |  16 +-
 tests/unit/test_handlers.py                        |  22 +-
 tests/unit/test_signers.py                         |  48 +-
 60 files changed, 2843 insertions(+), 191 deletions(-)

diff --git a/PKG-INFO b/PKG-INFO
index 57193da..1850b9e 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: botocore
-Version: 1.8.28
+Version: 1.8.36
 Summary: Low-level, data-driven core of boto 3.
 Home-page: https://github.com/boto/botocore
 Author: Amazon Web Services
diff --git a/botocore.egg-info/PKG-INFO b/botocore.egg-info/PKG-INFO
index 57193da..1850b9e 100644
--- a/botocore.egg-info/PKG-INFO
+++ b/botocore.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: botocore
-Version: 1.8.28
+Version: 1.8.36
 Summary: Low-level, data-driven core of boto 3.
 Home-page: https://github.com/boto/botocore
 Author: Amazon Web Services
diff --git a/botocore.egg-info/SOURCES.txt b/botocore.egg-info/SOURCES.txt
index b325896..a48c52c 100644
--- a/botocore.egg-info/SOURCES.txt
+++ b/botocore.egg-info/SOURCES.txt
@@ -59,6 +59,8 @@ botocore/data/appsync/2017-07-25/paginators-1.json
 botocore/data/appsync/2017-07-25/service-2.json
 botocore/data/athena/2017-05-18/paginators-1.json
 botocore/data/athena/2017-05-18/service-2.json
+botocore/data/autoscaling-plans/2018-01-06/paginators-1.json
+botocore/data/autoscaling-plans/2018-01-06/service-2.json
 botocore/data/autoscaling/2011-01-01/examples-1.json
 botocore/data/autoscaling/2011-01-01/paginators-1.json
 botocore/data/autoscaling/2011-01-01/service-2.json
@@ -447,6 +449,8 @@ botocore/data/support/2013-04-15/paginators-1.json
 botocore/data/support/2013-04-15/service-2.json
 botocore/data/swf/2012-01-25/paginators-1.json
 botocore/data/swf/2012-01-25/service-2.json
+botocore/data/transcribe/2017-10-26/paginators-1.json
+botocore/data/transcribe/2017-10-26/service-2.json
 botocore/data/translate/2017-07-01/paginators-1.json
 botocore/data/translate/2017-07-01/service-2.json
 botocore/data/waf-regional/2016-11-28/examples-1.json
diff --git a/botocore/__init__.py b/botocore/__init__.py
index 326bbcf..14ee2a3 100644
--- a/botocore/__init__.py
+++ b/botocore/__init__.py
@@ -16,7 +16,7 @@ import os
 import re
 import logging
 
-__version__ = '1.8.28'
+__version__ = '1.8.36'
 
 
 class NullHandler(logging.Handler):
diff --git a/botocore/client.py b/botocore/client.py
index f23d0a3..f1fca3f 100644
--- a/botocore/client.py
+++ b/botocore/client.py
@@ -139,7 +139,7 @@ class ClientCreator(object):
             # Also make sure that the hostname gets switched to
             # s3-accelerate.amazonaws.com
             client.meta.events.register_first(
-                'request-created.s3', switch_host_s3_accelerate)
+                'before-sign.s3', switch_host_s3_accelerate)
 
         self._set_s3_presign_signature_version(
             client.meta, client_config, scoped_config)
@@ -618,6 +618,16 @@ class BaseClient(object):
 
     def _convert_to_request_dict(self, api_params, operation_model,
                                  context=None):
+        api_params = self._emit_api_params(
+            api_params, operation_model, context)
+        request_dict = self._serializer.serialize_to_request(
+            api_params, operation_model)
+        prepare_request_dict(request_dict, endpoint_url=self._endpoint.host,
+                             user_agent=self._client_config.user_agent,
+                             context=context)
+        return request_dict
+
+    def _emit_api_params(self, api_params, operation_model, context):
         # Given the API params provided by the user and the operation_model
         # we can serialize the request to a request_dict.
         operation_name = operation_model.name
@@ -639,13 +649,7 @@ class BaseClient(object):
                 endpoint_prefix=self._service_model.endpoint_prefix,
                 operation_name=operation_name),
             params=api_params, model=operation_model, context=context)
-
-        request_dict = self._serializer.serialize_to_request(
-            api_params, operation_model)
-        prepare_request_dict(request_dict, endpoint_url=self._endpoint.host,
-                             user_agent=self._client_config.user_agent,
-                             context=context)
-        return request_dict
+        return api_params
 
     def get_paginator(self, operation_name):
         """Create a paginator for an operation.
diff --git a/botocore/credentials.py b/botocore/credentials.py
index d846b1e..370c6d8 100644
--- a/botocore/credentials.py
+++ b/botocore/credentials.py
@@ -1207,12 +1207,13 @@ class AssumeRoleProvider(CredentialProvider):
 
     def load(self):
         self._loaded_config = self._load_config()
-        if self._has_assume_role_config_vars():
+        profiles = self._loaded_config.get('profiles', {})
+        profile = profiles.get(self._profile_name, {})
+        if self._has_assume_role_config_vars(profile):
             return self._load_creds_via_assume_role(self._profile_name)
 
-    def _has_assume_role_config_vars(self):
-        profiles = self._loaded_config.get('profiles', {})
-        return self.ROLE_CONFIG_VAR in profiles.get(self._profile_name, {})
+    def _has_assume_role_config_vars(self, profile):
+        return self.ROLE_CONFIG_VAR in profile
 
     def _load_creds_via_assume_role(self, profile_name):
         role_config = self._get_role_config(profile_name)
@@ -1310,27 +1311,46 @@ class AssumeRoleProvider(CredentialProvider):
                 'valid.' % (credential_source, parent_profile)
             ))
 
-    def _validate_source_profile(self, parent_profile, source_profile):
+    def _source_profile_has_credentials(self, profile):
+        return any([
+            self._has_static_credentials(profile),
+            self._has_assume_role_config_vars(profile),
+        ])
+
+    def _validate_source_profile(self, parent_profile_name,
+                                 source_profile_name):
         profiles = self._loaded_config.get('profiles', {})
-        if source_profile not in profiles:
+        if source_profile_name not in profiles:
             raise InvalidConfigError(
                 error_msg=(
                     'The source_profile "%s" referenced in '
                     'the profile "%s" does not exist.' % (
-                        source_profile, parent_profile)
+                        source_profile_name, parent_profile_name)
+                )
+            )
+
+        source_profile = profiles[source_profile_name]
+
+        # Ensure the profile has valid credential type
+        if not self._source_profile_has_credentials(source_profile):
+            raise InvalidConfigError(
+                error_msg=(
+                    'The source_profile "%s" must specify either static '
+                    'credentials or an assume role configuration' % (
+                        source_profile_name)
                 )
             )
 
         # Make sure we aren't going into an infinite loop. If we haven't
         # visited the profile yet, we're good.
-        if source_profile not in self._visited_profiles:
+        if source_profile_name not in self._visited_profiles:
             return
 
         # If we have visited the profile and the profile isn't simply
         # referencing itself, that's an infinite loop.
-        if source_profile != parent_profile:
+        if source_profile_name != parent_profile_name:
             raise InfiniteLoopConfigError(
-                source_profile=source_profile,
+                source_profile=source_profile_name,
                 visited_profiles=self._visited_profiles
             )
 
@@ -1339,9 +1359,9 @@ class AssumeRoleProvider(CredentialProvider):
         # profile. This will only ever work for the top level assume
         # role because the static credentials will otherwise take
         # precedence.
-        if not self._has_static_credentials(profiles[source_profile]):
+        if not self._has_static_credentials(source_profile):
             raise InfiniteLoopConfigError(
-                source_profile=source_profile,
+                source_profile=source_profile_name,
                 visited_profiles=self._visited_profiles
             )
 
diff --git a/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json b/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
index ea14245..a91b700 100644
--- a/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
+++ b/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
@@ -1,3 +1,46 @@
 {
-  "pagination": {}
+  "pagination": {
+    "ListSkills": {
+      "result_key": "SkillSummaries",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchUsers": {
+      "result_key": "Users",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "ListTags": {
+      "result_key": "Tags",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchProfiles": {
+      "result_key": "Profiles",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchSkillGroups": {
+      "result_key": "SkillGroups",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchDevices": {
+      "result_key": "Devices",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchRooms": {
+      "result_key": "Rooms",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    }
+  }
 }
diff --git a/botocore/data/alexaforbusiness/2017-11-09/service-2.json b/botocore/data/alexaforbusiness/2017-11-09/service-2.json
index 2c17263..bd4ac44 100644
--- a/botocore/data/alexaforbusiness/2017-11-09/service-2.json
+++ b/botocore/data/alexaforbusiness/2017-11-09/service-2.json
@@ -805,7 +805,11 @@
         },
         "DeviceStatus":{
           "shape":"DeviceStatus",
-          "documentation":"<p>The status of a device.</p>"
+          "documentation":"<p>The status of a device. If the status is not READY, check the DeviceStatusInfo for details.</p>"
+        },
+        "DeviceStatusInfo":{
+          "shape":"DeviceStatusInfo",
+          "documentation":"<p>Detailed information about a device's status.</p>"
         }
       },
       "documentation":"<p>A device with attributes.</p>"
@@ -848,6 +852,10 @@
         "RoomName":{
           "shape":"RoomName",
           "documentation":"<p>The name of the room associated with a device.</p>"
+        },
+        "DeviceStatusInfo":{
+          "shape":"DeviceStatusInfo",
+          "documentation":"<p>Detailed information about a device's status.</p>"
         }
       },
       "documentation":"<p>Device attributes.</p>"
@@ -874,6 +882,37 @@
         "WAS_OFFLINE"
       ]
     },
+    "DeviceStatusDetail":{
+      "type":"structure",
+      "members":{
+        "Code":{
+          "shape":"DeviceStatusDetailCode",
+          "documentation":"<p>The device status detail code.</p>"
+        }
+      },
+      "documentation":"<p>Details of a device’s status.</p>"
+    },
+    "DeviceStatusDetailCode":{
+      "type":"string",
+      "enum":[
+        "DEVICE_SOFTWARE_UPDATE_NEEDED",
+        "DEVICE_WAS_OFFLINE"
+      ]
+    },
+    "DeviceStatusDetails":{
+      "type":"list",
+      "member":{"shape":"DeviceStatusDetail"}
+    },
+    "DeviceStatusInfo":{
+      "type":"structure",
+      "members":{
+        "DeviceStatusDetails":{
+          "shape":"DeviceStatusDetails",
+          "documentation":"<p>One or more device status detail descriptions.</p>"
+        }
+      },
+      "documentation":"<p>Detailed information about a device's status.</p>"
+    },
     "DeviceType":{
       "type":"string",
       "pattern":"[a-zA-Z0-9]{1,200}"
@@ -1497,7 +1536,7 @@
         },
         "Filters":{
           "shape":"FilterList",
-          "documentation":"<p>The filters to use to list a specified set of devices. Supported filter keys are DeviceName, DeviceStatus, RoomName, DeviceType, DeviceSerialNumber, and UnassociatedOnly.</p>"
+          "documentation":"<p>The filters to use to list a specified set of devices. Supported filter keys are DeviceName, DeviceStatus, DeviceStatusDetailCode, RoomName, DeviceType, DeviceSerialNumber, and UnassociatedOnly.</p>"
         },
         "SortCriteria":{
           "shape":"SortList",
diff --git a/botocore/data/application-autoscaling/2016-02-06/service-2.json b/botocore/data/application-autoscaling/2016-02-06/service-2.json
index 09b992a..608b62d 100644
--- a/botocore/data/application-autoscaling/2016-02-06/service-2.json
+++ b/botocore/data/application-autoscaling/2016-02-06/service-2.json
@@ -75,7 +75,7 @@
         {"shape":"ConcurrentUpdateException"},
         {"shape":"InternalServiceException"}
       ],
-      "documentation":"<p>Provides descriptive information about the scalable targets in the specified namespace.</p> <p>You can filter the results using the <code>ResourceIds</code> and <code>ScalableDimension</code> parameters.</p> <p>To create a scalable target or update an existing one, see <a>RegisterScalableTarget</a>. If you are no longer using a scalable target, you can deregister it using <a>DeregisterScalableTarget</a>.</p>"
+      "documentation":"<p>Gets information about the scalable targets in the specified namespace.</p> <p>You can filter the results using the <code>ResourceIds</code> and <code>ScalableDimension</code> parameters.</p> <p>To create a scalable target or update an existing one, see <a>RegisterScalableTarget</a>. If you are no longer using a scalable target, you can deregister it using <a>DeregisterScalableTarget</a>.</p>"
     },
     "DescribeScalingActivities":{
       "name":"DescribeScalingActivities",
@@ -142,7 +142,7 @@
         {"shape":"FailedResourceAccessException"},
         {"shape":"InternalServiceException"}
       ],
-      "documentation":"<p>Creates or updates a policy for an Application Auto Scaling scalable target.</p> <p>Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy without first registering a scalable target using <a>RegisterScalableTarget</a>.</p> <p>To update a policy, specify its policy name and the parameters that you want  [...]
+      "documentation":"<p>Creates or updates a policy for an Application Auto Scaling scalable target.</p> <p>Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy until you register the scalable target using <a>RegisterScalableTarget</a>.</p> <p>To update a policy, specify its policy name and the parameters that you want to ch [...]
     },
     "PutScheduledAction":{
       "name":"PutScheduledAction",
@@ -159,7 +159,7 @@
         {"shape":"ConcurrentUpdateException"},
         {"shape":"InternalServiceException"}
       ],
-      "documentation":"<p>Creates or updates a scheduled action for an Application Auto Scaling scalable target.</p> <p>Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scheduled action applies to the scalable target identified by those three attributes. You cannot create a scheduled action without first registering a scalable target using <a>RegisterScalableTarget</a>.</p> <p>To update an action, specify its name and the parameters that y [...]
+      "documentation":"<p>Creates or updates a scheduled action for an Application Auto Scaling scalable target.</p> <p>Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scheduled action applies to the scalable target identified by those three attributes. You cannot create a scheduled action until you register the scalable target using <a>RegisterScalableTarget</a>.</p> <p>To update an action, specify its name and the parameters that you wa [...]
     },
     "RegisterScalableTarget":{
       "name":"RegisterScalableTarget",
@@ -175,7 +175,7 @@
         {"shape":"ConcurrentUpdateException"},
         {"shape":"InternalServiceException"}
       ],
-      "documentation":"<p>Registers or updates a scalable target. A scalable target is a resource that Application Auto Scaling can scale out or scale in. After you have registered a scalable target, you can use this operation to update the minimum and maximum values for your scalable dimension.</p> <p>After you register a scalable target, you can create and apply scaling policies using <a>PutScalingPolicy</a>. You can view the scaling policies for a service namespace using <a>DescribeSc [...]
+      "documentation":"<p>Registers or updates a scalable target. A scalable target is a resource that Application Auto Scaling can scale out or scale in. After you have registered a scalable target, you can use this operation to update the minimum and maximum values for its scalable dimension.</p> <p>After you register a scalable target, you can create and apply scaling policies using <a>PutScalingPolicy</a>. You can view the scaling policies for a service namespace using <a>DescribeSca [...]
     }
   },
   "shapes":{
@@ -357,7 +357,7 @@
         },
         "MaxResults":{
           "shape":"MaxResults",
-          "documentation":"<p>The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if ap [...]
+          "documentation":"<p>The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if applicable.</p>"
         },
         "NextToken":{
           "shape":"XmlString",
@@ -370,7 +370,7 @@
       "members":{
         "ScalableTargets":{
           "shape":"ScalableTargets",
-          "documentation":"<p>The list of scalable targets that matches the request parameters.</p>"
+          "documentation":"<p>The scalable targets that match the request parameters.</p>"
         },
         "NextToken":{
           "shape":"XmlString",
@@ -396,7 +396,7 @@
         },
         "MaxResults":{
           "shape":"MaxResults",
-          "documentation":"<p>The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if ap [...]
+          "documentation":"<p>The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if applicable.</p>"
         },
         "NextToken":{
           "shape":"XmlString",
@@ -439,7 +439,7 @@
         },
         "MaxResults":{
           "shape":"MaxResults",
-          "documentation":"<p>The maximum number of scalable target results. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if ap [...]
+          "documentation":"<p>The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.</p> <p>If this parameter is used, the operation returns up to <code>MaxResults</code> results at a time, along with a <code>NextToken</code> value. To get the next set of results, include the <code>NextToken</code> value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a <code>NextToken</code> value, if applicable.</p>"
         },
         "NextToken":{
           "shape":"XmlString",
@@ -510,7 +510,7 @@
       "members":{
         "Message":{"shape":"ErrorMessage"}
       },
-      "documentation":"<p>Failed access to resources caused an exception. This exception is thrown when Application Auto Scaling is unable to retrieve the alarms associated with a scaling policy due to a client error, for example, if the role ARN specified for a scalable target does not have permission to call the CloudWatch <a href=\"http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html\">DescribeAlarms</a> API operation on behalf of your account.</p>",
+      "documentation":"<p>Failed access to resources caused an exception. This exception is thrown when Application Auto Scaling is unable to retrieve the alarms associated with a scaling policy due to a client error, for example, if the role ARN specified for a scalable target does not have permission to call the CloudWatch <a href=\"http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html\">DescribeAlarms</a> on your behalf.</p>",
       "exception":true
     },
     "InternalServiceException":{
@@ -534,7 +534,7 @@
       "members":{
         "Message":{"shape":"ErrorMessage"}
       },
-      "documentation":"<p>Your account exceeded a limit. This exception is thrown when a per-account resource limit is exceeded. For more information, see <a href=\"http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_as-app\">Application Auto Scaling Limits</a>.</p>",
+      "documentation":"<p>A per-account resource limit is exceeded. For more information, see <a href=\"http://docs.aws.amazon.com/ApplicationAutoScaling/latest/userguide/application-auto-scaling-limits.html\">Application Auto Scaling Limits</a>.</p>",
       "exception":true
     },
     "MaxResults":{"type":"integer"},
@@ -593,7 +593,9 @@
         "RDSReaderAverageDatabaseConnections",
         "EC2SpotFleetRequestAverageCPUUtilization",
         "EC2SpotFleetRequestAverageNetworkIn",
-        "EC2SpotFleetRequestAverageNetworkOut"
+        "EC2SpotFleetRequestAverageNetworkOut",
+        "ECSServiceAverageCPUUtilization",
+        "ECSServiceAverageMemoryUtilization"
       ]
     },
     "MetricUnit":{"type":"string"},
@@ -603,7 +605,7 @@
       "members":{
         "Message":{"shape":"ErrorMessage"}
       },
-      "documentation":"<p>The specified object could not be found. For any <code>Put</code> or <code>Register</code> API operation, which depends on the existence of a scalable target, this exception is thrown if the scalable target with the specified service namespace, resource ID, and scalable dimension does not exist. For any <code>Delete</code> or <code>Deregister</code> API operation, this exception is thrown if the resource that is to be deleted or deregistered cannot be found.</p>",
+      "documentation":"<p>The specified object could not be found. For any operation that depends on the existence of a scalable target, this exception is thrown if the scalable target with the specified service namespace, resource ID, and scalable dimension does not exist. For any operation that deletes or deregisters a resource, this exception is thrown if the resource cannot be found.</p>",
       "exception":true
     },
     "PolicyName":{
@@ -625,11 +627,11 @@
       "members":{
         "PredefinedMetricType":{
           "shape":"MetricType",
-          "documentation":"<p>The metric type. The <code>ALBRequestCountPerTarget</code> metric type applies only to Spot fleet requests.</p>"
+          "documentation":"<p>The metric type. The <code>ALBRequestCountPerTarget</code> metric type applies only to Spot fleet requests and ECS services.</p>"
         },
         "ResourceLabel":{
           "shape":"ResourceLabel",
-          "documentation":"<p>Identifies the resource associated with the metric type. You can't specify a resource label unless the metric type is <code>ALBRequestCountPerTarget</code> and there is a target group attached to the Spot fleet request.</p> <p>The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, where:</p> <ul> <li> <p>app/<load-balancer-name>/<load-balancer-id> is the final portion o [...]
+          "documentation":"<p>Identifies the resource associated with the metric type. You can't specify a resource label unless the metric type is <code>ALBRequestCountPerTarget</code> and there is a target group attached to the Spot fleet request or ECS service.</p> <p>The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, where:</p> <ul> <li> <p>app/<load-balancer-name>/<load-balancer-id> is the  [...]
         }
       },
       "documentation":"<p>Configures a predefined metric for a target tracking policy.</p>"
@@ -661,7 +663,7 @@
         },
         "PolicyType":{
           "shape":"PolicyType",
-          "documentation":"<p>The policy type. If you are creating a new policy, this parameter is required. If you are updating a policy, this parameter is not required.</p> <p>For DynamoDB, only <code>TargetTrackingScaling</code> is supported. For any other service, only <code>StepScaling</code> is supported.</p>"
+          "documentation":"<p>The policy type. This parameter is required if you are creating a policy.</p> <p>For DynamoDB, only <code>TargetTrackingScaling</code> is supported. For Amazon ECS, Spot Fleet, and Amazon RDS, both <code>StepScaling</code> and <code>TargetTrackingScaling</code> are supported. For any other service, only <code>StepScaling</code> is supported.</p>"
         },
         "StepScalingPolicyConfiguration":{
           "shape":"StepScalingPolicyConfiguration",
@@ -669,7 +671,7 @@
         },
         "TargetTrackingScalingPolicyConfiguration":{
           "shape":"TargetTrackingScalingPolicyConfiguration",
-          "documentation":"<p>A target tracking policy.</p> <p>This parameter is required if you are creating a new policy and the policy type is <code>TargetTrackingScaling</code>.</p>"
+          "documentation":"<p>A target tracking policy.</p> <p>This parameter is required if you are creating a policy and the policy type is <code>TargetTrackingScaling</code>.</p>"
         }
       }
     },
@@ -713,7 +715,7 @@
         },
         "ScalableDimension":{
           "shape":"ScalableDimension",
-          "documentation":"<p>The scalable dimension. This string consists of the service namespace, resource type, and scaling property.</p> <ul> <li> <p> <code>ecs:service:DesiredCount</code> - The desired task count of an ECS service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> - The target capacity of a Spot fleet request.</p> </li> <li> <p> <code>elasticmapreduce:instancegroup:InstanceCount</code> - The instance count of an EMR Instance Group.</p> </li> <li [...]
+          "documentation":"<p>The scalable dimension. This parameter is required if you are creating a scheduled action. This string consists of the service namespace, resource type, and scaling property.</p> <ul> <li> <p> <code>ecs:service:DesiredCount</code> - The desired task count of an ECS service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> - The target capacity of a Spot fleet request.</p> </li> <li> <p> <code>elasticmapreduce:instancegroup:InstanceCount< [...]
         },
         "StartTime":{
           "shape":"TimestampType",
@@ -756,15 +758,15 @@
         },
         "MinCapacity":{
           "shape":"ResourceCapacity",
-          "documentation":"<p>The minimum value to scale to in response to a scale in event. This parameter is required if you are registering a scalable target and optional if you are updating one.</p>"
+          "documentation":"<p>The minimum value to scale to in response to a scale in event. This parameter is required if you are registering a scalable target.</p>"
         },
         "MaxCapacity":{
           "shape":"ResourceCapacity",
-          "documentation":"<p>The maximum value to scale to in response to a scale out event. This parameter is required if you are registering a scalable target and optional if you are updating one.</p>"
+          "documentation":"<p>The maximum value to scale to in response to a scale out event. This parameter is required if you are registering a scalable target.</p>"
         },
         "RoleARN":{
           "shape":"ResourceIdMaxLen1600",
-          "documentation":"<p>The ARN of an IAM role that allows Application Auto Scaling to modify the scalable target on your behalf.</p> <p>With Amazon RDS resources, permissions are granted using a service-linked role. For more information, see <a href=\"http://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/application-autoscaling-service-linked-roles.html\">Service-Linked Roles for Application Auto Scaling</a>.</p> <p>For resources that are not supported using a serv [...]
+          "documentation":"<p>Application Auto Scaling creates a service-linked role that grants it permissions to modify the scalable target on your behalf. For more information, see <a href=\"http://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/application-autoscaling-service-linked-roles.html\">Service-Linked Roles for Application Auto Scaling</a>.</p> <p>For resources that are not supported using a service-linked role, this parameter is required and must specify the  [...]
         }
       }
     },
@@ -1172,5 +1174,5 @@
       "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
     }
   },
-  "documentation":"<p>With Application Auto Scaling, you can automatically scale your AWS resources. The experience is similar to that of <a href=\"https://aws.amazon.com/autoscaling/\">Auto Scaling</a>. You can use Application Auto Scaling to accomplish the following tasks:</p> <ul> <li> <p>Define scaling policies to automatically scale your AWS resources</p> </li> <li> <p>Scale your resources in response to CloudWatch alarms</p> </li> <li> <p>View the history of your scaling events</p> [...]
+  "documentation":"<p>With Application Auto Scaling, you can automatically scale your AWS resources. The experience is similar to that of <a href=\"https://aws.amazon.com/autoscaling/\">Auto Scaling</a>. You can use Application Auto Scaling to accomplish the following tasks:</p> <ul> <li> <p>Define scaling policies to automatically scale your AWS resources</p> </li> <li> <p>Scale your resources in response to CloudWatch alarms</p> </li> <li> <p>Schedule one-time or recurring scaling acti [...]
 }
diff --git a/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json b/botocore/data/autoscaling-plans/2018-01-06/paginators-1.json
similarity index 100%
copy from botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
copy to botocore/data/autoscaling-plans/2018-01-06/paginators-1.json
diff --git a/botocore/data/autoscaling-plans/2018-01-06/service-2.json b/botocore/data/autoscaling-plans/2018-01-06/service-2.json
new file mode 100644
index 0000000..b624a87
--- /dev/null
+++ b/botocore/data/autoscaling-plans/2018-01-06/service-2.json
@@ -0,0 +1,665 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2018-01-06",
+    "endpointPrefix":"autoscaling",
+    "jsonVersion":"1.1",
+    "protocol":"json",
+    "serviceFullName":"AWS Auto Scaling Plans",
+    "serviceId":"Auto Scaling Plans",
+    "signatureVersion":"v4",
+    "signingName":"autoscaling-plans",
+    "targetPrefix":"AnyScaleScalingPlannerFrontendService",
+    "uid":"autoscaling-plans-2018-01-06"
+  },
+  "operations":{
+    "CreateScalingPlan":{
+      "name":"CreateScalingPlan",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateScalingPlanRequest"},
+      "output":{"shape":"CreateScalingPlanResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentUpdateException"},
+        {"shape":"InternalServiceException"}
+      ],
+      "documentation":"<p>Creates a scaling plan.</p> <p>A scaling plan contains a set of instructions used to configure dynamic scaling for the scalable resources in your application. AWS Auto Scaling creates target tracking scaling policies based on the scaling instructions in your scaling plan.</p>"
+    },
+    "DeleteScalingPlan":{
+      "name":"DeleteScalingPlan",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteScalingPlanRequest"},
+      "output":{"shape":"DeleteScalingPlanResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ObjectNotFoundException"},
+        {"shape":"ConcurrentUpdateException"},
+        {"shape":"InternalServiceException"}
+      ],
+      "documentation":"<p>Deletes the specified scaling plan.</p>"
+    },
+    "DescribeScalingPlanResources":{
+      "name":"DescribeScalingPlanResources",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeScalingPlanResourcesRequest"},
+      "output":{"shape":"DescribeScalingPlanResourcesResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ConcurrentUpdateException"},
+        {"shape":"InternalServiceException"}
+      ],
+      "documentation":"<p>Describes the scalable resources in the specified scaling plan.</p>"
+    },
+    "DescribeScalingPlans":{
+      "name":"DescribeScalingPlans",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeScalingPlansRequest"},
+      "output":{"shape":"DescribeScalingPlansResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ConcurrentUpdateException"},
+        {"shape":"InternalServiceException"}
+      ],
+      "documentation":"<p>Describes the specified scaling plans or all of your scaling plans.</p>"
+    }
+  },
+  "shapes":{
+    "ApplicationSource":{
+      "type":"structure",
+      "members":{
+        "CloudFormationStackARN":{
+          "shape":"XmlString",
+          "documentation":"<p>The Amazon Resource Name (ARN) of a CloudFormation stack.</p>"
+        }
+      },
+      "documentation":"<p>Represents an application source.</p>"
+    },
+    "ApplicationSources":{
+      "type":"list",
+      "member":{"shape":"ApplicationSource"}
+    },
+    "ConcurrentUpdateException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Concurrent updates caused an exception, for example, if you request an update to a scaling plan that already has a pending update.</p>",
+      "exception":true
+    },
+    "Cooldown":{"type":"integer"},
+    "CreateScalingPlanRequest":{
+      "type":"structure",
+      "required":[
+        "ScalingPlanName",
+        "ApplicationSource",
+        "ScalingInstructions"
+      ],
+      "members":{
+        "ScalingPlanName":{
+          "shape":"ScalingPlanName",
+          "documentation":"<p>The name of the scaling plan.</p>"
+        },
+        "ApplicationSource":{
+          "shape":"ApplicationSource",
+          "documentation":"<p>The source for the application.</p>"
+        },
+        "ScalingInstructions":{
+          "shape":"ScalingInstructions",
+          "documentation":"<p>The scaling instructions.</p>"
+        }
+      }
+    },
+    "CreateScalingPlanResponse":{
+      "type":"structure",
+      "required":["ScalingPlanVersion"],
+      "members":{
+        "ScalingPlanVersion":{
+          "shape":"ScalingPlanVersion",
+          "documentation":"<p>The version of the scaling plan. This value is always 1.</p>"
+        }
+      }
+    },
+    "CustomizedScalingMetricSpecification":{
+      "type":"structure",
+      "required":[
+        "MetricName",
+        "Namespace",
+        "Statistic"
+      ],
+      "members":{
+        "MetricName":{
+          "shape":"MetricName",
+          "documentation":"<p>The name of the metric.</p>"
+        },
+        "Namespace":{
+          "shape":"MetricNamespace",
+          "documentation":"<p>The namespace of the metric.</p>"
+        },
+        "Dimensions":{
+          "shape":"MetricDimensions",
+          "documentation":"<p>The dimensions of the metric.</p>"
+        },
+        "Statistic":{
+          "shape":"MetricStatistic",
+          "documentation":"<p>The statistic of the metric.</p>"
+        },
+        "Unit":{
+          "shape":"MetricUnit",
+          "documentation":"<p>The unit of the metric.</p>"
+        }
+      },
+      "documentation":"<p>Represents a customized metric for a target tracking policy.</p>"
+    },
+    "DeleteScalingPlanRequest":{
+      "type":"structure",
+      "required":[
+        "ScalingPlanName",
+        "ScalingPlanVersion"
+      ],
+      "members":{
+        "ScalingPlanName":{
+          "shape":"ScalingPlanName",
+          "documentation":"<p>The name of the scaling plan.</p>"
+        },
+        "ScalingPlanVersion":{
+          "shape":"ScalingPlanVersion",
+          "documentation":"<p>The version of the scaling plan.</p>"
+        }
+      }
+    },
+    "DeleteScalingPlanResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeScalingPlanResourcesRequest":{
+      "type":"structure",
+      "required":[
+        "ScalingPlanName",
+        "ScalingPlanVersion"
+      ],
+      "members":{
+        "ScalingPlanName":{
+          "shape":"ScalingPlanName",
+          "documentation":"<p>The name of the scaling plan.</p>"
+        },
+        "ScalingPlanVersion":{
+          "shape":"ScalingPlanVersion",
+          "documentation":"<p>The version of the scaling plan.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of scalable resources to return. This value can be between 1 and 50. The default value is 50.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token for the next set of results.</p>"
+        }
+      }
+    },
+    "DescribeScalingPlanResourcesResponse":{
+      "type":"structure",
+      "members":{
+        "ScalingPlanResources":{
+          "shape":"ScalingPlanResources",
+          "documentation":"<p>Information about the scalable resources.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token required to get the next set of results. This value is <code>null</code> if there are no more results to return.</p>"
+        }
+      }
+    },
+    "DescribeScalingPlansRequest":{
+      "type":"structure",
+      "members":{
+        "ScalingPlanNames":{
+          "shape":"ScalingPlanNames",
+          "documentation":"<p>The names of the scaling plans (up to 10). If you specify application sources, you cannot specify scaling plan names.</p>"
+        },
+        "ScalingPlanVersion":{
+          "shape":"ScalingPlanVersion",
+          "documentation":"<p>The version of the scaling plan. If you specify a scaling plan version, you must also specify a scaling plan name.</p>"
+        },
+        "ApplicationSources":{
+          "shape":"ApplicationSources",
+          "documentation":"<p>The sources for the applications (up to 10). If you specify scaling plan names, you cannot specify application sources.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of scalable resources to return. This value can be between 1 and 50. The default value is 50.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token for the next set of results.</p>"
+        }
+      }
+    },
+    "DescribeScalingPlansResponse":{
+      "type":"structure",
+      "members":{
+        "ScalingPlans":{
+          "shape":"ScalingPlans",
+          "documentation":"<p>Information about the scaling plans.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token required to get the next set of results. This value is <code>null</code> if there are no more results to return.</p>"
+        }
+      }
+    },
+    "DisableScaleIn":{"type":"boolean"},
+    "ErrorMessage":{"type":"string"},
+    "InternalServiceException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The service encountered an internal error.</p>",
+      "exception":true
+    },
+    "InvalidNextTokenException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The token provided is not valid.</p>",
+      "exception":true
+    },
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Your account exceeded a limit. This exception is thrown when a per-account resource limit is exceeded.</p>",
+      "exception":true
+    },
+    "MaxResults":{"type":"integer"},
+    "MetricDimension":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Value"
+      ],
+      "members":{
+        "Name":{
+          "shape":"MetricDimensionName",
+          "documentation":"<p>The name of the dimension.</p>"
+        },
+        "Value":{
+          "shape":"MetricDimensionValue",
+          "documentation":"<p>The value of the dimension.</p>"
+        }
+      },
+      "documentation":"<p>Represents a dimension for a customized metric.</p>"
+    },
+    "MetricDimensionName":{"type":"string"},
+    "MetricDimensionValue":{"type":"string"},
+    "MetricDimensions":{
+      "type":"list",
+      "member":{"shape":"MetricDimension"}
+    },
+    "MetricName":{"type":"string"},
+    "MetricNamespace":{"type":"string"},
+    "MetricScale":{"type":"double"},
+    "MetricStatistic":{
+      "type":"string",
+      "enum":[
+        "Average",
+        "Minimum",
+        "Maximum",
+        "SampleCount",
+        "Sum"
+      ]
+    },
+    "MetricUnit":{"type":"string"},
+    "NextToken":{"type":"string"},
+    "ObjectNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified object could not be found.</p>",
+      "exception":true
+    },
+    "PolicyName":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"\\p{Print}+"
+    },
+    "PolicyType":{
+      "type":"string",
+      "enum":["TargetTrackingScaling"]
+    },
+    "PredefinedScalingMetricSpecification":{
+      "type":"structure",
+      "required":["PredefinedScalingMetricType"],
+      "members":{
+        "PredefinedScalingMetricType":{
+          "shape":"ScalingMetricType",
+          "documentation":"<p>The metric type. The <code>ALBRequestCountPerTarget</code> metric type applies only to Auto Scaling groups, Sport Fleet requests, and ECS services.</p>"
+        },
+        "ResourceLabel":{
+          "shape":"ResourceLabel",
+          "documentation":"<p>Identifies the resource associated with the metric type. You can't specify a resource label unless the metric type is <code>ALBRequestCountPerTarget</code> and there is a target group attached to the Auto Scaling group, Spot Fleet request, or ECS service.</p> <p>The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, where:</p> <ul> <li> <p>app/<load-balancer-name>/<load-ba [...]
+        }
+      },
+      "documentation":"<p>Represents a predefined metric for a target tracking policy.</p>"
+    },
+    "ResourceCapacity":{"type":"integer"},
+    "ResourceIdMaxLen1600":{
+      "type":"string",
+      "max":1600,
+      "min":1,
+      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
+    },
+    "ResourceLabel":{
+      "type":"string",
+      "max":1023,
+      "min":1
+    },
+    "ScalableDimension":{
+      "type":"string",
+      "enum":[
+        "autoscaling:autoScalingGroup:DesiredCapacity",
+        "ecs:service:DesiredCount",
+        "ec2:spot-fleet-request:TargetCapacity",
+        "rds:cluster:ReadReplicaCount",
+        "dynamodb:table:ReadCapacityUnits",
+        "dynamodb:table:WriteCapacityUnits",
+        "dynamodb:index:ReadCapacityUnits",
+        "dynamodb:index:WriteCapacityUnits"
+      ]
+    },
+    "ScalingInstruction":{
+      "type":"structure",
+      "required":[
+        "ServiceNamespace",
+        "ResourceId",
+        "ScalableDimension",
+        "MinCapacity",
+        "MaxCapacity",
+        "TargetTrackingConfigurations"
+      ],
+      "members":{
+        "ServiceNamespace":{
+          "shape":"ServiceNamespace",
+          "documentation":"<p>The namespace of the AWS service.</p>"
+        },
+        "ResourceId":{
+          "shape":"ResourceIdMaxLen1600",
+          "documentation":"<p>The ID of the resource. This string consists of the resource type and unique identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is <code>autoScalingGroup</code> and the unique identifier is the name of the Auto Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li> <p>ECS service - The resource type is <code>service</code> and the unique identifier is the cluster name and service name. Example: <code>service/default/sam [...]
+        },
+        "ScalableDimension":{
+          "shape":"ScalableDimension",
+          "documentation":"<p>The scalable dimension associated with the resource.</p> <ul> <li> <p> <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity of an Auto Scaling group.</p> </li> <li> <p> <code>ecs:service:DesiredCount</code> - The desired task count of an ECS service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> - The target capacity of a Spot fleet request.</p> </li> <li> <p> <code>dynamodb:table:ReadCapacityUnits</code> - [...]
+        },
+        "MinCapacity":{
+          "shape":"ResourceCapacity",
+          "documentation":"<p>The minimum value to scale to in response to a scale in event.</p>"
+        },
+        "MaxCapacity":{
+          "shape":"ResourceCapacity",
+          "documentation":"<p>The maximum value to scale to in response to a scale out event.</p>"
+        },
+        "TargetTrackingConfigurations":{
+          "shape":"TargetTrackingConfigurations",
+          "documentation":"<p>The target tracking scaling policies (up to 10).</p>"
... 4053 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-botocore.git



More information about the Python-modules-commits mailing list